Outils pour utilisateurs

Outils du site


start:arduino:esp32:now

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
start:arduino:esp32:now [2022/01/05 19:16] gerardadminstart:arduino:esp32:now [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ======== ESP 32 NOW ======== ======== ESP 32 NOW ========
  
-ESP-NOW 
  
 ESP-NOW est un protocole d'échange de données entre ESP-32 (ou ESP8266) que l'on peut programmer avec l'IDE Arduino. C'est un protocole développé par Espressif, le fabricant des puces ESP, et qui permet d'échanger de courts paquets de données directement et simplement. Il est possible de réaliser des échanges entre plusieurs ESP dans les deux sens (émission et réception) sans intermédiaire central (sans routeur). ESP-NOW est un protocole d'échange de données entre ESP-32 (ou ESP8266) que l'on peut programmer avec l'IDE Arduino. C'est un protocole développé par Espressif, le fabricant des puces ESP, et qui permet d'échanger de courts paquets de données directement et simplement. Il est possible de réaliser des échanges entre plusieurs ESP dans les deux sens (émission et réception) sans intermédiaire central (sans routeur).
Ligne 32: Ligne 31:
  
 } }
 +</code>
  
 +Cette étape manuelle permettra d'appairer facilement chaque module. Néanmoins, il est à noter qu'une méthode très astucieuse permet de se passer de cette manip préalable, et de connecter de manière automatique chaque module. Néanmoins, elle est un peu plus complexe. 
  
-</code> +L'idée est la suivante: les “récepteurs” émettent un réseau wifi dont le SSID comporte une chaîne prédéfinie (par exemple, “RECEPTION”. L'émetteur scanne les réseaux Wifi environnants, et lorsqu'il détecte un SSID commençant par “RECEPTION”, il en récupère l'adresse MAC, avant de créer l'appairage. C'est de cette manière que fonctionnent les deux exemples Master et Slave que l'on trouvera dans les exemples ESP32>ESP-NOW de l'IDE Arduino.
- +
-Cette étape manuelle permettra d'appairer facilement chaque module. Néanmoins, il est à noter qu'une méthode très astucieuse permet de se passer de cette manip préalable, et de connecter de manière automatique chaque module. Néanmoins, elle est un peu plus complexe. L'idée est la suivante: les “récepteurs” émettent un réseau wifi dont le SSID comporte une chaîne prédéfinie (par exemple, “RECEPTION”. L'émetteur scanne les réseaux Wifi environnants, et lorsqu'il détecte un SSID commençant par “RECEPTION”, il en récupère l'adresse MAC, avant de créer l'appairage. C'est de cette manière que fonctionnent les deux exemples Master et Slave que l'on trouvera dans les exemples ESP32>ESP-NOW de l'IDE Arduino.+
  
 ====Principe de communication==== ====Principe de communication====
Ligne 51: Ligne 50:
 ==Côté récepteur:== ==Côté récepteur:==
  
-    Initialiser ESP-NOW. +    --Initialiser ESP-NOW. 
-    Enregistrer une fonction de rappel, qui sera exécutée quant un message est reçu. +    --Enregistrer une fonction de rappel, qui sera exécutée quant un message est reçu. 
-    Dans cette fonction de rappel, on sauve le contenu du message dans une variable pour en faire quelque chose.+    --Dans cette fonction de rappel, on sauve le contenu du message dans une variable pour en faire quelque chose.
  
 À Chaque étape listée ci-dessus va correspondre une fonction spécifique à l'utilisation du protocole: À Chaque étape listée ci-dessus va correspondre une fonction spécifique à l'utilisation du protocole:
  
-esp_now_init() Initialiser ESP-NOW. Il faut initialiser le wifi avant d'initialiser ESP-NOW. +   ***esp_now_init()** Initialiser ESP-NOW. Il faut initialiser le wifi avant d'initialiser ESP-NOW. 
-esp_now_add_peer() On appelle cette fonction pour appairer un ESP, on passe son adresse MAC en argument. +   ***esp_now_add_peer()** On appelle cette fonction pour appairer un ESP, on passe son adresse MAC en argument. 
-esp_now_send() Envoie des données avec ESP-NOW. +   ***esp_now_send()** Envoie des données avec ESP-NOW. 
-esp_now_register_send_cb() Enregistre une fonction de rappel qui sera déclenchée lorsque l'on envoie des données. +   ***esp_now_register_send_cb()** Enregistre une fonction de rappel qui sera déclenchée lorsque l'on envoie des données. 
-esp_now_register_rcv_cb() Enregistre une fonction de rappel qui sera déclenchée lorsque l'on reçoit des données. +   ***esp_now_register_rcv_cb()** Enregistre une fonction de rappel qui sera déclenchée lorsque l'on reçoit des données. 
-Code de l'émetteur+ 
 +==Code de l'émetteur==
  
 Ci-dessous, le code commenté: Ci-dessous, le code commenté:
  
 +<code c >
 // Référence technique: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html // Référence technique: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html
 +
  
 // Inclure les librairies // Inclure les librairies
Ligne 76: Ligne 78:
  
 // La variable qui sera envoyée au récepteur (nous générerons une valeur aléatoire pour l'exemple) // La variable qui sera envoyée au récepteur (nous générerons une valeur aléatoire pour l'exemple)
 +
 float maValeurEnvoyee; float maValeurEnvoyee;
  
Ligne 138: Ligne 141:
   delay(1000);   delay(1000);
 } }
 +</code>
  
-Code du récepteur+==Code du récepteur==
  
 Voici le code du récepteur, commenté en détail: Voici le code du récepteur, commenté en détail:
 +
 +<code c>
  
 // Inclure les librairies // Inclure les librairies
Ligne 182: Ligne 188:
 } }
  
-Tester et aller plus loin+</code> 
 + 
 +==Tester et aller plus loin==
  
 Lorsque vous regarderez les console série des deux ESP, vous constaterez que les messages sont bien expédiés, bien reçus et leur contenu correctement interprété côté récepteur. Les différentes sources trouvées sur le net parlent d'une portée en extérieur supérieur à 200 mètres, avec les deux antennes pointant l'une vers l'autre. À tester, les essais réalisés autour de notre projet de compteur ont plutôt été concluants jusqu'à 100 mètres environ. Lorsque vous regarderez les console série des deux ESP, vous constaterez que les messages sont bien expédiés, bien reçus et leur contenu correctement interprété côté récepteur. Les différentes sources trouvées sur le net parlent d'une portée en extérieur supérieur à 200 mètres, avec les deux antennes pointant l'une vers l'autre. À tester, les essais réalisés autour de notre projet de compteur ont plutôt été concluants jusqu'à 100 mètres environ.
  
 Nous vous renvoyons aux exemples disponibles dans la bibliothèque Arduino pour aller plus loin ! Nous vous renvoyons aux exemples disponibles dans la bibliothèque Arduino pour aller plus loin !
 +
 +[[https://wiki-fablab.grandbesancon.fr/lib/exe/fetch.php?media=howto:arduino-esp:esp-now_programmes.zip|arduino-esp:esp-now_programmes.zip]]
  
  
/home/chanteri/www/fablab37110/data/attic/start/arduino/esp32/now.1641406563.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)