内容介绍
内容介绍
一、 项目介绍
Arduino uno r4 wifi 开发板集成 ESP32-S3 模块,提供 WiFi 和蓝牙功能,便于实现物联网项目。意法半导体、adafruit等制造商开源了很多硬件相关库,我们可以非常简单地利用这些库调用各种传感器,降低了开发门槛。本项目利用意法半导体的开源库调用LPS22HH传感器,获取温度和气压数据,并通过 Arduino Cloud 远程获取传感器数据,并控制LED矩阵。
项目目标:
- 使用 I2C 调用LPS22HH 温度和气压传感器,获取温度和气压数据。
- 控制LED矩阵灯,使其根据亮度螺旋增加或减少点亮的小灯数量。
- 将开发板连接到 Arduino Cloud,并通过 Arduino Cloud 获取传感器数据和调节亮度。
二、设计思路
利用开源库LPS22HHSensor.h通过 I2C 调用LPS22HH 温度和气压传感器,获取温度和气压数据;Arduino_LED_Matrix.h控制板载LED矩阵。将开发板连接到 Arduino Cloud 后,Arduino Cloud 会同步关联变量的数值,利用这个特性同步气温、气压和亮度信息,开发板收到 Arduino Cloud 的亮度参数变动后,改变LED矩阵。同样为了节省计算资源,不同亮度的frame提前生成。
三、实现过程
初始化I2C、uart通信,初始化传感器;Arduino Cloud 相关代码由Arduino Cloud 自动生成,不需修改。
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(115200);
matrix.begin();
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
pinMode(LED_BUILTIN, OUTPUT); // Led
// Initialize bus interface
dev_interface.begin();
// Initlialize component
PressTemp.begin();
PressTemp.Enable();
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
循环获取气压和温度数据,并通过uart打印信息
void loop() {
ArduinoCloud.update();
// Your code here
// Led blinking
digitalWrite(LED_BUILTIN, HIGH);
delay(250);
digitalWrite(LED_BUILTIN, LOW);
delay(250);
// Read pressure from sensor
float pressure, temperature;
PressTemp.GetPressure(&pressure);
PressTemp.GetTemperature(&temperature);
Pressure = pressure; //sync parameter between Arduino Cloud
Temperature = temperature;
SerialPort.print("Pres[hPa]:");
SerialPort.print(pressure, 2);
SerialPort.print(", Temp[C]:");
SerialPort.println(temperature, 2); // print info through uart
}
LED相关参数(亮度和开关)变化时,Arduino Cloud 自动触发此函数;开灯时,根据亮度信息查表获取frame并展示,实现根据亮度螺旋增加或减少点亮的小灯数量。
void onLEDMatrixChange() {
// Add your code here to act upon LEDMatrix change
int brightness = (int)lEDMatrix.getBrightness();
if(brightness && lEDMatrix.getSwitch()){
if(brightness <= 96){
matrix.loadFrame(frame[brightness]);
SerialPort.print("Brightness:");
SerialPort.println(brightness);
}
else{matrix.loadFrame(frame[96]);}
}
else{matrix.clear();SerialPort.println("closed");}
}
四、实现效果
网页端:
手机App端:
五、未来的计划建议
Arduino 有非常优秀的社区支持,还有非常多的各种传感器开源库等着我们探索。Arduino Cloud 仪表盘能够根据传感器信息实现更加复杂的逻辑。
附件下载
SourceCode.zip
团队介绍
无
评论
0 / 100
查看更多
猜你喜欢
Funpack3-5 Arduino UNO R4 WiFi 物联网灯板该项目使用了Arduino UNO R4 WiFi,实现了物联网灯板创意项目的设计,它的主要功能为:利用 Arduino UNO R4 WiFi 开发板学习物联网开发,使用其板载的 12x8 LED矩阵, 实现一个接入智能家居平台可远程控制的物联网灯板。。
鲜de芒果
13
funpack3-5 - 基于Arduino UNO R4 WiFi 开发板的云端控制该项目使用了Arduino UNO R4 WiFi 开发板,实现了云端收发信息的设计,它的主要功能为:通过网络连接到巴法云端,既可以远程控制LED的亮度以及灯板矩阵,又可以远程读取温湿度传感器的信息。
hhh
12
【Funpack3-5】基于Arduino UNO R4 WiFi的远程灯光控制和联网时钟设计该项目使用了Arduino UNO R4 WiFi,实现了远程灯光控制的设计,它的主要功能为:通过网络连接到智能云端,尝试将设备模拟成可以控制的灯,远程端发送指令,将灯光开启关闭,0到90%时,矩阵亮起逐渐变大的范围,90%以上时,灯板显示出太阳的图标。
该项目使用了Arduino UNO R4 WiFi,实现了联网时钟的设计,它的主要功能为:通过LED矩阵显示从NTP服务器获取到的时间信息,包括年、月、日、时、分、秒,同时约每12分钟会自动校时一次。
QuaX
11