emqx+阿里云+app 控制灯带

2025-02-062425
AI 快速预览详细 收起
该项目通过行空板K10、EMQX和阿里云搭建MQTT服务器,并使用App Inventor设计APP来控制灯带。硬件包括行空板K10、k10扩展板和32*8的ws2812b柔性屏。项目不仅适合作为学校STEM教育的一部分,也适合作为个人爱好者的DIY项目。通过动手实践,用户可以掌握在云上搭建MQTT服务器的方法,理解MQTT通信的基本用法,以及物联网的基本应用。


【项目背景】随着人工智能技术的快速发展,物联网技术已经广泛应用于智能家居、自动化系统等多个领域。在教育领域,通过编程和电子硬件的结合,可以激发学生的创造力和实践能力,同时也为爱好者提供了一个有趣且富有教育意义的动手项目。

【项目设计】
  • 项目的目标是通过emqx在阿里云上搭建自己的MQTT服务器,让灯带连接到自己搭建的MQTT服务器,并通过appinvtor设计app来控制灯带的亮和灭,以及灯带的亮灯的模式。
  • 这个项目不仅适合作为学校STEM(科学、技术、工程和数学)教育的一部分,也适合作为个人爱好者的DIY项目。通过动手实践,用户可以基本掌握在云上emqx搭建自己的MQTT服务器方法,理解MQTT通信的基本用法,理解物联网的基本运用,通过设计APP同时也能够享受到创造和编程带来的乐趣。

【项目硬件】
  • 行空板k10
  • k10扩展板
  • 32*8的ws2812b柔性屏
【制作步骤】
1.硬件准备:行空板k10,k10扩展板,32*8的ws2812b柔性屏。

emqx+阿里云+app 控制灯带图1

emqx+阿里云+app 控制灯带图2

emqx+阿里云+app 控制灯带图14

2.申请阿里云免费ECS服务器,并创建实例,并在安全组中开放18803端口,并连接服务器
emqx+阿里云+app 控制灯带图3

emqx+阿里云+app 控制灯带图4

emqx+阿里云+app 控制灯带图5

emqx+阿里云+app 控制灯带图6

3.并在阿里云服务器上部署EMQX

emqx+阿里云+app 控制灯带图7

  • 配置 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

emqx+阿里云+app 控制灯带图8

5.程序编写:灯带连接emqx物联网服务器

emqx+阿里云+app 控制灯带图9

emqx+阿里云+app 控制灯带图10

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[5] = {"light","","","",""};
const MsgHandleCb msgHandles[5] = {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控制灯带

emqx+阿里云+app 控制灯带图11

7.测试

emqx+阿里云+app 控制灯带图12

emqx+阿里云+app 控制灯带图13




app.aia

566.17 KB, 下载次数: 2110

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -