天空1 发表于 2025-2-6 22:30:31

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]
查看完整版本: emqx+阿里云+app 控制灯带