Proyecto con WEMOS D1mini ESP8266 «Safe Zone»

Este es un proyecto realizado en la formación de Saregune «Programación en lenguajes estructurados, sistemas embebidos con Arduino y Javascript Avanzado». Se llama «Safe Zone» y es un sistema de seguridad que detecta movimiento y envía una señal a cualquier otra parte de la red a través de la WIFI.

 

Material

  • 2 placas WeMos D1 Mini ESP8266
  • 1 sensor PIR
  • 1 buzzer
  • 2 protoboard

 

El circuito

 

cableado-proyecto-arduino-sz-optimizada

 

 

Vídeo explicativo

 

Código

Aquí tenéis todo el código C++ disponible, un fichero se carga en la placa del sensor PIR (maestra) y el otro en la que emite el sonido (esclava)

Placa Maestra

#include <ESP8266WiFi.h>

const char* ssid = "";
const char* password = "";
//ip de la placa esclava 
const char* host = "192.168.0.xxx";

//pin del sensor PIR
const int pir_pin= D1;

void setup() {
  pinMode(pir_pin, INPUT);
  Serial.begin(115200);
  delay(1000);

//conexion a la WiFI saregune
WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi conectado");
  Serial.println("Dirección IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {

  //guardo 0 o 1 que me devuelve el sensor PIR
  int movimiento = digitalRead(pir_pin);

  Serial.print("Valor de la variable movimiento: ");
  Serial.println(movimiento);

 //La clase "WiFiClient" es parte de la biblioteca "ESP8266WiFi.h" y creo el objeto client
  WiFiClient client;

  //conecto a la placa esclava por el puerto 80
  if (client.connect(host, 80)) {

    //creo una solicitud GET que se enviará a la placa esclavaincluirá el valor de la variable "movimiento" como parámetro en la URL. Al convertir la variable //a un objeto "String", se puede concatenar fácilmente al resto de la URL utilizando el operador "+" en lugar de tener que utilizar funciones de
    //conversión de tipos.
    client.print(String("GET /movimiento?valor=") + String(movimiento) +
                 " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
    delay(100);

    // liberar el socket y permitir que otros clientes se conecten.
    client.stop();
  } else {
    Serial.println("Error al conectar con la placa esclava");
  }
  delay(1000);
}

 

Placa esclava

#include <ESP8266WiFi.h>

const char* ssid = "";
const char* password = "";

//crea un objeto "WiFiServer" para escuchar en el puerto 80
WiFiServer server(80);

//pin digital del buzzer
int buzzer = D2;

void setup() {
  pinMode(buzzer, OUTPUT);
  Serial.begin(115200);
  
  //conexion a la WIFI
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi conectado");
  Serial.println("Dirección IP: ");
  Serial.println(WiFi.localIP());
  
  server.begin();
  Serial.println("Servidor web iniciado");
  
}

void loop() {
  //Cuando se llama a "server.available()", el servidor verifica si hay una conexión entrante en el puerto especificado, el 80
  WiFiClient client = server.available();

  //si la hay 
  if (client) {
    Serial.println("Cliente conectado");

    while (client.connected()) {
      //si hay datos para leer
      if (client.available()) {
         // Si hay datos disponibles, se leen los datos y se almacenan en una variable "request" como una cadena de caracteres.
        //lee caracteres del cliente hasta encontrar un carácter de retorno de carro "\r" y devuelve la cadena que se ha leído hasta ese punto.
        String request = client.readStringUntil('\r');
        Serial.println(request);

        int valor = 0;
        delay(1000);

        //comprueba si contiene la cadena "/movimiento?valor=1". Si la cadena se encuentra, se establece el valor de la variable "valor" en 1. 
        if (request.indexOf("/movimiento?valor=1") != -1) {
          Serial.println("Entra en el if");
          valor = 1;
           digitalWrite(buzzer, valor);
           delay(5000);
           digitalWrite(buzzer, 0);
        }   
      }
    }
  }
}

 

A continuación tenéis los links de los demás proyectos:

Funny Crane – Grúa divertida

Baserri Berdea – Sensor de humedad remoto

Un pensamiento en “Proyecto con WEMOS D1mini ESP8266 «Safe Zone»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *