【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())

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

相关推荐
Keith Guo1 天前
Event Task Matrix(ETM)工作机制
驱动开发·esp32·etm
星野云联AIoT技术洞察4 天前
ESP32 接入 Meta Muse:Gadget SDK 能做什么,为什么不能直接做商业设备
esp32·agent·token·边缘ai·meta muse·mcu选型
ITKEY_6 天前
VSCode Arduino cli 开发ESP32
esp32·iot
J_bean6 天前
Mac(Intel 芯片)ESP32 USB 串口驱动安装教程
esp32·iot·usb 串口驱动
星野云联AIoT技术洞察7 天前
ESP32-P4 摄像头到屏幕的数据链路:CSI、ISP、PPA、缓冲与 DSI 如何协同
esp32·esp-idf·esp32-p4·摄像头集成·芯片集成·乐鑫芯片
星野云联AIoT技术洞察9 天前
ESP32-P4 没有 Wi-Fi,产品该怎么联网:C6 协处理器、总线与双固件边界
esp32·esp32-s3·esp32-p4·芯片选型·esp-hosted·设备联网
ITKEY_9 天前
Arduino IDE开发ESP32环境搭建到helloworld
ide·esp32
国产化创客11 天前
ESP32音频/语音技术(4)AudioTools 库及转发播放程序分析
物联网·音视频·esp32
夏虫不可与之言冰14 天前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商
逗脑IDE18 天前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发