IoT-For-Beginners 第 2 课深度解析:IoT 应用组件、微控制器与单板计算机完全指南
【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners
本文基于 IoT-For-Beginners 开源课程第一项目(1-getting-started)的第 2 课内容撰写。该课程以"12 周、24 课、面向所有人的 IoT"为目标,第 2 课《A deeper dive into IoT》在上一课概念基础上,深入剖析 IoT 应用的两大组成(设备与互联网)、微控制器(Microcontroller)与单板计算机(Single-board Computer)的底层原理,并回答"用 Arduino 还是 Raspberry Pi"这一经典选型问题。读完本文,你将掌握 IoT 系统分层架构、MCU 的 CPU/内存/GPIO 工作机制、Arduino
setup/loop编程模型、Raspberry Pi 硬件规格,并能结合仓库源码与实操任务完成平台选型决策。
引言:本课在课程体系中的位置
第 2 课是 第一课(Introduction to IoT) 的纵深延续。第一课建立了基础概念:传感器(Sensors)从物理世界采集数据,执行器(Actuators)将电信号转化为物理动作,IoT 设备分为微控制器和单板计算机两大阵营。第 2 课则把每个概念拆开来看:
- IoT 应用的组成部分(设备 + 互联网 + 边缘 + 安全);
- 微控制器的 CPU、内存、输入/输出、物理尺寸、框架与 RTOS;
- 单板计算机的代表——Raspberry Pi 的规格、编程方式与专业部署场景。
整个课程支持三种硬件路径:Arduino(Seeed Studios Wio Terminal)、物理单板计算机(Raspberry Pi 4)、以及无需购买硬件的虚拟设备(CounterFit 模拟器),详见 hardware.md。本课的实验任务都围绕 Wio Terminal 与 Raspberry Pi 展开。
IoT 应用的两个核心组件:设备(Thing)与互联网(Internet)
一个完整的 IoT 应用由两个主要部分组成:设备(Thing)和互联网(Internet)。
设备(Thing):与物理世界交互的小型计算机
设备指能够与物理世界交互的装置。它们通常是小型、低成本、低功耗的计算机——例如仅有千字节(KB)级 RAM(对比 PC 的吉字节 GB)、运行在数百兆赫兹(MHz)(对比 PC 的 GHz)的简单微控制器,功耗低到可以依靠电池运行数周、数月甚至数年。
设备通过两类途径与物理世界交互:
- 传感器:从周围环境收集数据;
- 执行器(Actuators):控制输出、产生物理改变。
经典例子是智能恒温器(Smart Thermostat):它包含一个温度传感器、一个设定目标温度的装置(旋钮或触摸屏)、以及与供暖/制冷系统的连接。当温度传感器检测到房间过冷时,执行器便打开供暖设备。
能够充当 IoT 设备的"物"范围极广:从只感知单一事物的专用硬件,到通用设备——甚至你的智能手机。手机用 GPS 传感器检测位置,用扬声器给出导航指令,正是"传感器 + 执行器 + 连接"的典型体现。
互联网(Internet):云端、消息与决策
互联网侧包含两类应用:IoT 设备所连接、用于收发数据的应用;以及处理设备数据、帮助决策"该向设备执行器发送什么指令"的应用。
典型拓扑如下:
- 设备通过家庭 WiFi 连接云端服务;
- 云端服务负责安全、接收设备消息、回发消息;
- 温度数据写入数据库,房主通过手机 App 查看当前与历史温度;
- 另一云端服务知晓目标温度,通过云端向设备回发指令,控制供暖开关。
更智能的版本可在云端使用AI:结合其他 IoT 设备的占用传感器(Occupancy Sensors)、天气数据乃至你的日历,做出精细决策——例如读到日历显示你外出度假就关闭供暖,或按房间使用情况逐屋调温,并随时间推移不断学习优化。
值得注意的是:设备并非总直连互联网。部分设备通过蓝牙等无线技术组成网状网络(Mesh Networking),经由具备互联网连接的中心设备(Hub)接入云端。
边缘计算(IoT on the Edge):不联网的 IoT
尽管"IoT"中的"I"代表 Internet,设备并不必须连接互联网。设备可以连接"边缘设备(Edge Devices)"——运行在本地网络中的网关设备,使数据处理无需经过互联网:
- 更快:当数据量大或网络慢时,本地处理延迟更低;
- 可离线运行:适用于船舶、人道主义危机灾区等无法联网的场景;
- 数据私密:敏感数据不出本地网络。
部分设备甚至运行"用云端工具开发、在本地执行"的处理代码,不依赖互联网连接即可做出决策。典型例子是 Apple HomePod、Amazon Alexa、Google Home 等智能家居设备:它们用云端训练、本地运行的 AI 模型监听唤醒词(Wake Word),只有被唤醒后才把语音发往云端处理,并在检测到语音停顿等合适时机停止发送——唤醒词之前和停止监听之后的语音都不会上传,从而保护隐私。
IoT 安全:没有"S"的 IoT
安全是任何互联网连接设备的关键议题。业内流传一个老笑话:"IoT 中的 S 代表 Security"——因为 IoT 里根本没有字母 S,暗示它不安全。
IoT 设备连接云端服务,其安全强度取决于云端服务本身:如果云端允许任意设备接入,就可能被注入恶意数据或遭受病毒攻击。由于 IoT 设备控制物理世界,后果可能非常严重——例如 Stuxnet 蠕虫 通过操纵离心机阀门造成设备损坏,黑客也曾利用薄弱安全机制入侵婴儿监视器等家用监控设备。
💁 一些 IoT 设备与边缘设备会运行在与互联网完全隔离的网络上以保证数据私密与安全,这种方式称为air-gapping(物理隔离)。
深入微控制器(Microcontroller)
微控制器(MCU)是一种把 CPU、内存、可编程 I/O 集成在一块芯片上的小型计算机。下面从五个维度深入剖析。
CPU:时钟、取指-译码-执行与功耗
CPU 是微控制器的"大脑",负责运行代码并与外设收发数据。CPU 可含一个或多个核心(Cores)——即一个或多个可协作执行代码的处理器。
CPU 依赖**时钟(Clock)**同步动作,每秒滴答数百万或数十亿次。每个滴答(即一个周期 Cycle)CPU 可以执行一条程序指令(如从外部设备取数或做数学运算)。时钟周期越快,每秒处理的指令越多,CPU 越快。CPU 速度以Hertz(Hz)衡量:1 Hz 即每秒一个周期。
🎓 CPU 速度常用 MHz 或 GHz 表示:1 MHz = 100 万 Hz,1 GHz = 10 亿 Hz。
💁 CPU 通过取指-译码-执行周期(fetch-decode-execute cycle)运行程序:每个时钟滴答从内存取出下一条指令、译码,然后用算术逻辑单元(ALU)等部件执行(例如两数相加)。部分指令需要多个周期,故下一周期在指令完成后才启动。
微控制器时钟速度远低于桌面/笔记本计算机甚至多数智能手机。例如Wio Terminal 的 CPU 运行在 120MHz(每秒 1.2 亿周期)。而普通 PC/Mac 多为多核、数 GHz 的 CPU,每秒滴答数十亿次。
每个时钟周期都会消耗功率并产生热量:滴答越快,功耗与发热越高。PC 需要散热器和风扇,否则数秒内就会过热关机;微控制器通常两者皆无,因为它们运行更慢更凉。PC 靠市电或大电池运行几小时,微控制器却可凭小电池运行数天、数月甚至数年。部分微控制器还有异构核心——CPU 负载低时切换到低速低功耗核心以省电。
💁 一些新 PC/Mac 也采用"高速高功耗核心 + 低速低功耗核心"混合方案,例如 Apple M1 芯片可在 4 个性能核心与 4 个效率核心之间切换。
实操任务(针对 Wio Terminal):在 Wio Terminal 产品页 的Hardware Overview部分查看内部结构图,透过背面透明塑料窗口尝试找到 CPU。
内存:程序内存与 RAM
微控制器通常有两类内存:
| 类型 | 特性 | 用途 |
|---|---|---|
| 程序内存(Program Memory) | 非易失(Non-volatile),断电后内容保留 | 存储程序代码 |
| RAM(随机访问内存) | 易失(Volatile),断电后内容清零 | 程序运行时的变量与外设数据 |
🎓 程序内存保存你的代码,断电仍在;RAM 用于运行程序,断电即重置。
与 CPU 一样,微控制器内存比 PC/Mac 小若干个数量级。典型 PC 有 8 GB(80 亿字节)RAM,每字节可存一个字母或 0-255 的数字;而微控制器通常只有 KB 级 RAM(1 KB = 1000 字节)。Wio Terminal 只有 192KB(192,000 字节)RAM——比普通 PC 少 4 万倍以上!
程序存储同样远小于 PC:典型 PC 有 500GB 硬盘,微控制器可能只有 KB 到数 MB(1 MB = 1000 KB)。Wio Terminal 有 4MB 程序存储。
输入/输出(I/O):GPIO 引脚
微控制器需要输入/输出连接来从传感器读取数据、向执行器发送控制信号,通常包含多个通用输入/输出(GPIO)引脚,可在软件中配置为输入(接收信号)或输出(发送信号):
- 🧠⬅️ 输入引脚:读取传感器数值;
- 🧠➡️ 输出引脚:向执行器发送指令。
实操任务(针对 Wio Terminal):在产品页Pinout diagram部分查询引脚定义。Wio Terminal 附带一张可贴在背面的引脚编号贴纸,建议现在就贴上。
物理尺寸:从高尔夫球窝到 i9 散热器
微控制器通常体积小巧,最小的 Freescale Kinetis KL03 MCU 小到可以放进高尔夫球的凹窝。而 PC 中仅 CPU 裸片就有 40mm x 40mm,且不含散热所需的散热器和风扇——整体远大于一个完整微控制器。Wio Terminal 开发套件(含微控制器、外壳、屏幕与各种连接组件)只比裸 Intel i9 CPU 略大,且远小于带散热器和风扇的 CPU。
| 设备 | 尺寸 |
|---|---|
| Freescale Kinetis KL03 | 1.6mm x 2mm x 1mm |
| Wio Terminal | 72mm x 57mm x 12mm |
| Intel i9 CPU + 散热器 + 风扇 | 136mm x 145mm x 103mm |
框架与操作系统:为什么 MCU 不跑 Windows
由于速度和内存有限,微控制器不运行桌面意义上的操作系统。Windows/Linux/macOS 需要大量内存与算力来处理微控制器完全不需要的任务。微控制器通常被编程执行一个或多个非常具体的任务,而非像 PC/Mac 那样支持 UI、播放音视频、写文档、玩游戏、上网。
不跑 OS 时,编程微控制器需要工具链将代码构建为 MCU 可执行的形式,并通过 API 与外设通信。由于每个 MCU 不同,厂商通常维护标准框架(Framework),让你按标准"配方"构建代码,并在支持该框架的任何 MCU 上运行。
部分微控制器也可以运行操作系统——即实时操作系统(RTOS,Real-Time Operating System),专为实时收发外设数据而设计,非常轻量,提供:
- 多线程(Multi-threading):多核并行或单核轮流执行多段代码;
- 网络(Networking):安全地进行互联网通信;
- GUI 组件:为带屏幕的设备构建用户界面。
常见的 RTOS 有 Azure RTOS、FreeRTOS、Zephyr。
Arduino:最流行的微控制器框架
Arduino 可能是最流行的微控制器框架,尤其在学生、爱好者与创客群体中。它是一个开源电子平台,软硬件结合:可从 Arduino 或第三方厂商购买兼容板,再用 Arduino 框架编程。
Arduino 板用C 或 C++编程。C/C++ 允许代码编译得极小、运行得飞快——这正是受限设备(微控制器)所需要的。Arduino 应用的核心叫草图(Sketch),是包含两个函数的 C/C++ 代码:
setup:板子上电后由 Arduino 框架代码执行一次,用于初始化——连接 WiFi 和云服务、初始化输入/输出引脚;loop:之后反复执行直到断电,包含处理逻辑——读取传感器、把数值发送到云端。
通常在每次loop末尾加入延迟(delay):例如希望每 10 秒发送一次传感器数据,就在循环末尾加 10 秒延迟,让 MCU 休眠省电,10 秒后再跑下一轮。
✅ 这种程序架构称为事件循环(Event Loop)或消息循环,是多数桌面应用的底层标准:
loop监听按钮等 UI 组件或键盘等设备发来的消息并作出响应。
仓库中就有真实的草图示例可对照。第一课 "Hello World" 的 main.cpp 展示了标准的setup/loop骨架:
#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中初始化串口(波特率 9600)并等待串口就绪,loop中每 5 秒向串口输出一次 "Hello World"——正是文档所述"初始化代码放setup、处理代码放loop、循环末尾加延迟"的实践。
Arduino 提供标准库抽象不同 MCU 的硬件差异:例如delay暂停程序指定时长、digitalRead从引脚读取HIGH或LOW——无论在哪块板上运行,API 一致。因此为一块板写的 Arduino 代码,只要引脚相同、板子支持相同功能,就可重新编译到其他 Arduino 板运行。此外还有庞大的第三方库生态,支持各类传感器、执行器以及云 IoT 服务接入。
实操任务(针对 Wio Terminal):重读上一课写的代码,找到setup与loop函数,观察串口输出中loop被反复调用;尝试在setup中添加串口写入代码,验证它每次重启只执行一次——用侧面电源开关重启设备来观察该行为。
深入单板计算机(Single-board Computer)
单板计算机是包含完整计算机全部要素的单块小主板,规格接近 PC/Mac,运行完整操作系统,但更小、更省电、价格更低。
Raspberry Pi:从慈善项目到三线产品
Raspberry Pi 基金会 是 2009 年成立于英国的慈善机构,旨在推动计算机科学教育,为此开发了名为 Raspberry Pi 的单板计算机。目前有三个产品线:全尺寸版、更小的 Pi Zero、以及可嵌入最终 IoT 设备的计算模块(Compute Module)。
Raspberry Pi 4B:全尺寸旗舰
最新全尺寸型号 Raspberry Pi 4B 的规格:
- CPU:四核(4 核)1.5GHz;
- 内存:2、4 或 8GB RAM;
- 网络:千兆以太网(Gigabit Ethernet)+ WiFi;
- 视频/音频:2 个支持 4K 屏幕的 HDMI 端口、音频与复合视频输出;
- USB:2 个 USB 2.0 + 2 个 USB 3.0;
- GPIO:40 个引脚;
- 扩展:Raspberry Pi 相机模块连接器、SD 卡槽;
- 尺寸与供电:88mm x 58mm x 19.5mm,3A USB-C 电源适配器;
- 价格:起价 35 美元,远低于 PC/Mac。
💁 另有Pi400一体机——把 Pi4 直接做进键盘里。
Pi Zero:更小更省电
- CPU:单核 1GHz;
- 内存:512MB RAM;
- 网络:WiFi(仅 Zero W 型号);
- 接口:1 个 HDMI、1 个 micro-USB、40 个 GPIO 引脚;
- 扩展:相机模块连接器、SD 卡槽;
- 尺寸:65mm x 30mm x 5mm,功耗极低;
- 价格:Zero 5 美元,带 WiFi 的 W 版 10 美元。
🎓 两款型号的 CPU 都是ARM 处理器,而非多数 PC/Mac 的 Intel/AMD x86/x64——这与部分微控制器、几乎所有手机、Microsoft Surface X 以及 Apple Silicon Mac 相同。
操作系统:所有 Raspberry Pi 运行Raspberry Pi OS——一个 Debian Linux 发行版,提供两种版本:Lite 轻量版(无桌面,适合"无头"headless 项目)和完整版(含桌面环境、浏览器、办公软件、编程工具与游戏)。由于基于 Debian,可安装任何为 Pi 的 ARM 处理器构建的 Debian 应用。
实操任务(针对 Raspberry Pi):了解板载硬件组件——在 Raspberry Pi 硬件文档 阅读所用型号的处理器;定位 GPIO 引脚并阅读 GPIO 文档,用 GPIO 引脚使用指南 识别引脚。
编程单板计算机:Python 与生态
单板计算机是运行完整 OS 的完整计算机,因此可用广泛的编程语言、框架与工具编程——这与依赖 Arduino 等特定框架的微控制器形成鲜明对比。大多数语言都有访问 GPIO 引脚的库,用于与传感器和执行器收发数据。
在 Raspberry Pi 上构建 IoT 应用最常用的语言是Python。Pi 拥有巨大的硬件生态,几乎每种硬件都带有 Python 库。许多生态组件基于"帽子(Hats)"——因像帽子一样盖在 Pi 上、通过大插座连接 40 个 GPIO 引脚而得名。帽子提供屏幕、传感器、遥控车、标准化传感器线缆适配器等额外能力。
仓库中第一课对应的 app.py 仅一行print('Hello World!'),即可在树莓派上直接运行——直观体现了单板计算机"全功能 OS + 任意语言"的开发体验,与微控制器的 C++ 草图形成鲜明对照。
单板计算机在专业 IoT 部署中的使用
单板计算机不仅用于开发者套件,也用于专业 IoT 部署:它们提供强大的硬件控制能力,可运行复杂任务(如执行机器学习模型)。例如 Raspberry Pi 4 Compute Module 提供 Pi 4 的全部算力,但采用更紧凑、更便宜的形态(去掉大部分端口),专为嵌入定制硬件而设计。
课程配套:挑战、测验与作业
- 🚀 挑战:上一课的挑战是尽可能多地列出家里、学校或工作场所的 IoT 设备。本课的延伸问题是:列表中的每个设备,是围绕微控制器、单板计算机构建,还是两者的组合?
- 课后测验:本课配有一次课后测验(与课前测验共同覆盖本课知识点),可在课程 quiz-app 中完成。
- 回顾与自学:建议阅读 Arduino 入门指南、Raspberry Pi 4 介绍,以及关于 CPU/MPU/MCU/GPU 概念的科普文章。结合 hardware.md 中列出的各硬件成本,决定使用哪种硬件平台,或是否选择虚拟设备(虚拟设备路径无需购买任何硬件,用 CounterFit 模拟传感器与执行器即可完成全部作业)。
- 作业(Assignment):对比微控制器与单板计算机 ——创建对比表格,并分别给出"为何用微控制器而非单板计算机"与"为何用单板计算机而非微控制器"各至少 2 条理由。
核心结论速查
| 维度 | 微控制器(MCU) | 单板计算机(SBC) |
|---|---|---|
| 典型代表 | Arduino(Wio Terminal) | Raspberry Pi 4 / Pi Zero |
| 编程语言 | C/C++(Arduino 框架) | Python 等任意语言 |
| 操作系统 | 通常无 OS,可选 RTOS | 完整 OS(Raspberry Pi OS) |
| RAM | KB 级(Wio Terminal 192KB) | 数百 MB 到数 GB(Pi 4 可达 8GB) |
| 时钟频率 | 数百 MHz(Wio Terminal 120MHz) | 1GHz+(Pi 4 四核 1.5GHz) |
| 功耗 | 极低,电池可运行数月到数年 | 较低,需持续供电 |
| 典型应用 | 单一特定任务、受限嵌入式场景 | 复杂任务、机器学习、专业部署 |
选型时牢记本课要点:需要极低功耗、长期电池供电、单一任务时倾向微控制器;需要完整 OS、复杂处理、灵活语言生态时倾向单板计算机;而"不买硬件也能学"的虚拟设备路径则适合任何想先低成本入门的学习者。
【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考