ESP-NOW netdev interface¶
WiFi based ESP-NOW network device driver.
This module realizes a netdev interface using Espressif’s ESP-NOW technology which uses the built-in WiFi module.
With ESP-NOW, the ESP32 provides a connectionless communication technology, featuring short packet transmission. It applies the IEEE802.11 Action Vendor frame technology, along with the IE function developed by Espressif, and CCMP encryption technology, realizing a secure, connectionless communication solution.
The RIOT port for ESP32 implements in module esp_now
a netdev
driver which uses ESP-NOW to provide a link layer interface to a meshed network of ESP32 nodes. In this network, each node can send short packets with up to 250 data bytes to all other nodes that are visible in its range.
Note
Due to symbol conflicts in the esp_idf_wpa_supplicant_crypto
module used by the esp_now
with RIOT’s crypto
and hashes
modules, ESP-NOW cannot be used for application that use these modules. Therefore, the module esp_now
is not enabled automatically if the netdev_default
module is used. Instead, the application has to add the esp_now
module in its makefile when needed.
1 | USEMODULE += esp_now
|
RIOT_ESP_
with the MAC address of its SoftAP WiFi interface. The driver periodically scans all visible ESP32 nodes.
The following parameters are defined for ESP-NOW nodes. These parameters can be overriden by application-specific board configurations.
Parameter | Default | Description |
---|---|---|
ESP_NOW_SCAN_PERIOD | 10000000UL | Defines the period in us at which an node scans for other nodes in its range. The default period is 10 s. |
ESP_NOW_SOFT_AP_PASSPHRASE | ThisistheRIOTporttoESP | Defines the passphrase (max. 64 chars) that is used for the SoftAP interface of an nodes. It has to be same for all nodes in one network. |
ESP_NOW_CHANNEL | 6 | Defines the channel that is used as the broadcast medium by all nodes together. |
ESP_NOW_KEY | NULL | Defines a key that is used for encrypted communication between nodes. If it is NULL, encryption is disabled. The key has to be of type uint8_t[16] and has to be exactly 16 bytes long. |