hiro yamamoto works

ESP8266 Web logger
RaspberryPi HiRes Audio
Mini Solar power system
当ブログ掲載内容は無保証です。利用は自己責任でお願いいたします。

 

ESP-NOWでリモートI/Oを作る

伝送接点数16 単方向(送信側→受信側への伝送のみ)

離れたところにある機器の信号を、電波が届く範囲で
配線無しで受け取ることができる。
ESP32同士で直接通信するのでアクセスポイントは不要

主な部品 ESP32開発ボード、I/OエキスパンダMCP23017

テストの様子
クリックすると元のサイズで表示します
右側が送信、左側が受信となっています。
Arduino-UNOで送信側のテスト信号を作ってMCP23017へ
入力しています。

MCP23017のデジタル入力を読み込み、16進数を文字配列
としてESP-NOWで送信
受信した文字配列を16進数へ変換してMCP23017のデジタル
出力へ出力する。

まだ十分理解できていませんのでおかしな点があると思います
がスケッチを紹介しておきます。

送信側 スケッチ抜粋
String data = String (mcp.readGPIOAB(), HEX);
//16ピンすべて(ポートAおよびB)を単一の16ビット変数に読み込みます。
//16ピンすべてを表す16ビット変数を返します
esp_err_t outcome = esp_now_send(broadcastAddress, (uint8_t *) &data, sizeof(data));

受信側 スケッチ抜粋
char intData[12];
unsigned int GPIO_BA;
void data_receive(const uint8_t * mac, const uint8_t *rcvData, int len) {
memcpy(&intData, rcvData, 5);
long Data = strtol(intData, NULL, 16);
//16進数表示で送られてきた文字配列を16進数数値に変換する
GPIO_BA = Data;
mcp.writeGPIOAB(GPIO_BA);
//すべてのピンを一度に書き込みます。
//引数へ16進数を与えると対応する出力のON/OFFができる。
}



作例を公開している方々に感謝します。
0
投稿者:管理人
投稿者
メール

 
コメント
URL
コメントは新しいものから表示されます。
コメント本文中とURL欄にURLを記入すると、自動的にリンクされます。
AutoPage最新お知らせ