使用 Arduino、ESP8266 和 ThingSpeak 构建可靠的个人气象站
项目概述
想随时掌握房间的温度、湿度、气压和光照强度吗?本项目将指导你从零开始搭建一款个人气象站,采集环境数据并通过 Wi-Fi 上传至 ThingSpeak 私有频道,实现手机、电脑远程实时监测。
所需元器件
- Arduino Nano R3 × 1
- ESP8266 ESP-01 Wi-Fi 模块(已烧录 AT 固件)× 1
- BMP180 气压/温度传感器 × 1
- DHT11 温湿度传感器(4 脚)× 1
- 光敏电阻 (LDR) × 1
- LM2596 DC-DC 降压模块 × 1
- 12V/2A 电源适配器 × 1
- DC 电源插座、拨动开关 × 各 1
- 电阻:4.7 kΩ (DHT11 上拉) 、51 kΩ (LDR 分压) × 各 1
- 万用板、公/母排针、4×4×2 英寸塑料外壳、热熔胶等
所需工具
- 烙铁、焊锡、剥线钳、螺丝刀、锉刀、热熔胶枪
软件准备
- Arduino IDE(最新版)
- ThingSpeak 账号及私有频道(需开启 4 个字段)
ThingSpeak 频道创建步骤
- 访问 thingspeak.com 注册账号
- 点击 New Channel,填写名称、描述,勾选 Field 1~4 分别对应温度、光照、气压、湿度
- 保存后进入 API Keys 页面,复制 Write API Key 备用
电路原理图与接线说明
- BMP180 → Arduino I2C 接口 (A4/SDA, A5/SCL)
- DHT11 数据脚 → A0,并接 4.7 kΩ 上拉至 3.3V
- LDR 与 51 kΩ 电阻串联分压,中点接 A1
- ESP8266 TX/RX → Arduino D10/D11 (SoftwareSerial),CH_PD 接 3.3V
- LM2596 输入接 12V,输出调至 3.3V 供传感器及 ESP8266 使用
- Arduino Vin 直接接 12V 供电

万用板焊接与组装
- 用母排针固定 Arduino Nano 与 ESP8266,便于拔插
- 传感器、LM2596 引出母座连接线,预留长度以便安装到外壳盖面
- 按原理图焊接导线,焊后用万用表检查短路
固件代码要点
完整代码见 GitHub 仓库,烧录前请修改:
String network = "你的WiFi_SSID";
String password = "你的WiFi密码";
String GET = "GET /update?key=你的Write_API_Key";
主要流程:
- 初始化传感器与 SoftwareSerial (9600 波特率)
setupEsp8266():复位模块 → 设置 Station 模式 → 连接 Wi-Fi- 主循环每 30 秒读取四路传感器数据
updateTemp()通过 AT+CIPSTART 建立 TCP 连接,用 HTTP GET 发送至 ThingSpeak
外壳加工与最终组装
- 在外壳侧面开孔安装 DC 插座与开关
- 盖面开孔对应四个传感器,热熔胶固定
- 将焊好板卡放入盒内,理顺线材,拧紧盖螺丝

测试与使用
接通 12V 电源,观察串口调试信息(可将代码 #define DEBUG 1)。登录 ThingSpeak 频道即可看到实时图表。至此,你的个人气象站已完工,可随时随地查看环境数据。
制造工艺
- 树莓派太阳能气象站DIY指南
- 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 气象站接入 CWOP 实战指南:公民天气观测计划
- 树莓派气象站:Sense HAT 环境数据采集与 Dropbox 自动上传
- 高级气象站 v2.0:BME280 实时监测温度/气压/湿度/海拔 (Windows 10 IoT Core)
- 智能窗帘:基于Arduino与太阳能的自动光控系统
- 使用 Arduino MKR1000 将 DHT11 传感器数据上传至 ThingSpeak
- 自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD
- eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控
- Arduino + ThingSpeak 实时气象监测站
- Arduino Nano 多传感器气象站:BMP280 + DHT11 + GUVA-S12SD + DS3231 + OLED