| 【项目背景】 本项目旨在通过行空板 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 项目提供的多种效果,实现灯带的动态显示。
 【制作步骤】1.硬件准备:准备行空板 K10、ESP32-C3 和 WS2812 灯带。行空板 K10:作为控制端,通过语音指令发送 HTTP POST 请求。ESP32-C3:作为控制节点,运行 WLED 固件,控制 WS2812 灯带。WS2812 灯带:被控制的 LED 灯带,支持多种颜色和效果。
 
  
 
  
  
  
 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)));
}
 【演示视频】
 
 
 
 
 |