jueves, 7 de septiembre de 2017

Tutorial: Aprender a usar Wemos D1 Mini (Arduino+Wifi)


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á
Dificultad:

           Tiempo:  10 minutos (montarlo y programarlo)


MATERIAL NECESARIO

A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:

Imagen
Nombre producto
Donde comprarlo
Wemos D1 Mini


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



Y aceptamos, seguidamente debéis ir a Programa -> incluir librería -> Gestionar librerías.



En esa lista debéis tener una que sea algo relacionado con ESP8266, seleccionáis la versión 2.3 y pulsáis instalar.

Una vez instalado, quizás tengáis que reiniciar el IDE. Para probar que todo esta correcto y que vuestro microcontrolador esta correcto, cargaremos un test de prueba. 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("");

}


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


Tags: , , ,

Ude

Eduardo Parada Pardo

Soy desarrollador e investigador en robótica, me gusta aprender nuevas tecnologías y todo lo relacionado con el mundo de la robótica. Si te gusta este blog, no dudes en preguntar cualquier duda.

0 comentarios:

 

Productos y tecnologias usadas en este blog:

  • No te pierdas ninguna entrada

    Subscribete aquí en nuestro newsletter y ¡no te pierdas nada!

    Copyright © LuneGate™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.