无法读取 NodeMCU 上的串行/UART 引脚
Posted
技术标签:
【中文标题】无法读取 NodeMCU 上的串行/UART 引脚【英文标题】:Unable to read serial/uart pins on NodeMCU 【发布时间】:2019-10-05 18:23:50 【问题描述】:我无法在 NodeMCU Lua 环境中读取串行引脚。我只能读取USB串口。
我已将串行适配器连接到 rx、tx 和 g 引脚。
我试过这段代码:
uart.on("data","\n",function(data) print("receive from uart:", data) end, 0)
我在 ESPlorer 控制台中输入了文本,它确实会读取。它不会读取我通过插入 rx/tx/g 引脚的串行适配器发送的任何内容。
uart.write(0, "hello")
我断开了 USB 电缆并使用串行适配器为其供电。没有使用此代码发送任何内容。我试过uart.write(0,
和uart.write(1,
。
如何读取pin串口而不是usb串口?
【问题讨论】:
不确定我是否完全理解,但您是否看到nodemcu.readthedocs.io/en/latest/modules/uart:“UART 1 无法接收数据,因此只能传输。” 【参考方案1】:我需要拔下 USB 电缆。如果 USB 电缆已插入并且您尝试使用 pin 串行端口,则设备会混淆。
在 esp 论坛上查看我的问题: https://www.esp8266.com/viewtopic.php?f=22&t=19768
【讨论】:
【参考方案2】:您必须使用与 RX 和 TX 不同的引脚,因为它们与您将 NodeMCU 连接到 PC 的 USB 端口相同
借助 https://github.com/scottwday/EspSoftSerial 库,您可以使用任何其他 2 个空闲 gpio 引脚作为串行端口。该库专门针对您的 NodeMCU 所基于的 ESP8266。
这样你就有了2个串口,一个通过usb,另一个连接到其他设备。
一些简单的代码来实现下面的软件序列。
#include <SoftwareSerial.h>
#define BAUD_RATE 9600
SoftwareSerial Serial2(D8, D7, false, 8); //Here you choose the pins you connect the RX TX device to
//The first pin you choose is RX the second TX
// in my example these are the D8 and D7 pins on the nodeMCU
// D8=RX .... D7=TX
void setup()
Serial.begin(BAUD_RATE);
Serial2.begin(BAUD_RATE);
Serial.println(" ### Hello ###");
Serial2.println(" ### Hello ###");
void loop()
【讨论】:
以上是关于无法读取 NodeMCU 上的串行/UART 引脚的主要内容,如果未能解决你的问题,请参考以下文章
ESP8266 NodeMCU MicroPython 串行垃圾,无法擦除闪存或上传文件