Arduino 无线气象站:DIY 便携式天气监测套件
组件与供应
![]() |
Arduino Due(或 Arduino Mega) | × | 1 |
![]() |
3.2" TFT HX8357C 显示屏 | × | 1 |
![]() |
DS3231 实时时钟模块 | × | 1 |
![]() |
DHT22 温湿度传感器 | × | 1 |
![]() |
SparkFun nRF24L01+ 收发模块 | × | 1 |
![]() |
面包板 | × | 1 |
![]() |
公排针 36P 单排(0.1")7 针 | × | 1 |
![]() |
跳线若干 | × | 1 |
![]() |
Arduino Nano R3 | × | 1 |
![]() |
小米移动电源 | × | 1 |
关于项目




构建无线气象站是绝佳的学习体验。完成后你将更理解无线通信、传感器工作原理及 Arduino 平台的强大。以此为基础,未来能轻松构建更复杂的项目。
气象站是利用多种传感器收集天气和环境数据的设备。可测量:
- 温度
- 湿度
- 风速
- 气压
- 紫外线指数
- 雨量
本项目测量两个位置的温湿度,并显示当前日期时间。制作气象站很简单,但能否用开源软硬件打造媲美商用产品的彩色 TFT 显示气象站?答案是肯定的!
项目分两部分:发射端和接收端。
- 发射端测量温湿度,无线发送数据给接收端。
- 接收端测量本地温湿度,接收远程数据,在彩色 TFT 大屏显示所有信息。
开始构建吧!
步骤 1:获取所有零件

所需零件:
- Arduino Due ▶ https://educ8s.tv/part/ArduinoDue
- Arduino Mega ▶ https://educ8s.tv/part/ArduinoMega
- Arduino Nano ▶ https://educ8s.tv/part/ArduinoNano
- 3.2" TFT 显示屏 ▶ https://educ8s.tv/part/32TFT
- DHT22 ▶ https://educ8s.tv/part/DHT22
- NRF24L01 ▶ https://educ8s.tv/part/NRF24L01
- DS3231 RTC ▶ https://educ8s.tv/part/DS3231
- 面包板 ▶ https://educ8s.tv/part/SmallBreadboard
- 导线 ▶ https://educ8s.tv/part/Wires
- 排针 ▶ https://educ8s.tv/part/HeaderPins
- 小米移动电源 ▶ https://educ8s.tv/part/Powerbank
项目成本约 40 美元。 用 Arduino Mega 替代 Due 可省 5 美元。我选 Due 是因其速度快、内存大,为后续加功能留有余地。
步骤 2:温湿度传感器 - DHT22

DHT22 是流行的温湿度传感器,便宜、易用、精度好。内部含电容式湿度传感器、热敏电阻和信号处理芯片,输出数字信号,单片机易读取。
DHT22 特性
- 低成本
- 3-5V 供电和 I/O
- 转换时最大电流 2.5mA
- 0-100% 湿度读数,精度 2-5%
- -40 至 125°C 温度读数,精度 ±0.5°C
- 响应较慢
接线极简:传感器“+”脚接 Arduino 5V 或 3.3V,“-”脚接 GND,OUT 脚接任意数字引脚。
使用需 DHT 库:https://github.com/adafruit/DHT-sensor-library
步骤 3:DS3231 实时时钟模块

DS3231 是实时时钟,自带电池,极低功耗可走时数年。模块成本极低,约 2 美元(含电池)。本项目用它计时。
步骤 4:NRF24L01+ 无线模块


NRF24L01 是低成本双向收发模块,<3 美元。工作在 2.4GHz 频段,速率达 2Mbps。通过 SPI 与 Arduino 通信,易用。需连接模块 8 脚中的 7 脚。
模块不能直接插面包板,需公母线连接。引脚定义:1-GND,2-VCC(接 3.3V,严禁接 5V),3-CE(任意数字脚,例接 D7),4-CSN(任意数字脚,例接 D8),5-SCK(接 D13),6-MOSI(接 D11),7-MISO(接 D12)。
配合库使用:https://github.com/TMRh20/RF24
初次使用建议观看附件视频,通过简单项目理解工作原理。
步骤 5:构建发射端



发射端极简:
- Arduino Nano
- DHT22 传感器
- NRF24L01+ 无线模块
- 面包板
- 导线
传感器 OUT 脚接 Nano D4,电源接 5V/GND。按第三张图连接无线模块。详情见前步骤视频。发射端完成,转接收端。
步骤 6:构建接收端






接收端需:
- Arduino Due 或 Mega
- DS3231 RTC 模块
- DHT22 传感器
- NRF24L01+ 无线模块
- 3.2" 彩色 TFT 显示屏
- 面包板
- 7 排针
- 导线
先弯曲 7 排针插入 Due 对应引脚:1 个 GND、1 个 3.3V、2 个 I2C 引脚、3 个数字引脚 (D6-D8)。另需焊接 3 根线到 Due 硬件 SPI 引脚 (MOSI, MISO, SCK)。仔细核对原理图,连接排针后即可安装显示屏。
连接 DS3231
- VCC → Arduino 3.3V
- GND → Arduino GND
- SDA → Arduino SDA
- SCL → Arduino SCL
连接 DHT22
- VCC → Arduino 3.3V
- GND → Arduino GND
- OUT → Arduino D8
连接 NRF24L01
- GND → Arduino GND
- VCC → Arduino 3.3V
- 第 3 脚 → Arduino D6
- 第 4 脚 → Arduino D7
- 第 5 脚 → 焊接的 SCK
- 第 6 脚 → 焊接的 MOSI
- 第 7 脚 → 焊接的 MISO
步骤 7:发射端代码

需安装 RF24 库(NRF24L01)和 DHT 库(DHT22)。
发射端代码发送包含温度、湿度两个 float 的简单结构体。建立通信需创建“管道”,双方读写同一管道。管道地址设为“0”,通道设为 115(共 126 信道),发射功率设最大以延长距离,数据率设 250kbps(最低)以获更好范围。然后打开管道准备写入。
循环中读取传感器温湿度,存入结构体,写入管道发送。完整代码见附件。 FU361QHIQFCEYSE.ino
步骤 8:接收端代码


需 4 个库:
- 显示屏库:https://github.com/Bodmer/TFT_HX8357_Due。下载后修改 User_Setup.h:注释第 13 行,取消注释第 14 行(因显示屏用 HX8357C 驱动)。
- NRF24L01:https://github.com/TMRh20/RF24
- DHT22:https://github.com/adafruit/DHT-sensor-library
- DS3231:https://github.com/SodaqMoja/Sodaq_DS3231
代码逻辑:setup 中初始化所有传感器/模块并打印 UI。loop 中持续检查无线数据,有新数据则保存并显示。每分钟读取本地温湿度,仅当值变化时更新显示以减少闪烁。附带华氏度版本代码。 F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino
步骤 9:测试项目


上电测试。正常时顶部显示日期时间,底部显示远程和本地温湿度。
若远程传感器无数据,靠近发射端——可能超出范围。持续无数据请复查连线。
本项目展示开源软硬件的威力,几小时即可构建如此令人印象深刻的项目!这只是开始,可添加按钮切换图表/模式、更多传感器、数据记录、联网等。Due 内存充足,扩展空间大。欢迎评论区留下你的想法!
更多细节请看简介中的 YouTube 视频或访问我的网站。谢谢观看!
代码
GitHub 仓库
制造工艺
- 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 高级气象站 v2.0:BME280 实时监测温度/气压/湿度/海拔 (Windows 10 IoT Core)
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- 自制 10 美元便携 Arduino 气象站 - Nano + DHT22 + BMP180 + LCD
- eDOT:基于 Arduino 的精密时钟与气象站,内置红外遥控
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- Arduino + ThingSpeak 实时气象监测站






