[Funpack3-5]基于Arduino UNO R4 WiFi的任务一点灯!
该项目使用了Arduino UNO R4 WiFi,实现了远程控制灯的打开关闭及亮度调节的设计,它的主要功能为:通过网络连接到智能云端,尝试将设备模拟成可以控制的灯,远程端发送指令,将灯光开启关闭,或调整灯光的亮度,0到90%时,矩阵亮起逐渐变大的范围,90%以上时,灯板显示出太阳的图标。
标签
Funpack活动
Arduino UNO R4 WiFi
任务一点灯
xylon
更新2025-01-15
10

一、项目描述

1.项目介绍

本项目依托Funpack3-5活动,基于Arduino UNO R4 WiFi ,实现了通过网络连接到智能云端,尝试将设备模拟成可以控制的灯,远程端发送指令,将灯光开启关闭,或调整灯光的亮度,0到90%时,矩阵亮起逐渐变大的范围,90%以上时,灯板显示出太阳的图标。取得了良好的效果,具有一定的价值。为智能照明控制以及物联网设备交互应用等相关研究与实践提供了借鉴与思路拓展。

2.设计思路

本项目通过arduino coud控制Arduino Uno R4 Wifi连接到智能云端并模拟为可控制的灯,实现LED矩阵变化。首先读取开关状态,如果开关为关物状态则关闭LED矩阵并重新获取开关状态,如果开关为开则获取输入端数据,然后进行判断:如果输入数据大于90,则控制LED矩阵显示太阳图案,否则控制LED矩阵显示对应数值的LED灯,然后再进行开关判断,不断循环。通过循环来改变一个8x12矩阵的值,之后再把这个矩阵值通过Arduino_LED_Matrix.h库直接向LED矩阵写入数据,控制LED的点亮和熄灭。

3.硬件介绍

image.png

Arduino UNO R4 WiFi 将瑞萨电子的 RA4M1 微处理器与乐鑫的 ESP32-S3 相结合,为创客打造了一款一体化工具,此外,这款多功能板拥有方便的板载 12x8 LED 矩阵和 Qwiic 连接器。LED 矩阵是完全可编程的,可直接在电路板上制作视觉原型通过 Qwiic 连接器,用户可以即插即用的方式创建项目。

ArduinoUNO R4 WiFi 所提供的功能:

  • 与 UNO 外形尺寸的硬件兼容性:UNO R4 WiFi 与其前身 UNO R3 保持相同的外形尺寸、引脚排列和 5 V 工作电压,确保现有扩展板和项目的无缝过渡。
  • 扩展内存和更快的时钟:UNO R4 WiFi 拥有更大的内存和更快的时钟速度,可实现更精确的计算和轻松处理复杂的项目。
  • 额外的板载外设:UNO R4 WiFi 引入了一系列板载外设,包括 12 位 DAC、CAN 总线和运算放大器,提供扩展的功能和设计灵活性。
  • 扩展的 24 V 容差:UNO R4 WiFi 支持更宽的输入电压范围,允许使用单一电源与电机、LED 灯带和其他执行器无缝集成。
  • HID 支持:凭借内置的 HID 支持,UNO R4 WiFi 通过 USB 连接到计算机时可以模拟鼠标或键盘,从而轻松发送击键和鼠标移动。
  • Wi-Fi® 和蓝牙®:UNO R4 WiFi 托管 ESP32-S3 模块,使创客能够为其项目添加无线连接。结合 Arduino IoT Cloud,创客可以远程监控和控制他们的项目。
  • Qwiic 连接器:UNO R4 WiFi 具有 Qwiic I2C 连接器,可以轻松连接到广泛的 Qwiic 生态系统中的节点。适配器电缆还可以与基于其他连接器的传感器和执行器兼容。
  • 支持电池供电的 RTC:UNO R4 WiFi 包含额外的引脚,包括用于关闭电路板的“OFF”引脚和用于保持内部实时时钟供电和运行的“VRTC”引脚。
  • LED 矩阵:UNO R4 WiFi 包含明亮的 12x8 红色 LED 矩阵,非常适合带有动画或绘制传感器数据的创意项目,无需额外的硬件。
  • 运行时错误诊断:UNO R4 WiFi 包含错误捕获机制,可检测运行时崩溃并提供有关导致崩溃的代码行的详细解释和提示。


二、软件流程图及代码说明

1.软件流程图

2.部分代码说明

1. WiFi连接功能

主要作用:连接指定的WiFi网络并打印连接状态。

Copy codevoid connectWiFi() {
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

2. LED矩阵初始化和显示控制

主要作用:根据接收到的亮度值,更新LED矩阵的显示状态。

更新矩阵的函数

cpp
Copy codevoid updateLEDMatrix() {
PWM = calculatePWM(LED);
analogWrite(3, PWM);
clearLedArray();

if (LED >= 0 && LED <= 90) {
fillLedMatrix();
} else {
matrix.renderBitmap(SUN, matrixRows, matrixCols);
}
}

填充矩阵的函数

cpp
Copy codevoid fillLedMatrix() {
int count = 0, col = 0, row = 0;
while (count < LED) {
LedArray[row][col++] = 1;
if (col >= matrixCols) {
col = 0;
row++;
}
count++;
}
matrix.renderBitmap(LedArray, matrixRows, matrixCols);
}




3. TCP服务器连接与通信

主要作用:连接到服务器并发送或接收消息。

服务器连接逻辑

cpp
Copy codeif (!client.connect(server, port)) {
Serial.println("Connection to server failed");
while (true); // 如果连接失败,进入无限循环
}
Serial.println("Connected to server");




4.系统初始化

主要作用:完成所有初始化操作,包括WiFi、LED矩阵和服务器连接。

setup 函数

cpp
Copy codevoid setup() {
col = 0; row = 0; count = 0; LED = 0; PWM = 0;

pinMode(3, OUTPUT);
matrix.begin();

Serial.begin(9600);
while (!Serial) { ; }

connectWiFi();

if (!client.connect(server, port)) {
Serial.println("Connection to server failed");
while (true);
}
Serial.println("Connected to server");

subscribeToTopic("LED002");
}


三、功能展示及说明

1.小于90

2.大于90

四、心得体会

本次活动我学习了arduino uno r4 wifi的使用方法,感谢硬禾学堂和德捷购的支持

附件下载
led2.zip
团队介绍
个人
团队成员
xylon
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号