18490浏览
查看: 18490|回复: 0

[K10项目分享] 行空板K10——WLED控灯(新年快乐)

[复制链接]
【项目背景】

  • 本项目旨在通过行空板 K10 通过 HTTP POST 请求控制 ESP32-C3 连接的 WS2812 灯带。ESP32-C3 作为控制节点,运行 WLED 项目提供的固件,实现对 WS2812 灯带的精细控制。行空板 K10 作为控制端,发送 HTTP POST 请求来控制灯带的颜色、效果和其他参数。
  • WLED 是一个开源项目,提供了一个快速且功能丰富的 ESP8266/ESP32 Web 服务器,用于控制 NeoPixel(WS2812B, WS2811, SK6812)LED 灯带,以及基于 SPI 的芯片集,如 WS2801 和 APA102。WLED 项目集成了 WS2812FX 库,支持超过 100 种特殊效果,并提供了现代的用户界面,包括颜色、效果和段控制。此外,WLED 还支持多种控制接口,如 JSON 和 HTTP 请求 API、MQTT、Blynk IoT、E1.31、Art-Net、DDP 和 TPM2.net 等。

【项目设计】

  • 实现远程控制:通过行空板 K10 语音指令发送 HTTP POST 请求,远程控制 ESP32-C3 连接的 WS2812 灯带。
  • 提供丰富的效果:利用 WLED 项目提供的多种效果,实现灯带的动态显示。
【项目硬件】
  • 行空板 K10:作为控制端,通过语音指令发送 HTTP POST 请求。
  • ESP32-C3:作为控制节点,运行 WLED 固件,控制 WS2812 灯带。
  • WS2812 灯带:被控制的 LED 灯带,支持多种颜色和效果。
【制作步骤】1.硬件准备:准备行空板 K10、ESP32-C3 和 WS2812 灯带。
行空板K10——WLED控灯(新年快乐)图5

行空板K10——WLED控灯(新年快乐)图6
行空板K10——WLED控灯(新年快乐)图7
行空板K10——WLED控灯(新年快乐)图8

2.固件部署:在 ESP32-C3 上部署 WLED 固件。通过https://install.wled.me/网站在线安装。同时配置wifi连接。
行空板K10——WLED控灯(新年快乐)图1
行空板K10——WLED控灯(新年快乐)图3
行空板K10——WLED控灯(新年快乐)图2
3.网络配置:配置行空板 K10 和 ESP32-C3 的网络连接。
访问无线路由,获取ESP32-C3的IP地址。
4.控制端开发:开发行空板 K10 的控制程序,结合语音指令发送 HTTP POST 请求。
行空板K10——WLED控灯(新年快乐)图4
  1. /*!
  2. * MindPlus
  3. * esp32s3bit
  4. *
  5. */
  6. #include "asr.h"
  7. #include <DFRobot_Iot.h>
  8. #include "unihiker_k10.h"
  9. #include <DFRobot_HTTPClient.h>
  10. // 函数声明
  11. void DF_MoShi(float mind_n_XiaoGuoXuHao);
  12. // 创建对象
  13. DFRobot_Iot        myIot;
  14. UNIHIKER_K10       k10;
  15. uint8_t            screen_dir=2;
  16.                    String bodydata="";
  17. int                c=0;
  18. ASR                asr;
  19. DFRobot_HTTPClient http;
  20. // 主程序开始
  21. void setup() {
  22.         k10.begin();
  23.         k10.initScreen(screen_dir);
  24.         k10.creatCanvas();
  25.         asr.asrInit(CONTINUOUS, CN_MODE, 60000);
  26.         while(asr._asrState == 0){delay(100);}
  27.         asr.setAsrSpeed(2);
  28.         http.init();
  29.         Serial.begin(9600);
  30.         myIot.wifiConnect("sxs", "************");
  31.         while (!myIot.wifiStatus()) {}
  32.         k10.setScreenBackground(0x000000);
  33.         k10.canvas->canvasText(myIot.getWiFiLocalIP(), 35, 0, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  34.         k10.canvas->canvasText("行空板K10 WLED", 25, 100, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  35.         k10.canvas->canvasText("1.语音唤醒:你好小行", 0, 200, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  36.         k10.canvas->canvasText("2.说命令词:模式?", 0, 250, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  37.         k10.canvas->updateCanvas();
  38.         asr.addASRCommand(1+1, "mo shi yi");
  39.         asr.addASRCommand(2+1, "mo shi er");
  40.         asr.addASRCommand(3+1, "mo shi san");
  41.         asr.addASRCommand(4+1, "mo shi si");
  42.         asr.addASRCommand(27+1, "mo shi er shi qi");
  43.         asr.addASRCommand(60+1, "mo shi liu shi");
  44.         asr.addASRCommand(73+1, "mo shi qi shi san");
  45.         asr.addASRCommand(82+1, "mo shi ba shi er");
  46.         asr.addASRCommand(83+1, "mo shi ba shi san");
  47.         asr.addASRCommand(93+1, "mo shi jiu shi san");
  48.         asr.speak("初始化完成");
  49. }
  50. void loop() {
  51.         if (asr.isDetectCmdID(1+1)) {
  52.                 DF_MoShi(1);
  53.         }
  54.         if (asr.isDetectCmdID(2+1)) {
  55.                 DF_MoShi(2);
  56.         }
  57.         if (asr.isDetectCmdID(3+1)) {
  58.                 DF_MoShi(3);
  59.         }
  60.         if (asr.isDetectCmdID(4+1)) {
  61.                 DF_MoShi(4);
  62.         }
  63.         if (asr.isDetectCmdID(27+1)) {
  64.                 DF_MoShi(27);
  65.         }
  66.         if (asr.isDetectCmdID(60+1)) {
  67.                 DF_MoShi(60);
  68.         }
  69.         if (asr.isDetectCmdID(73+1)) {
  70.                 DF_MoShi(73);
  71.         }
  72.         if (asr.isDetectCmdID(82+1)) {
  73.                 DF_MoShi(82);
  74.         }
  75.         if (asr.isDetectCmdID(83+1)) {
  76.                 DF_MoShi(83);
  77.         }
  78.         if (asr.isDetectCmdID(93+1)) {
  79.                 DF_MoShi(93);
  80.         }
  81. }
  82. // 自定义函数
  83. void DF_MoShi(float mind_n_XiaoGuoXuHao) {
  84.         c=(floor(mind_n_XiaoGuoXuHao));
  85.         DFRobot_HTTPClient http;;
  86.         http.addHeader("Content-Type", "application/json");
  87.         http.addHeader("charset", "UTF-8");
  88.         bodydata=R"({"on":1,"bri":128,"seg":[{"id":0,"start":0,"stop":120,"on":true,"bri":50,"col":[[255,0,0]],"fx":)"+String(c)+R"(,"pal":1}]})";
  89.         Serial.println((bodydata));
  90.         http.addString((bodydata));
  91.         http.POST("http://192.168.31.207/json", 10000);
  92.         Serial.println(http.getString());
  93.         asr.speak((String("已设置模式") + String(c)));
  94. }
复制代码

【演示视频】



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail