NodeMcu : Créer un client TCP
L'objectif est de créer un client TCP
minimal : le client envoie une lettre au serveur qui renvoie la lettre suivante dans l'ordre alphabétique. Le serveur renvoie le caractère '!' s'il reçoit un caractère qui n'est pas une lettre ou
s'il reçoit la lettre 'z' ou la lettre 'Z'.
Coder le client
Un exemple est accessible dans le logiciel Arduino
à l'aide du menu Fichier > Exemples > ESP8622WiFi > WiFiClient
Il faut le charger puis l'adapter à notre algorithme.
Se connecter au point d'accès WiFI
/* client TCP minimal adapté de ESP8622WiFi > WiFiClient */ #include <ESP8266WiFi.h> #define SSID_WIFI "votre SSID" #define PASSWORD_WIFI "votre mot de passe" void setup() { Serial.begin(115200); delay(10); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(SSID_WIFI); // Client WiFi uniquement (le NodeMCU fait également point d'accès par défaut) WiFi.mode(WIFI_STA); WiFi.begin(SSID_WIFI, PASSWORD_WIFI); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { delay(1000); }
La console indique que le NodeMcu
est connecté au réseau WiFi
et a obtenu l'adresse IP 192.168.1.43
.
Connecting to ______ .WiFi connected IP address: 192.168.1.43
Communiquer avec le serveur TCP
minimal
Il faut compléter le programme ci-dessus pour l'adapter à notre algorithme.
/* client TCP minimal adapté de ESP8622WiFi > WiFiClient */ ... #define PORT_SERVEUR_MINIMAL 50000 #define ADRESSE_IP_SERVEUR_MINIMAL "192.168.1.11" void setup() { ... } char car ='A'; void loop() { delay(1000); WiFiClient client; char reponse; delay(1000); // Se connecter au serveur while (!client.connected()) { client.connect(ADRESSE_IP_SERVEUR_MINIMAL, PORT_SERVEUR_MINIMAL); delay(1000); } // Emettre la requête client.print(car); // Atendre la réponse unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } // Lire la réponse while(client.available()){ reponse = client.read(); } // Afficher la réponse Serial.println(reponse); car++; }
Réponse obtenue dans la console :
Connecting to ______ .WiFi connected IP address: 192.168.1.43 B C D E F G H I J K L