IoT 与 MQTT 入门:免代码 ESP8266 教程
MQTT 是大多数物联网解决方案的轻量级消息骨干。本指南展示如何启动完整的免代码工作流:ESP8266 传感器发布数据到运行 Node-RED 的树莓派,读数在实时仪表盘呈现。
MQTT 对物联网的意义
MQTT 的发布/订阅模型将网络流量降至最低,专为不可靠或低带宽连接设计——这正是大多数物联网部署所需。利用 Arduino、MQTT、Node-RED 等开放标准,无需写一行代码即可快速原型。
所需材料
- ESP8266 模块(文中称 “IoT Octopus”)搭载 Bosch BME280 传感器(温度、气压、湿度)
- 树莓派运行 Raspbian (测试版 2018-06-27)
- Node-RED (较新 Raspbian 镜像预装,否则手动安装)
- Mosquitto MQTT 代理 — https://mosquitto.org
- Arduino IDE 1.8.5 (IoT Werkstatt 包含便携版)
- Ardublock — 可视化积木编辑器,自动生成 Arduino 代码
步骤 1:下载 IoT Werkstatt 包
获取 IoT Werkstatt ZIP。它打包了便携版 Arduino 1.8.5、所有必需库和 Ardublock,提供常见物联网任务的预置 “超级积木”。
步骤 2:准备 ESP8266
打开 Ardublock 加载提供的 XML 项目。配置 Wi-Fi SSID/密码,将 MQTT 设置指向树莓派代理地址。选择 Bosch BME280 传感器,为每项测量创建不同主题(如 home/room1/temperature)。
点击 Upload to Octopus — Arduino IDE 编译生成的草图并烧录到 ESP8266。运行后,设备向 MQTT 代理发布传感器数据。
步骤 3:在树莓派搭建 MQTT 代理
树莓派安装 Mosquitto:
sudo apt-get update sudo apt-get install mosquitto mosquitto-clients
启动代理 (开机自启)。基础本地设置无需额外配置。
步骤 4:导入 Node-RED 流
打开 Node-RED (https://localhost:1880) 粘贴提供的流程 JSON。双击每个 MQTT 输入节点设置代理地址和凭据。
右侧调试面板将在 ESP8266 开始发布后显示传入消息。
步骤 5:添加仪表盘
在 Node-RED 安装 node-red-dashboard 调色板节点。流程已包含仪表盘 UI 配置。
安装后,仪表盘可在 https://localhost:1880/ui 访问,显示温度、气压、湿度实时图表。
可选:保护仪表盘
为保护 UI,在 settings.js 启用 httpNodeAuth,参考 Node-RED 安全文档。
树莓派快速启动清单
- 从官网下载 Raspbian 烧录到 32GB SD 卡。
- 启用无头模式 Wi-Fi 和 SSH:
- 在
/boot分区创建空文件ssh。 - 放置
wpa_supplicant.conf配置网络:
country=US ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="YourNetworkSSID" psk="YourNetworkPassphrase" key_mgmt=WPA-PSK } - 在
- 启动树莓派,升级系统:
sudo apt-get update sudo apt-get upgrade
- 安装 Mosquitto (见步骤 3)。
- 若 Node-RED 未预装,运行:
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
- 设置 Node-RED 开机自启:
sudo systemctl enable nodered.service
- 安装 Node-RED 仪表盘节点:
sudo apt-get install npm sudo npm install -g npm hash -r cd ~/.node-red npm i node-red-dashboard node-red-start
运行后,访问 Node-RED https://localhost:1880 和仪表盘 https://localhost:1880/ui。
Node-RED 管理
node-red-start— 启动 Node-REDnode-red-stop— 停止 Node-REDsudo systemctl— 控制服务sudo journalctl -f -u nodered -o cat— 实时尾随日志
下一步?
引入机器学习扩展项目:树莓派装 TensorFlow (pip3 install tensorflow),添加 node-red-contrib-machine-learning 调色板将 AI 能力带入仪表盘。
参考资料
— DONE —
制造工艺