Wifi entre WB55 et ESP32 en Micropython
Il est possible de faire communiquer une carte Microcontrôleur en MicroPython avec un autre système en Wifi TCP/IP.
En effet, la carte WB55 Nucléo de STM ne possède pas de système de communication Wifi.
Pour cela il suffira de connecter une carte ESP32 sur l'UART de la carte WB55.
Connectez la pin 6 CN10 du WB55 (Rx) au TX de l'esp32 avec shield grove (connecteur D4 GPIO17)
Connectez la pin 34 CN10 du WB55 (Tx) au RX de l'esp32 avec shield grove (connecteur D5 GPIO6)
Les pin GNG au GND (0V masse) et le Vcc de l'ESP32 à la pin16 CN7 du WB55. Ainsi l'ESP32 sera alimenter par la carte WB55 en 3.3V
Si vous souhaiter avoir des informations complémentaires sur la partie réseau qui sera utilisée, voir tous les détails ici:
On utilise le même principe qui a été développé pour la carte Microbit, mais pour n'importe quelle carte en Micropython.
Il suffira de charger le module ext_wifi_esp32_wb55.py dans la carte WB55 (faire un simple glisser-déplacer dans la carte PYBFLASH WB55) qui contient les différentes fonctions pour se connecter à un point d'accès et pour envoyer et recevoir une donnée très simplement.
Fichier ext_wifi_esp32_wb55.py
Le principe est basé sur une relation réseau de type client/serveur.
Pour présenter ces fonctionnalités, vous trouverez un exemple simple qui permet de commander une lampe à distance. La lampe connectée sera la LED bleue de la carte WB55.
Le protocole utilisé est très simple, si on reçoit "ON#" on allume la LED, si on reçoit "OFF#" on éteint la LED.
La carte WB55 jouera alors le rôle du serveur TCP.
Le programme proposé en Micropython est alors très simple et permettra aux élèves de créer très simplement des systèmes IOT et d'acquérir les compétences demandées en réseau.
La commande connect_AP_IP(SSID, password, adresse_IP) permet de connecter la carte WB55 à un point d'accès donnée (SSID + mot de passe) et de fixer en même temps son adresse IP sur le réseau.
La commande donnee_recue(port) permet d'attendre de recevoir une requête d'un client, c'est à dire la donnée envoyée par le client au serveur, ici, soit "ON#" ou "OFF#". Le port utilisé est le port 2000.
Fichier de la lampe connectée. Attention, ne faites pas un glisser déplacer directement de ce fichier dans la carte WB55 (PYBFLASH), il faudra penser à renommer ce fichier en main.py dans la carte. Ou utiliser l'IDE Thonny, au choix.
Pour tester le bon fonctionnement de la lampe connecté, vous pouvez commencer par utiliser l'application TCP_client et créer un client. Attention, avant de connecter le client, il faudra lancer le serveur (programme python dans la WB55). Attention de bien envoyer le code "ON#" ou "OFF#".
Vous pourrez aussi utiliser l'application sur Appinventor pour commander la lampe, voir alors les détails ici.
Une autre commande envoi_donnee_serveur(donnee, adresseIP_serveur, port) pour permettre de positionner la carte WB55 en mode client pour envoyer une données à un serveur (avec son adresse IP). Il sera ainsi possible de faire communiquer plusieurs cartes WB55 entre elles en réseau pour faire de l'IOT.
Exemple de programme en Python pour transformer la carte WB55 en interrupteur connecté. Si on appuie sur le Switch SW1 on envoie "ON" pour allumer la LED à une autre carte WB55, et "OFF" pour l'éteindre. Vous pouvez commencer par vérifier que le système envoie bien ses commandes avec l'application TCP server et visualiser les commandes envoyées.
La commande adresse_IP_client_connecte() permet de renvoyer le dernier client qui a été connecté et qui a échangée une donnée.
Cette solution fonctionne bien évidemment avec n'importe quel Microcontrôleur qui intègre un firmware MircoPython comme les cartes ESP32 ou autres. Il faudra juste adapter la partie de l'ouverture du port Com et des PIN Tx et Rx.
Si vous voulez mieux comprendre les notions sur les réseaux:
https://www.eyrolles.com/Accueil/Auteur/julien-launay-152184/