++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ESP32 Wifi manager template ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. include:: idBlock.rst :Dépôt BitBucket: https://bitbucket.org/myarduinotemplates/wifimanagerbasetemplate/src/master/ :Création: 05/2024 :Maj: 05/2024 .. _refWifiManagerTemplate: .. |clearer| raw:: html
.. index:: single: Wifi manager template ==================================================================================================== Introduction ==================================================================================================== WIFI Manager est une librairie ARDUINO qui permet de ne pas mettre ses identifiant dans le code ARDUINO; les fameuses lignes:: const char* SSID = "YourSSID"; const char* password = "YourPassword"; Pour cela, la lib tente une connexion avec les paramètres mémorisés par l'ESP et si elle échoue, elle se met en mode aces point (point d'accès - elle crée son propre mini réseau wifi) en se connectant à ce mini réseau wifi (au moyen d'un téléphone ou d'un pc, mac disposant d'un navigateur Internet). Une page de connexion s'ouvre automatiquement - on parle alors de portail captif, comme dans les hotels par exemple, on peut entrer ses paramètres d'accès. Adresse ip du portail captif au cas où est dans le code configurable par défaut 192.168.4.1. .. image:: images/portailWifiManager01.JPG :width: 200 px .. image:: images/portailWifiManager02.JPG :width: 200 px Comme son nom l'indique, le but de ce projet est de créer un block de base constitué d'un ESP32 avec intégration de la lib Wifi manager et éventuellement un tout petit écran OLED pour afficher l'IP Si besoin de documenter et de s'arrêter là ! .. SEEALSO:: **SITE DE REFERENCE ARDUINO.CC** :class: without-title `WiFiManager`_ .. _`WiFiManager` : https://www.arduino.cc/reference/en/libraries/wifimanager/ .. SEEALSO:: **SITE OFFICIEL GITHUB** :class: without-title `tzapu/WiFiManager`_ .. _`tzapu/WiFiManager` : https://github.com/tzapu/WiFiManager Ce block doit permettre la réutilisation facile. ==================================================================================================== Premier run ==================================================================================================== Utilisation sur une carte AZDelivery ESP32. .. SEEALSO:: **SITE DE COMMERCE AMAZON** :class: without-title `AZDelivery ESP-32 Dev Kit C V4`_ Installation du pack dans ARDUINO et paramètre par défaut : **OK** .. _`AZDelivery ESP-32 Dev Kit C V4` : https://www.amazon.fr/AZDelivery-ESP-32-Dev-compris-eBook/dp/B07Z83MF5W Installation de la lib dans l'environnement ARDUINO: prise du ZIP sur ARDUIBO.CC et dans library manager installation d'un zip. ==================================================================================================== Les exemples fournis dans la librairie WIFI manager ==================================================================================================== :: Advanced Basic NonBlocking Old_examples OnDemand Parameters ParamsChildClass Super Tests Unique ==================================================================================================== Exemple basic ==================================================================================================== Avec une configuration 4Mo de FLASH et un schéma 1.2M App/1.5 SPIFFS :: Utilisation de la bibliothèque WiFiManager-2.0.17 version 2.0.17 dans le dossier: C:\Users\jojo\Documents\Arduino\libraries\WiFiManager-2.0.17 Utilisation de la bibliothèque WiFi version 2.0.0 dans le dossier: C:\Users\jojo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.13\libraries\WiFi Utilisation de la bibliothèque Update version 2.0.0 dans le dossier: C:\Users\jojo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.13\libraries\Update Utilisation de la bibliothèque WebServer version 2.0.0 dans le dossier: C:\Users\jojo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.13\libraries\WebServer Utilisation de la bibliothèque DNSServer version 2.0.0 dans le dossier: C:\Users\jojo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.13\libraries\DNSServer Utilisation de la bibliothèque FS version 2.0.0 dans le dossier: C:\Users\jojo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.13\libraries\FS :: Le croquis utilise 833653 octets (63%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets. Les variables globales utilisent 44184 octets (13%) de mémoire dynamique, ce qui laisse 283496 octets pour les variables locales. Le maximum est de 327680 octets. versus blink:: Le croquis utilise 236793 octets (18%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets. Les variables globales utilisent 21048 octets (6%) de mémoire dynamique, ce qui laisse 306632 octets pour les variables locales. Le maximum est de 327680 octets. Premier constat: Wifi manager est gourmand en ressources. Il faut tout de même nuancer ce propos car il utilise un grand nombre de librairies nécessaires dans un projet avec du wifi (lib Wifi, Webserver) .. index:: pair: File système; LittleFS .. _ref3systemDeFichiesEtPlugin: ==================================================================================================== Hors sujet : test file système ==================================================================================================== Une tentative d'utiliser SPIFFS soldée par un échec erreur 663. Du coup => exemple SPIFFS_Test.ino Au début de l'exemple, il faut formater le file système... A part cela le test passe bien. Utile le plugin ARDUINO file system .. SEEALSO:: **SITE DE RESSOURCES GITHUB** :class: without-title `Arduino ESP32 filesystem uploader`_ .. _`Arduino ESP32 filesystem uploader` : https://github.com/me-no-dev/arduino-esp32fs-plugin?tab=readme-ov-file .. image:: images/esp32SketchDataUploader.png :width: 300 px Remarque Juillet 2024 sur **les** files système ARDUINO. Aujourd'hui 3 files systèmes sont utilisables: SPIFFS, LittleFS et FatFS .. SEEALSO:: **SITE DE RESSOURCES GITHUB** :class: without-title - `LittleFS ESP32`_ GITHUB du système de fichier - `arduino-esp32fs-plugin`_ plugin qui supporte les 3 Files Systems .. _`LittleFS ESP32` : https://github.com/lorol/LITTLEFS .. _`arduino-esp32fs-plugin` : https://github.com/lorol/arduino-esp32fs-plugin ==================================================================================================== Dépôt Bitbucket et branches ==================================================================================================== Projet Bitbucket plus vaste myArduinoTemplates branches: - master : exemple basic - avecFileSystem : ajout de spiffs - avecFileSystemEtOled : ajout oled 128x32 0.92" - avecFileSystemEtOledEtWebServer - avecFileSystemEtOledEtWebServerEtLed ==================================================================================================== Webserver ==================================================================================================== A partir des exemples Arduino et notamment FSB Browser lit le fichier index.html de data ==================================================================================================== Battery Mesure ==================================================================================================== .. SEEALSO:: **SITE D'AIDE** :class: without-title `How to measure battery level with ESP32 microcontroller`_ .. _`How to measure battery level with ESP32 microcontroller` : https://en.ovcharov.me/2020/02/29/how-to-measure-battery-level-with-esp32-microcontroller/#:~:text=To%20start%20measurement%20we%20have,battery%20drain%20through%20the%20divider. .. SEEALSO:: **SITE D'AIDE** :class: without-title `ESP32 Pinout Reference: Which GPIO pins should you use?`_ .. _`ESP32 Pinout Reference: Which GPIO pins should you use?` : https://randomnerdtutorials.com/esp32-pinout-reference-gpios/ Dans cet article:: Note: ADC2 pins cannot be used when Wi-Fi is used. So, if you’re using Wi-Fi and you’re having trouble getting the value from an ADC2 GPIO, you may consider using an ADC1 GPIO instead. That should solve your problem. Programme dédié aux tests adcChecker.ino ==================================================================================================== Je pilote une LED ==================================================================================================== pin 15 ==================================================================================================== Ressources avec la branche avecFileSystemEtOledEtWebServerEtLed ==================================================================================================== :: Utilisation de la bibliothèque FS version 2.0.0 Utilisation de la bibliothèque SPIFFS version 2.0.0 Utilisation de la bibliothèque WiFiManager-2.0.17 version 2.0.17 Utilisation de la bibliothèque WiFi version 2.0.0 Utilisation de la bibliothèque Network version 1.0.0 Utilisation de la bibliothèque Update version 2.0.0 Utilisation de la bibliothèque WebServer version 2.0.0 Utilisation de la bibliothèque DNSServer version 2.0.0 Utilisation de la bibliothèque AsyncUDP version 2.0.0 Utilisation de la bibliothèque SPI version 2.0.0 Utilisation de la bibliothèque Wire version 2.0.0 Utilisation de la bibliothèque Adafruit_GFX_Library version 1.1.8 Utilisation de la bibliothèque Adafruit_SSD1306 version 1.1.2 Utilisation de la bibliothèque ESPmDNS version 2.0.0 Le croquis utilise 1054753 octets (80%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets. Les variables globales utilisent 45176 octets (13%) de mémoire dynamique, ce qui laisse 282504 octets pour les variables locales. Le maximum est de 327680 octets. Avec le schéma *Huge APP (3MB No OTA/1M SPIFFS)*, on ne consomme que 33% .. image:: images/hugeApp.jpg :width: 300 px ==================================================================================================== Carte d'essai ==================================================================================================== .. image:: images/carteWifiManagerRecto.jpg :width: 600 px |clearer| .. image:: images/carteWifiManagerVerso.jpg :width: 600 px Prog: ARDUINO 1.8.19+ devices ESP32 dev module, 1.2app, 1.7SPIFFS / 4MB (reste 1.1 ? OTA ?) Réalisation sur la base d'une carte AZ Delivery ESP-32 Dev Kit C V4 15€ sur AMAZON Broche I2C : 22 (CLK) et 21 (DATA) ==================================================================================================== Web asynchrone ?! ==================================================================================================== Il s'agit de remettre à jour des contenus de la page html sans recharger la page. .. CAUTION:: **VIDEO** :class: without-title `GDMP : ESP32 serveur web asynchrone et web application`_ très bon exemple à base de svg !!! .. _`GDMP : ESP32 serveur web asynchrone et web application` : https://www.youtube.com/watch?v=-oZOW8rnQuI .. image:: images/esp32serveurAsynchronePiscine.JPG :width: 300 px Utilise de l'Ajax, javascript avec un setInterval 5s et manifest.js Ainsi que les librairies de me-no-dev `ESPAsyncWebServer`_ et AsyncTCP .. _`ESPAsyncWebServer` : https://github.com/me-no-dev/ESPAsyncWebServer Autre exemple avec les Websockets: .. SEEALSO:: **SITE D'AIDE** :class: without-title `ESP32 Async HTTP web server: websockets introduction`_ .. _`ESP32 Async HTTP web server: websockets introduction` : https://techtutorialsx.com/2018/08/14/esp32-async-http-web-server-websockets-introduction/ ==================================================================================================== Weblinks ==================================================================================================== .. target-notes::