【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

前言

手头上有个ESP32,发现有wifi功能,希望连接JY61P并通过WIFI把姿态数据发送给电脑

1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;

2.电脑接受数据是基于python的;

1. ESP32 连接手机WIFI

cpp 复制代码
#include <WiFi.h>  // 引入 WiFi 库

// 替换为你的 Wi-Fi 网络名称和密码
const char* ssid = "wifi名称";
const char* password = "wifi密码";

void setup() {
  Serial.begin(115200);  // 初始化串口通信
  delay(1000);  // 等待 1 秒

  // 连接到 Wi-Fi 网络
  Serial.println("Connecting to WiFi...");
  WiFi.begin(ssid, password);

  // 等待连接成功
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // 连接成功后打印 IP 地址
  Serial.println("\nConnected to WiFi!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // 在这里可以添加更多功能
  delay(1000);
}

可以用上面这段代码,测试WIFI功能,打开串口助手,我这里使用的是XCOM,如果成功,会显示如下数据,提醒:不要勾选16进制显示。

2.ESP32连接IMU(JY61P)

(1).硬件连接

ESP32 与 JY61P 的连接:

JY61P 的 VCC 连接到 ESP32 的 3.3V。

JY61P 的 GND 连接到 ESP32 的 GND。

JY61P 的 TX 连接到 ESP32 的 GPIO 16(Serial2 的 RX 引脚)。

JY61P 的 RX 连接到 ESP32 的 GPIO 17(Serial2 的 TX 引脚)。

cpp 复制代码
#include <WiFi.h>
#include <WiFiClient.h>

// Wi-Fi 网络信息
const char* ssid = "wifi名称";
const char* password = "wifi密码"; // 替换为你的 Wi-Fi 密码

// TCP 服务器信息
const char* serverIP = "XXXXX"; // 替换为电脑的 IP 地址
const uint16_t port = 8080;             // 电脑端的 TCP 服务器端口

// 初始化 TCP 客户端
WiFiClient client;

// JY61P 串口通信
#define JY61_BAUDRATE 9600  // JY61P 默认波特率

void setup() {
  // 初始化串口
  Serial.begin(115200);  // 用于调试
  Serial2.begin(JY61_BAUDRATE, SERIAL_8N1, 16, 17);  // 使用 Serial2,连接到 GPIO 16 (RX) 和 GPIO 17 (TX)

  // 连接到 Wi-Fi 网络
  WiFi.begin(ssid, password);
  Serial.println("Connecting to WiFi...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nConnected to WiFi!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // 连接到电脑的 TCP 服务器
  Serial.print("Connecting to server at ");
  Serial.print(serverIP);
  Serial.print(":");
  Serial.println(port);

  if (!client.connect(serverIP, port)) {
    Serial.println("Connection failed");
    while (1);  // 如果连接失败,进入死循环
  }
  Serial.println("Connected to server");
}

void loop() {
  // 检查 JY61P 是否有数据
  if (Serial2.available() >= 10) {  // JY61P 每次发送 10 字节数据
    uint8_t data[10];
    for (int i = 0; i < 10; i++) {
      data[i] = Serial2.read();  // 读取数据
    }

    // 解析数据(以角度为例)
    int16_t roll = (data[0] << 8) | data[1];  // 横滚角
    int16_t pitch = (data[2] << 8) | data[3]; // 俯仰角
    int16_t yaw = (data[4] << 8) | data[5];   // 航向角

    // 将数据格式化为字符串
    String message = "Roll: " + String(roll) + 
                     ", Pitch: " + String(pitch) + 
                     ", Yaw: " + String(yaw);

    // 打印数据到串口监视器(调试用)
    Serial.println(message);

    // 将数据发送到电脑的 TCP 服务器
    if (client.connected()) {
      client.println(message);
    } else {
      Serial.println("Connection lost. Reconnecting...");
      if (client.connect(serverIP, port)) {
        Serial.println("Reconnected to server");
      } else {
        Serial.println("Reconnection failed");
      }
    }
  }
}

上述代码中的IP地址可以百度自行查询自己的IP地址。

3.电脑端监听

python 复制代码
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("0.0.0.0", 8080))  # 监听端口 8080
sock.listen(1)
print("Server started, waiting for connection...")

client, addr = sock.accept()
print(f"Connected by {addr}")

while True:
    data = client.recv(1024)
    if not data:
        break
    print("Received data:", data.decode())

如果运行正常:窗口会打印出如下数据

相关推荐
ITKEY_16 小时前
嵌入式ESP32初学踩坑记录
esp32
EatFan12 天前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网·esp32
攸尔的笔记本~15 天前
ESP32-C3的WIFI信号飘忽不定、连接不了
esp32·射频·硬件设计
乐鑫科技 Espressif17 天前
案例研究:基于 ESP32-C5 与 ESP RainMaker 构建符合 EN 18031 标准的 IoT 解决方案
esp32·乐鑫科技·rainmaker
jianqiang.xue19 天前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
jianqiang.xue19 天前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
jianqiang.xue20 天前
ESP-IDF保姆级入门39|固件安全与安全启动全解:签名校验/Flash加密/防回滚/OTP密钥/知识产权保护,掌握工业级固件安全防护体系
单片机·物联网·esp32
jianqiang.xue21 天前
ESP-IDF保姆级入门38|电源管理与锂电池充电全解:充电拓扑/电源路径控制/充放电保护/电量检测/低功耗策略,掌握嵌入式电池供电系统设计
单片机·嵌入式·esp32
jianqiang.xue22 天前
ESP-IDF保姆级入门35|SDMMC高速SD卡全解:SDIO接口/4位高速模式/FATFS文件系统/热插拔检测/磨损均衡,掌握嵌入式大容量存储扩展
单片机·esp32
国产化创客22 天前
创客开发入门(五)Arduino IDE 编程基础
单片机·嵌入式硬件·物联网·esp32