深入剖析物联网IoT 应用组件、微控制器与单板计算机全解IoT-For-Beginners 第 2 课精讲【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本文基于开源课程《IoT-For-Beginners》第一项目Getting Started第 2 课更深入的 IoT 之旅整理而成。该课在上一课第 1 课物联网入门的基础上把 IoT 应用的组成、微控制器MCU与单板计算机SBC三大主题讲深讲透。读完本文你将能准确区分 IoT 中物与网的职责边界理解微控制器在 CPU、内存、GPIO、物理尺寸与操作系统层面的设计约束掌握 Arduinosetup/loop编程模型与 Raspberry Pi 生态的差异并能在选型时做出有依据的判断。课程对应的完整硬件选择与采购指引见仓库根目录的 hardware.md其中明确本课程为每个项目同时提供了 ArduinoWio Terminal与 Raspberry Pi 两条实物硬件路径以及一套基于 Python 的虚拟硬件路径借助 CounterFit 项目模拟传感器与执行器不购买任何硬件也能完成全部作业。IoT 应用的两大组成Thing 与 Internet一个 IoT 应用本质上由两部分构成Internet网与Thing物。本课将分别深入剖析这两者并进一步讨论边缘Edge与安全两个贯穿始终的议题。Thing物能感知、能行动的设备IoT 中的Thing指能够与物理世界交互的设备。这类设备通常是体积小、价格低的计算机运行速度低、功耗极低——例如只拥有千字节级KBRAM而非 PC 的吉字节/GB、主频仅数百兆赫而非 PC 的吉赫的简单微控制器但它们的功耗之低使其可以靠电池运行数周、数月甚至数年。这些设备与物理世界交互有两种方式通过传感器sensor采集周围环境数据或通过输出设备/执行器actuator造成物理改变。课程给出的经典例子是智能恒温器smart thermostat设备内含一个温度传感器、一个设定目标温度的旋钮或触摸屏以及一个连接供暖/制冷系统的开关。当温度传感器检测到房间过冷时执行器便打开暖气。示意如下可以作为 Thing 的设备种类极其广泛有专门感知单一对象的定制硬件有通用型设备甚至包括你的智能手机——手机利用传感器感知世界如 GPS 定位利用执行器与世界交互如用扬声器播放导航指令。✅ 思考题观察你周围还有哪些从传感器读取数据并据此做决策的系统烤箱的恒温器就是一个例子还能举出更多吗Internet网云服务与数据流IoT 应用的Internet侧由两类应用组成一类是 IoT 设备可连接以收发数据的应用另一类是能够处理设备数据、并帮助决定应向设备执行器发送什么指令的应用。典型的架构是IoT 设备连接某个云服务该云服务负责安全、接收来自设备的消息并向设备回发消息云服务再连接其他应用来存储、处理传感器数据或将传感器数据与其他系统的数据结合以辅助决策。值得注意的是设备并不总是通过 WiFi 或有线连接直接上网部分设备通过网状网络mesh networking以蓝牙等技术彼此通信再经由一个具备互联网连接的**中心/网关设备hub**接入互联网。回到智能恒温器示例恒温器通过家庭 WiFi 连接云端服务把温度数据发送上去数据随后写入某种数据库房主即可用手机 App 查看当前与历史温度云端的另一个服务知道房主的期望温度并通过云服务向 IoT 设备回发消息指示供暖系统开/关。更智能的版本还会在云端引入 AI结合其他 IoT 设备上的传感器数据如房间占用检测、天气数据乃至你的日历数据智能决定如何调温——例如从日历得知你在度假便关掉暖气或按房间占用情况逐房间控制并随时间推移从数据中学习、越来越精准。✅ 思考题还有哪些数据能让联网恒温器变得更智能边缘计算IoT on the Edge不一定非要联网尽管 IoT 中的I代表 Internet但设备并非必须连接互联网。在某些场景下设备可以连接边缘edge设备——即运行在你本地网络上的网关设备从而无需经过互联网就能处理数据。边缘处理在以下场景更有价值速度数据量大或互联网连接缓慢时本地处理更快离线运行在无法联网的环境如船舶上、人道主义危机中的灾区仍可运行隐私数据不出本地网络保持私密。一些设备会承载用云工具构建、但在本地运行的推理代码不依赖互联网连接即可采集数据并做出决策。典型例子是 Apple HomePod、Amazon Alexa、Google Home 这类智能家居设备它们用云端训练的 AI 模型在设备本地听语音只有检测到特定唤醒词时才把语音经互联网发送出去做进一步处理并在检测到语音停顿等合适时机停止发送。唤醒词之前、停止聆听之后的所有内容都不会被发送到设备厂商从而保持私密。✅ 思考题还有哪些场景因隐私重要而更适合在边缘而非云端处理数据提示想想带摄像头或其他成像设备的 IoT 设备。IoT 安全云服务有多安全设备就有多安全任何互联网连接都要考虑安全。业内有个老笑话IoT 里的 S 代表 Security安全——但 IoT 里根本没有S这个字母言下之意是它并不安全。IoT 设备连接到云服务因此其安全性至多等同于云服务本身如果云服务允许任意设备接入就可能被发送恶意数据或遭受病毒攻击。由于 IoT 设备会与其他设备交互并控制它们后果可能十分严重——课程举例提到 Stuxnet 蠕虫曾操纵离心机阀门造成破坏黑客也曾利用安全薄弱点侵入婴儿监视器及其他家庭安防设备。 提示有时 IoT 设备与边缘设备会运行在与互联网完全隔离的网络上以保护数据私密与安全这被称为气隙隔离air-gapping。深入剖析微控制器Microcontrollers上一课已引入微控制器的概念本课从 CPU、内存、I/O、物理尺寸、框架与操作系统五个维度深入剖析。CPU微控制器的大脑CPU 是微控制器的大脑它运行你的代码并能与所有外接设备收发数据。CPU 可包含一个或多个核心core——本质上是一个或多个协同运行代码的处理器。CPU 依赖**时钟clock**每秒嘀嗒数百万或数十亿次。每次嘀嗒一个周期同步 CPU 可执行的动作每个周期内CPU 可以执行程序中的一条指令例如从外部设备取数据或做一次数学计算。时钟周期越快每秒可处理的指令越多CPU 就越快。CPU 速度以赫兹Hz计量1 Hz 即每秒一个周期或一次时钟嘀嗒。 CPU 速度常用 MHz 或 GHz 表示1 MHz 100 万 Hz1 GHz 10 亿 Hz。 CPU 通过取指-译码-执行fetch-decode-execute周期运行程序每个时钟周期CPU 从内存取出下一条指令、译码然后执行如用算术逻辑单元 ALU 做两数相加。部分执行需多个周期因此下一周期会在指令完成后才进行。微控制器的时钟速度远低于台式机/笔记本甚至大多数智能手机。课程以其配套硬件Wio Terminal为例其 CPU 运行在120MHz即每秒 1.2 亿个周期。而普通 PC/Mac 的 CPU 往往多核心、多吉赫——时钟每秒嘀嗒数十亿次。时钟周期的代价是功耗与发热嘀嗒越快耗电越多、发热越大。PC 需要散热片和风扇否则几秒内就会过热关机微控制器通常两者皆无因为它们运行得慢得多、凉得多。PC 靠市电或大电池运行几小时微控制器则可用小电池运行数天、数月甚至数年。部分微控制器还拥有不同速度的核心在 CPU 负载低时切换到慢速低功耗核心以省电。 一些 PC 和 Mac 也开始采用快的高性能核 慢的低功耗核混搭并动态切换以省电例如 Apple M1 芯片可在 4 个性能核与 4 个能效核之间切换。实操任务在 Wio Terminal 上寻找 CPU如果使用 Wio Terminal 学习本课程试着在设备背面透明塑料窗口中找到 CPU可对照其产品页的Hardware Overview部分查看内部照片。内存程序存储器与 RAM微控制器通常有两种内存程序存储器program memory与随机存取存储器RAM。程序存储器是非易失的non-volatile断电后内容依然保留用于存放程序代码RAM 是易失的volatile程序运行时存放变量与从外设采集的数据断电后内容丢失、程序被重置。 程序存储器保存代码断电不丢RAM 用于运行程序断电即复位。和 CPU 一样微控制器的内存比 PC/Mac 小几个数量级普通 PC 可能有 8GB80 亿字节RAM每个字节可存一个字符或 0–255 的数字微控制器则只有 KB 级 RAM1KB 1000 字节。课程给出的 Wio Terminal 拥有192KB RAM192,000 字节比普通 PC 少了 4 万多倍程序存储同样小得多普通 PC 可能有 500GB 硬盘微控制器通常只有 KB 级或几 MB1MB 1000KB 100 万字节存储。Wio Terminal 拥有4MB 程序存储。✅ 思考题你正在用来阅读的电脑有多少 RAM 和存储与微控制器相比如何输入/输出I/OGPIO 引脚微控制器需要输入/输出I/O连接来读取传感器数据、向执行器发送控制信号。它们通常带有若干通用输入/输出GPIO引脚可在软件中配置为输入接收信号或输出发送信号⬅️ 输入引脚用于读取传感器数值➡️ 输出引脚向执行器发送指令GPIO 的具体用法会在后续课程中详细展开。实操任务在 Wio Terminal 上找到 GPIO对照产品页的Pinout diagram学习各引脚功能。Wio Terminal 随附一张可贴在背面的引脚号贴纸如果还没贴现在就可以贴上。物理尺寸小到能放进高尔夫球的凹坑微控制器通常很小课程提到最小的Freescale Kinetis KL03小到能放进高尔夫球的凹坑里。相比之下PC 中仅 CPU 裸片就可达 40mm × 40mm且不计散热所需的散热片与风扇——整套散热装置比完整的微控制器还大得多。课程给出的尺寸对比表如下设备尺寸Freescale Kinetis KL031.6mm × 2mm × 1mmWio Terminal72mm × 57mm × 12mmIntel i9 CPU含散热片与风扇136mm × 145mm × 103mmWio Terminal 开发套件含微控制器、外壳、屏幕及一系列连接件与组件只比裸 Intel i9 CPU 大一点而比带散热片和风扇的整套 CPU 小得多。框架与操作系统从裸跑到 RTOS由于速度低、内存小微控制器并不以桌面意义上的操作系统OS运行程序——Windows/Linux/macOS 需要大量内存与算力来支撑用户界面、多媒体、文档/代码工具、游戏、浏览器等对微控制器完全多余的功能。微控制器通常只被编程执行一个或几个非常具体的任务。无 OS 编程需要一些工具链把代码构建成微控制器可运行的形式并提供访问外设的 API。由于每个微控制器各不相同厂商通常支持标准框架让你遵循统一的配方构建代码并可运行在任何支持该框架的微控制器上。有 OS 编程则通常指实时操作系统RTOS——专为实时收发外设数据而设计非常轻量提供多线程可同时运行多个代码块多核并行或单核分时轮转网络支持通过互联网安全通信图形用户界面GUI组件为带屏幕的设备构建用户界面。常见的 RTOS 有 Azure RTOS、FreeRTOS、Zephyr 等。Arduino最流行的微控制器框架Arduino很可能是最流行的微控制器框架尤其受学生、爱好者和创客欢迎。它是一个结合软件与硬件的开源电子平台既可从 Arduino 官方购买也可从其他厂商购买兼容板然后用 Arduino 框架编程。Arduino 板用C/C编程。C/C 代码可编译得极小、运行得很快正适合微控制器这类资源受限设备。一个 Arduino 应用的核心称为sketch本质上是含两个函数的 C/C 代码setup和loop。板上电后Arduino 框架先运行一次setup然后反复运行loop直到断电。setup函数放初始化代码如连接 WiFi 与云服务、初始化输入输出引脚loop函数放处理代码如读取传感器并把数值发到云端。通常在每次loop末尾加一个delay例如只想每 10 秒发一次传感器数据就在循环末尾延时 10 秒让微控制器休眠省电10 秒后再跑下一轮循环。✅ 这种先 setup 后反复 loop的架构就是事件循环event loop/消息循环message loop。很多应用底层都在用它它也是 Windows/macOS/Linux 上大多数桌面应用的标准模型loop监听来自按钮等界面组件或键盘等设备的消息并作出响应。Arduino 标准库封装了与微控制器及 I/O 引脚交互的 API内部针对不同微控制器有不同的实现。例如delay函数让程序暂停指定时长digitalRead从指定引脚读出HIGH或LOW——无论代码跑在哪块板上。这意味着为一块板写的 Arduino 代码只要引脚一致、板卡支持相同特性就可以重新编译到任意其他 Arduino 板运行。此外还有一个庞大的第三方 Arduino 库生态可方便地接入传感器、执行器以及云 IoT 服务。结合仓库源码理解 setup/loop 模型课程第 1 课的示例工程就是验证这一模型的最佳素材。Wio Terminal 路径下的 main.cpp 完整呈现了 Arduino sketch 的骨架#include Arduino.h void setup() { Serial.begin(9600); while (!Serial) ; // Wait for Serial to be ready delay(1000); } void loop() { Serial.println(Hello World); delay(5000); }可以看到setup中通过Serial.begin(9600)初始化串口并用while (!Serial)等待串口就绪、delay(1000)留出准备时间loop中向串口打印 Hello World 后delay(5000)延时 5 秒——这正是循环 延时模式的直接落地。课程布置的实操任务正是在串口监视器中观察loop被反复调用并在setup中加写串口代码验证它只在每次重启时执行一次可用机身侧面的电源开关重启设备验证。Arduino 代码与工程配置说明从仓库结构看Wio Terminal 工程采用 PlatformIO 组织含 platformio.ini 与src/main.cpp、include、lib、test目录而仓库 hardware.md 明确指出Arduino 路径的全部设备代码用 C 编写、Raspberry Pi 路径的全部设备代码用 Python 编写并且Wio Terminal 被选为 Arduino 主推设备的一个重要原因正是它内置 WiFi很多 Arduino 设备没有 WiFi无法连接云端。如果你选用虚拟硬件路径则所有传感器与执行器都由 Python 模拟实现。深入剖析单板计算机Single-board Computers上一课介绍了单板计算机本课以 Raspberry Pi 为例进一步深入。Raspberry Pi 家族Raspberry Pi Foundation是 2009 年成立于英国的慈善机构致力于在学校层面推动计算机科学研究。为此他们开发了名为 Raspberry Pi 的单板计算机目前有 3 个变体全尺寸版本、更小的 Pi Zero、以及可内置于最终 IoT 产品的计算模块compute module。Raspberry Pi 4B全尺寸系列最新款的关键规格四核4 核CPU主频1.5GHz2 / 4 / 8GBRAM千兆以太网、WiFi2 个支持 4k 屏幕的 HDMI 端口、音频与复合视频输出口USB 端口2 个 USB 2.0、2 个 USB 3.040 个 GPIO 引脚、Raspberry Pi 相机模块连接器、SD 卡槽板卡尺寸 88mm × 58mm × 19.5mm由3A USB-C 电源供电起售价US$35远低于 PC 或 Mac 另有 Pi400 一体机把 Pi4 直接内置于键盘中。Pi Zero则小得多、功耗也低得多单核 1GHz CPU512MBRAMWiFi仅 Zero W 型号、单个 HDMI 端口、micro-USB 端口40 个 GPIO 引脚、相机模块连接器、SD 卡槽尺寸 65mm × 30mm × 5mm功耗极低Zero 售价US$5带 WiFi 的 W 版US$10 两者的 CPU 均为ARM 处理器不同于大多数 PC/Mac 中的 Intel/AMD x86 或 x64 处理器这与部分微控制器、几乎所有手机、Microsoft Surface X 以及新的 Apple Silicon Mac 中的 CPU 同源。所有 Raspberry Pi 变体都运行 Debian Linux 的一个版本名为Raspberry Pi OS有精简版lite无桌面适合无需屏幕的headless项目也有带完整桌面的全功能版含浏览器、办公软件、编程工具与游戏。由于 OS 本质是 Debian Linux任何能在 Debian 上运行且面向 Pi 内置 ARM 处理器构建的应用或工具都可以安装到 Pi 上。实操任务探索 Raspberry Pi如果使用 Raspberry Pi 学习本课程阅读板卡上各硬件组件的资料定位 GPIO 引脚并学习各引脚用途可参考官方硬件文档与 GPIO 用法指南。仓库 hardware.md 同时提示Pi 2B 及以上版本均可完成本课程作业若直接在 Pi 上运行 VS Code建议 Pi 4 且 RAM ≥ 2GB。单板计算机的编程方式单板计算机是运行完整 OS 的完整计算机因此可选编程语言、框架和工具远多于依赖 Arduino 等框架支持的微控制器。大多数编程语言都有可访问 GPIO 引脚、与传感器和执行器收发数据的库。Raspberry Pi 上构建 IoT 应用最常用的语言是 Python。Pi 拥有庞大的配套硬件生态几乎每个硬件都附带了可用的 Python 库。其中不少生态基于HAT——之所以叫 HAT是因为它们像帽子一样戴在 Pi 上、通过一个大插座接入 40 个 GPIO 引脚。HAT 可提供屏幕、传感器、遥控小车或标准线缆传感器适配器等额外能力。从仓库源码也可印证这一路径Raspberry Pi 侧的示例工程 app.py 就是一个极简的 Python 程序print(Hello World!)与 Arduino 侧 C 的 main.cpp 形成鲜明对比——同一课程作业在两条硬件路径上分别以 Python 和 C 实现。单板计算机在专业 IoT 部署中的应用单板计算机不仅用作开发套件也被用于专业的 IoT 部署它们能强有力地控制硬件并运行机器学习模型等复杂任务。例如Raspberry Pi 4 Compute Module提供了 Pi 4 的全部能力但采用更紧凑、更便宜的外形去掉了大部分端口专门设计用于内嵌到定制硬件中。挑战给家里的 IoT 设备分类上一课的挑战是尽可能多地列出家中、学校或工作场所的 IoT 设备。本课挑战升级针对清单中的每一台设备判断它是基于微控制器、单板计算机还是两者的混合体。作业对比微控制器与单板计算机正式作业详见 assignment.md。核心要求是制作一张对比表列出微控制器与单板计算机的异同并给出至少 2 个选微控制器不选单板计算机的理由以及至少 2 个选单板计算机不选微控制器的理由。评分标准Rubric分为三档标准优秀合格待改进制作微控制器与单板计算机的对比表列出多个条目正确比较与对照仅列出少数几条只能列出一条或无法列出给出选型理由微控制器 ≥ 2 条且单板计算机 ≥ 2 条各 1–2 条任一方不足 1 条结合本课知识选型理由可从以下维度展开功耗与续航微控制器可电池运行数月数年、成本微控制器及周边远低于 PC/MacPi Zero 也仅 US$5–10、计算能力单板计算机可跑完整 OS 与 ML 模型、开发便利性Pi 可用 Python 等丰富语言生态与 HAT微控制器依赖 Arduino/RTOS 框架、外设接口两者都有 GPIO但能力与驱动方式不同等。自评与延伸学习课程配有课前与课后测验可分别在quiz-app的测验题库中找到对应题目用于检验本课要点课前检测物/网/边缘/安全的基础认知课后检验对微控制器与单板计算机的深入理解复习 Arduino 平台的入门指南加深对 sketch、setup/loop及标准库的理解学习 Raspberry Pi 4 的产品资料进一步了解板卡规格与适用场景查阅 CPU、MPU、MCU、GPU 等概念与缩写辨析资料理清硬件分类结合 hardware.md 中两类硬件套装的成本决定最终选用 Wio TerminalArduino/C 路径、Raspberry PiPython 路径还是虚拟设备CounterFit 模拟路径来完成课程。说明本文对应的原始课程文档为仓库translations/bn/1-getting-started/lessons/2-deeper-dive/README.md孟加拉语译本源自英文原版 1-getting-started/lessons/2-deeper-dive/README.md。文中涉及的硬件规格如 Wio Terminal 的 120MHz CPU、192KB RAM、4MB 存储Raspberry Pi 4B 与 Pi Zero 的规格与售价均以课程文档为准属教材示例数据如需以实物为准请以对应产品官方文档为准。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考