hiro yamamoto works

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

 

カレンダー

2022
February
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28          

QRコード

検索



このブログを検索

カウンター

本日のアクセス
昨日のアクセス
総アクセス数

ブログサービス

Powered by

teacup.ブログ
RSS

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
投稿者:管理人
1 | 《前のページ | 次のページ》
/1 
 
AutoPage最新お知らせ