emqx+阿里云+app 控制灯带
本帖最后由 天空1 于 2025-2-6 22:50 编辑【项目背景】随着人工智能技术的快速发展,物联网技术已经广泛应用于智能家居、自动化系统等多个领域。在教育领域,通过编程和电子硬件的结合,可以激发学生的创造力和实践能力,同时也为爱好者提供了一个有趣且富有教育意义的动手项目。
【项目设计】
[*]项目的目标是通过emqx在阿里云上搭建自己的MQTT服务器,让灯带连接到自己搭建的MQTT服务器,并通过appinvtor设计app来控制灯带的亮和灭,以及灯带的亮灯的模式。
[*]这个项目不仅适合作为学校STEM(科学、技术、工程和数学)教育的一部分,也适合作为个人爱好者的DIY项目。通过动手实践,用户可以基本掌握在云上emqx搭建自己的MQTT服务器方法,理解MQTT通信的基本用法,理解物联网的基本运用,通过设计APP同时也能够享受到创造和编程带来的乐趣。
【项目硬件】
[*]行空板k10
[*]k10扩展板
[*]32*8的ws2812b柔性屏
【制作步骤】
1.硬件准备:行空板k10,k10扩展板,32*8的ws2812b柔性屏。
2.申请阿里云免费ECS服务器,并创建实例,并在安全组中开放18803端口,并连接服务器
3.并在阿里云服务器上部署EMQX
[*]配置 EMQX Apt 源
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
[*]安装 EMQX
sudo apt-get install emqx
[*]启动 EMQX
sudo systemctl start emqx
4.登陆登 录 - EMQX,用户名admin,密码:public
5.程序编写:灯带连接emqx物联网服务器
Arduino c 程序
/*!
* MindPlus
* esp32s3bit
*
*/
#include <DFRobot_Iot.h>
#include "unihiker_k10.h"
#include <DFRobot_NeoPixel.h>
#include "arduino_image_cache.h"
// 函数声明
void DF_model2();
void obloqMqttEventTffkg4(String& message);
void DF_mode1();
// 静态常量
const String topics = {"light","","","",""};
const MsgHandleCb msgHandles = {obloqMqttEventTffkg4,NULL,NULL,NULL,NULL};
// 创建对象
uint8_t screen_dir=2;
UNIHIKER_K10 k10;
DFRobot_NeoPixel neoPixel_P0;
DFRobot_Iot myIot;
// 主程序开始
void setup() {
k10.begin();
myIot.setMqttCallback(msgHandles);
k10.initScreen(screen_dir);
k10.creatCanvas();
k10.canvas->canvasDrawBitmap(18,80,206,194,image_data1);
k10.setScreenBackground(0x33CC00);
k10.canvas->canvasText("春节快乐,蛇年大吉!", 5, 20, 0xFF0000, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->updateCanvas();
neoPixel_P0.begin(P0, 256);
neoPixel_P0.setBrightness(100);
myIot.wifiConnect("HW-2.4G-202", "19770120602xsh");
while (!myIot.wifiStatus()) {}
myIot.init("116.62.217.131","zhangsan","4691074095968446","123", topics, 1883);
myIot.connect();
while (!myIot.connected()) {}
myIot.subscribeTopic("light");
}
void loop() {
}
// 自定义函数
void DF_model2() {
for (int index = 0; index < 2; index++) {
neoPixel_P0.clear();
delay(1000);
neoPixel_P0.showRainbow(0, 255, 1, 360);
delay(3000);
}
}
void DF_mode1() {
neoPixel_P0.clear();
delay(1000);
neoPixel_P0.setRangeColor(0, 255, 0xFF6666);
delay(1000);
neoPixel_P0.rotate(0);
delay(1000);
neoPixel_P0.setRangeColor(0, 255, 0x33CC00);
delay(1000);
neoPixel_P0.setRangeColor(0, 255, 0x0000FF);
delay(1000);
neoPixel_P0.setRangeColor(0, 255, 0x9999FF);
delay(1000);
}
// 事件回调函数
void obloqMqttEventTffkg4(String& message) {
if ((message==String("on"))) {
neoPixel_P0.setRangeColor(0, 255, 0xFF0000);
}
if ((message==String("m1"))) {
DF_mode1();
}
if ((message==String("m2"))) {
DF_model2();
}
if ((message==String("off"))) {
neoPixel_P0.clear();
}
}
6.用Appinventor设计APP连接EMQX控制灯带
7.测试
https://www.bilibili.com/video/BV1LkNWecE1i?t=22.0
页:
[1]