无法读取 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 串行垃圾,无法擦除闪存或上传文件

无法使用 nodemcu 在 16x2 显示器(I2C 板)上显示任何内容?

如何关闭uart的lua解释器? (Nodemcu)

说说UART(转)

STM32F103在RX中断时无法通过UART接收数据

Linux学习 : 裸板调试 之 配置UART