ESP-NOW¶
- Espressif社の公式サイト https://www.espressif.com/en/solutions/low-power-solutions/esp-now
- ドキュメント https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html
- MicroPythonのライブラリのGitHub https://github.com/MinoruInachi/micropython/blob/doc-ja/docs/library/espnow.rst



MicroPythonでの実装¶
1.20.0 (2023/4/26) までMicroPythonのメインブランチに入っていなかった →公式サイトのリンクではなくGitHubのmicropython-espnow-imagesから専用のファームウェアをダウンロードしていた https://github.com/glenn20/micropython-espnow-images
1.21.0 (2023/10/5) からは公式モジュールとして統合されたhttps://micropython.org/download/ESP32_GENERIC/
通信¶
送信プログラムの例
import network
import espnow
# A WLAN interface must be active to send()/recv()
sta = network.WLAN(network.STA_IF) # Or network.AP_IF
sta.active(True)
sta.disconnect() # For ESP8266
e = espnow.ESPNow()
e.active(True)
peer = b'\xbb\xbb\xbb\xbb\xbb\xbb' # MAC address of peer's wifi interface
e.add_peer(peer) # Must add_peer() before send()
e.send(peer, "Starting...")
for i in range(100):
e.send(peer, str(i)*20, True)
e.send(peer, b'end')
import network
import espnow
# A WLAN interface must be active to send()/recv()
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.disconnect() # Because ESP8266 auto-connects to last Access Point
e = espnow.ESPNow()
e.active(True)
while True:
host, msg = e.recv()
if msg: # msg == None if timeout in recv()
print(host, msg)
if msg == b'end':
break
エラーハンドリング¶
try:
e.send(peer, 'Hello')
except OSError as err:
if len(err.args) < 2:
raise err
if err.args[1] == 'ESP_ERR_ESPNOW_NOT_INIT':
e.active(True)
elif err.args[1] == 'ESP_ERR_ESPNOW_NOT_FOUND':
e.add_peer(peer)
elif err.args[1] == 'ESP_ERR_ESPNOW_IF':
network.WLAN(network.STA_IF).active(True)
else:
raise err
論文¶
- ESP-NOW Based Decentralized Low Cost Voice Communication Systems For Buildings https://ieeexplore.ieee.org/abstract/document/8921062
- Design of a Robot to Control Agricultural Soil Conditions using ESP-NOW Protocol https://ieeexplore.ieee.org/abstract/document/9288575
- Comparative Performance Study of ESP-NOW, Wi-Fi, Bluetooth Protocols based on Range, Transmission Speed, Latency, Energy Usage and Barrier Resistance https://ieeexplore.ieee.org/abstract/document/9573246
- Design and Development of Wireless Sensor Network based data logger with ESP-NOW protocol https://ieeexplore.ieee.org/abstract/document/9417914
- Synchronized ESP-NOW for Improved Energy Efficiency https://orbit.dtu.dk/en/publications/synchronized-esp-now-for-improved-energy-efficiency