Différences entre les pages « M5Stick - SensAirS8 - DHT - MQTT » et « Code minimal des fonctions réseau »

 
 
Ligne 1 : Ligne 1 :
 
{{Tuto Details
 
{{Tuto Details
|Main_Picture=M5Stick_-_SensAirS8_-_DHT_-_MQTT_20220223_150253.jpg
+
|Main_Picture=Code_minimal_des_fonctions_r_seau_WiKi_Reseau.png
|Licences=Attribution + Pas d'utilisation commerciale + Partage dans les mêmes conditions (CC-BY-NC-SA)
+
|Licences=Attribution (CC-BY)
|Description=Crowdsourcing pour tous : Programmation et visualisation de capteurs fixes pour permettre aux citoyen.nes de produire diverses mesures dans un programme de santé environnement.
+
|Description=Nous allons résumer ici les différentes façons d'utiliser les fonction réseau des cartes compatibles Arduino possédant une puce Wi-Fi (Wemos D1 mini, ESP32, ...). Ces fonctions vont permettre à ces cartes de discuter entre elles, d'accéder à un site web, ou même de se comporter elles-même comme un (mini) site web.
+
|Disciplines scientifiques=Arduino, Computing
Programme pour envoyer des données en MQTT entre un M5Sick-C avec les capteurs SensAirS8  et DHT au site AdafruitIO
+
|Difficulty=Technical
|Disciplines scientifiques=Arduino, Computing, Life Sciences
+
|Duration=10
|Difficulty=Easy
 
|Duration=30
 
 
|Duration-type=hour(s)
 
|Duration-type=hour(s)
 +
|Tags=Wi-Fi, HTTP, MQTT, JSON
 
}}
 
}}
 
