【Arduino UNO Q】物联网温湿度计
本文介绍了 Arduino UNO Q 开发板结合 Arduino App Lab 软件、Arduino Cloud 云服务平台、AHT30 传感器以及板载 LED 矩阵,实现物联网云端温湿度计的项目设计,包括硬件连接、软件安装、工程创建、流程图、工程代码、效果演示等。
项目介绍
准备工作:硬件连接、Arduino App Lab 安装、软件包更新、Arduino Cloud 注册等;
工程加载:创建工程、流程图、工程代码等;
调试运行:编译上传、运行程序、云端更新、效果演示等。


相较于传统 MQTT 接入 Home Assistant 的方案,该项目为物联网开发提供了一种更加 轻量化 和 快速 的解决方案。
硬件连接
连接显示屏(或 SSH 远程登录、数据线 ADB 登录);
连接鼠标键盘;
WiFi 连接无线网;
使用 PD 电源供电;


环境搭建
下载并安装最新版 Arduino APP Lab 软件;


Arduino Cloud
Arduino 云 是一个开发Arduino项目并将其与世界连接起来的平台。
它支持通过 Wi-Fi®、LoRa®设备、以太网 和 蜂窝网络(GSM/NB-IoT) 与主板的安全连接,可快速将任何信息从一块主板发送到另一块。


Arduino 云平台包括:
一个用于编程电路板的集成开发环境(IDE);
一项云后端服务,用于同步来自 Arduino 板块的数据;
一个图形化工具(仪表盘),用于控制和监控设备;
详见:Arduino Cloud . Getting Started with Arduino Cloud .
流程图


工程代码
工程代码包括 arduino 代码和 python 代码两部分。
Arduino
展开左侧文件列表,打开 sketch/sketch.ino 文件,代码如下
#include <Arduino_RouterBridge.h>
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"
#include <Wire.h>
#include <Adafruit_AHTX0.h>
Arduino_LED_Matrix matrix;
Adafruit_AHTX0 aht;
sensors_event_t hum_event, temp_event;
float current_temperature = 0.0;
float current_humidity = 0.0;
// Bridge回调函数声明
float get_temperature();
float get_humidity();
void setup() {
// LED矩阵初始化
matrix.begin();
matrix.textFont(Font_5x7);
matrix.textScrollSpeed(100);
matrix.clear();
// 传感器初始化
Wire.begin();
if (!aht.begin()) {
matrix.beginText(0, 1, 127, 0, 0);
matrix.print("AHT ERR");
matrix.endText(SCROLL_LEFT);
while(1);
}
matrix.beginText(0, 1, 127, 0, 0);
matrix.print("START");
matrix.endText(SCROLL_LEFT);
// Bridge初始化
Bridge.begin();
// 注册Bridge回调函数(Python调用)
Bridge.provide("get_temperature", get_temperature);
Bridge.provide("get_humidity", get_humidity);
delay(1000);
}
void loop() {
// 读取传感器数据
if (aht.getEvent(&hum_event, &temp_event)) {
current_temperature = temp_event.temperature;
current_humidity = hum_event.relative_humidity;
// LED矩阵显示
String display = " T:" + String(current_temperature, 0) +
"C H:" + String(current_humidity, 0) + "%";
matrix.beginText(0, 1, 127, 0, 0);
matrix.print(display);
matrix.endText(SCROLL_LEFT);
}
delay(200);
}
// Bridge回调
float get_temperature() {
return current_temperature;
}
float get_humidity() {
return current_humidity;
}保存代码。
资料:https://docs.arduino.cc/software/app-lab/bridge/bridge-api/ .
Python
展开左侧文件列表,打开 python/main.py 文件,代码如下
from arduino.app_bricks.arduino_cloud import ArduinoCloud
from arduino.app_utils import App, Bridge
import time
# 初始化云端
iot_cloud = ArduinoCloud()
# 注册温湿度变量
iot_cloud.register("temperature", value=0.0)
iot_cloud.register("humidity", value=0.0)
# 启动云端连接
App.start_brick(iot_cloud)
print("Starting temperature and humidity upload...")
# 主循环
while True:
try:
# 从C++读取传感器数据
temp = Bridge.call("get_temperature")
humi = Bridge.call("get_humidity")
# 更新云端变量
iot_cloud.temperature = round(temp, 1)
iot_cloud.humidity = round(humi, 1)
print(f"Uploaded - Temp: {temp:.1f}°C, Humidity: {humi:.1f}%")
except Exception as e:
print(f"Error: {e}")
time.sleep(2)保存代码。
Arduino 程序每 2 秒向 Python 程序上传数据,更新云端数据并保持同步。
编译运行
点击右上角 Run 按钮,自动编译、上传并运行程序;
板载矩阵 LED 显示环境温湿度数据;


Python 终端连续打印上传至云端的温湿度数据;


云端显示
进入 Arduino Cloud 创建或添加设备;


选择创建的设备,添加变量,如 humidity 和 temperature ;


输入变量名称,类型为 float,操作方式为只读,周期循环,间隔 1 秒;
点击左侧目录栏的设备标签,点击右上角的添加设备,选择 Arduino UNO Q;


点击左侧目录栏的仪表盘标签,点击右上角的添加仪表盘按钮;


点击目标仪表盘,进入主界面,点击 ADD 按钮添加所需部件;


配置部件相关参数,将其链接至 Things 变量,点击右上角 Done 按钮,完成仪表盘设计;
此时可见温湿度实时更新


手机安装并打开 Arduino IoT Remote ,登录账号,可在移动设备随时查看温湿度数据


总结
本文介绍了 Arduino UNO Q 开发板结合 Arduino App Lab 软件、Arduino Cloud 云服务平台、AHT30 传感器以及板载 LED 矩阵,实现物联网云端温湿度计的项目设计,包括硬件连接、软件安装、工程创建、流程图、工程代码、效果演示等,为相关产品在物联网 IoT 领域的快速开发和应用设计提供了参考。
我要赚赏金
