|
|
| (93 versions intermédiaires par le même utilisateur non affichées) |
| Ligne 2 : |
Ligne 2 : |
| |Main_Picture=Code_minimal_des_fonctions_r_seau_WiKi_Reseau.png | | |Main_Picture=Code_minimal_des_fonctions_r_seau_WiKi_Reseau.png |
| |Licences=Attribution (CC-BY) | | |Licences=Attribution (CC-BY) |
| |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. | | |Description=Page obsolète - voir dans la rubrique "Introduction" les liens vers les pages qui la remplacent. |
| |Disciplines scientifiques=Arduino, Computing | | |Disciplines scientifiques=Arduino, Computing |
| |Difficulty=Technical | | |Difficulty=Technical |
| Ligne 10 : |
Ligne 10 : |
| }} | | }} |
| {{Introduction | | {{Introduction |
| |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''' : | | |Introduction='''Page obsolète'''. Elle a été découpée en quatre épisodes, accessibles ici : |
|
| |
|
| <br /> | | <br /> |
|
| |
|
| *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''') ;
| | #[https://www.wikidebrouillard.org/wiki/Code_Minimal_R%C3%A9seau_-_(1)_Connecter_le_Wemos_D1_mini_%C3%A0_internet_en_wifi Connecter le Wemos D1 Mini à internet en Wi-Fi]. |
| *L''''étape 3''' permet à la carte d'être dans un mode particulier, dit "AP"(Access Point") et se comporter comme une borne Wi-Fi.
| | #[https://www.wikidebrouillard.org/wiki/Code_Minimal_R%C3%A9seau_-_(2)_H%C3%A9berger_un_site_web_sur_mon_Wemos_D1_mini Héberger un site web sur mon Wemos D1 Mini]. |
| *Les étapes suivantes correspondent à des besoins différents :
| | #[https://www.wikidebrouillard.org/wiki/Code_Minimal_R%C3%A9seau_-_(3)_Mon_D1_Mini_r%C3%A9cup%C3%A8re_des_donn%C3%A9es_sur_Internet_(Json) Mon Wemos D1 Mini récupère des données sur Internet (format Json)]. |
| **'''étape 4''' : visualiser et/ou modifier des paramètres de notre carte via une interface web ;
| | #[https://www.wikidebrouillard.org/wiki/Code_Minimal_R%C3%A9seau_-_(4)_Mes_Wemos_D1_Mini_discutent_sur_Internet_avec_MQTT Mes Wemos D1 Mini discutent sur Internet (protocole MQTT)] |
| **'''é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>
| |
|
| |
|
| 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.
| |
|
| |
|
| | | <u>Il est nécessaire de commencer par l'épisode 1</u>, par contre les épisodes suivants peuvent être consultés dans n'importe quel ordre. |
| 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 !
| |
| | |
| | |
| '''(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
| |
| |ItemList={{ItemList
| |
| |Item=D1 mini
| |
| }}{{ItemList
| |
| |Item=Câble USB - micro-USB
| |
| }}{{ItemList
| |
| |Item=Logiciel Arduino
| |
| }}
| |
| |Prerequisites={{Prerequisites
| |
| |Prerequisites=Installer l'environnement Arduino sur votre système
| |
| }}{{Prerequisites
| |
| |Prerequisites=Premiers pas avec Arduino
| |
| }}{{Prerequisites
| |
| |Prerequisites=Utiliser le D1 mini avec Arduino
| |
| }}
| |
| }}
| |
| {{Tuto Step
| |
| |Step_Title=Connexion Wi-Fi de base
| |
| |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.
| |
| | |
| | |
| Ces bibliothèques sont pré-chargées dans l'environnement Arduino, il n'est pas nécessaire d'aller les chercher dans le gestionnaire de bibliothèques.
| |
| | |
| {| 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" |#include <ESP8266WiFi.h> // Pour le Wemos D1 Mini, ou ...
| |
| | |
| <nowiki>#</nowiki>include "WiFi.h" // Pour l'ESP32
| |
| |-
| |
| | valign="middle" bgcolor="#999999" align="center" |Création de l’objet
| |
| | valign="middle" align="left" |
| |
| |-
| |
| | rowspan="3" valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
| |
| | valign="middle" bgcolor="#999999" align="center" |Démarrage de la connexion
| |
| | valign="middle" align="left" |WiFi.begin(SSID, SecKey) ; // Où SSID est le nom du point d'accès Wi-Fi, et SecKey son mot de passe
| |
| |-
| |
| | valign="middle" bgcolor="#999999" align="center" |Test de la connexion
| |
| | valign="middle" align="left" |if (WiFi.Status() == WL_CONNECTED) { (...) }
| |
| |-
| |
| | valign="middle" bgcolor="#999999" align="center" |Récupération de l'adresse IP
| |
| |WiFi.localIP() ;
| |
| |-
| |
| | valign="middle" bgcolor="#999999" align="center" |Dans le Loop
| |
| | valign="middle" bgcolor="#999999" align="center" |Utilisation
| |
| |Le test de la connexion, et la récupération de l'adresse IP peuvent aussi être utilisés dans le loop().
| |
| |}
| |
| | |
| | |
| | |
| Pour connaître toutes les possibilités de ces bibliothèques, voir leurs références, respectivement [https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi ici] (D1 Mini) et [https://github.com/espressif/arduino-esp32/tree/master/libraries/WiFi ici] (ESP32).
| |
| | |
| <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 = "MA_BOX_INTERNET";
| |
| const char* mySecKey = "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("----------------------------------") ;
| |
| | |
| // Initialisation de la bibliothèque avec le nom du point d'accès Wi-Fi et son mot de passe
| |
| | |
| WiFi.begin(mySSID, mySecKey) ;
| |
| | |
| // Essai de connexion au Wi-Fi, pendant 10 secondes (20 x 500 ms)
| |
| | |
| 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());
| |
|
| |
| }
| |
| | |
| /* --------------------------------------------------------------------------------------------------------------
| |
| * LOOP : fonction appelée régulièrement par le système
| |
| * ------------------------------------------------------------------------------------------------------------- */
| |
| void loop() {
| |
| /* On ne fait rien de particulier sur cet exemple */
| |
| }
| |
| | |
| | |
| | |
| </syntaxhighlight><br />
| |
| }}
| |
| {{Tuto Step
| |
| |Step_Title=Oui, mais si mon Wi-Fi change ?
| |
| |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'''
| |
| | |
| {| 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
| |
| | |
| (...)
| |
|
| |
| ___
| |
| / ___ \
| |
| |_| | |
| |
| /_/
| |
| _ ___ _
| |
| |_| |___|_| |_
| |
| ___|_ _|
| |
| |___| |_|
| |
| | |
| Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
| |
| | |
| */
| |
| | |
| // Déclaration des variables constantes
| |
| (...)
| |
| | |
| // Boucle d'initialisation
| |
| void setup() {
| |
| | |
| (...)
| |
| | |
| }
| |
| | |
| //Boucle principale
| |
| void loop() {
| |
| | |
| (...)
| |
| | |
| }
| |
| </syntaxhighlight><br />
| |
| }}
| |
| {{Tuto Step
| |
| |Step_Title=Et si je veux rester en mode AP (Access Point ?)
| |
| }}
| |
| {{Tuto Step
| |
| |Step_Title=Et maintenant, on fait quoi avec le Wi-Fi ? (tiens, pourquoi pas un petit serveur web ?)
| |
| |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/
| |
| | |
| */
| |
| | |
| // Déclaration des variables constantes
| |
| (...)
| |
| | |
| // Boucle d'initialisation
| |
| void setup() {
| |
| | |
| (...)
| |
| | |
| }
| |
| | |
| //Boucle principale
| |
| void loop() {
| |
| | |
| (...)
| |
| | |
| }
| |
| </syntaxhighlight><br />
| |
| | |
| 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].
| |
| | |
| | |
| 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 !
| |
| }}
| |
| {{Tuto Step
| |
| |Step_Title=Interrogation de serveurs web (mode JSON)
| |
| }} | | }} |
| | {{Materials}} |
| {{Tuto Step | | {{Tuto Step |
| |Step_Title=Diffusion d'information (mode MQTT) | | |Step_Title=Ben non, y en n'a plus ... |
| | |Step_Content=... puisque la page est obsolète ... (mais le Wiki impose au moins une étape) |
| }} | | }} |
| {{Notes}} | | {{Notes}} |