{{Introduction
 
{{Introduction
|Introduction=L’air constitue le premier des éléments nécessaires à la vie.
+
|Introduction=Cette expérience regroupe différentes manières de bénéficier des capacités de communication des cartes compatibles Arduino possédant une puce Wi-Fi. On suppose (''Cf.  "Expériences ré-requises" ci-après'') que vous avez déjà manipulé une carte Arduino et son environnement de développement. '''Toutes les étapes décrites ici sont en fait indépendantes''' :
  
Chaque jour, un être humain adulte inhale 10 000 à 20 000 litres d’air en fonction de sa morphologie, de ses activités.
+
<br />
  
En plus de l’oxygène (O2) et le diazote (N2), qui représentent en moyenne 99 % de sa composition, cet air que nous respirons contient aussi des polluants, sous forme gazeuse, liquide ou solide d’origine naturelle (embruns marins, poussières, pollens…) ou résultant d’activités humaines (trafic routier, production d’énergie, industrie, agriculture…).
+
*Les deux premières étapes permettent à notre carte de se connecter au Wi-Fi, de façon basique ('''étape 1''') ou un peu plus évoluée, et souple ('''étape 2''') ;
 +
*L''''étape 3''' permet à la carte d'être dans un mode particulier, dit "AP"(Access Point") et se comporter comme une borne Wi-Fi.
 +
*Les étapes suivantes correspondent à des besoins différents :
 +
**'''étape 4''' : visualiser et/ou modifier des paramètres de notre carte via une interface web ;
 +
**'''étape 5''' : permettre à notre carte d'accéder à des données d'un site externe, utilisant le format standardisé '''JSON''' <sup>(1)</sup>
 +
**'''étape 6''' : permettre à notre carte d'envoyer et de recevoir des messages courts, via le protocole standardisé '''MQTT''' <sup>(1)</sup>
  
La pollution de l'air a des effets significatifs et multiples sur la santé et l'environnement.
+
Dans la même philosophie que les expériences "[https://www.wikidebrouillard.org/wiki/Code_minimal_des_capteurs_pour_Arduino Code minimal des capteurs pour Arduino]" et "[https://www.wikidebrouillard.org/wiki/Code_minimal_des_actionneurs_pour_Arduino Code minimal des actionneurs pour Arduino]", <u>nous fournirons ici uniquement le code relatif à nos besoins de connexion</u>, sans mettre au point une quelconque application. Donc, ici, pas besoin de connecter une led ou un capteur, donc <u>pas de schéma de montage</u> : vous branchez simplement votre carte en USB sur votre ordinateur, et les résultats seront visibles en mode texte dans le moniteur série de l'environnement de développement Arduino.
  
La pénétration de ces polluants dans l’organisme peut avoir des conséquences sur la santé à court et long terme. 
 
  
La qualité de l'air et la pollution de l'air sont donc des enjeux majeurs pour la santé.
+
Il existe bien sûr déjà un tas de tutoriels avec des exemples similaires, sans compter bien sûr les exemples fournis avec les bibliothèques que l'on va utiliser <sup>(2)</sup>. La modeste contribution de de cette page est de tenter de regrouper les cas de figures les plus importants. S'il en manque, n'hésitez pas à mettre un commentaire, voire à ajouter une étape !
  
  
Ici, nous allons programmer un M5StickC pour obtenir une meilleure connaissance de la qualité de l’air avec mesure de la température, l'humidité et le pourcentage de CO2.
+
'''(1)''' ''Pas d'inquiétude sur les "JSON "et autre "MQTT", on explique tout dans les étapes correspondantes''
 +
 
 +
'''(2)''' ''On donnera d'ailleurs les liens vers les bibliothèques et leurs exemples à chaque étape.''
 
}}
 
}}
 
{{Materials
 
{{Materials
 
|ItemList={{ItemList
 
|ItemList={{ItemList
|Item=M5StickC
+
|Item=D1 mini
 
}}{{ItemList
 
}}{{ItemList
|Item=Capteur de CO2 SENSEAIR S8
+
|Item=Câble USB - micro-USB
 
}}{{ItemList
 
}}{{ItemList
|Item=Capteur de température et d'humidité DHT11
+
|Item=Logiciel Arduino
 
}}
 
}}
 
|Prerequisites={{Prerequisites
 
|Prerequisites={{Prerequisites
|Prerequisites=Importer de nouvelles cartes dans l'interface Arduino
+
|Prerequisites=Installer l'environnement Arduino sur votre système
}}{{Prerequisites
 
|Prerequisites=Importer des bibliothèques dans l'interface Arduino
 
}}{{Prerequisites
 
|Prerequisites=Créer un compte chez AdafruitIO pour envoyer des données dans le web
 
}}{{Prerequisites
 
|Prerequisites=Envoyer des données sur le WEB grâce à MQTT
 
 
}}{{Prerequisites
 
}}{{Prerequisites
|Prerequisites=Un capteur de CO2 avec UIFLOW et M5STICK
+
|Prerequisites=Premiers pas avec Arduino
 
}}{{Prerequisites
 
}}{{Prerequisites
|Prerequisites=DataLab - Chapitre 3 - Connecter ses capteurs
+
|Prerequisites=Utiliser le D1 mini avec Arduino
}}
 
|Tuto_Attachments={{Tuto Attachments
 
|Attachment=M5Stick_-_SensAirS8_-_DHT_-_MQTT_M5Stick-S8-DHT-IO.ino
 
 
}}
 
}}
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Installation M5Stick-C
+
|Step_Title=Connexion Wi-Fi de base
|Step_Content='''Importer de nouvelles cartes dans l'interface Arduino'''
+
|Step_Content=Cette première étape permet à un Wemos D1 mini (ou autre carte compatible Arduino avec puce Wi-Fi) de se connecter au Wi-Fi dans un environnement connu, et qui ne change pas ; C'est-à-dire que l'on à accès à une borne Wi-Fi, on connait son mot de passe - aka "clé de sécurité réseau", et a priori la carte va rester dans cet environnement.
 +
 
 +
 
 +
'''METTRE LIEN(S) vers description et exemples'''
 +
 
 +
 
 +
{| class="wikitable" cellspacing="0" border="0"
 +
| height="17" bgcolor="#999999" align="left" |
 +
| valign="middle" bgcolor="#999999" align="center" |
 +
| bgcolor="#999999" align="center" |Connexion Wi-Fi de base
 +
|-
 +
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Importation de la bibliothèque
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop
 +
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 +
| valign="middle" align="left" |
 +
|}<br /><syntaxhighlight lang="arduino" line="1">
 +
/* =========================================================================================================
 +
*
 +
*                        CODE MINIMAL RESEAU - ETAPE 1 : connexion basique au Wi-Fi
 +
*
 +
* ---------------------------------------------------------------------------------------------------------
 +
* Les petits Débrouillards - décembre 2022 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 +
* ========================================================================================================= */
 +
 
 +
// Bibliothèques WiFi : UNE SEULE EST NECESSAIRE, choisir celle correspondant à votre matériel.
 +
// ATTENTION AUX MAJUSCULES & MINUSCULES ! Sinon d'autres bibliothèques, plus ou moins valides, seraient utilisées.
 +
 
 +
#include <ESP8266WiFi.h>          // A utiliser pour le D1 Mini
 +
//#include <WiFi.h>              // A utiliser pour l'ESP32
 +
 
 +
// Définition du point d'accès Wi-Fi et de son mot de passe ("clé de sécurité")
 +
// A REMPLACER PAR LES VERITABLES VALEURS CORRESPONDANT A VOTRE EMPLACEMENT
 +
       
 +
const char* mySSID  = "Livebox-45b4" ; // "MA_BOX_INTERNET";
 +
const char* mySecKey = "A7E46C7762757D254AF4AF432A" ; // "MA_CLE_DE_SECURITE";
 +
 
 +
/* --------------------------------------------------------------------------------------------------------
 +
*  SETUP : Initialisation
 +
*  -------------------------------------------------------------------------------------------------------- */
 +
void setup() {
 +
 
 +
    // Initialisation de la liaison série, affichage 1er message
  
 +
    Serial.begin(115200);
 +
    delay(100) ;
 +
    Serial.println();
 +
    Serial.println("----------------------------------") ;
 +
    Serial.println("Exemple de connexion Wi-Fi basique") ;
 +
    Serial.println("----------------------------------") ;
  
'''1-Ajout d'un catalogue de cartes dans l'interface de développement Arduino'''
+
    // Initialisation de la bibliothèque avec le nom du point d'accès Wi-Fi et son mot de passe
  
https://www.wikidebrouillard.org/wiki/Importer_de_nouvelles_cartes_dans_l%27interface_Arduino#%C3%89tape_2_-_Ajout_d_un_catalogue_de_cartes_dans_l_interface_de_d%C3%A9veloppement_Arduino
+
    WiFi.begin(mySSID, mySecKey) ;
  
-> Préférences -> URL de gestionnaire de cartes supplémentaires
+
    // Essai de connexion au Wi-Fi, pendant 10 secondes (20 x 500 ms)
  
https://dl.espressif.com/dl/package_esp32_index.json
+
    Serial.print("Connexion à "); Serial.print(mySSID) ; Serial.print(" ") ;
 +
    int tryNumber = 1 ;
 +
    while (WiFi.status() != WL_CONNECTED)
 +
    {
 +
        delay(500);
 +
        Serial.print(".");
 +
        if (++tryNumber > 20) {
 +
            Serial.println() ; Serial.println("Pas de connexion, abandon") ;
 +
            return ;
 +
        }
 +
    }
  
 +
    // La connexion a réussi ! On affiche l'adresse IP obtenue.
 +
   
 +
    Serial.println(); Serial.print("Connecté ! Adresse IP : ");
 +
    Serial.println(WiFi.localIP());
 +
   
 +
}
  
'''2-Ajout de la carte'''
+
/* --------------------------------------------------------------------------------------------------------------
 +
*  LOOP : fonction appelée régulièrement par le système
 +
*  ------------------------------------------------------------------------------------------------------------- */
 +
void loop() {
 +
  /* On ne fait rien de particulier sur cet exemple */
 +
}
  
-> Outils -> Type de carte -> Gestionnaire de carte -> Rechercher et installer ESP32
+
 
|Step_Picture_00=Item-M5StickC_m5stickc_03_large.png
+
 
|Step_Picture_01=Importer_de_nouvelles_cartes_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_12-00-32.png
+
</syntaxhighlight><br />
|Step_Picture_02=Importer_de_nouvelles_cartes_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_12-01-00.png
 
|Step_Picture_03=Importer_de_nouvelles_cartes_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_12-01-20.png
 
|Step_Picture_04=Importer_de_nouvelles_cartes_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_12-07-34.png
 
|Step_Picture_05=Importer_de_nouvelles_cartes_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_12-08-33.png
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Import bibliothèque
+
|Step_Title=Oui, mais si mon Wi-Fi change ?
|Step_Content=Pour notre projet, nous aurons besoin d'ajouter les bibliothèques suivantes  via l'interface Arduino :
+
|Step_Content=Dans l'étape précédente on supposait que le Wi-Fi était permanent (cas où les cartes ne quittent pas notre labo, par exemple). Mais si on souhaite faire voyager nos cartes (démos dans des écoles, etc ...), on a deux possibilités
 +
 
 +
*on vient avec son environnement de développement Arduino, on met à jour le code Arduino avec les nouvelles informations Wi-Fi, et on téléverse le code sur toutes nos cartes ... un peu laborieux ...
 +
*on utilise la bibliothèque "wifimanager", qui nous simplifie grandement la tâche !
 +
 
 +
(... à suivre)
 +
 
  
 +
'''METTRE LIEN(S) vers description et exemples'''
  
-> M5SticKC
+
{| class="wikitable" cellspacing="0" border="0"
 +
| height="17" bgcolor="#999999" align="left" |
 +
| valign="middle" bgcolor="#999999" align="center" |
 +
| bgcolor="#999999" align="center" |Wifimanager
 +
|-
 +
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Importation de la bibliothèque
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop
 +
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 +
| valign="middle" align="left" |
 +
|}<br /><syntaxhighlight lang="arduino" line="1">
 +
////////////////////////
 +
//  *Code Minimal*  //
 +
//    Wi-Fi Manager  //
 +
////////////////////////
 +
/*Les programmes "Code Minimal" des petits débrouillards sont conçu pour
 +
permettre la prise en main rapide d'un composant électronique.
 +
A retrouver sur https://www.wikidebrouillard.org
  
-> EspSoftwareSerial
+
(...)
 +
 +
  ___
 +
/ ___ \
 +
|_|  | |
 +
    /_/
 +
    _  ___  _
 +
    |_| |___|_| |_
 +
        ___|_  _|
 +
        |___| |_|
  
-> DHT sensor library
+
Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
  
-> Adafruit Unified Sensor
+
*/
  
-> AirGradient_Air_Quality_Sensor
+
// Déclaration des variables constantes
 +
(...)
  
-> Adafruit_MQTT
+
// Boucle d'initialisation
 +
void setup() {
  
 +
  (...)
  
https://www.wikidebrouillard.org/wiki/Importer_des_biblioth%C3%A8ques_dans_l%27interface_Arduino
+
}
  
<br />
+
//Boucle principale
|Step_Picture_00=Importez_des_biblioth_ques_de_programme_dans_l_interface_Arduino_Capture_d_cran_du_2020-09-04_10-58-27.png
+
void loop() {
|Step_Picture_01=M5Stick_-_SensAirS8_-_DHT_-_MQTT_Capture_d_e_cran_2022-02-23_a_15.45.43.png
+
 
 +
  (...)
 +
 
 +
}
 +
</syntaxhighlight><br />
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Et si je veux rester en mode AP (Access Point ?)
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Modification d'une bibliothèque pour la gestion de plusieurs capteurs sur le M5Stick-C
+
|Step_Title=Et maintenant, on fait quoi avec le Wi-Fi ? (tiens, pourquoi pas un petit serveur web ?)
|Step_Content=Dans la biblio AirGradient_Air_Quality_Sensor à installer -> Modifier AirGradient.cpp
+
|Step_Content=... Site web pour allumer une led (à détailler)
 +
 
 +
'''METTRE LIEN(S) vers description et exemples'''
 +
{| class="wikitable" cellspacing="0" border="0"
 +
| height="17" bgcolor="#999999" align="left" |
 +
| valign="middle" bgcolor="#999999" align="center" |
 +
| bgcolor="#999999" align="center" |Site web
 +
|-
 +
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Importation de la bibliothèque
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop
 +
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 +
| valign="middle" align="left" |
 +
|}<br /><syntaxhighlight lang="arduino" line="1">
 +
////////////////////////
 +
//  *Code Minimal*  //
 +
//    Wi-Fi de base  //
 +
////////////////////////
 +
/*Les programmes "Code Minimal" des petits débrouillards sont conçu pour
 +
permettre la prise en main rapide d'un composant électronique.
 +
A retrouver sur https://www.wikidebrouillard.org
 +
 
 +
(...)
 +
 +
  ___
 +
/ ___ \
 +
|_|  | |
 +
    /_/
 +
    _  ___  _
 +
    |_| |___|_| |_
 +
        ___|_  _|
 +
        |___| |_|
 +
 
 +
Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
  
-> Trouver PMS_Init(D5,D6); (Ligne 60) mettre en commentaire //PMS_Init(D5,D6);
+
*/
  
-> Trouver CO2_Init(D4,D3); (Ligne 569) mettre en commentaire // CO2_Init(D4,D3);
+
// Déclaration des variables constantes
 +
(...)
  
-> Trouver Wire.begin(); (Ligne45) mettre en commentaire // Wire.begin();
+
// Boucle d'initialisation
|Step_Picture_00=M5Stick_-_SensAirS8_-_DHT_-_MQTT_Capture_d_e_cran_2022-02-23_a_15.52.14.png
+
void setup() {
|Step_Picture_01=M5Stick_-_SensAirS8_-_DHT_-_MQTT_Capture_d_e_cran_2022-02-23_a_15.52.14.png
+
 
|Step_Picture_02=M5Stick_-_SensAirS8_-_DHT_-_MQTT_Capture_d_e_cran_2022-02-23_a_15.52.47.png
+
  (...)
}}
 
{{Tuto Step
 
|Step_Title=AdafruitIO
 
|Step_Content='''Créer un compte chez AdafruitIO pour envoyer des données dans le web'''
 
  
https://www.wikidebrouillard.org/wiki/Cr%C3%A9er_un_compte_chez_AdafruitIO_pour_envoyer_des_donn%C3%A9es_dans_le_web
+
}
  
 +
//Boucle principale
 +
void loop() {
  
'''Envoyer des données sur le WEB grâce à MQTT'''
+
  (...)
  
https://www.wikidebrouillard.org/wiki/Envoyer_des_donn%C3%A9es_sur_le_WEB_gr%C3%A2ce_%C3%A0_MQTT
+
}
|Step_Picture_00=Cr_er_un_compte_chez_AdafruitIO_pour_envoyer_des_donn_es_dans_le_web_Adafruit-IO-Logo.png
+
</syntaxhighlight><br />
|Step_Picture_01=Cr_er_un_compte_chez_AdafruitIO_pour_envoyer_des_donn_es_dans_le_web_Capture_d_cran_du_2020-09-04_16-23-11.png
 
|Step_Picture_02=Cr_er_un_compte_chez_AdafruitIO_pour_envoyer_des_donn_es_dans_le_web_Capture_d_cran_du_2020-09-04_16-36-30.png
 
}}
 
{{Tuto Step
 
|Step_Title=Branchement des capteurs
 
|Step_Content=-> Capteur DHT en grove
 
  
-> Capteur CO2 -> Étape un peu de soudure
+
Une application plus complète, permettant d'actionner plusieurs leds et un moteur, et de récupérer des données d'un capteur, est disponible [https://www.wikidebrouillard.org/wiki/Commander_un_D1_mini_avec_une_interface_web ici].
  
https://www.wikidebrouillard.org/wiki/Un_capteur_de_CO2_avec_UIFLOW_et_M5STICK
 
  
D'autres capteurs ici : https://www.wikidebrouillard.org/wiki/DataLab_-_Chapitre_3_-_Connecter_ses_capteurs
+
L'utilisation de notre carte en mode n'est qu'un exemple de ce qu'il est possible de faire, il existe plein d'autres possibilités, détaillées dans les étapes suivantes !
|Step_Picture_00=DataLab_-_Chapitre_3_-_Connecter_ses_capteurs_DHT11.png
+
}}
|Step_Picture_01=Item-Capteur_de_CO2_SenseAir_S8_senseAir-LP8-S8-Carbon-dioxide-sensor-14core_jpg.png
+
{{Tuto Step
|Step_Picture_02=Item-Capteur_de_CO2_SenseAir_S8_Senseair_s8-pins_jpg.png
+
|Step_Title=Interrogation de serveurs web (mode JSON)
|Step_Picture_03=Un_capteur_de_CO2_avec_UIFLOW_et_M5STICK_sensairS8_bb.png
+
}}
|Step_Picture_04=Un_capteur_de_CO2_avec_UIFLOW_et_M5STICK_M5STICK_bb.png
+
{{Tuto Step
|Step_Picture_05=Un_capteur_de_CO2_avec_UIFLOW_et_M5STICK_PXL_20220127_092811583_3.jpg
+
|Step_Title=Diffusion d'information (mode MQTT)
 
}}
 
}}
 
{{Notes}}
 
{{Notes}}
 
{{Tuto Status
 
{{Tuto Status
|Complete=Published
+
|Complete=Draft
 
}}
 
}}

Version du 22 novembre 2022 à 16:00

Auteur avatarPhilippe Blusseau | Dernière modification 6/02/2023 par Philby

Code minimal des fonctions r seau WiKi Reseau.png
Nous allons résumer ici les différentes façons d'utiliser les fonction réseau des cartes compatibles Arduino possédant une puce Wi-Fi (Wemos D1 mini, ESP32, ...). Ces fonctions vont permettre à ces cartes de discuter entre elles, d'accéder à un site web, ou même de se comporter elles-même comme un (mini) site web.
Licence : Attribution (CC-BY)

Introduction

Cette expérience regroupe différentes manières de bénéficier des capacités de communication des cartes compatibles Arduino possédant une puce Wi-Fi. On suppose (Cf. "Expériences ré-requises" ci-après) que vous avez déjà manipulé une carte Arduino et son environnement de développement. Toutes les étapes décrites ici sont en fait indépendantes :


  • Les deux premières étapes permettent à notre carte de se connecter au Wi-Fi, de façon basique (étape 1) ou un peu plus évoluée, et souple (étape 2) ;
  • L'étape 3 permet à la carte d'être dans un mode particulier, dit "AP"(Access Point") et se comporter comme une borne Wi-Fi.
  • Les étapes suivantes correspondent à des besoins différents :
    • étape 4 : visualiser et/ou modifier des paramètres de notre carte via une interface web ;
    • étape 5 : permettre à notre carte d'accéder à des données d'un site externe, utilisant le format standardisé JSON (1)
    • étape 6 : permettre à notre carte d'envoyer et de recevoir des messages courts, via le protocole standardisé MQTT (1)

Dans la même philosophie que les expériences "Code minimal des capteurs pour Arduino" et "Code minimal des actionneurs pour Arduino", nous fournirons ici uniquement le code relatif à nos besoins de connexion, sans mettre au point une quelconque application. Donc, ici, pas besoin de connecter une led ou un capteur, donc pas de schéma de montage : vous branchez simplement votre carte en USB sur votre ordinateur, et les résultats seront visibles en mode texte dans le moniteur série de l'environnement de développement Arduino.


Il existe bien sûr déjà un tas de tutoriels avec des exemples similaires, sans compter bien sûr les exemples fournis avec les bibliothèques que l'on va utiliser (2). La modeste contribution de de cette page est de tenter de regrouper les cas de figures les plus importants. S'il en manque, n'hésitez pas à mettre un commentaire, voire à ajouter une étape !


(1) Pas d'inquiétude sur les "JSON "et autre "MQTT", on explique tout dans les étapes correspondantes

(2) On donnera d'ailleurs les liens vers les bibliothèques et leurs exemples à chaque étape.
  • Expériences pré-requises

Étape 1 - Connexion Wi-Fi de base

Cette première étape permet à un Wemos D1 mini (ou autre carte compatible Arduino avec puce Wi-Fi) de se connecter au Wi-Fi dans un environnement connu, et qui ne change pas ; C'est-à-dire que l'on à accès à une borne Wi-Fi, on connait son mot de passe - aka "clé de sécurité réseau", et a priori la carte va rester dans cet environnement.


METTRE LIEN(S) vers description et exemples


Connexion Wi-Fi de base
Avant le Setup Importation de la bibliothèque
Création de l’objet
Dans le Setup Démarrage de l’objet
Dans le Loop Utilisation

 1 /* =========================================================================================================
 2  * 
 3  *                         CODE MINIMAL RESEAU - ETAPE 1 : connexion basique au Wi-Fi
 4  * 
 5  * ---------------------------------------------------------------------------------------------------------
 6  * Les petits Débrouillards - décembre 2022 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 7  * ========================================================================================================= */
 8 
 9 // Bibliothèques WiFi : UNE SEULE EST NECESSAIRE, choisir celle correspondant à votre matériel. 
10 // ATTENTION AUX MAJUSCULES & MINUSCULES ! Sinon d'autres bibliothèques, plus ou moins valides, seraient utilisées.
11 
12 #include <ESP8266WiFi.h>          // A utiliser pour le D1 Mini 
13 //#include <WiFi.h>               // A utiliser pour l'ESP32
14 
15 // Définition du point d'accès Wi-Fi et de son mot de passe ("clé de sécurité")
16 // A REMPLACER PAR LES VERITABLES VALEURS CORRESPONDANT A VOTRE EMPLACEMENT
17         
18 const char* mySSID   = "Livebox-45b4" ; // "MA_BOX_INTERNET";
19 const char* mySecKey = "A7E46C7762757D254AF4AF432A" ; // "MA_CLE_DE_SECURITE";
20 
21 /* --------------------------------------------------------------------------------------------------------
22  *  SETUP : Initialisation
23  *  -------------------------------------------------------------------------------------------------------- */
24 void setup() {
25 
26     // Initialisation de la liaison série, affichage 1er message
27 
28     Serial.begin(115200);
29     delay(100) ;
30     Serial.println(); 
31     Serial.println("----------------------------------") ;
32     Serial.println("Exemple de connexion Wi-Fi basique") ;
33     Serial.println("----------------------------------") ;
34 
35     // Initialisation de la bibliothèque avec le nom du point d'accès Wi-Fi et son mot de passe
36 
37     WiFi.begin(mySSID, mySecKey) ;
38 
39     // Essai de connexion au Wi-Fi, pendant 10 secondes (20 x 500 ms)
40 
41     Serial.print("Connexion à "); Serial.print(mySSID) ; Serial.print(" ") ;
42     int tryNumber = 1 ;
43     while (WiFi.status() != WL_CONNECTED)
44     {
45         delay(500);
46         Serial.print(".");
47         if (++tryNumber > 20) {
48             Serial.println() ; Serial.println("Pas de connexion, abandon") ;
49             return ;
50         }
51     } 
52 
53     // La connexion a réussi ! On affiche l'adresse IP obtenue.
54     
55     Serial.println(); Serial.print("Connecté ! Adresse IP : ");
56     Serial.println(WiFi.localIP());
57     
58 }
59 
60 /* --------------------------------------------------------------------------------------------------------------
61  *  LOOP : fonction appelée régulièrement par le système
62  *  ------------------------------------------------------------------------------------------------------------- */
63 void loop() { 
64   /* On ne fait rien de particulier sur cet exemple */
65 }

Étape 2 - Oui, mais si mon Wi-Fi change ?

Dans l'étape précédente on supposait que le Wi-Fi était permanent (cas où les cartes ne quittent pas notre labo, par exemple). Mais si on souhaite faire voyager nos cartes (démos dans des écoles, etc ...), on a deux possibilités

  • on vient avec son environnement de développement Arduino, on met à jour le code Arduino avec les nouvelles informations Wi-Fi, et on téléverse le code sur toutes nos cartes ... un peu laborieux ...
  • on utilise la bibliothèque "wifimanager", qui nous simplifie grandement la tâche !

(... à suivre)


METTRE LIEN(S) vers description et exemples

Wifimanager
Avant le Setup Importation de la bibliothèque
Création de l’objet
Dans le Setup Démarrage de l’objet
Dans le Loop Utilisation

 1 ////////////////////////
 2 //   *Code Minimal*   //
 3 //    Wi-Fi Manager   //
 4 ////////////////////////
 5 /*Les programmes "Code Minimal" des petits débrouillards sont conçu pour 
 6 permettre la prise en main rapide d'un composant électronique.
 7 A retrouver sur https://www.wikidebrouillard.org
 8 
 9 (...)
10  
11    ___
12  / ___ \
13 |_|   | |
14      /_/ 
15      _   ___   _ 
16     |_| |___|_| |_
17          ___|_   _|
18         |___| |_|
19 
20 Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
21 
22 */
23 
24 // Déclaration des variables constantes
25 (...)
26 
27 // Boucle d'initialisation
28 void setup() {
29 
30   (...)
31 
32 }
33 
34 //Boucle principale
35 void loop() {
36 
37   (...)
38 
39 }

Étape 3 - Et si je veux rester en mode AP (Access Point ?)

Étape 4 - Et maintenant, on fait quoi avec le Wi-Fi ? (tiens, pourquoi pas un petit serveur web ?)

... Site web pour allumer une led (à détailler)

METTRE LIEN(S) vers description et exemples

Site web
Avant le Setup Importation de la bibliothèque
Création de l’objet
Dans le Setup Démarrage de l’objet
Dans le Loop Utilisation

 1 ////////////////////////
 2 //   *Code Minimal*   //
 3 //    Wi-Fi de base   //
 4 ////////////////////////
 5 /*Les programmes "Code Minimal" des petits débrouillards sont conçu pour 
 6 permettre la prise en main rapide d'un composant électronique.
 7 A retrouver sur https://www.wikidebrouillard.org
 8 
 9 (...)
10  
11    ___
12  / ___ \
13 |_|   | |
14      /_/ 
15      _   ___   _ 
16     |_| |___|_| |_
17          ___|_   _|
18         |___| |_|
19 
20 Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
21 
22 */
23 
24 // Déclaration des variables constantes
25 (...)
26 
27 // Boucle d'initialisation
28 void setup() {
29 
30   (...)
31 
32 }
33 
34 //Boucle principale
35 void loop() {
36 
37   (...)
38 
39 }

Une application plus complète, permettant d'actionner plusieurs leds et un moteur, et de récupérer des données d'un capteur, est disponible ici.


L'utilisation de notre carte en mode n'est qu'un exemple de ce qu'il est possible de faire, il existe plein d'autres possibilités, détaillées dans les étapes suivantes !

Étape 5 - Interrogation de serveurs web (mode JSON)

Étape 6 - Diffusion d'information (mode MQTT)


Dernière modification 6/02/2023 par user:Philby.

Commentaires

Draft