abonnel-siteweb/data/pages/electronique/esp/esp32-commander-led-wifi.txt

112 lines
3.5 KiB
Plaintext
Raw Normal View History

2024-01-07 10:02:35 +01:00
====== Commander une LED Wifi ======
{{ :dummy.png?75x75|Commander la LED intégrer aux boards basées sur ESP866 par une page HTML via une connexion Wifi.}}
Nous avons vu dans le chapitre [..] comment la carte ESP 8266 peut se connecter à un **point d'accès** Wifi. Nous nous fixons comme objectif de connecter l'ESP 8266 au même réseau quun smartphone ou un ordinateur pour commander une LED. Pour ce faire, nous allons configurer l'ESP 8266 afin d'**offrir un service**. Dans un premier temps nous **offrirons** une page Web à l'utilisateur. Elle permettra de commander la LED incorporée sur votre plaque de développement ESP 8266.
{{ :electronique:esp:pasted:20220325-185318.png | Carte ESP-12F avec la LED BUILT IN allumée }}
Sur la carte de développement, comme l'ESP-12F, est soudée une LED. Cette LED est celle qui clignote faiblement quand vous téléversez une programme. C'est également celle qui clignote avec le programme **blink led**. Techniquement parlant, cette LED est branchée sur le port GPIO 16. Mais il n'est pas forcément nécessaire de connaître cette valeur par cœur car nous utiliserons dans le code la **constante** (mot clé défini dans l'IDE ARDUINO) ''LED_BUILTIN''.
..
Jusqu'à présent nous avons utiliser l'ESP pour **présenter une page Web**, fournir un moyen de **commander la LED** et **informer de l'état de la LED**. Dans les objets connectés il n'est pas nécessaire de **présenter une page Web** car celle-ci est fournie par un service centralisé comme **Domoticz** ou **OpenHAB**.
<code C>
#include <ESP8266WiFi.h>
const char* ssid = "MON-REZO-WIFI";
const char* password = "leMotDePasseDuRezoWifi";
int ledPin = 16;
// Déclaration du Server sur le port 80
WiFiServer server(80);
void setup()
{
// initialisation de la communication série
Serial.begin(115200);
delay(100);
// initialisation de la sortie pour la LED
int valeurLED = HIGH;
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, valeurLED);
// Connexion wifi
Serial.println();
Serial.print("Connexion au réseau Wifi ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// connexion en cours ...
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// Wifi connecter
Serial.println("Réseau WIFI connecté");
// Démmarrage du serveur.
server.begin();
Serial.println("Serveur démarré !");
// Affichage de l'adresse IP
Serial.print("Utiliser cette adresse URL pour la connexion : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Attente de connexion d'un client
client = server.available();
if (!client)
{
return;
}
// Attendre si le client envoie des données ...
Serial.println("nouveau client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
if (request.indexOf("/LED=ON") != -1) {
valeurLED = LOW;
digitalWrite(ledPin, valeurLED); // allumer la led
}
if (request.indexOf("/LED=OFF") != -1) {
valeurLED = HIGH;
digitalWrite(ledPin, valeurLED); // éteindre la led
}
// Réponse
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: application/json");
client.println("");
if(valeurLED == LOW) {
client.println("{\"LED\": \"on\"}");
} else {
client.println("{\"LED\": \"off\"}");
}
Serial.println("Client déconnecté");
Serial.println("");
}
</code>