如何使用 Nodemcu 进行多串口通信 (Lua)

How to make multiple serial communication using Nodemcu (Lua)

____________
|          |
|   N      |
|   O   Rx2|<------Tx EnergyMeter(Returns value based on command)
|   D   Tx2|------>Rx EnergyMeter(Receive command)   
|   E      |
|          |
|   M   Rx1|<------Tx Gsm(For MQTT)
|   C   Tx1|------>Rx Gsm(For MQTT)
|   U      |
|          |
-----------

我正在尝试将 Gsm 模块和电表连接到我的 Nodemcu,如图所示。 虽然可以通过 Arduino 编码实现,但我只想使用 lua 来实现。

在 lua 脚本的情况下,如果我使用 "uart.alt()" 这个函数,并单击 "Save to Esp",然后在 "uart.alt()" 行,保存过程跳转到不同的usart和代码没有完全保存到ESP中。

那么在 nodemcu 中使用多个 usart 的有效方法是什么(类似于 arduino 中的软件串行)?

I am using
Nodemcu model : ESP8266
Nodemcu Version : 3
& NodeMCU custom build by frightanic.com branch: 1.5.4.1-fina

我没有找到符合我要求的完美示例。所以,请给我一个关于这个问题的完美文档或示例。

谢谢。

你没有给出你的 NodeMCU 的品牌,但因为 ESP32 上没有 uart.alt 我猜是 8266
因此,如果您的 NodeMCU 是 ESP8266,则说明您的设置存在问题:
来自 ESP8266 documenation
尽管 NodeMCU 有两个 UART(0 和 1)可用,但 UART 1 不能 接收数据,因此只能传输。 我不是 LUA 方面的专家,但我想这就是编译器想要告诉你的。
是的,有一个 ESP32 version of NodeMCU OP 只是说他使用 NodeMCU 并且没有提供进一步的信息。

uart.alt()  Change UART pin assignment. 

-表示可以分配UART 0

的引脚
 uart.alt(on)
Parameters

on

0 for standard pins
1 to use alternate pins GPIO13 and GPIO15

所以这只适用于 NodeMCU ESP8266 上的一个 uart (UART 0)。

如果您使用基于 ESP32 的 NodeMCU
启用 UART 1 会导致 ESP32 崩溃!原因是默认情况下,UART 1 使用与 ESP32 闪存相同的引脚。

见官方documentation of the NodeMCU ESP32 dev board
所以在提问的时候一定要给出 NodeMCU 的版本和开发板类型。