Étape 2: Placez le code dans
Le code que vous voyez effectue les choses suivantes :
-Se connecte à un réseau WiFi
-Reçoit une adresse IP
-Se connecter via TCP à un serveur (en tant que client)
-Mettre en place un serveur TCP de la nôtre.
-Lire et afficher la lecture de votre capteur de température.
-Lire et afficher l’heure actuelle.
-Pousser la lecture de température sur le serveur.
-Affiche l’adresse IP du serveur.
Placez le code suivant dans votre IDE, compiler et transférez-le sur votre arduino.
! = ESP8266_MODE_STA) {/ / si ce n’est pas en mode station. / / Use esp8266.setMode([mode]) du pour mettre à une certaine / / mode retVal = esp8266.setMode(ESP8266_MODE_STA) ; if (0 < retVal) {Serial.println (F) ("erreur paramètre mode."); errorLoop(retVal);}} Serial.println (F (« Mode définir jusqu'à la station")); < /p >< p > / / esp8266.status() indique WiFi du ESP8266 se connecter / / statut. Une valeur de retour de 1 indique que le périphérique est déjà / / connecté. 0 indique déconnecté. (Les valeurs négatives / / correspondent aux erreurs de communication.) retVal = esp8266.status() ; Si (retVal < = 0) {Serial.print (F ("connexion à")) ; Serial.println(mySSID) ; esp8266.Connect ([ssid], [psk]) relie la ESP8266 / / à un réseau. Succès la fonction connect renvoie une valeur > 0 / / échec, la fonction sera soit au remboursement: / / -1: TIMEOUT - la bibliothèque dispose d’un délai d’attente ensemble 30 s / / -3: FAIL - n’a pas pu se connecter au réseau. retVal = esp8266.connect (mySSID, myPSK) ; Si (0 < retVal) {Serial.println (F ("erreur de connexion")); errorLoop(retVal);}} } < /p >< p > void displayConnectInfo() {char connectedSSID [24]; memset (connectedSSID, 0, 24); / / esp8266.getAP() peut être utilisé pour vérifier quel AP le / / ESP8266 est connecté à. Elle renvoie un code d’erreur. L’AP connecté est retournée par référence en tant que paramètre. int retVal = esp8266.getAP(connectedSSID) ; Si (retVal > 0) {Serial.print (F ("connecté à:")) ; Serial.println(connectedSSID) ; } < /p >< p > / / esp8266.localIP retourne une variable IPAddress avec les / / ESP8266 pour l’actuelle adresse IP locale. MyIP IPAddress = esp8266.localIP() ; Serial.Print (F (« mon adresse IP: ")) ; Serial.println(myIP) ; } < /p >< p > void clientDemo() {/ / pour utiliser le ESP8266 comme un client TCP, utilisez la / / classe de ESP8266Client. Tout d’abord, créez un objet : ESP8266Client client ; < /p >< p > / / ESP8266Client connect ([serveur], [port]) est utilisé pour / / se connecter à un serveur (const char * ou adresse IP) sur / / a spécifié le port. Retours: 1 succès, 2 sur déjà connecté, / / négatif sur fail (-1 = TIMEOUT, -3 = échec). int retVal = client.connect (destServer, 80) ; Si (retVal < = 0) {Serial.println (F ("Failed to connect to server.")); return;} < /p >< p > / / impression et écriture peuvent être utilisés pour envoyer des données à un connecté / / connexion cliente. client.Print(HttpRequest) ; < /p >< p > / / available() retournera le nombre de caractères / / actuellement dans la mémoire tampon de réception. tandis que (client.available()) Serial.write(client.read()) ; Read() obtient le char FIFO / / connected() est une valeur booléenne de retour - 1 si la / / connexion est active, 0 si elle est fermée. Si (client.connected()) client.stop() ; Stop() ferme une connexion TCP. } < /p >< p > void serverSetup() {/ / Initialise un ESP8266Server objet de commencer. Il sera / / démarrer un serveur sur le port spécifié dans l’objet / / constructeur (dans l’espace global) server.begin() ; Serial.Print (F "(serveur a commencé ! Allez dans ")) ; Serial.println(esp8266.localIP()) ; Serial.println() ; } < /p >< p > void serverDemo() {/ / available() est une fonction ESP8266Server qui va / / retourne un objet ESP8266Client pour l’impression et lecture. / / available() possède un seul paramètre--une valeur de délai d’attente. Ceci / / le nombre de millisecondes la fonction attend, / / vérification pour une connexion. ESP8266Client client = server.available(500) ; Si (client) {Serial.println (F ("Client connecté!")); / / une requête http se termine par un currentLineIsBlank booléenne ligne vide = true ; while (client.connected()) {si (client.available()) {char c = client.read(); / / si vous avez obtenu à la fin de la ligne (a reçu un saut de ligne / / character) et la ligne est vide, la requête http est terminée, / / donc vous pouvez envoyer une réponse si (c == « \n » & & currentLineIsBlank) {Serial.println (F ("page d’envoi HTML")); / / Envoyer un en-tête de réponse http standard : client.print(htmlHeader) ; HtmlBody chaîne ; la valeur de chaque broche d’entrée analogique pour (int a = 0; < 1; a ++) {htmlBody += « A »; htmlBody += String(a) ; htmlBody += ":" ; htmlBody += String(Thermister(analogRead(a))) ; < /p >< p > //htmlBody += Serial.println(temp) ; htmlBody += "< br > \n" ; } htmlBody += "< /p >< p > \n" ; client.Print(HTMLBody) ; rupture ; {Si (c == '\n') {/ / vous commencez une nouvelle currentLineIsBlank de ligne = true;} ElseIf (c! = '\r') {/ / vous avez obtenu un personnage sur le currentLineIsBlank de ligne actuel = false;}} } / / donner le temps de navigateur web pour recevoir les delay(1) de données ; fermer la connexion : client.stop() ; Serial.println (F ("Client déconnecté")) ; }} < /p >< p > / / errorLoop affiche un code d’erreur, puis effectue une boucle pour toujours. void errorLoop (int erreur) {Serial.print (F ("erreur:")) ; Serial.println(Error) ; Serial.println (F ("Looping pour toujours.")) ; pour (;);} < /p >< p > / / serialTrigger imprime un message, puis il attend quelque chose / / à venir partir du port série. void serialTrigger(String message) {Serial.println() ; Serial.println(message) ; Serial.println() ; while (!. Serial.available()) ; tout en (Serial.available()), Serial.read() ; } < /p >