ESP-NOW
https://youtu.be/QmvMtgNs9r8
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/network/esp_now.html
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モード
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html
ステーションモード
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()
ブロードキャスト
ESP32: Getting started with ESP-NOW - DFRobot
MACアドレスff:ff:ff:ff:ff:ff宛てに同じチャネルで送る
esp_now_peer_info_tのインスタンスを用意
peer_addrに{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}をセット
channelにチャネル番号(例:3)をセット
encryptに0(暗号化しない)をセット
参考
API Reference: ESP-NOW(espressif)
ESP-NOW User Guide
M5StickCでESP-NOW その1 – Lang-ship
M5StickCでESP-NOW その2 – Lang-ship
ESP32 With ESP-Now Protocol : 16 Steps - Instructables
ESP-Now broadcast example
ブロードキャストの例
#M5Stack #MicroPython