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

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

相关推荐
智码看视界21 小时前
Edge AI 与 IoT 全栈系列:Edge AI 全栈 2:ESP32 + MQTT + Flink 实时 IoT 数据管道
物联网·flink·esp32·全栈开发·iot平台·实时流处理·edgeai
jianqiang.xue5 天前
收官:从v0.1到“研发新常态“,一套嵌入式智能体的落地与边界
stm32·单片机·物联网·架构·esp32
linnux领域5 天前
面包板供电“插哪都不亮“?一个暗断点引发的排查——硬件新手三板斧
单片机·嵌入式硬件·esp32·arduino·面包板·硬件入门
jianqiang.xue6 天前
审查技能库(上):内存安全四件套
stm32·单片机·物联网·架构·esp32
长江后浪博客6 天前
ESP32-SOLO-1 在 ESP-IDF v5.5 下启动不断重启问题分析与解决
单片机·嵌入式硬件·嵌入式·esp32·freertos·esp-idf
jianqiang.xue7 天前
ESP-IDF保姆级入门19|低功耗模式全解与工程化设计:分级休眠/唤醒源配置/功耗调优/外设适配,实现工业级功耗性能平衡
stm32·单片机·物联网·架构·esp32
jianqiang.xue7 天前
审查技能库(中):硬件与系统安全
stm32·单片机·物联网·架构·esp32
jianqiang.xue7 天前
ESP-IDF保姆级入门17|GPIO外部中断全解与工程化设计:分层架构/防抖策略/长按双击/优先级配置,掌握工业级可靠输入处理
stm32·单片机·物联网·架构·esp32
jianqiang.xue9 天前
ESP-IDF保姆级入门11|FreeRTOS队列通信全解:生产者消费者+中断数据转发+多任务解耦,彻底搞定任务间交互
单片机·嵌入式硬件·物联网·架构·esp32
jianqiang.xue9 天前
ESP-IDF保姆级入门09|ADC模拟量采集全解:电位器调压+光敏传感器+OLED显示,打通模拟→数字全链路
stm32·单片机·物联网·架构·esp32