节日彩灯 物联网控

2023-01-148266
精华项目
AI 快速预览详细 收起
本文介绍了如何使用Beetle-ESP32控制器和旧手机充电器改造,通过物联网远程控制节日彩灯。项目包括改造充电器、测试ESP32、编写物联网点灯程序、连接灯带以及遥控灯测试。最终效果是可以通过物联网控制彩灯的颜色和开关状态。


节日彩灯 物联网控图1

【项目背景】
临近春节,家里的灯也该有它应有的样子,准备使用Beetle-ESP32控制器,有4个数字口,我只用了D2引脚,集成WIFI无线协议,可以用物联网控制。电源使用旧手机充电器改造,遥控器使用“鳄霸王”。
节日彩灯 物联网控图2

【改造充电器】
节日彩灯 物联网控图3


节日彩灯 物联网控图4

拆解手机充电器,焊上电源线,给ESP32供电。
【测试ESP32】
节日彩灯 物联网控图5

1、连接物联网,Easy Iot
节日彩灯 物联网控图7

节日彩灯 物联网控图6

2、物联网点灯程序
主控板选择FireBeetle ESP32
节日彩灯 物联网控图21

网络扩展选择WIFI、MQTT
节日彩灯 物联网控图22

图形化编程

节日彩灯 物联网控图8

【灯带连接】
节日彩灯 物联网控图9

灯带数据引脚接ESP32板的D2引脚,灯带与ESP32单独供电,且共地。
【遥控灯测试】
节日彩灯 物联网控图10

