You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RPI Pico W与ESP8266串口通信报错:MicroPython UART实例化异常

RPI Pico W与ESP8266串口通信问题解决及替代方案

错误原因分析

你遇到的两个报错都是因为MicroPython中UART类的参数使用方式错误:

  1. ValueError: expecting a Pin:新版本MicroPython要求tx和rx参数必须传入Pin对象,不能直接传整数引脚号,这是第一段代码的问题。
  2. TypeError: can't convert Pin to int:UART构造函数的位置参数顺序并非(uart_id, baudrate, tx, rx),第三个位置参数实际是bits(数据位),直接传入Pin对象会被当成该参数,导致类型不匹配,必须用关键字参数指定tx和rx。

正确的UART实例化代码

先确认RPI Pico W的UART引脚对应:

  • UART0:TX=GP0,RX=GP1
  • UART1:TX=GP4,RX=GP5

注意交叉连接:Pico的TX接ESP8266的RX,Pico的RX接ESP8266的TX,然后用以下代码初始化:

from machine import UART, Pin

# 初始化UART0,波特率9600
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

# 或者初始化UART1
# uart = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))

基础通信测试代码

初始化完成后,可通过以下代码测试发送和接收:

# 发送数据到ESP8266
uart.write("Hello ESP8266!\n")

# 读取ESP8266发来的数据
if uart.any():
    received_data = uart.read().decode('utf-8')
    print("收到数据:", received_data)

替代通信方案

如果UART问题仍无法解决,可利用两块板子的WiFi功能实现无线通信,比串口更灵活:

1. TCP/IP Socket通信

让Pico W和ESP8266连接到同一WiFi网络,一方作为服务器,另一方作为客户端建立连接传输数据。

示例(Pico W作为客户端):

import network
import socket

# 连接WiFi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("你的WiFi名称", "WiFi密码")

# 等待连接成功
while not wlan.isconnected():
    pass

# 连接ESP8266的TCP服务器
s = socket.socket()
s.connect(("ESP8266的IP地址", 1234))

# 发送数据
s.send(b"Hello from Pico W!")

# 接收数据
data = s.recv(1024)
print("收到:", data.decode())

s.close()

2. MQTT通信

使用MQTT协议通过公共或私有MQTT broker实现消息传递,适合多设备场景,可借助MicroPython的umqtt.simple库实现。

内容的提问来源于stack exchange,提问作者unlucky_chap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:52:29