当前位置: 首页 > news >正文

esp32串口通信

1、查看esp32的引脚图,寻找对应的串口

根据原理图,芯片上有3个串口(UART0, UART1UART2),但是UART1没有引出引脚。其中UART0GPIO3用于U0RXDGPIO1用于U0TXD)用作下载、调试串口,引脚不可改变;UART2默认引脚是GPIO16用作U2RXDGPIO17用作U2TXD

2、连接线路,使用Fritzing作图软件

3、esp32作为服务器端等待客户端往eps32发送的消息(使用Thonny软件把下面程序写入到esp32中)

因为串口0作为下载程序使用,所以下面使用串口2作为列子

from machine import UART, Pin
import time

# 初始化UART
# 使用UART2,TX=17, RX=16,波特率115200
uart = UART(2, baudrate=115200, tx=17, rx=16)
uart.read()  # 清空缓冲区

print("ESP32 UART接收程序已启动")

# 主循环
while True:
    # 检查是否有数据可读
    if uart.any():
        # 读取接收到的数据
        received = uart.readline()
        
        try:
            # 尝试解码为UTF-8字符串
            message = received.decode('utf-8').strip()
            print(f"收到消息: {message}")
            
            # 发送响应
            response = f"ESP32已收到: {message}\r\n"
            uart.write(response.encode('utf-8'))
            
        except UnicodeDecodeError:
            # 如果解码失败,发送错误响应
            print("收到无法解码的消息")
            uart.write(b"Error: Invalid message format\r\n")
    
    # 短暂延时
    time.sleep(0.1)

4、客户端往串口2上发送消息,等待esp32的应答。

linux上需要安装pyserial库,运行如下命令

pip3 install pyserial

在虚拟机WSL2中运行客户端程序client.py,代码如下:(注意,需要确保WSL2中已经成功链接了串口2,具体链接步骤见附录)

import serial
import time

# 根据系统选择合适的串口名称
port = '/dev/ttyUSB0'  # Linux系统
# port = 'COM4'        # Windows系统

# 初始化串口,使用COM4,波特率115200
ser = serial.Serial(port, baudrate=115200, timeout=1)

# 主循环
while True:
    # 发送消息到ESP32
    message = "Hello ESP32"
    ser.write((message + "\r\n").encode('utf-8'))
    print(f"已发送消息: {message}")

    # 等待ESP32的响应
    while True:
        time.sleep(0.1)  # 更短的等待时间
        if ser.in_waiting > 0:
            # 读取ESP32返回的消息
            response = ser.readline().decode('utf-8').strip()
            print(f"收到ESP32的响应: {response}")
            break  # 收到响应后退出等待循环

5、最终效果:

esp32收到客户端发送过来的消息,如下。

客户端发送消息后接收到esp32的应答消息。

附:如何让虚拟机WSL2链接上windows上的串口

步骤一:启动虚拟机的前,需要想设置启动串口,把widows上对应的串口映射到虚拟机wsl中,如下。(因为我电脑eps32的串口UART2在windows上显示的是COM4,所以我把对应的COM4映射到虚拟机中)

步骤二:wsl虚拟机中找到usb图标,右键勾选刚刚映射进来的串口,如下图

步骤三:查看wsl虚拟机上的串口是否正常识别,一般已ttyUSB*显示

相关文章:

  • TeX Live 2025 最新版安装与中文环境配置全教程(Windows/Mac/Linux)
  • 25物理学研究生复试面试问题汇总 物理学专业知识问题很全! 物理学复试全流程攻略 物理学考研复试调剂真题汇总
  • Deepseek R1 技术报告
  • 2024 通用人工智能RAG大会实践资料(脱敏)PPT合集(22份)
  • 【洛谷贪心算法】P1090合并果子
  • preg_replace 与 str_replace 的比较与选择
  • 基于Ant Design Vue 引入 Flowable 【workflow-bpmn-modeler-antdv】流程设计器组件
  • 【Java项目】基于SpringBoot和Vue的“智慧食堂”系统
  • 2025文学研究生复试面试问题汇总 文学专业知识问题很全! 文学试全流程攻略 文学考研复试调剂真题汇总
  • Spring Boot集成Spring Ai框架【详解 搭建Spring Ai项目,以及简单的ai大模型智能体应用,附有图文+示例代码】
  • C# 数据转换
  • UniApp 按钮组件 open-type 属性详解:功能、场景与平台差异
  • c#实现modbus rtu定时采集数据
  • Spring AI:让AI应用开发更简单
  • JavaScript系列03-异步编程全解析
  • 【Markdown 语法简洁讲解】
  • OpenHarmony启动系统-U-Boot简介和源码下载与编译
  • CMU15445(2023fall) Project #4 - Concurrency Control踩坑历程
  • Spring Boot 日志配置与常见问题解析(详解)
  • 【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!
  • 怎么做卖辅助网站/电脑培训机构
  • 网站开发人员需求分析/win10系统优化软件哪个好
  • 营销网站建设品牌企业/免费制作详情页的网站
  • 通州网站建设全包/潍坊做网站哪家好
  • 网站建设销售信/友情链接对网站的作用
  • 交互式网站开发技术asp/现在做百度快速收录的方法