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

____________
|          |
|   N      |
|   O   Rx2|<------Tx EnergyMeter(根据命令返回值)
|   D   Tx2|------>Rx EnergyMeter(接收命令)
|   E      |
|          |
|   M   Rx1|<------Tx Gsm(用于MQTT)
|   C   Tx1|------>Rx Gsm(用于MQTT)
|   U      |
|          |
-----------

我正在尝试使用图示所示的Nodemcu连接Gsm模块和能量计。尽管通过Arduino编码可以实现,但我想仅使用lua来完成它。

在lua脚本编写方面,如果我使用 "uart.alt()" 这个函数,并点击 "Save to Esp",则在 "uart.alt()" 行时,保存过程会跳转到不同的USART,并且代码没有完全保存到ESP。

那么,在nodemcu中使用多个usart的有效方法是什么(类似于arduino中的software serial)?

我正在使用
Nodemcu model:ESP8266
Nodemcu Version:3
& NodeMCU custom build by frightanic.com branch: 1.5.4.1-fina

我没有得到我需要的完美示例。因此,请为我提供有关此问题的完美文档或示例。

谢谢您。

点赞
用户10245581
用户10245581

你没有提供你的 NodeMCU 型号,但是因为在 ESP32 上没有 uart.alt 函数,我猜测你的型号是 ESP8266。

如果你的 NodeMCU 是 ESP8266,那么你的设置存在问题:

ESP8266 文档 可以看到:

虽然 NodeMCU 有两个 UART(0 和 1)可用,但 UART 1 不能 接收数据,只能发送数据。

我不是 LUA 方面的专家,但我猜这就是编译器想要告诉你的内容。

是的,NodeMCU 有一个 ESP32 版本,但提问者没有更进一步的信息。

uart.alt()  更改 UART 引脚的分配。
  • 表示你可以为 UART 0 分配引脚
uart.alt(on)
参数

on

0 表示标准引脚
1 表示使用备用引脚 GPIO13 和 GPIO15

因此,这只适用于 NodeMCU ESP8266 上的一个 UART(UART 0)。

如果你使用的是基于 ESP32 的 NodeMCU

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

请参考 NodeMCU ESP32 开发板的官方 文档

因此,在提问时,务必提供 NodeMCU 的版本和板类型。

2020-03-29 21:16:07