私は、Arduino Megaがシリアル通信(UART)を介してNodeMCUにデータを送信できる2つのデバイス(それぞれArduino MegaとNodeMCU)を通信させたいプロジェクトを作成しています。NodeMCU は、Firmata を含むブリッジ (standardFirmataWifi) として機能し、wifi に接続されます。
Mega の RX0 (ピン 0) と TX0 (ピン 1) を NodeMCU の RX (ピン 21) と TX (ピン 22) に接続しました。
NodeMCU経由でArduino Megaに接続されたデバイスを受信/制御できるWebアプリも作成しました。
しかし今のところ、単純にして 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-five を使用して NodeMCU の UART ポートを取得できないため、おそらく johnny-five である必要があります。私は後者を使用します。(ただし、これらのライブラリを使用するのは少し新しいですが、使用する言語は異なります。)
唯一の問題は、シリアル ポートからのデータ読み取り値が表示されないことです。これらのみを表示します。
READY
Connected board...
次のように表示されることを期待しています:
READY
Serial port reading
*message from the serial reading*
Connecting board...
問題はシリアル構成自体にあると思いますか???