我正在制作一个项目,其中我想让两个设备进行通信(分别是 Arduino Mega 和 NodeMCU),Arduino Mega 可以通过串行通信(UART)将数据发送到 NodeMCU。NodeMCU 充当桥接器,其中包含 Firmata(标准FirmataWifi),并连接到 wifi。
我已将 Mega 的 RX0(引脚 0)和 TX0(引脚 1)连接到我的 NodeMCU 的 RX(引脚 21)和 TX(引脚 22)。
我还制作了一个网络应用程序,它可以通过 NodeMCU 接收/控制连接在 Arduino Mega 上的设备。
但现在我只是让它变得简单并接收一些来自 Arduino Mega 的数据。
这是我的代码:
var EtherPortClient = require("etherport-client").EtherPortClient;
var board = new Firmata(new EtherPortClient({
host: "ip_hostname",
port: 3030
}));
board.on("ready", () => {
console.log("READY");
const HW_SERIAL0 = board.SERIAL_PORT_IDs.HW_SERIAL0;
board.serialConfig({
portId: HW_SERIAL0,
baud: 115200
});
board.serialRead(HW_SERIAL0, (data) => {
console.log(Buffer.from(data).toString('ascii'));
console.log('Serial port reading');
});
board.on('string', (message) => { console.log(message) });
console.log('Connected board...');
});
我在这里使用 Firmata.js 库。假设它应该是 johnny-5,因为我无法使用 johnny-5 获得 NodeMCU 的 UART 端口,我使用后者。(虽然我有点新使用这些库,但不是使用的语言。)
唯一的问题是它不显示来自串行端口的数据读数。它只显示这些。
READY
Connected board...
我期望它应该像这样显示:
READY
Serial port reading
*message from the serial reading*
Connecting board...
我在想问题出在我的串行配置本身???