Introducció a la robòtica en trenta-una classes/Trentè dia: servidor web amb wifi

Hem connectat el sensor de temperatura LM35 i un LED, per tal de veure com fer una pàgina web a dins del Wemos que ens permeti veure la temperatura i també engegar i parar un LED, des del mòbil, o qualsevol navegador, sense haver de instal.lar cap

programa.

Això obre noves possibilitats de fer servir de comanament pràcticament qualsevol dispositiu que tingui un navegador web, sigui telèfon, tauleta, ordinador, portàtil, smartTV, ... de qualsevol marca i amb qualsevol sistema operatiu.

A més, no ens limita a l’abast del wifi, sino que mitjançant el router de casa, es pot configurar per a poder-hi accedir des de qualsevol lloc on tinguem un navegador i un accés a internet. Poer exemple, podem saber la temperatura de casa i activar dispositius des del nostre mòbil quan som fora.

El muntatge ha estat senzill: el LM35 ja el vam fer servir en el cinquè dia de classe. Mirat per la part plana, posem el pin de l’esquerra a 5V, el del mig a A0, i el de la dreta a GND.

Per a muntar el LED, connectem la pota més llarga a D1, la més curta a un extrem de una resistència de 220 Ohms (vermell, vermell, marró), i l’altra pota de la resistència a GND.

Com és costum, al final teniu el programa tal com ens ha quedat.

Per a fer-lo servir, primer ens hem de connectar al servidor wifi que genera el wemos. Si cerqueu els wifis una vegada li heu passat el programa, veureu un wifi que és RoboTer. Quan ens demani paraula de pas, li diem InsDelTer. Aquestes dades son les que us donem d’exemple, i les podeu canviar per les que convingui.

Quan tingueu la connexió feta, aneu amb el navegador a http://192.168.4.1/t, i veureu la temperatura. Com que hi ha un refresh 5, cada 5 segons s’actualitzarà. Si demanem la pàgina http://192.168.4.1/e, s’engegarà el LED, i si demanem http://192.168.4.1/a,

s’aturarà el LED.

El programa:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);
const char *ServerSsid = "RoboTer";
const char *ServerPassword = "InsDelTer";

void EnviaTemperatura() {
    String texte="<meta http-equiv='refresh' content='5' />";
    texte=texte+"<h1>Temperatura actual: "+String(map(analogRead(A0),0,1023,0,320))
    +"</h1>";
    server.send(200, "text/html", texte);
}
void EngegaLED() {
    digitalWrite(D1,1);
    server.send(200, "text/html", "Engeguem LED");
}

void AturaLED() {
    digitalWrite(D1,0);
    server.send(200, "text/html", "Aturem LED");
}

void setup() {
    pinMode(D1,OUTPUT);
    WiFi.softAP(ServerSsid, ServerPassword);
    server.on("/t",EnviaTemperatura);
    server.on("/e",EgegaLED);
    server.on("/a",AturaLED);
    server.begin();
}

void loop() {
server.handleClient();
}