Ligne 63 : | Ligne 63 : | ||
| valign="middle" align="left" |#include <ESP8266WiFi.h> // Pour le Wemos D1 Mini, ou ... | | valign="middle" align="left" |#include <ESP8266WiFi.h> // Pour le Wemos D1 Mini, ou ... | ||
− | <nowiki>#</nowiki>include | + | <nowiki>#</nowiki>include <WiFi.h> // Pour l'ESP32 |
|- | |- | ||
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet | | valign="middle" bgcolor="#999999" align="center" |Création de l’objet | ||
Ligne 160 : | Ligne 160 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Oui, mais si mon Wi-Fi change ? | |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 | + | |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 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 " | + | *on utilise la bibliothèque "WiFiManager", qui nous simplifie grandement la tâche ! |
− | |||
− | |||
− | |||
− | |||
− | |||
+ | En effet, cette bibliothèque permet d'enregistrer de façon pérenne (même si on débranche la carte) le dernier Point d'Accès Internet sur lequel la carte a réussi à se connecter. Lors de l'appel à sa fonction autoconnect(...), la bibliothèque va d'abord chercher à se connecter sur ce point d'accès. Et si ça ne fonctionne pas (on a changé de lieu, par exemple), alors elle va se positionner elle-même en mode "Point d'Accès", et va proposer sur l'adresse 192.168.4.1 une interface permettant d'afficher les points d'accès environnants. L'utilisateur va pouvoir alors choisir le point d'accès et spécifier le mot de passe associé. | ||
+ | <br /> | ||
{| class="wikitable" cellspacing="0" border="0" | {| class="wikitable" cellspacing="0" border="0" | ||
| height="17" bgcolor="#999999" align="left" | | | height="17" bgcolor="#999999" align="left" | | ||
Ligne 177 : | Ligne 174 : | ||
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup | | 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" bgcolor="#999999" align="center" |Importation de la bibliothèque | ||
− | | valign="middle" align="left" | | + | | valign="middle" align="left" |#include <WiFiManager.h> |
|- | |- | ||
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet | | valign="middle" bgcolor="#999999" align="center" |Création de l’objet | ||
− | | valign="middle" align="left" | | + | | valign="middle" align="left" |WiFiManager myWiFiManager; |
|- | |- | ||
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup | | valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup | ||
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet | | valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet | ||
− | | valign="middle" align="left" | | + | | valign="middle" align="left" |if (myWiFiManager.autoConnect(Nom_AP, MotDePasse_AP)) { (... connexion OK !) } |
|- | |- | ||
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop | | valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop | ||
| valign="middle" bgcolor="#999999" align="center" |Utilisation | | valign="middle" bgcolor="#999999" align="center" |Utilisation | ||
| valign="middle" align="left" | | | valign="middle" align="left" | | ||
− | |}<br /><syntaxhighlight lang="arduino" line="1"> | + | |} |
+ | |||
+ | |||
+ | Pour connaître toutes les possibilités de cette bibliothèque, voir sa référence, [https://github.com/tzapu/WiFiManager ici].<br /><syntaxhighlight lang="arduino" line="1"> | ||
//////////////////////// | //////////////////////// | ||
// *Code Minimal* // | // *Code Minimal* // |
Auteur Philippe Blusseau | Dernière modification 6/02/2023 par Philby
Wi-Fi, HTTP, MQTT, JSON Code_minimal_des_fonctions_r_seau_WiKi_Reseau.png
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 :
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
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.
Connexion Wi-Fi de base | ||
Avant le Setup | Importation de la bibliothèque | #include <ESP8266WiFi.h> // Pour le Wemos D1 Mini, ou ...
#include <WiFi.h> // Pour l'ESP32 |
Création de l’objet | ||
Dans le Setup | Démarrage de la connexion | WiFi.begin(SSID, SecKey) ; // Où SSID est le nom du point d'accès Wi-Fi, et SecKey son mot de passe |
Test de la connexion | if (WiFi.Status() == WL_CONNECTED) { (...) } | |
Récupération de l'adresse IP | WiFi.localIP() ; | |
Dans le Loop | 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 ici (D1 Mini) et ici (ESP32).
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 = "MA_BOX_INTERNET";
19 const char* mySecKey = "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 }
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 :
En effet, cette bibliothèque permet d'enregistrer de façon pérenne (même si on débranche la carte) le dernier Point d'Accès Internet sur lequel la carte a réussi à se connecter. Lors de l'appel à sa fonction autoconnect(...), la bibliothèque va d'abord chercher à se connecter sur ce point d'accès. Et si ça ne fonctionne pas (on a changé de lieu, par exemple), alors elle va se positionner elle-même en mode "Point d'Accès", et va proposer sur l'adresse 192.168.4.1 une interface permettant d'afficher les points d'accès environnants. L'utilisateur va pouvoir alors choisir le point d'accès et spécifier le mot de passe associé.
Wifimanager | ||
Avant le Setup | Importation de la bibliothèque | #include <WiFiManager.h> |
Création de l’objet | WiFiManager myWiFiManager; | |
Dans le Setup | Démarrage de l’objet | if (myWiFiManager.autoConnect(Nom_AP, MotDePasse_AP)) { (... connexion OK !) } |
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 }
... 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 !
Dernière modification 6/02/2023 par user:Philby.
Draft
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #