ESP-NOW
https://youtu.be/QmvMtgNs9r8
Espressifが定義したコネクションレスなWiFi通信プロトコルのひとつ
CTR(Counter) with CBC-MAC Protocol(CCMP)
IEEE 802.11 Vendor-specific Action
ビットレートは1Mbps
最大20ペア(ESP_NOW_MAX_TOTAL_PEER_NUM)
ESP_NOW_MAX_ENCRYPT_PEER_NUMは6
チャネルは0〜14
0なら今使っているチャネル
1〜14はチャネルを明示的に指定
一度の送信で250バイト( ESP_NOW_MAX_DATA_LEN)送ることができる
PMK: Primary Master Key(16バイト)
LMK: Local Master Key(16バイト)
InitiatorsとResponder
ステーションモードとAPモード
ステーションモード
STAモードとか WiFiクライアントモードとも呼ばれる
アクセスポイントに接続する
APモード
Soft-APモードとかアクセスポイントモードとも呼ばれる
アクセスポイントになる
AP-STAモード
自身がアクセスポイントになり,別のアクセスポイントに接続することもできる
micropythonでMACアドレスを取得する
UIflowのファームウエアがブートしたときに表示されるnode idが MACアドレス
code:console
...
M5 node id:d8a01d5c9554, api key:XXXXXXXX -- start uiflow from internet mode --
...
espnow.get_mac_addr()
code:console
MicroPython v1.11-301-gd0880874d-dirty on 2020-03-13; ESP32 module with ESP32
Type "help()" for more information.
>> import espnow
>> espnow.get_mac_addr()
'd8:a0:1d:58:71:41'
コードを書いて頑張る
code:mac.py
import network
import ubitascii
def get_mac_addr():
return ubinascii.hexlify(network.WLAN().config('mac'), ':').decode()
ブロードキャスト
MACアドレスff:ff:ff:ff:ff:ff宛てに同じチャネルで送る
esp_now_peer_info_tのインスタンスを用意
peer_addrに{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}をセット
channelにチャネル番号(例:3)をセット
encryptに0(暗号化しない)をセット
参考
ブロードキャストの例