【项目背景】- 本项目旨在通过行空板 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 灯带。




2.固件部署:在 ESP32-C3 上部署 WLED 固件。通过https://install.wled.me/网站在线安装。同时配置wifi连接。



3.网络配置:配置行空板 K10 和 ESP32-C3 的网络连接。
访问无线路由,获取ESP32-C3的IP地址。
4.控制端开发:开发行空板 K10 的控制程序,结合语音指令发送 HTTP POST 请求。

-
- /*!
- * MindPlus
- * esp32s3bit
- *
- */
- #include "asr.h"
- #include <DFRobot_Iot.h>
- #include "unihiker_k10.h"
- #include <DFRobot_HTTPClient.h>
- // 函数声明
- void DF_MoShi(float mind_n_XiaoGuoXuHao);
- // 创建对象
- DFRobot_Iot myIot;
- UNIHIKER_K10 k10;
- uint8_t screen_dir=2;
- String bodydata="";
- int c=0;
- ASR asr;
- DFRobot_HTTPClient http;
-
-
- // 主程序开始
- void setup() {
- k10.begin();
- k10.initScreen(screen_dir);
- k10.creatCanvas();
- asr.asrInit(CONTINUOUS, CN_MODE, 60000);
- while(asr._asrState == 0){delay(100);}
- asr.setAsrSpeed(2);
- http.init();
- Serial.begin(9600);
- myIot.wifiConnect("sxs", "************");
- while (!myIot.wifiStatus()) {}
- k10.setScreenBackground(0x000000);
- k10.canvas->canvasText(myIot.getWiFiLocalIP(), 35, 0, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
- k10.canvas->canvasText("行空板K10 WLED", 25, 100, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
- k10.canvas->canvasText("1.语音唤醒:你好小行", 0, 200, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
- k10.canvas->canvasText("2.说命令词:模式?", 0, 250, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
- k10.canvas->updateCanvas();
- asr.addASRCommand(1+1, "mo shi yi");
- asr.addASRCommand(2+1, "mo shi er");
- asr.addASRCommand(3+1, "mo shi san");
- asr.addASRCommand(4+1, "mo shi si");
- asr.addASRCommand(27+1, "mo shi er shi qi");
- asr.addASRCommand(60+1, "mo shi liu shi");
- asr.addASRCommand(73+1, "mo shi qi shi san");
- asr.addASRCommand(82+1, "mo shi ba shi er");
- asr.addASRCommand(83+1, "mo shi ba shi san");
- asr.addASRCommand(93+1, "mo shi jiu shi san");
- asr.speak("初始化完成");
- }
- void loop() {
- if (asr.isDetectCmdID(1+1)) {
- DF_MoShi(1);
- }
- if (asr.isDetectCmdID(2+1)) {
- DF_MoShi(2);
- }
- if (asr.isDetectCmdID(3+1)) {
- DF_MoShi(3);
- }
- if (asr.isDetectCmdID(4+1)) {
- DF_MoShi(4);
- }
- if (asr.isDetectCmdID(27+1)) {
- DF_MoShi(27);
- }
- if (asr.isDetectCmdID(60+1)) {
- DF_MoShi(60);
- }
- if (asr.isDetectCmdID(73+1)) {
- DF_MoShi(73);
- }
- if (asr.isDetectCmdID(82+1)) {
- DF_MoShi(82);
- }
- if (asr.isDetectCmdID(83+1)) {
- DF_MoShi(83);
- }
- if (asr.isDetectCmdID(93+1)) {
- DF_MoShi(93);
- }
- }
-
-
- // 自定义函数
- void DF_MoShi(float mind_n_XiaoGuoXuHao) {
- c=(floor(mind_n_XiaoGuoXuHao));
- DFRobot_HTTPClient http;;
- http.addHeader("Content-Type", "application/json");
- http.addHeader("charset", "UTF-8");
- 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}]})";
- Serial.println((bodydata));
- http.addString((bodydata));
- http.POST("http://192.168.31.207/json", 10000);
- Serial.println(http.getString());
- asr.speak((String("已设置模式") + String(c)));
- }
-
复制代码
【演示视频】
|