| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| microc:uc:mkr [2025/04/21 09:47] – [3.2 Les bibliothèques] phil | microc:uc:mkr [2026/04/27 23:48] (Version actuelle) – [Microcontrôleurs - Arduino MKR Wifi 1010] mno |
|---|
| |
| ===== Microcontrôleurs - Arduino MKR Wifi 1010 ===== | ===== Microcontrôleurs - Arduino MKR Wifi 1010 ===== |
| [Mise à jour le 21/4/2025] | [Mise à jour le 27/4/2026] |
| {{ :arduino:arduino.png?80&nolink|}} | {{ :arduino:arduino.png?80&nolink|}} |
| |
| * Wiki matériels - [[materiels:accueilmateriels|"Capteurs, afficheurs, préactionneurs, etc."]] | * Wiki matériels - [[materiels:accueilmateriels|"Capteurs, afficheurs, préactionneurs, etc."]] |
| * Wiki Arduino - [[:microc:iot:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou Wifi MKR1010"]] | * Wiki Arduino - [[:microc:iot:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou Wifi MKR1010"]] |
| | * Wiki Serveur HTTP - [[web:javascript:serveurhttp|C++ & jQuery - Communiquer avec une carte à microcontrôleur]] |
| * Bibliothèques - <html><a href="https://www.arduinolibraries.info/" target="_blank">Arduino Library List</a></html> | * Bibliothèques - <html><a href="https://www.arduinolibraries.info/" target="_blank">Arduino Library List</a></html> |
| |
| * **Documentation** sur <html><a href="https://support.arduino.cc/hc/en-us/articles/9359374546332-Check-the-WiFiNINA-firmware-version?queryID=undefined"target="_blank">arduino.cc</a></html> | * **Documentation** sur <html><a href="https://support.arduino.cc/hc/en-us/articles/9359374546332-Check-the-WiFiNINA-firmware-version?queryID=undefined"target="_blank">arduino.cc</a></html> |
| |
| Active la **connexion réseau** (locale et Internet) des Arduino MKR Wifi 1010, Arduino MKR VIDOR 4000 et Arduino UNO Wifi Rev.2. Avec cette bibliothèque, vous pouvez instancier des serveurs, des clients et envoyer / recevoir des paquets UDP via le wifi. La carte peut se connecter à des réseaux ouverts ou cryptés (WEP, WPA). L'adresse IP peut être attribuée de manière statique ou via un serveur DHCP. La bibliothèque peut aussi gérer le DNS. | WifiNINA active la **connexion réseau** (locale et Internet) des Arduino **MKR Wifi 1010**, Arduino MKR VIDOR 4000 et Arduino UNO Wifi Rev.2. Avec cette bibliothèque, vous pouvez instancier des serveurs, des clients et envoyer / recevoir des paquets UDP via le wifi. La carte peut se connecter à des réseaux ouverts ou cryptés (WEP, WPA). L'adresse IP peut être attribuée de manière statique ou via un serveur DHCP. La bibliothèque peut aussi gérer le DNS. |
| |
| * **Mise à jour du firmware du module WIFI NINA** | * **Mise à jour du firmware du module WiFiNINA** |
| - Mettre à jour la bibliothèque WiFiNINA avec le gestionnaire de bibliothèques. | - Mettre à jour la bibliothèque WiFiNINA avec le gestionnaire de bibliothèques (→ Onglet Outils → Gérer les bibliothèques). |
| - Vérifier la version du firmware installé en téléchargeant et en exécutant l'exemple **//CheckFirmwareVersion//** (→ Fichier → Exemples → WiFiNINA -> Tools). Les informations apparaissent dans le moniteur série. | - Télécharger **//FirmwareUpdater//** (→ Onglet Fichier → Exemples → WiFiNINA_Generic → Tools) et le transférer dans la carte puis mettre à jour le firmware (→ Onglet Outils → Mise à Jour du Firmre/WIFININA). \\ //__Exemple__// {{ :microc:uc:firmware_nina.png?nolink&500 |}} \\ __Remarque__ : on peut également vérifier la version du firmware installé en téléchargeant et en exécutant l'exemple **//CheckFirmwareVersion//** (→ Onglet Fichier → Exemples → WiFiNINA_Generic → Tools). Les informations apparaissent dans le moniteur série. \\ //__Exemple__// {{ :microc:uc:firmware_nina2.png?nolink |}} |
| - Télécharger et exécuter l'exemple **//FirmwareUpdater//** dans la carte (→ Fichier → Exemples → WiFiNINA -> Tools) puis mettre à jour le firmware à l'aide de **WIFI101/WiFiNINA Firmware Updater** (-> Outils). | |
| |
| == 3.2.2 PubSubClient == | == 3.2.2 PubSubClient == |
| <callout type="tip" icon="true" title="TELECHARGER">Le <html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_PIO_PING_MKR1010.zip" target="_blank">projet </a></html>PlatformIO pour VSCode.</callout> | <callout type="tip" icon="true" title="TELECHARGER">Le <html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_PIO_PING_MKR1010.zip" target="_blank">projet </a></html>PlatformIO pour VSCode.</callout> |
| |
| === 5.3 Serveurs HTTP === | |
| * ** Ressource ** : <html><a href="https://randomnerdtutorials.com/esp32-http-get-post-arduino/" target="_blank">ESP32 HTTP GET and HTTP POST with Arduino IDE (JSON, URL Encoded, Text)</a></html> | |
| | |
| <callout type="warning" icon="true">Ce paragraphe présente **deux** versions d'un serveur HTTP : \\ | |
| - La **dernière version** est utilisée dans les projets. \\ | |
| - La **Version 1** est une étude de cas pour le cours d'algorithmique | |
| </callout> | |
| |
| == 5.3.1 VERSION utilisée dans les projets == | === 5.3 Client MQTT=== |
| * **Principe retenu** | * Voir la page [[microc:iot:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou MKR Wifi 1010"]] |
| {{ :arduino:uc:principe_projet.png?nolink |}} | |
| * ** Source** : //AdvancedWebServer// (-> Fichier -> Exemples -> WiFiWebServer) | |
| * **Montage**{{ :arduino:uc:mkr1010serveur.jpg?nolink |}} | |
| * **Algorithme** | |
| <code> | |
| // Serveur HTTP V4 | |
| // Le serveur répond à une requête en envoyant une ou des valeurs lues sur ses entrées | |
| // et/ou en déclenchant une commande sur ses sorties | |
| // Exemples | |
| // pas de données dans la requête => envoie de la page d'accueil | |
| // /ecrire/valA?val=1 => activation de la sortie valA | |
| // /ecrire/valA?val=0 => désactivation de la sortie valA | |
| // /lire/val1 => mesure et envoie la valeur présente sur l'entrée val1 (issue du CAN) | |
| // ------------------------------------------------------------------------------------ | |
| // Variables | |
| chaîne de caractères <- page HTML (accueil) | |
| tableaux de caractères <- SSID et mot2passe | |
| |
| // Liste des gestionnaires (fonctions) répondant à une requête | |
| g1. Envoie de la page d'accueil | |
| g2. Commande de la led L de la carte et de la sortie D0 | |
| g3. Commande de la sortie D1 | |
| g4. Mesure et transmission de la valeur analogique présente sur A0 | |
| g5. Mesure et transmission de la valeur analogique présente sur A1 | |
| g6. Mesure et transmission des valeurs analogiques présentes sur A0 et A1 au format JSON | |
| g7. Traitement des requêtes non prises en charge | |
| ... | |
| gn ... | |
| |
| // Initialisation | |
| a. Configuration des E/S | |
| b. Si le module wifi n'est pas détecté, alors | |
| bloquer le programme !!!! | |
| c. tant que le module n'est pas connecté au réseau wifi | |
| faire | |
| se connecter au réseau Wifi avec le SSID et le mot2passe | |
| fin tant que | |
| d. Inscription les gestionnaires de requête | |
| e. Démarrage du serveur HTTP | |
| | |
| Répéter toujours | |
| Traiter une requête | |
| </code> | |
| |
| * **Code** | |
| {{ :materiels:capteurs:distance:arduinoico.png?nolink&50|}} | |
| <callout type="tip" icon="true" title="TELECHARGER">La dernière version du <html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_MKR1010_HTTP_SERVER_V6.zip" target="_blank" title="Version 6"><b>projet</b></a></html> Arduino.</callout> | |
| |
| * **Tests** {{ :microc:uc:pageaccueilserveur.png?nolink |}} | |
| |
| == 5.3.1 VERSION 1 : étude de cas == | |
| * ** Source** : //SimpleWebServer// (-> Fichier -> Exemples -> WiFiNINA) | |
| * **Montage**{{ :arduino:uc:mkr1010serveur.jpg?nolink |}} | |
| * **Algorithme** | |
| <code> | |
| // Principe | |
| // Le serveur lit les requêtes caractère par caractère et extrait les données de l'url | |
| // En réponse à la requête, il envoie une valeur ou/et déclenche une commande | |
| // Exemples | |
| // pas de données dans la requête => envoie de la page d'accueil | |
| // /arduino/digital/led/1 => activation d'une sortie | |
| // /arduino/digital/led/0 => désactivation d'une sortie | |
| // /arduino/analog/val1 => mesure et envoie d'une valeur issue du CAN | |
| |
| // Initialisation | |
| Créer un serveur HTTP à l'écoute sur le port 80 | |
| |
| 1. si le module wifi n'est pas détecté alors | |
| bloquer le programme | |
| 2. tant que le module n'est pas connecté au wifi faire | |
| se connecter au wifi avec le SSID et le mot2passe | |
| fin tant que | |
| 3. Démarrer le serveur HTTP | |
| |
| // Programme | |
| Répéter toujours | |
| début // 4. Traiter les requêtes | |
| Attente blocante d'un client | |
| si un client est connecté alors | |
| | currentLine <- "" // mémorise la donnée transmise dans la requête | |
| | tant que le client est connecté faire | |
| | | si il reste des caractères à lire | |
| | | alors | |
| | | | lire le dernier caractère transmis | |
| | | | si ce caractère est une fin de ligne | |
| | | | alors | |
| | | | | si currentLine = "" // on a eu 2 fin de lignes consécutifs ! => pas de donnée transmise | |
| | | | | alors | |
| | | | | Envoyer la page d'accueil au client et sortir de la boucle tant que | |
| | | | | sinon | |
| | | | | currentLine <- "" | |
| | | | | fin si | |
| | | | sinon | |
| | | | | si le caractère lu n'est pas un retour chariot | |
| | | | | alors | |
| | | | | on l'ajoute à la fin de currentLine | |
| | | | | fin si | |
| | | | fin si | |
| | | | // Traitement les autres requête(s) (une url suit l'@IP) | |
| | | | Traiter la requête 1 et sortir de la boucle tant que | |
| | | | Traiter la requête 2 et sortir de la boucle tant que | |
| | | | ... | |
| | | | Traiter la requête n et sortir de la boucle tant que | |
| | | fin si | |
| | fin tant que | |
| fin si | |
| Fermer la connexion | |
| fin | |
| </code> | |
| |
| * **Code** (adaptation de l'exemple __SimpleWebServer__) | |
| {{ :materiels:capteurs:distance:arduinoico.png?nolink&50|}} | |
| <callout type="tip" icon="true" title="TELECHARGER">Le <html><a href="https://webge.fr/doc/wikis/code/Arduino/ARD_MKR1010_HTTP_SERVER_V1.zip" target="_blank" title="Version 1">projet</a></html> Arduino.</callout> | |
| === 5.4 Client MQTT=== | |
| * Voir la page [[microc:iot:clientmqttesp8266|"Mettre en oeuvre un client MQTT sur un EP8266 (ESP32) Feather Huzzah ou MKR Wifi 1010"]] | |
| |
| ==== 6. Tutoriels ==== | |
| <html><a href="https://randomnerdtutorials.com/" target="_blank">RANDOM NERD TUTORIALS</a></html> et des liens vers des tutoriels sont accessibles sur la page [[arduino:webographie|webographie]]. | |