1、鳄霸王程序(掌控板
节日彩灯 物联网控图11

同micropython程序

  1. # MindPlus
  2. # mpython
  3. from umqtt.simple import MQTTClient
  4. from mpython import *
  5. import network
  6. import usocket
  7. import music
  8. import time
  9. def hostgetIP(host):
  10.         return usocket.getaddrinfo(host,8080,0,0,usocket.SOL_SOCKET)[0][4][0]
  11. # 自定义函数
  12. def BoFangXianShi(NaRong):
  13.   global my_variable, BiaoShi
  14.   music.play(music.BA_DING, wait=False, loop=False)
  15.   oled.fill(0)
  16. my_wifi = wifi()
  17. p0=MPythonPin(0,PinMode.ANALOG)
  18. p1=MPythonPin(1,PinMode.ANALOG)
  19. my_wifi.connectWiFi("sxs","smj080823")
  20. while not (my_wifi.sta.isconnected()):
  21.   pass
  22. mqtt = MQTTClient("", hostgetIP("iot.dfrobot.com.cn"), 1883, "X8jykxFnR", "u8jskbFngz", keepalive=30)
  23. try:
  24.   mqtt.connect()
  25.   print('MQTT Connected Successful')
  26. except:
  27.   print('MQTT Connection Failed')
  28. BiaoShi = 0
  29. oled.DispChar("初始化成功", 42, 22, 1)
  30. oled.show()
  31. my_clock = Clock(oled, 64, 32, 30)
  32. time.sleep(5)
  33. while True:
  34.   if (p0.read_analog() > 4000):
  35.     if (not (BiaoShi == 1)):
  36.       BiaoShi = 1
  37.       mqtt.publish(str("jBarN574g"), str("R").encode('utf-8'))
  38.       BoFangXianShi("红灯")
  39.   elif (p1.read_analog() > 4000):
  40.     if (not (BiaoShi == 2)):
  41.       BiaoShi = 2
  42.       mqtt.publish(str("jBarN574g"), str("G").encode('utf-8'))
  43.       BoFangXianShi("绿灯")
  44.   elif (p0.read_analog() < 100):
  45.     if (not (BiaoShi == 3)):
  46.       BiaoShi = 3
  47.       mqtt.publish(str("jBarN574g"), str("B").encode('utf-8'))
  48.       BoFangXianShi("蓝灯")
  49.   elif (p1.read_analog() < 100):
  50.     if (not (BiaoShi == 4)):
  51.       BiaoShi = 4
  52.       mqtt.publish(str("jBarN574g"), str("M").encode('utf-8'))
  53.       BoFangXianShi("彩灯")
  54.   elif button_a.value() == 0:
  55.     if (not (BiaoShi == 5)):
  56.       BiaoShi = 5
  57.       mqtt.publish(str("jBarN574g"), str("O").encode('utf-8'))
  58.       BoFangXianShi("开灯")
  59.   elif button_b.value() == 0:
  60.     if (not (BiaoShi == 6)):
  61.       BiaoShi = 6
  62.       mqtt.publish(str("jBarN574g"), str("S").encode('utf-8'))
  63.       BoFangXianShi("关灯")
  64.       time.sleep(5)
  65.   elif ((BiaoShi == 6) or (BiaoShi == 0)):
  66.     oled.fill(0)
  67.     my_clock.settime()
  68.     my_clock.drawClock()
  69.     oled.show()
复制代码
2、ESP32程序



节日彩灯 物联网控图12

同micropython程序

  1. /*!
  2. * MindPlus
  3. * firebeetleesp32
  4. *
  5. */
  6. #include <DFRobot_Iot.h>
  7. #include <DFRobot_NeoPixel.h>
  8. // 动态变量
  9. volatile float mind_n_BiaoShi, mind_n_YunXingShiJian;
  10. // 函数声明
  11. void obloqMqttEventT0(String& message);
  12. // 静态常量
  13. const String topics[5] = {"jBarN574g","","","",""};
  14. const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
  15. // 创建对象
  16. DFRobot_Iot      myIot;
  17. DFRobot_NeoPixel neoPixel_D2;
  18. // 主程序开始
  19. void setup() {
  20.         myIot.setMqttCallback(msgHandles);
  21.         Serial.begin(9600);
  22.         myIot.wifiConnect("sxs", "smj080823");
  23.         while (!myIot.wifiStatus()) {yield();}
  24.         Serial.println(myIot.getWiFiLocalIP());
  25.         myIot.init("iot.dfrobot.com.cn","X8jykxFnR","","u8jskbFngz",topics,1883);
  26.         myIot.connect();
  27.         while (!myIot.connected()) {yield();}
  28.         digitalWrite(D9, HIGH);
  29.         delay(5000);
  30.         digitalWrite(D9, LOW);
  31.         neoPixel_D2.begin(D2, 120);
  32.         neoPixel_D2.clear();
  33.         mind_n_BiaoShi = 0;
  34.         mind_n_YunXingShiJian = millis();
  35.         neoPixel_D2.showRainbow(0, 119, 1, 360);
  36. }
  37. void loop() {
  38.         mind_n_YunXingShiJian = millis();
  39.         if ((mind_n_BiaoShi==7)) {
  40.                 neoPixel_D2.rotate(1);
  41.         }
  42.         else if ((mind_n_BiaoShi==1)) {
  43.                 neoPixel_D2.setRangeColor(0, 119, 0xFFFFFF);
  44.                 mind_n_BiaoShi = 0;
  45.         }
  46.         else if ((mind_n_BiaoShi==2)) {
  47.                 mind_n_BiaoShi = 0;
  48.                 neoPixel_D2.clear();
  49.         }
  50.         else if ((mind_n_BiaoShi==3)) {
  51.                 mind_n_BiaoShi = 0;
  52.                 neoPixel_D2.setRangeColor(0, 119, 0xFF0000);
  53.         }
  54.         else if ((mind_n_BiaoShi==4)) {
  55.                 mind_n_BiaoShi = 0;
  56.                 neoPixel_D2.setRangeColor(0, 119, 0x00FF00);
  57.         }
  58.         else if ((mind_n_BiaoShi==5)) {
  59.                 mind_n_BiaoShi = 0;
  60.                 neoPixel_D2.setRangeColor(0, 119, 0x0000FF);
  61.         }
  62.         else if ((mind_n_BiaoShi==6)) {
  63.                 mind_n_BiaoShi = 7;
  64.                 neoPixel_D2.showRainbow(0, 119, 1, 360);
  65.         }
  66. }
  67. // 事件回调函数
  68. void obloqMqttEventT0(String& message) {
  69.         if ((message=="O")) {
  70.                 mind_n_BiaoShi = 1;
  71.         }
  72.         else if ((message=="S")) {
  73.                 mind_n_BiaoShi = 2;
  74.         }
  75.         else if ((message=="R")) {
  76.                 mind_n_BiaoShi = 3;
  77.         }
  78.         else if ((message=="G")) {
  79.                 mind_n_BiaoShi = 4;
  80.         }
  81.         else if ((message=="B")) {
  82.                 mind_n_BiaoShi = 5;
  83.         }
  84.         else if ((message=="M")) {
  85.                 mind_n_BiaoShi = 6;
  86.         }
  87. }
复制代码
【安装吸顶灯】节日彩灯 物联网控图13节日彩灯 物联网控图14节日彩灯 物联网控图15节日彩灯 物联网控图16节日彩灯 物联网控图17节日彩灯 物联网控图18节日彩灯 物联网控图19节日彩灯 物联网控图20
【演示视频】











创作许可协议

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

评论(8)
rzyzzxw
rzyzzxw
新年快乐!
花生编程
花生编程
灯挺漂亮的。
花生编程
花生编程
赞赞!!
花生编程
花生编程
厉害厉害
rzyzzxw
rzyzzxw
赞赞云天老师
三春牛-创客
三春牛-创客
还是吸顶灯的......感觉这种彩色灯带容易坏.............
三春牛-创客
三春牛-创客
放上去不打算拆了吗?
三春牛-创客
三春牛-创客回复云天
哦,原来是这样
云天
云天
作者
回复三春牛-创客
这个灯平时基本不用,弄成彩灯,烘托节日气氛。
三春牛-创客
三春牛-创客
厉害厉害
- 没有更多了 -