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

NodeMCU Lua环境下无法读取串口引脚,如何切换至引脚串口而非USB串口?

解决NodeMCU Lua读取硬件串口(而非USB串口)的问题

嘿,我之前玩NodeMCU的时候也踩过这个串口编号的坑!先给你理清楚核心对应关系,再一步步解决:

首先得明确NodeMCU上两个串口的本质区别:

  • uart0 就是你现在能用的USB转串口,默认和电脑的ESPlorer通信,引脚被USB模块占用,没法当硬件串口用
  • uart1 才是对应板载GPIO引脚的硬件串口,它的引脚对应关系是:
    • TX:GPIO2(板上标注为D4的引脚)
    • RX:GPIO14(板上标注为D5的引脚)

    划重点:NodeMCU是3.3V逻辑电平,你的串口适配器一定要调成3.3V输出,别用5V硬怼,不然容易烧引脚!

接下来是具体操作步骤:

1. 初始化硬件串口(uart1)

首先要把uart1的参数和你的串口适配器设置完全一致,比如波特率9600(你可以改成自己需要的数值):

uart.setup(1, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, 0)

参数简单解释:

  • 第一个1指定使用uart1硬件串口
  • 9600是波特率,必须和串口助手/适配器的设置完全匹配
  • 8代表8位数据位,uart.PARITY_NONE是无校验,uart.STOPBITS_1是1位停止位,最后一个0表示禁用流控

2. 监听uart1的接收数据

你之前的代码核心问题就在这里!你用的uart.on(..., 0)里最后那个0,是指定监听uart0(USB串口),改成1就切换到硬件串口监听了:

uart.on("data", "\n", function(data)
    print("Received from hardware UART:", data)
end, 1)

设置完成后,串口适配器发送的内容就能被NodeMCU捕获,并打印到ESPlorer控制台了。

3. 测试硬件串口的发送功能

要给串口适配器发送消息,同样要指定uart1:

uart.write(1, "Hello from NodeMCU hardware UART!\n")

断开USB用串口适配器供电后,你的串口助手就能收到这条消息了。

要是还是没反应,排查这几点:

  • 接线有没有搞反:串口适配器的TX要接NodeMCU的RX(D5),RX接NodeMCU的TX(D4),GND一定要接!
  • 波特率是否完全一致:哪怕差一点都收不到数据,比如你代码设了9600,适配器也必须是9600
  • 引脚有没有被占用:如果你的NodeMCU接了其他模块用了D4/D5,先拔掉再测试
  • 电平是否匹配:确认串口适配器是3.3V输出,别用5V硬接GPIO引脚

内容的提问来源于stack exchange,提问作者Thunder-Chaser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:03:02