Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a prender a usar un Arduino equipado con un modulo Wifi. El Wemos D1 Mini v2.3. Este pequeño controlador, nos ahorrará mucho trabajo y tiempo.
INTRODUCCIÓN
El Wemos D1 mini usa la arquitectura de Arduino, pero cuenta con menos pines de los normal. Aun así es muy barato, versátil y cuenta con una gran cantidad de shields, que nos harán no tener que volvernos locos haciendo circuitos en protoboard, sino simplemente pinchando uno encima de otro.
Un punto a remarcar, es que os recomiendo compraros la versión 2.3, ya que primeramente compre la v1.0.0 y me ha traído bastantes dolores de cabeza.
Las dimensiones son 13cm x 11cm x 1cm y un peso de 22 g. El precio es de 2,98€ más gastos de envió 4,37€.
Para este tutorial, se requerirá:
MATERIAL NECESARIO
A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:
PROGRAMACIÓN
Para poder hacer funcionar nuestro Wemos, debemos cargar en nuestro IDE de Arduino, las librerías necesarias para hacerle funcionar.
Para ello, abriremos nuestro IDE, e iremos a Archive->Preferencias y donde hay campo llamado, "Gestor de URLs adicionales para tarjetas", debéis pulsar la venta e introducir esta url.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
A continuación, después de introducir la url, pulsaremos en Herramientas -> Placa -> Gestor de tarjetas. Cargara un rato las nuevas librerías, y cuando haya descargado todas, en el buscador ponéis, wemos. Buscáis la que se llame esp8266 by ESP8266 Communty. La seleccionáis y os aparecerán los botones de selección de versión, pulsáis la última (no recomiendo usar las RC), coged las estables. Pulsáis instalar y cuando acabe cerráis la vista.
Ahora ya desde Herramientas -> Placa -> Encontrareis en mi caso la última que es: Wemos D1 R2 & mini.
Ahora si queremos cargar ejemplos o carlas las librerías en nuestro proyecto, debéis ir a Programa -> incluir librería -> Gestionar librerías.
Además del controlador, los paquetes que habéis instalado traen consigo una batería de ejemplos muy útiles y muy completos. Para ello, iréis a Archivo -> Ejemplos -> ESP8266, y elegiréis Blink.
Pulsáis a cargar y veréis que el led mas cercano a la antena wifi lucirá, yo tengo configurado Wemos a 115200 (ahí es configurarlo como prefiráis, luego el Serial vereis que esta configurado a 74880), y carga el software relativamente rápida.
Una vez que vemos que nuestro hardware funciona, vamos a cargar el software de control para configurar nuestra conexión wifi.
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
const char* ssid = "#######"; //Set your wifi network name(ssid)
const char* password = "######"; //Set your router password
int RelayPin = D1; //Relay Shield is controlled by pin D1
WiFiServer server(80);
void setup() {
Serial.begin(74880); //change according to your com port baud rate
delay(10);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(RelayPin, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check for an active client
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until client responds
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read client request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/Relay=ON") != -1) {
digitalWrite(LED_BUILTIN, HIGH);
value = HIGH;
}
if (request.indexOf("/Relay=OFF") != -1){
digitalWrite(LED_BUILTIN, LOW);
value = LOW;
}
// Return the client response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Relay pin is now: ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("Click <a href=\"/Relay=ON\">here</a> to turn the Relay ON<br>");
client.println("Click <a href=\"/Relay=OFF\">here</a> to turn the Relay OFF<br>");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
const char* ssid = "#######"; //Set your wifi network name(ssid)
const char* password = "######"; //Set your router password
int RelayPin = D1; //Relay Shield is controlled by pin D1
WiFiServer server(80);
void setup() {
Serial.begin(74880); //change according to your com port baud rate
delay(10);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(RelayPin, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check for an active client
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until client responds
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read client request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/Relay=ON") != -1) {
digitalWrite(LED_BUILTIN, HIGH);
value = HIGH;
}
if (request.indexOf("/Relay=OFF") != -1){
digitalWrite(LED_BUILTIN, LOW);
value = LOW;
}
// Return the client response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Relay pin is now: ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("Click <a href=\"/Relay=ON\">here</a> to turn the Relay ON<br>");
client.println("Click <a href=\"/Relay=OFF\">here</a> to turn the Relay OFF<br>");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
Bien, vamos a explicar que debemos hacer antes de lanzarlo, tenemos que configurar 2 parámetros, el ssid y el password. El ssid, es el nombre de nuestra red wifi de la casa, si no la hebeis modificado podréis encontrarla debajo del router. Y el password pues exactamente lo mismo.
Una vez cargado abriréis el monitor site, y veréis que carga los Serial.print, que están en la aplicación. Ahí si es todo correcto los datos que has introducido, te mostrará que la conexión ha sido correcta, devolviéndote una dirección IP. Cópia dicha dirección y pégala en tu explorador web. En dicha web, tendrás 2 opciones, encender y apagar, pulsándolas podrás ver como se enciende y se apaga el led de vuestro Wemos.
Bien, con esto acaba nuestro tutorial de iniciación a Wemos, en este caso la comunicación es mono-direccional entre Web y Wemos. en tutoriales próximos, explicaremos como se realiza la comunicación bi-direccional entre web y hardware.
Como siempre, dejo la fuente de donde he obtenido la información: Fuente.
PUNTUACIÓN
Calidad Componentes
4,5
Montaje
4,5
Precio
4,0
Características
4,0
Puntuación Global
4,5
Arduino
Driver
Tutoriales
Wemos