(→premier test avec le servo et le module) |
|||
Ligne 41 : | Ligne 41 : | ||
On utilise le programme présent dans les exemples de la librairie ESP8266 : Menu Fichier -> Exemples -> ESP8266WiFi -> WiFiScan | On utilise le programme présent dans les exemples de la librairie ESP8266 : Menu Fichier -> Exemples -> ESP8266WiFi -> WiFiScan | ||
- | < | + | <pre> |
/* | /* | ||
* Ce programme montre comment scanner les réseaux wifi autour de vous. | * Ce programme montre comment scanner les réseaux wifi autour de vous. | ||
Ligne 90 : | Ligne 90 : | ||
delay(5000); | delay(5000); | ||
} | } | ||
- | </ | + | </pre> |
Utilisation du programme WiFiClient_simple.ino | Utilisation du programme WiFiClient_simple.ino | ||
- | < | + | <pre> |
/* | /* | ||
Ligne 134 : | Ligne 134 : | ||
} | } | ||
- | </ | + | </pre> |
+ | |||
+ | Programme WiFiClient-compteur.ino | ||
+ | <pre> | ||
+ | |||
+ | /* | ||
+ | * Progtrame Client-Copteur du MOOC MinesTelecom "Fabriquer un objet connecté" | ||
+ | */ | ||
+ | |||
+ | #include <ESP8266WiFi.h> | ||
+ | |||
+ | const char* ssid = "skynet"; // Nom du réseau | ||
+ | const char* password = "philae2014"; // clé | ||
+ | |||
+ | // valeurs pour le serveur Web | ||
+ | const char* host = "api.tom.tools"; | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | delay(10); | ||
+ | |||
+ | // On commence par se connecter au réseau Wifi | ||
+ | |||
+ | Serial.print("Connexion au WiFi "); | ||
+ | Serial.println(ssid); | ||
+ | |||
+ | WiFi.begin(ssid, password); // On se connecte | ||
+ | |||
+ | while (WiFi.status() != WL_CONNECTED) { // On attend | ||
+ | delay(500); | ||
+ | Serial.print("."); | ||
+ | } | ||
+ | |||
+ | Serial.println(""); // on affiche les paramètres | ||
+ | Serial.println("WiFi connecté"); | ||
+ | Serial.print("Adresse IP du module EPC: "); | ||
+ | Serial.println(WiFi.localIP()); | ||
+ | Serial.print("Adresse IP de la box : "); | ||
+ | Serial.println(WiFi.gatewayIP()); | ||
+ | } | ||
+ | |||
+ | |||
+ | void loop() { | ||
+ | Serial.print("Connexion au serveur : "); | ||
+ | Serial.println(host); | ||
+ | |||
+ | // On se place dans le rôle du client en utilisant WifiClient | ||
+ | WiFiClient client; | ||
+ | |||
+ | // le serveur Web attend tradionnellement sur le port 80 | ||
+ | const int httpPort = 80; | ||
+ | |||
+ | // Si la connexio échoue ca sera pour la prochaine fois | ||
+ | if (!client.connect(host, httpPort)) { | ||
+ | Serial.println("la connexion a raté"); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | |||
+ | // La connexion a réussie on forme le chemin | ||
+ | String url = String("/hits/"); | ||
+ | |||
+ | Serial.print("demande URL: "); | ||
+ | Serial.println(url); | ||
+ | |||
+ | // On l'envoie au serveur sur plusieurs lignes | ||
+ | // GET /compteur.php HTTP/1.1 | ||
+ | // Hosts: outils.plido.net | ||
+ | // Connection: close | ||
+ | // | ||
+ | // La première ligne précise à la fin version du protocole attendu | ||
+ | // La deuxième rappelle au serveur sous quel nom on l'appelle, en | ||
+ | // effet, à une même adresse IP on peut avoire différents serveurs | ||
+ | // repondant à des noms différents. | ||
+ | // La troisième ligne indique que le serveur doit fermer la | ||
+ | // connexion apres la réponse et ne pas attendre d'autres requêtes. | ||
+ | client.print(String("GET ") + url + " HTTP/1.1\r\n" + | ||
+ | "Host: " + host + "\r\n" + | ||
+ | "Connection: close\r\n\r\n"); | ||
+ | |||
+ | // On attend 10 mili-secondes | ||
+ | delay(1000); | ||
+ | |||
+ | // On lit les données reçues, s'il y en a | ||
+ | while(client.available()){ | ||
+ | String line = client.readStringUntil('\r'); // découpe ligne par ligne | ||
+ | Serial.print(line); | ||
+ | } | ||
+ | |||
+ | // plus de données | ||
+ | Serial.println(); | ||
+ | Serial.println("connexion fermée"); | ||
+ | |||
+ | delay(30000); | ||
+ | } | ||
+ | </pre> |
Nous avons suivi le MOOC de l'institut Mines Telecom sur la plateforme FUN (France Université Numérique) qui s'intitule "Fabriquer un objet connecté".
Il s'agit de Fabriquer un objet, Nelson, qu'on connectera à internet en Wifi.
Nelson a été inventé par Maxime Castelli.
Sommaire |
Attention deux pièces nécessitent un réglage particulier !!
En effet, sans ce réglage la pièce est mal imprimée !
Régler avec Cura : Choisir la configuration experte : Menu Expert -> Configuration experte, une fenêtre s'ouvre.
Décocher "Combiner l'ensemble (option A)".
Téléchargez les pièces du Nelson sur Thingiverse.
Allumez le logiciel Arduino.
Allez dans le menu Arduino -> Préférence, une fenêtre s'ouvre.
Dans le champ "URL de gestionnaire de cartes supplémentaires" copiez-collez l'URL suivante : http://arduino.esp8266.com/stable/package_esp8266com_index.json
pb de driver !! les drivers CP210x USB to UART Bridge VCP
D'abord, se connecter au wifi !
On utilise le programme présent dans les exemples de la librairie ESP8266 : Menu Fichier -> Exemples -> ESP8266WiFi -> WiFiScan
/* * Ce programme montre comment scanner les réseaux wifi autour de vous. * C'est à peut près la même qu'avec la bibliothèque d'un Shield WiFi, * Le principale différence est l'inclusion de ce fichier : */ #include "ESP8266WiFi.h" void setup() { Serial.begin(115200); // Met le wifi en attente (en mode station) et le déconnecte de tout réseau auquel il auurait pu être connecté WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.println("Paramétrage effectué"); } void loop() { Serial.println("Début du scan"); // WiFi.scanNetworks renvoie le nombre de réseau wifi trouvé int n = WiFi.scanNetworks(); Serial.println("Scan terminé"); if (n == 0) Serial.println("Aucun réseau trouvé"); else { Serial.print(n); Serial.println(" réseaux trouvés"); for (int i = 0; i < n; ++i) { // renvoie sur le moniteur le SSID et le RSSI (force du réseau) pour chaque réseau trouvé Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); delay(10); } } Serial.println(""); // attend 5 secondes et scanne à nouveau delay(5000); }
Utilisation du programme WiFiClient_simple.ino
/* * */ #include <ESP8266WiFi.h> const char* ssid = "nom-de-votre-réseau"; // Nom du réseau const char* password = "Clé"; // clé void setup() { Serial.begin(115200); delay(10); // We start by connecting to a WiFi network Serial.print("Connexion au WiFi "); Serial.println(ssid); WiFi.begin(ssid, password); // On se connecte while (WiFi.status() != WL_CONNECTED) { // On attend delay(500); Serial.print("."); } Serial.println(""); // on affiche les paramètres Serial.println("WiFi connecté"); Serial.print("Adresse IP du module EPC: "); Serial.println(WiFi.localIP()); Serial.print("Adresse IP de la box : "); Serial.println(WiFi.gatewayIP()); } void loop() { }
Programme WiFiClient-compteur.ino
/* * Progtrame Client-Copteur du MOOC MinesTelecom "Fabriquer un objet connecté" */ #include <ESP8266WiFi.h> const char* ssid = "skynet"; // Nom du réseau const char* password = "philae2014"; // clé // valeurs pour le serveur Web const char* host = "api.tom.tools"; void setup() { Serial.begin(115200); delay(10); // On commence par se connecter au réseau Wifi Serial.print("Connexion au WiFi "); Serial.println(ssid); WiFi.begin(ssid, password); // On se connecte while (WiFi.status() != WL_CONNECTED) { // On attend delay(500); Serial.print("."); } Serial.println(""); // on affiche les paramètres Serial.println("WiFi connecté"); Serial.print("Adresse IP du module EPC: "); Serial.println(WiFi.localIP()); Serial.print("Adresse IP de la box : "); Serial.println(WiFi.gatewayIP()); } void loop() { Serial.print("Connexion au serveur : "); Serial.println(host); // On se place dans le rôle du client en utilisant WifiClient WiFiClient client; // le serveur Web attend tradionnellement sur le port 80 const int httpPort = 80; // Si la connexio échoue ca sera pour la prochaine fois if (!client.connect(host, httpPort)) { Serial.println("la connexion a raté"); return; } // La connexion a réussie on forme le chemin String url = String("/hits/"); Serial.print("demande URL: "); Serial.println(url); // On l'envoie au serveur sur plusieurs lignes // GET /compteur.php HTTP/1.1 // Hosts: outils.plido.net // Connection: close // // La première ligne précise à la fin version du protocole attendu // La deuxième rappelle au serveur sous quel nom on l'appelle, en // effet, à une même adresse IP on peut avoire différents serveurs // repondant à des noms différents. // La troisième ligne indique que le serveur doit fermer la // connexion apres la réponse et ne pas attendre d'autres requêtes. client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); // On attend 10 mili-secondes delay(1000); // On lit les données reçues, s'il y en a while(client.available()){ String line = client.readStringUntil('\r'); // découpe ligne par ligne Serial.print(line); } // plus de données Serial.println(); Serial.println("connexion fermée"); delay(30000); }
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique