jueves, 17 de mayo de 2018

Tutorial: Aprender a usar el Shield de Temperatura y Humedad para Wemos D1 Mini


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a prender a usar el shield que nos informa de temperatura y humedad para Wemos D1 mini.

INTRODUCCIÓN

Antes de nada, si no sabemos como se usa o como se configura nuestro Wemos D1 mini, leeros primero este tutorial que es realmente sencillo de usar.

Una vez que ya sabemos como funciona el Wemos, este shield (al igual que todos los de Wemos) es realmente sencillo de usar. En este caso, la entrada usada es la D4. Por lo que si usais este shield y no puenteais la salida, será ocupada para este shield.

El precio es de 1,55€ gastos de envio incluidos.

Para este tutorial, se requerirá
Dificultad:

           Tiempo:  5 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
Shield temperatura DHT 11


PROGRAMACIÓN

Para poder hacer funcionar nuestro Shield, primero debemos descargarnos las librerias para poder trabajar con el, de una forma facil y sencilla.

El código acutalizado lo podeis bajar de este Github, completamente gracuito de ArduFruit. Podeis o descargarlo desde el repositorio o bajaros un zip, como prefirais.

Una vez descargado, debeis

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

//-- Init times to interval --
const long interval = 60000;  // 1segundo = 1000  ,  60 sg =  1 minuto = 60 * 1000 
unsigned long previousMillis = 0;

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() {

  WiFiClient client = server.available();
  
  // Check internet connection
  checkConnection();
  
  // Check for an active client
  if (!client) {
    return;
  }


  // Reset time
  previousMillisReset = millis();

  Serial.println("new client");

  // Wait until client responds
  while(!client.available()){
    // Check service timeOut
    resetTimeOut(client);
    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("");

}

  // ======================================================
  // ===============    PRIVATE METHOD    =================
  // ======================================================

void checkConnection() {
  if (WiFi.status() != WL_CONNECTED)
  {
     // Serial.println("XXXXXXX    ATENTION Conexion lost    XXXXXX"); 
      WiFi.mode(WIFI_AP);
      WiFi.mode(WIFI_AP_STA);
      WiFi.begin(ssid, password);
      delay(5000);  
  }
}

void resetTimeOut(WiFiClient client) {
  if (delayTimerReset(previousMillisReset, intervalReset)) {
      client.stop();
  }
}



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.