
IoT-For-Beginners 入门实战从硬件到云构建你的第一个物联网夜灯项目【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本指南基于开源课程 [IoT-For-Beginners] 的 Getting Started with IoT 入门小节系统讲解物联网IoT的核心概念并带领读者用三种可选硬件路径Arduino 兼容的 Wio Terminal、Raspberry Pi 单板计算机、虚拟单板计算机从零构建一个可连接云端的 夜灯nightlight项目——当光线传感器测得的光线水平下降时LED 自动点亮。读完本文你将掌握 IoT 设备、传感器与执行器的基本工作原理独立完成硬件/虚拟设备的初始化、Hello World 验证、光线传感器与 LED 的接入并通过 MQTT 协议实现遥测telemetry上报与云端命令commands下发。本节课程地图4 课递进式构建一个 IoT 应用Getting Started with IoT 是整个 [IoT-For-Beginners] 课程体系12 周、24 课的起点全部小节内容收录于 1-getting-started/README.md。它由 4 节课组成逐层递进最终落地为一个完整的端到端 IoT 应用Introduction to IoT —— 物联网入门理解 IoT 是什么、IoT 设备的两大类微控制器与单板计算机并完成设备初始化与首个 Hello World 项目。A deeper dive into IoT —— 深入理解 IoT深入 IoT 应用的两大组成物与互联网、边缘计算、IoT 安全并剖析微控制器与单板计算机的 CPU、内存、I/O 等内部结构。Interact with the physical world with sensors and actuators —— 用传感器与执行器与物理世界交互学习传感器与执行器的分类模拟/数字亲手接入光线传感器并点亮 LED初步构成夜灯。Connect your device to the Internet —— 连接互联网引入 MQTT 通信协议将夜灯的光线遥测上报到云端 Broker并接收服务器代码下发的命令控制 LED完成互联网控制的夜灯。每节课都配有课前/课后测验、挑战任务、自修资料与作业assignment配套代码目录散落在各课code、code-sensor、code-actuator、code-mqtt、code-telemetry、code-commands、code-server子目录中可以直接对照阅读。物联网基础理解 Things、传感器与执行器IoT 的定义与数据价值Internet of Things 一词由 Kevin Ashton 于 1999 年提出本意是通过传感器把互联网与物理世界连接起来。如今该术语泛指所有与周围物理世界交互的设备——既可以通过传感器采集数据也可以通过执行器如开关、LED产生真实世界的作用并通常与其他设备或互联网相连。传感器Sensors从世界中采集信息例如测量速度、温度或位置。执行器Actuators将电信号转换为真实世界的作用例如触发开关、点亮灯光、发出声音或向其他硬件如电源插座发送控制信号。IoT 的技术版图远不止设备本身它还包括处理传感器数据的云端服务、向连接在 IoT 设备上的执行器发送请求的云服务以及不一定需要互联网连接、通常被称为**边缘设备edge devices**的本地处理单元——这些设备往往运行着在云端训练好的 AI 模型在本地完成对传感器数据的处理与响应。数据是 IoT 成功的关键。一名合格的 IoT 开发者需要理解要采集什么数据、如何采集、如何基于数据做决策以及在必要时如何用这些决策去作用于物理世界。物联网设备的硬件形态微控制器与单板计算机IoT 设备即 Things可以分为两大类课程中用一整节课2-deeper-dive做了深入剖析微控制器MCU一种小型计算机由 CPU大脑运行程序、内存RAM 与程序存储器存放程序、数据与变量、可编程 I/O 连接与传感器、执行器等外部外设通信组成。MCU 通常价格低廉被设计用于执行少量非常具体的任务而不是像 PC 一样作为通用计算机使用。开发者套件往往板载一些 LED 与常用传感器部分型号如 Wio Terminal还内置 WiFi。微控制器通常用 C/C 编程。单板计算机SBC把完整计算机的所有要素集成在一块小板上的计算设备。它与微控制器一样拥有 CPU、内存与 I/O 引脚但额外具备图形芯片、音频输出、USB 端口等程序存放在 SD 卡或硬盘上的操作系统之中。可以把它理解为更小更便宜的 PC外加用于连接传感器与执行器的 GPIO 引脚。单板计算机是功能完备的计算机可用任意语言编程IoT 设备通常用 Python 编程。本节课程为所有作业提供了 3 种硬件选择硬件清单详见仓库根目录的 hardware.mdArduino 路径使用 Seeed Studios 的 Wio Terminal内置 WiFi 的 Arduino 兼容微控制器。单板计算机路径使用物理的 Raspberry Pi 4。虚拟设备路径在 PC/Mac 上用 CounterFit 模拟单板计算机无需购买任何硬件即可完成全部作业。课程明确说明无需购买任何 IoT 硬件即可完成全部作业一切都可以在虚拟单板计算机上完成。硬件选型与开发环境搭建三条硬件路径概览路径硬件编程语言开发工具ArduinoSeeed Studios Wio TerminalC/CArduino 框架VS Code PlatformIO 扩展单板计算机Raspberry Pi 4或 Pi 2B 以上PythonVS Code本机或 Remote SSH虚拟设备CounterFit本地模拟PythonVS Code Python 虚拟环境三条路径共用同一套 Grove 传感器/执行器生态从某一路径切换至另一路径时无需更换大部分套件虚拟单板计算机的代码也与 Raspberry Pi 高度互通。Wio Terminal 路径的初始化Wio Terminal 是 Seeed Studios 出品的 Arduino 兼容微控制器开发套件内置 WiFi、传感器、执行器与屏幕并可通过 Grove 生态扩展传感器。初始化步骤详见 wio-terminal.md安装 VS Code 与PlatformIO 扩展依赖微软 C/C 扩展会自动随装。通过 USB-C 口连接 Wio Terminal 到电脑。按照 Wio Terminal Wiki 的 WiFi 配置说明更新固件连接 WiFi 前必须完成。在 PlatformIO 中创建名为nightlight的项目Board 选择Seeeduino Wio TerminalFramework 保持Arduino。新建的 PlatformIO 项目会生成platformio.ini配置文件其含义如下[env:seeed_wio_terminal] platform atmelsam board seeed_wio_terminal framework arduino[env:seeed_wio_terminal]一个env段即一份板级编译配置可配置多个env段以支持多板编译platform atmelsamWio Terminal 的底层芯片平台基于 ATSAMD51 的微控制器board seeed_wio_terminal具体的板型framework arduino使用 Arduino 框架。项目目录结构中src/main.cpp是程序入口初始模板如下#include Arduino.h void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }Arduino 框架在设备启动时执行一次setup然后反复执行loop直到断电——这正是经典的事件循环架构。Wio Terminal 的 Hello World在main.cpp中写入串口输出代码用 9600 波特率初始化串口然后每 5 秒打印一次Hello World#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); }上传前需要将 Wio Terminal 置于上传模式快速下拉两次电源开关开关会自动弹回打开位置待 USB 口右侧蓝色状态 LED 闪烁即可。通过命令面板执行PlatformIO: Upload完成编译上传再用PlatformIO: Serial Monitor打开串口监视器观察输出。Raspberry Pi 路径的初始化Raspberry Pi 路径详见 pi.md支持两种开发方式直接在 Pi 上开发使用带桌面的 Raspberry Pi OS在 Pi 上安装 VS Code。远程无头headless开发用 Raspberry Pi Imager 将Raspberry Pi OS Lite (32-bit)写入 SD 卡通过高级选项CtrlShiftX预配置 SSH、WiFi 与区域设置然后从自己的电脑ssh piraspberrypi.local连接再通过 VS Code Remote SSH 远程开发。无论哪种方式都需要把Grove Base Hat安装到 Pi 的 40 针 GPIO 上帽子插座滑入所有 GPIO 引脚并安装 Grove 驱动库sudo apt install git python3-dev python3-pip --yes git clone https://github.com/Seeed-Studio/grove.py cd grove.py sudo pip3 install . sudo raspi-config nonint do_i2c 0上述命令依次完成安装 Git 与 Pip、从源码克隆并安装 Seeed Grove Python 包Pi 路径采用全局安装而非虚拟环境因为 Grove 安装脚本会把包安装到全局、开启 I²C 接口。安装后需sudo reboot重启。Raspberry Pi 的 Hello World在nightlight目录下创建app.py写入print(Hello World!)用python3 app.py运行即可。虚拟设备路径的初始化虚拟设备路径使用 [CounterFit] 项目在本机模拟传感器与执行器详见 virtual-device.md。其代码编写方式与在 Raspberry Pi 上使用真实 Grove 硬件完全相同。首先创建 Python 虚拟环境需 Python 3.6mkdir nightlight cd nightlight python3 -m venv .venv激活虚拟环境Windows Command Prompt 用.venv\Scripts\activate.batPowerShell 用.\.venv\Scripts\Activate.ps1macOS/Linux 用source ./.venv/bin/activate然后安装 CounterFit 及其 Grove shim 包pip install CounterFit pip install counterfit-connection pip install counterfit-shims-grove编写Hello World代码后在 VS Code 终端运行counterfit启动模拟器默认监听 127.0.0.1:5000可通过CounterFit --port port_number换端口并在app.py顶部建立连接from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000)再次运行app.pyCounterFit 界面会从Disconnected变为Connected即表示虚拟硬件连接成功——这就是插上 IoT 硬件的虚拟等价操作。深入 IoT 应用架构物、互联网、边缘与安全第二课 把一个 IoT 应用拆解为两个部分深入讲解The Thing物指能与物理世界交互的设备。典型例子是智能恒温器——它装有温度传感器、用于设定目标温度的旋钮/触摸屏并连接加热/制冷系统当检测到温度超出期望范围时执行器便打开暖气。智能手机同样可以视为通用 IoT 设备GPS 传感器检测位置扬声器给出导航指令。The Internet互联网由 IoT 设备可连接以收发数据的应用组成包括处理传感器数据、帮助决定向设备执行器发送何种请求的其他应用。典型架构是IoT 设备通过 WiFi 连接云端服务 → 云服务处理安全、接收设备消息、回发消息 → 云服务再连接其他应用数据库、手机 App、AI 服务等协同决策。设备也不总是直连互联网有些设备通过蓝牙等技术的网状网络mesh networking互相通信经由具备互联网连接的网关hub上行。IoT on the Edge边缘 IoT虽然 IoT 的 I 代表 Internet设备并不必须联网。设备可以连接本地网络上的边缘网关设备无需经过互联网调用即可处理数据——这在数据量大或网络慢时更快允许在无网络场景如轮船、人道主义救援的灾区离线运行并能保护数据隐私。典型例子是智能音箱Apple HomePod、Amazon Alexa、Google Home用云端训练好的 AI 模型在本地侦听唤醒词只有在被唤醒后才会把语音片段发往互联网处理。IoT SecurityIoT 安全IoT 设备连接云服务其安全性取决于该云服务——如果云服务允许任何设备连接就可能被注入恶意数据或遭受病毒攻击。历史上 Stuxnet 蠕虫通过操纵离心机阀门造成破坏黑客也曾利用薄弱的安全性入侵婴儿监视器等家庭监控设备。部分场景下IoT 与边缘设备甚至运行在与互联网完全隔离的网络上即所谓的气隙隔离air-gapping。微控制器内部结构速览CPU以时钟驱动的处理器每个时钟周期tick执行一条指令速度以 Hz 计量。Wio Terminal 的 CPU 为 120MHz时钟越快功耗与发热越高因此 MCU 通常比 PC 慢得多但更省电可依靠小电池运行数天乃至数年。内存分为非易失的程序存储器断电后保留程序代码与易失的RAM运行期变量与数据断电即失。MCU 的内存比 PC 小几个数量级——Wio Terminal 拥有 192KB RAM 与 4MB 程序存储而普通 PC 可能有 8GB RAM。I/O通过通用输入输出GPIO引脚与外部世界通信引脚可在软件中配置为输入读传感器或输出驱动执行器。物理尺寸最小型的 MCU如 Freescale Kinetis KL031.6mm x 2mm x 1mm甚至能放进高尔夫球的凹坑整套 Wio Terminal 开发套件72mm x 57mm x 12mm也远小于带散热器风扇的 Intel i9 CPU 方案。框架与 OSMCU 通常不运行桌面意义的操作系统而是使用标准化框架如Arduino按统一配方编译代码。也可以运行轻量级的实时操作系统RTOS如 Azure RTOS、FreeRTOS、Zephyr提供多线程、网络、GUI 组件等能力。Arduino 应用的核心是一个 sketch——包含setup初始化与loop循环执行两个函数的 C/C 代码Arduino 标准库如delay、digitalRead屏蔽了板级差异使代码可在不同板间重编译复用。单板计算机内部结构速览以 Raspberry Pi 为例Raspberry Pi 4B 拥有四核 1.5GHz CPU、2/4/8GB RAM、千兆以太网、WiFi、双 4K HDMI 口、USB 2.0/3.0 端口、40 针 GPIO、摄像头接口与 SD 卡槽仅 88mm x 58mm x 19.5mm起步价约 US$35。更小更省的 Pi Zero单核 1GHz、512MB RAM、Zero W 型号带 WiFi仅 US$5 起。Raspberry Pi 运行基于 Debian Linux 的 Raspberry Pi OS分 Lite 无桌面版与完整桌面版。单板计算机在专业 IoT 部署中同样被广泛使用例如内置到自定义硬件中的 Raspberry Pi 4 Compute Module。传感器与执行器实战把光变成电信号第三课 是夜灯项目的核心实操环节先接入光线传感器再接入受光线控制的LED从而真正构建出一台夜灯。传感器感知物理世界传感器是感知物理世界的硬件设备测量周围的一个或多个属性并发送给 IoT 设备。常见传感器包括温度传感器常与气压、湿度集成在一颗芯片中、按钮、光线传感器可感知特定颜色、UV、IR 或普通可见光、摄像头、加速度计、麦克风等。所有传感器的共同点是把感知到的物理量转换为可被 IoT 设备解读的电信号。模拟传感器与模数转换模拟传感器接收 IoT 设备提供的电压传感器组件调整该电压IoT 设备测量返回电压得出数值。以电位器旋钮为例设备送入 5V电位器旋到最关位置时输出 0V旋到最开位置时输出 5V中间位置输出中间电压。问题在于 IoT 设备本质上是数字设备只认 0 和 1因此模拟值必须先经**模数转换器ADC**转换为数字表示。例如 Grove 光线传感器输出 0~1023 的数值在 3.3V 下1V 输出对应数值 300二进制为0000000100101100。在 Grove 生态中Raspberry Pi 通过带 ADC 的 Grove Base Hat 完成这一转换而在编码层面这一切通常由传感器配套库封装——Grove 光线传感器在 Python 中读取light属性即可在 Arduino 中用analogRead读取。数字传感器数字传感器同样靠电压变化感知世界但输出的是数字信号要么只测两种状态要么内置 ADC。最简单的数字传感器是按钮/开关——按下与否只有开、关两态GPIO 引脚可直接读出 1 或 0无需转换。更高级的数字传感器如数字温度传感器用板载 ADC 将模拟量转换为 0/1 序列发送给设备因此可以承载更复杂的数据如摄像头以 JPEG 形式传输图像甚至视频流。执行器把电信号变回物理作用执行器是传感器的反向——把 IoT 设备的电信号转换为光、声、运动等物理交互。常见执行器包括LED通电发光、扬声器发声、步进电机转换为精确的旋转角度、继电器用小电压控制大电压的通断、显示屏更复杂的执行器展示信息。模拟执行器与 PWM模拟执行器根据供给电压的大小产生不同的交互效果如可调光灯的亮度随电压变化。由于设备是数字的发送模拟信号需要数模转换器DAC。另一个常用方案是脉冲宽度调制PWM——通过发送大量短促的数字脉冲模拟模拟信号。课程以电机调速为例详细推导了 PWM 原理用 5V 电源驱动电机每个周期开 0.02s5V 关 0.02s0V即 0.04s 一个周期每秒 25 个脉冲、每个脉冲让电机转 1/10 圈于是每秒转 2.5 圈即150 rpm。把开脉冲减半为 0.01s、关增至 0.03s 后每个脉冲只转 1/20 圈速度降为75 rpm——仅靠改变数字信号的脉宽就使模拟电机转速减半。当信号开与关各占一半时间时称为50% 占空比duty cycle。数字执行器与夜灯的组装最简单的数字执行器是 LED设备发送数字信号 1高电压时点亮发送 00V时熄灭。本课作业要求把光线传感器与 LED 组合起来按各自路径Wio Terminal、Raspberry Pi、虚拟设备完成接线与代码后光照不足时 LED 自动点亮一台本地闭环的夜灯就完成了。仓库中code-sensor与code-actuator目录分别保存了各路径的传感器版与执行器版完整代码。连接互联网用 MQTT 让夜灯上云第四课 完成了从本地夜灯到互联网控制夜灯的升级设备把光线遥测通过 MQTT 发布到公共 Broker本机运行的服务器代码订阅遥测、判断亮度并回发命令设备收到命令后控制 LED 开关。遥测Telemetry从传感器采集数据并发送到云端的动作其词源来自希腊语意为远程测量。MQTT专为 IoT 设计的轻量消息协议MQTTMessage Queueing Telemetry Transport是为 IoT 设计的轻量级开放标准消息协议1999 年最初用于油管道监控15 年后由 IBM 发布为开放标准。其架构为一个 Broker 多个客户端所有客户端连接 BrokerBroker 按命名主题topic路由消息客户端可向主题发布消息订阅了该主题的客户端都会收到。MQTT 还具备以下关键特性主题层级与通配符主题可分级客户端可用通配符订阅多个层级例如把温度发到/telemetry/temperature、湿度发到/telemetry/humidity云应用订阅/telemetry/*即可同时收到两类遥测。服务质量QoS决定消息送达的保证程度分三档——最多一次fire and forget发送一次不做确认、至少一次重试直到收到确认、恰好一次收发双方两级握手保证只收到一份。Retained保留标志MQTT 名义上不支持消息队列客户端断线重连后收不到断线期间的消息但设置了 retained 标志的消息会被 Broker 保存该主题的最后一条后续订阅者一订阅即可收到最新消息。Keep Alive在长消息间隔期间检查连接是否存活。安全MQTT 连接可以是公开开放的也可以用用户名/密码或证书加密保护。MQTT 基于 TCP/IP与 HTTP 同族但端口不同也可通过 WebSocket 与浏览器中的 Web 应用通信。本课作业使用 [Eclipse Mosquitto] 提供的公共测试 Brokertest.mosquitto.org无需注册账号即可测试 MQTT 客户端与服务器。⚠️ 注意该公共 Broker 不安全任何人可能监听发布内容切勿用于需要保密的任何数据。如果想自建 Broker可参考课程自修建议用 Mosquitto 配合如下mosquitto.conf允许匿名与外部连接listener 1883 0.0.0.0 allow_anonymous true搭建 Python 服务器端订阅遥测服务器代码是一个 Python 应用运行在你本机或直接在 Pi 上负责监听 MQTT 遥测并随后回发命令。首先安装 Python、VS Code 与 Pylance 扩展然后创建虚拟环境并安装 Paho-MQTT 库mkdir nightlight-server cd nightlight-server python3 -m venv .venv # Windows Command Prompt: .venv\Scripts\activate.bat # PowerShell: .\.venv\Scripts\Activate.ps1 # macOS/Linux: source ./.venv/bin/activate pip install paho-mqtt服务器代码见仓库 code-server/server/app.py的核心逻辑import json import time import paho.mqtt.client as mqtt id ID client_telemetry_topic id /telemetry client_name id nightlight_server mqtt_client mqtt.Client(client_name) mqtt_client.connect(test.mosquitto.org) mqtt_client.loop_start() def handle_telemetry(client, userdata, message): payload json.loads(message.payload.decode()) print(Message received:, payload) mqtt_client.subscribe(client_telemetry_topic) mqtt_client.on_message handle_telemetry while True: time.sleep(2)ID必须替换为你创建设备代码时使用的唯一 ID且必须与设备端一致否则订阅/发布无法命中正确主题mqtt_client.connect(test.mosquitto.org)连接公共 Brokerloop_start()在后台线程启动消息循环subscribeon_message注册遥测主题与回调函数handle_telemetry收到消息后解析 JSON 并打印while True死循环让应用持续运行code-server/server/app.py中此文件即上文所示代码。运行python app.py后调整设备端的光线水平终端会打印收到的遥测(.venv) ➜ nightlight-server python app.py Message received: {light: 0} Message received: {light: 400}提示设备的app.py与服务器的app.py必须同时运行服务器才能收到消息。发送命令回设备闭环控制在服务器代码中定义命令主题并在遥测回调中追加判断逻辑完整版见 code-commands/server/app.pyserver_command_topic id /commandsdef handle_telemetry(client, userdata, message): payload json.loads(message.payload.decode()) print(Message received:, payload) command { led_on : payload[light] 300 } print(Sending message:, command) client.publish(server_command_topic, json.dumps(command))当光线值小于 300 时向命令主题发布{led_on: true}指示设备点亮 LED否则发布false熄灭 LED。运行输出示例(.venv) ➜ nightlight-server python app.py Message received: {light: 0} Sending message: {led_on: True} Message received: {light: 400} Sending message: {led_on: False}设备端发布遥测并响应命令Raspberry Pi / 虚拟设备Python完整代码见 code-commands/pi/nightlight/app.py核心流程为读取 Grove 光线传感器与 LED → 连接 MQTT Broker → 订阅命令主题、注册回调 → 循环读取光线并发布遥测。import time from grove.grove_light_sensor_v1_2 import GroveLightSensor from grove.grove_led import GroveLed import json import paho.mqtt.client as mqtt light_sensor GroveLightSensor(0) led GroveLed(5) id ID client_telemetry_topic id /telemetry server_command_topic id /commands client_name id nightlight_client mqtt_client mqtt.Client(client_name) mqtt_client.connect(test.mosquitto.org) mqtt_client.loop_start() def handle_command(client, userdata, message): payload json.loads(message.payload.decode()) print(Message received:, payload) if payload[led_on]: led.on() else: led.off() mqtt_client.subscribe(server_command_topic) mqtt_client.on_message handle_command while True: light light_sensor.light print(Light level:, light) mqtt_client.publish(client_telemetry_topic, json.dumps({light : light})) time.sleep(5)Wio TerminalC完整代码见 code-commands/wio-terminal/nightlight/src/main.cpp使用rpcWiFi连接 WiFi、PubSubClient实现 MQTT并用ArduinoJson解析命令消息。其clientCallback回调解析led_on字段并调用digitalWrite(D0, HIGH/LOW)控制 LEDloop中每 2 秒analogRead(WIO_LIGHT)读取光线并发布遥测MQTT 断线时由reconnectMQTTClient每 5 秒重试重连。WiFi 凭据与主题等配置集中在同目录的config.h中。命名约定遥测与命令各使用单一主题意味着多台设备的遥测会出现在同一遥测主题、发往多设备的命令也会出现在同一命令主题。若需定向控制某台设备可用含唯一设备 ID 的多个主题如/commands/device1、/commands/device2让设备只监听属于自己的主题。当上述代码全部运行后整个闭环即告完成设备读取光线 → 发布遥测 → 服务器订阅遥测 → 判断亮度 → 发布命令 → 设备订阅命令 → 控制 LED。改变光线水平即可观察服务器与设备两端的输出以及 LED 的亮灭。课程还进一步探讨了两个真实工程问题遥测频率恒温器每几分钟测量一次即可而工厂关键设备可能需要每秒多次测量宁可浪费带宽也不可漏掉故障前兆与断连处理恒温器的旧温度数据可以丢弃因为当下温度才决定供暖开关而用于趋势分析与预测性维护的机器遥测则应缓存并在恢复连接后补发MQTT 下若需保证顺序送达需由设备与服务器代码自行实现确认与重放机制。作业与延伸学习本小节为每课都配置了作业与自修材料并提供了 quiz-app本仓库 quiz-app 中实现了配套的测验应用供课前课后测验使用第 1 课作业调研一个 IoT 项目第 2 课作业对比微控制器与单板计算机第 3 课作业调研传感器与执行器第 4 课作业对比 MQTT 与其他通信协议完成本节 4 课后你将带着一台可云端遥控的夜灯进入课程的下一个项目。后续 6 个项目2-farm 农业、3-transport 交通、4-manufacturing 制造、5-retail 零售、6-consumer 消费电子将在此基础上进一步展开从预测植物生长、土壤湿度检测到位置跟踪、物体检测、语音识别等逐步把传感器、执行器与云端服务组合成更复杂的真实 IoT 应用。硬件清单与选购指引见 hardware.md常见问题排查见 TROUBLESHOOTING.md 与 docs/troubleshooting.md。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考