亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino UNO + ESP-01 + ThingSpeak + MIT App Inventor 打造简易 IoT 系统

所需元件与物料

Arduino UNO×1
ESP8266 ESP-01 模块×1
DHT22 温湿度传感器×1
DS18B20 土壤温度传感器 (防水)×1
LDR 光敏电阻×1
YL-69 + LM393 土壤湿度模块×1
双路 5V 继电器模块 (低电平触发、带光耦)×1
5V 直流水泵、220V 灯泡、LED 指示灯、电阻、面包板、杜邦线、继电器独立 5V 供电若干

软件与云服务

项目架构

本地采集单元 (Arduino + 传感器) → ESP-01 (AT 命令透传) → ThingSpeak 云端通道 → Android App 读取状态 / 下发控制指令 → ESP-01 → Arduino 驱动继电器控制水泵/灯泡。

Arduino UNO + ESP-01 + ThingSpeak + MIT App Inventor 打造简易 IoT 系统
数据流向框图

分步实施指南 (17 步)

Step 1: 项目概览

采集空气温湿度、土壤温湿度、光照强度 5 项传感器数据,上传 ThingSpeak 状态通道 (Channel)。控制水泵与灯泡 2 路执行器,状态回传云端。Android App 实时显示并可远程开关执行器。决策逻辑示例:土壤湿度低 → 开水泵;土壤温度低 → 开灯泡加温。

Step 2: 物料清单 (BoM)

详见元件表,含参考价格 (约 $50 总成本)。

Step 3: 硬件分阶段组装建议

  1. 分别安装测试所有传感器
  2. 配置 ESP-01 (BareMinimum 空代码避免串口冲突)
  3. 修改 ESP-01 波特率为 9600 (出厂常为 115200),命令:AT+UART_DEF=9600,8,1,0,0
  4. 设置 Station 模式 AT+CWMODE=1,连接 WiFi AT+CWJAP="SSID","PASS"
  5. 创建 ThingSpeak 状态通道 (8 字段:2 执行器 + 5 传感器 + 1 预留)
  6. 编写 Arduino 代码上传传感器数据 (HTTP GET 写入)
  7. 开发 App 读取状态通道并显示
  8. 安装执行器 (继电器+水泵/灯泡)
  9. 创建 2 个执行器专用通道 (各仅用 Field1 存 0/1)
  10. Arduino 定时读取执行器通道 (HTTP GET 读最后值) 并驱动继电器
  11. 完善 App 增加控制按钮 (写入执行器通道)
  12. 整合收发代码,加入 ESP-01 心跳检测与硬件复位机制

Step 4-6: 传感器接线与代码框架

// 传感器初始化
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
DHT dht(11, DHT22);
#define ldrPIN A1
#define soilHumPIN A0

void readSensors() {
  airTemp = dht.readTemperature();
  airHum  = dht.readHumidity();
  DS18B20.requestTemperatures();
  soilTemp = DS18B20.getTempCByIndex(0);
  soilHum = map(analogRead(soilHumPIN), 1023, 0, 0, 100);
  light   = map(analogRead(ldrPIN), 1023, 0, 0, 100);
}

Step 7-9: ThingSpeak 状态通道配置与数据上传

创建通道后记录 Write API Key。上传采用三步 AT 命令:

  1. AT+CIPSTART="TCP","184.106.153.149",80 (建立 TCP 连接)
  2. AT+CIPSEND=长度
  3. 发送 GET 字符串:GET /update?api_key=KEY&field1=pump&field2=lamp&field3=airTemp&field4=airHum&field5=soilTemp&field6=soilHum&field7=light&field8=spare\r\n\r\n

代码含定时发送 (默认 17 秒)、失败重发、错误计数 (field8) 等健壮性逻辑。

Step 10: Android App 第一版 (仅监控)

使用 MIT App Inventor:
- Clock 定时器 (2 秒) 调用 readArduino 过程
- Web 组件 GET 请求 ThingSpeak 状态通道 JSON
- 解析 JSON 填充全局变量并更新 Label 显示
- 土壤温度<10°C 或湿度<60% 时闪烁报警

Step 11-13: 执行器安装、ThingSpeak 执行器通道、Arduino 读取控制指令

继电器模块低电平触发,GND 与 Arduino 隔离供电以防干扰。创建两个通道 (Pump、Lamp),各仅用 Field1 存 0/1。Arduino 每 10 秒轮询读取:

GET /channels/375598/fields/1/last  // 读取水泵指令
GET /channels/375599/fields/1/last  // 读取灯泡指令

解析响应第 5 字符 (ASCII '0'/'1'),驱动对应继电器引脚 (D10/D12)。

Step 14: 浏览器测试执行器控制

直接在浏览器访问:
https://api.thingspeak.com/update?api_key=ACT1_WRITE_KEY&field1=1 (开水泵)
...&field1=0 (关水泵) 同理灯泡。

Step 15: App 完善 (增加控制按钮)

每个执行器配 ON/OFF 两按钮,按下变色 (蓝/红),点击时向对应执行器通道写入 1/0。

Step 16: 终极整合代码

合并传感器上传、执行器轮询、ESP-01 心跳检测 (定时发 AT 检测是否卡死,卡死则硬件复位) 的完整 Arduino 代码见 GitHub:
ArduFarmBot_Light.ino

Step 17: 总结

Arduino UNO + ESP-01 虽老但经典,配合 ThingSpeak 与 App Inventor 可快速落地 IoT 原型。后续将推出更多进阶教程,敬请关注 GitHub 与 博客。

电路原理图

Fritzing 源文件:下载

制造工艺

  1. 树莓派 4B+ 上构建并行 C++17 SYCL 代码:hipSYCL 与 GCC/Clang 工具链实战
  2. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  3. Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
  4. Arduino 串口简易计算器:两数四则运算演示
  5. 自制便携式视觉暂留显示器:Arduino UNO 与 ATtiny85
  6. 非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
  7. Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图
  8. Arduino + ThingSpeak 实时气象监测站
  9. 校园智能体温监测系统 - 精准、实时、安全的学生健康守护方案
  10. 热敏电阻测温轻松上手:Arduino 分步实战教程
  11. Azure IoT智能游泳池监控系统:温度感知与远程控制
  12. 精准温控木炭烟熏炉套件:Arduino MKR1000 物联网 BBQ 大师