闪电麦昆 语音控制齿轮行进轨迹,ESP32搭配语音控制板,串口通信,附视频演示地址

演示地址 https://www.bilibili.com/video/BV1cW421d79L/?vd_source=b8515e53f6d4c564b541d98dcc9df990

语音控制板的配置

web展示页面

esp32 程序

c 复制代码
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <LittleFS.h>
#include <WebSocketsServer.h>

ESP8266WebServer server(80);
WebSocketsServer webSocket = WebSocketsServer(81); // WebSocket服务器在端口81上运行


void setup() {
  Serial.begin(115200);
  WiFi.softAP("ESP8266-AP", "12345678");

  // 初始化LittleFS
  if (!LittleFS.begin()) {
    Serial.println("An Error has occurred while mounting LittleFS");
    return;
  }

  server.on("/", HTTP_GET, handleRoot);
  server.on("/paper-full.min.js", HTTP_GET, handleJS);
  server.on("/chilun.svg", HTTP_GET, handleSVG); // 添加路由处理SVG请求


  server.begin();
  Serial.println("HTTP server started");
  
  webSocket.begin(); // 启动WebSocket服务器
  webSocket.onEvent(webSocketEvent); // 注册WebSocket事件处理函数
}

void handleRoot() {
  File file = LittleFS.open("/index.html", "r");
  if (!file) {
    Serial.println("File not found");
    return;
  }
  server.streamFile(file, "text/html");
  file.close();
}

void handleJS() {
  File file = LittleFS.open("/paper-full.min.js", "r"); // 打开JavaScript文件
  if (!file) {
    Serial.println("File not found");
    return;
  }
  server.streamFile(file, "application/javascript"); // 确保MIME类型是正确的
  file.close();
}

// 处理SVG文件的请求
void handleSVG() {
  File file = LittleFS.open("/chilun.svg", "r");
  if (!file) {
    Serial.println("File not found");
    return;
  }
  server.streamFile(file, "image/svg+xml"); // 确保MIME类型设置为SVG
  file.close();
}

// WebSocket事件处理函数
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
  switch(type) {
    case WStype_DISCONNECTED:
      Serial.printf("[%u] Disconnected!\n", num);
      break;
    case WStype_CONNECTED:
      {
        IPAddress ip = webSocket.remoteIP(num);
        Serial.printf("[%u] Connected from %d.%d.%d.%d\n", num, ip[0], ip[1], ip[2], ip[3]);
        webSocket.sendTXT(num, "Hello from ESP8266"); // 向连接的客户端发送消息
      }
      break;
    case WStype_TEXT:
     {
        Serial.printf("[%u] Received Text: %s\n", num, payload);
        // 将接收到的消息广播给所有连接的客户端
        String message = String((char *)payload); // 将payload转换为String对象,以便处理
        webSocket.broadcastTXT(message); // 使用broadcastTXT直接广播消息
      }
  }
}


void loop() {
  server.handleClient();
  webSocket.loop(); // 确保处理WebSocket事件
  // 检查串口是否有数据读取
  if (Serial.available() > 0) {
    String data = Serial.readString(); // 读取串口数据
    Serial.print("Received from Serial: "); // 打印接收到的消息
    Serial.println(data); // 显示串口接收到的数据
    webSocket.broadcastTXT(data); // 将读取到的数据发送给所有WebSocket客户端
  }
}

参考资料

https://github.com/earlephilhower/arduino-littlefs-upload

https://github.com/earlephilhower/arduino-esp8266littlefs-plugin

https://github.com/lorol/arduino-esp32fs-plugin

相关推荐
深度学习实战训练营39 分钟前
基于CNN-RNN的影像报告生成
人工智能·深度学习
昨日之日20063 小时前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_3 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川4 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
阡之尘埃6 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力8 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20218 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧39 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽9 小时前
【Pytorch】基本语法
人工智能·pytorch·python