Detector de movimiento inteligente


En este ejemplo    volveremos a  usar  un economico NodeMCU ,junto con un  sensor de movimiento PIR  y la plataforma de IoT  Carriots para  construir, usando el IDE de Arduino, un  detector de movimiento inteligente para comerciales y hogar.

El tema  gira en torno a la seguridad de un edificio o casa o una zona restringida detectando cualquier movimiento dentro de un rango específico con un sensor PIR . Gracias al  IoT, además de detectar objetos en movimientos podemos hacer  muchas más cosas como por ejemplo:

  • Encender un dispositivo mediante un relé (en el ejemplo es una luz durante unos 30 segundos).
  •  Al mismo tiempo enviar un correo electrónico al usuario, utilizando la IOT – plataforma Carriots sobre WIFI.
  • El relé se puede conectar a cualquier luz del dispositivo, alarma, cámara, sistema de seguridad…
  • Incluso el disparo puede ser SMS, llamar a las autoridades, llamando a otros servicios…

Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  a los que indudablemente se une su bajisimo precio comparado con otras opciones.
De este componente destaca  integra capacidades de comunicación via WiFi , conteniendo en su interior  microprocesador que puede ser programado fácilmente usando en conocido lenguaje de programación Lua o vía Arduino IDE.

¿Se pregunta cómo controlar  su económico ESP8266 de forma remota desde cualquier lugar del mundo?

En este post repasaremos precisamente el proceso, paso a paso, de cómo escribir código en el IDE de Arduino y programar su ESP8266 permitiendo  que el código  escrito para  el ESP8266 se comunique con la plataforma  de Iot   Carrriots,  la cual  nos va  permitir monitorear  y controlar el ESP8266.

Los pasos  a seguir   para conectar un ESP8266   a  Carriots   son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino
esp
  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

  • Carriots

Carriots es una Plataforma como Servicio (PaaS en sus siglas en inglés) diseñada para proyectos del Internet de las Cosas (IoT) y de Máquina a Máquina (M2M)

Carriots es una plataforma IoT creada en España  que  permite crear potentes productos y servicios IoT  haciendo posible conectar fácilmente “sus cosas” al Internet de las Cosas.

Se  pueden construya sus apps inteligentes con Carriots en pocos pasos.

  1. Conectar Dispositivos
  2. Recopilar Datos
  3. Gestionar Dispositivos y Datos
  4. Construir APPs

Principales ventajas

  • Listo para empezar a desarrollar.
  • Minimizar tiempo de desarrollo.
  • Gestión simplificada de múltiples proyectos: Arquitectura de 7 niveles
  • Amplia variedad de APIs y potente SDK: REST API y SDK
  • Escalabilidad inmediata
  • Inicio gratuito y pago por uso.
  • Alojamiento simplificado: Oferta PaaS para escalabilidad fiable.

 

Hardware

Ahora preparado el entorno , necesitamos el hw  que lo permita , el cual  como vamos a ver,  es muy simple reduciendose a la placa o NodeMCU, una placa de relé, el sensor PIR  y una fuente de 5V DC

Sensor PIR

El sensor PIR usado , es del tipo HC-SR501, de bajo coste   el cual es ampliamente utilizado en diversos equipos eléctricos de detección automática, productos para el control automático especialmente a batería.Tiene alta sensibilidad, alta fiabilidad, bajo consumo de energía, el modo de operación de bajo voltaje.

Especificaciones:

  •  Dimensiones: Cerca de 3,2 x 2,4 cm (L x W).
  •  Rango de tensión: 5V-20V DC.
  •  Corriente estática: < 50uA
  •  Voltaje de salida: 3,3 V (alto) / 0V (bajo)
  •  Modo del disparador: L (no se puede gatillo repetida), H gatillo repetida (Repetición predeterminado de disparo)
  •  El Tiempo de retardo: 0,3 seg 18 seg (ajustable)
  •  Temperatura De funcionamiento: -15 C a 70

 Placa de rele

Por  precio  es mucho mas asequible optar por una placa    de  2 reles    con salida de relé máxima: DC 30V / 10A, AC 250V / 10A. Es  importanet   que el interfaz de tarjeta de relé sea de 5v . En nuestro caso es de 2 canales y cada canal necesita 15-20mA actual controlador

Este tipo de placas es de fácil instalación por el microcontrolador como Arduino, 8051, AVR, PIC, DSP, BRAZO, MSP430, PLC, lógica TTL pues solo ha que conectar la alimentacion  y dos cables de datos en caso de necesitar los dos canales 

Resumiendo , estos son los componentes  necesarias:

  • Placa de desarrollo de NodeMcu Lua WIFI Internet de las cosas basado en ESP8266 – 1 (capacidad de MCU y WIFI)
  • Sensor PIR ( hemos hablado  en este blog )
  • 1 módulo de relé con opto aislamiento de  5V1
  • Fuente de alimentación conmutada  220V/5v ( nos sirve cuaqluier cargador de movil  con salida microusb)
  • Placa Protoboard

Diagrama del circuito:

El circuito   no incluye dificultad alguna ,pues se reduce a conectar el sensor PIR a +5V  y la salida binaria al pin D2, el módulo de rele a +5v   y al pin D2    y por  supuesto la alimentación del circuito que puede ser bien a baterías  o  bien por medio del  propio micro-usb   usado para programar el  NodeMcu

Resumiendo las conexiones con las siguientes:

  • NodeMCU (ESP8266 Dev Kit) D1—> INI del relé
  • NodeMCU (ESP8266 Dev Kit) D2—> Digital sensor PIR
  • NodeMCU (ESP8266 Dev Kit) VCC—> VCC (+) de la batería
  • NodeMCU (ESP8266 Dev Kit) GND—> GND (-) de la batería
  • Relé de VCC—> VCC (+) de la batería
  • Relé de tierra—> GND (-) de la batería
  • PIR Sensor VCC—> VCC (+) de la batería
  • PIR Sensor de tierra—> GND (-) de la batería

Software

Una vez el hardware  montado nos toca escribir el código  el código utilizando el IDE de Arduino para hacer que NodeMCU trabaje con un relé, sensor de movimiento PIR y utilizar IOT plataforma carriots sobre WIFI

El autor se  encontró con  algunos puntos problemas  en el diseño del programa  para ejecutar en la placa NodeMcu;

  • Compruebe que los pines de NodeMcu  están dando la entrada o salida correcta como se están asumiendo, por ejemplo, asegurándose  que usted no está tomando el pin 4 (GPIO) como un pin de entrada asi que por defecto que este pin debe leer…
  • Utilizar un método directo de get y post HTTP en lugar de utilizar una función de visualización por BLYNK o Thinger.io.
  • Observe  que el PIR da salida permanentemenet alta durante un par de envíos pero se necesita traer retraso para evitar el envío de múltiples correos electrónicos. Con algunos servicios como BLYNK este retraso causa un problema  asi que  es mejro a llamar a esa función una vez despues  de 6 o 7 seg.
  • Una vez satisfecha la condición de if loop, llamar a una función, en lugar de escribir todo con el bucle. Esto aporta claridad del código y ayuda en la resolución de problemas.
  • Se  puede  ajustar la sensibilidad del PIR para reducir el tiempo que permanece alta.

A continuación veamos el codigo completo del sw  que habrá que subir  a la placa desde el entorno  de Arduino:

#include «ESP8266WiFi.h»

const char * ssid = «NETGXXXXX»;   //red wifi a la que se conectara

const char * clave = «XXXXXXXXX»;  //clave red wifi para coenctarse

const char * servidor = «api.carriots.com»;

const String APIKEY = XXXXXXXXXX»; //Sustituir con su apikey de Carriots

 const  String DEVICE = «[email protected]»; //Reemplazar por el id_developer del dispositivo de  carriots

int ledpin = 4;

pirpin INT = 12;

int pirstate = LOW;

int val = 0;

void setup() {

Serial.Begin(115200);

Delay(10);

pinMode(ledpin,OUTPUT);

pinMode(pirpin,INPUT);

Serial.println(«calibrando»);

for (int i = 0; i < 20; i ++) {

Serial.Print(«.»);

Delay(1000);

}

//iniciar wifi

Serial.println();

Serial.println();

Serial.Print («conectarse»);

Serial.println(SSID);

WiFi.begin (ssid, clave);

while  (WiFi.status()! = WL_CONNECTED) {

Delay(500);

Serial.Print(«.»);

}

Serial.println(«»);

Serial.println («Wi-Fi conectado»);

Serial.println («dirección IP:»);

Serial.println(WiFi.localIP());

}

//función para hablar con la plataforma Carriot

void sendStream()

{

String txt = «»; //Texto para enviar

if (pirstate == HIGH)

{/ / alarma

txt = «Detecta movimiento;»

} else {/ / alarma en

txt = «Algo mal»;

}

 

Serial.println(txt);

Serial.println(Val); / / para fines de depuración

Client WiFiClient;

const int httpPort = 80;

if  (client.connect (servidor, 80)) {/ / si hay una conexión exitosa

Serial.println(F(«Conectedo»));

//Construir el campo de datos

String json = «{\»protocol\»:\»v2\»,\»device\»:\»»+DEVICE+»\»,\»at\»:\»now\»,\»data\»:{\»light\»:\»»+txt+»\ «}}»;

//Realizar una solicitud HTTP

Client.println («POST /streams HTTP/1.1»);

Client.println («Host: api.carriots.com»);

Client.println («Accept: aplicación/json»);

Client.println («User-Agent: Arduino-Carriots»);

Client.println («Content-Type: aplicación/json»);

Client.Print («carriots.apikey:»);

Client.println(APIKEY);

Client.Print («Content-Length:»);

int thisLength = json.length();

Client.println(thisLength);

Client.println («conexión: cerrar»);

Client.println();

Client.println(JSON);

}

Else {}

//Si no tiene una conexión con el servidor:

Serial.println (F («Conexión fallida»));

}

}

 

void loop() {}

Val = digitalRead(pirpin);

Serial.println(Val);

if(Val == HIGH) {}

digitalWrite(ledpin,HIGH);

if  (pirstate == LOW) {

Serial.println («movimiento detectado»);

pirstate = HIGH;

Serial.println (F («secuencia de enviar»));

sendStream();

Delay(30000);

}

/ * {while(client.available())}

String linea = client.readStringUntil(‘\r’);

Serial.Print(line);

Delay(30000);

} */

}

Else {}

digitalWrite(ledpin,LOW);

if(pirstate == HIGH) {}

Serial.println («movimiento detectado correo enviado»);

pirstate = LOW;

}

}

}

Programación de disparadores de Carriots enviar Email:

Una vez   que  tenga desplegado el  sw en su  placa NodeMcu  ,la capacidad de activar un correo debe ser  programado o configurado en la plataforma de Internet para este producto que está utilizando (la plataforma Carriots IOT) . Si no sabe como hacerlo en el siguiente video podemso  ver  como  familiarizarse con las funciones y cómo utilizarlas:

 

Obviamente esto podría programarse para llamada, o un texto o una alarma a la policía o quien sea. !Como podemos adivinar   las posibilidades  son infinitas!.

Fuente 

Sencillo contador de energía para hogar


Desde que cambió la normativa que regulaba el uso de limitador  de la potencia contratada , gracias a los contadores inteligentes  con tele-gestión que van instalados aparte ( normalmente centralizados en una parte de edificio aparte)y que integran ademas  la habilidad de limitar ( o mejor dicho interrumpir) el suministro la potencia desde estos en función de la potencia contratada , en muchos casos  y  en muchas viviendas ha quedado libre el hueco  donde residía el antiguo  ICP magnetotérmico  que hacia de limitador  y que  instalaba la compañía suministradora

Este hueco  en la caja ICT  que ha quedado vacante normalmente ubicado a  la derecha de la caja de distribución de corriente alterna , es ideal  para instalar  un sencillo panel  muy económico que nos va ayudar muchísimo a concienciarnos de nuestro consumo energético en tiempo real   y por supuesto realizar las acciones correctores

El panel digital ,como se observa en la imagen superior ya montado,   encaja en la parte del hueco dejado por el antiguo magnetotérmico , aunque según el tipo de caja habrá que rebajar algo mas el hueco  con una lima para que encaje perfectamente en el hueco ,   y como se puede  apreciar ,es bastante llamativo visualmente gracias  a su luz de fondo azulada  mostrando en tiempo real   las siguientes medidas:

  • Tensión en voltios de la red de suministro ca
  • Intensidad en amperios del
  • Potencia instantánea consumida en Watios
  • Acumulado de  energía consumida wn Kw/h

 

 

 

El instrumento calcula la potencia activa usando la formula  P = U * I * (Cos ) donde  (Cos ) indica  el factor de potencia .

El factor de potencia o coseno de “fi” (Cos ) representa el valor del ángulo que se forma al representar gráficamente la potencia activa (P) y la potencia aparente (S), es decir, la relación existente entre la potencia real de trabajo y la potencia total consumida por la carga o el consumidor conectado a un circuito eléctrico de corriente alterna. 

En los circuitos inductivos, como ocurre con los motores, transformadores y la mayoría de los dispositivos o aparatos que trabajan con algún tipo de bobinado, el valor del factor de potencia se muestra siempre con una fracción decimal menor que la unidad ,lo cual realmente indica  el retraso o desfase que produce la carga inductiva en la sinusoide correspondiente a la intensidad de la corriente con respecto a la sinusoide de la tensión o voltaje.

Por ejemplo un  motor de corriente alterna con un  factor  de  potencia  o  Cos  = 0,95 ,  por  ejemplo,  será  mucho  más  eficiente  que  otro  que  posea  un  Cos  = 0,85 .

Instalación 

Como panel hemos elegido el modelo  Elegiac AC        de bajo coste (18,99€ )  que  tiene un tamaño muy compacto (90x50x25mm), alimentándose directamente a la red 110V-220V ( frecuencia de trabajo: 45-65Hz) ,y  que  soporta  hasta 100A / 22000W con una precisión de  1.0.

Ademas de  presentar parámetros eléctricos función de medición (tensión, corriente, potencia activa, potencia) cuenta con una función de alarma de sobrecarga cuyo  umbral de alarma se puede preseleccionar.

Una ventaja de este panel es que no necesita  fuente  de alimentación externa al llevarla integrada  en esta , lo  que significa en la practica  que únicamente habrá que alimentarla con 220 V c.a. .

La instalación es muy sencilla :

  • Cortamos la alimentación general ( normalmente desde el mangenetotermico de entrada de la red)
  • Insertaremos el panel digital  bien en la caja ICT en los huecos libres del limitador o bien con un belcro en cualquier punto que nos resulte atractivo visualmente
  • Alimentamos el panel  directamente  con 220oV , eso si , !con mucho cuidado de no equivocarnos donde  se conectan los hilos del  toroide!  (en la foto de bajo los bornes serian los dos inferiores)
  • Se hacer pasar uno de los cables de alimentación  general  ( o circuito  a medir  ,preferiblemente la fase ) por el interior del toroide
  • Se conectan  los dos hilos del toroide a los bornes correspondientes del panel(en la foto de bajo los bornes serian los dos superiores)
  • Restituimos el suministro de ca
  • Ajustaremos los parametros de luz

Conviene recordar que por seguridad cuando trabaje en cuadros de baja tensión siempre trabaje cortando la alimentación general y asegúrese después con un polimetro o un buscapolos que efectivamente no hay tensión

Obviamente si no se tiene experiencia en cableados de baja tensión o no esta seguro de la instalación , le  recomendamos encarecidamente  que este tipo de trabajos lo realice un instalador  o un electricista pues  manejar por error tensiones de ca puede ser peligroso  .

 

 

Ajustes
1. Luz de fondo

El control de luz de fondo se puede ajustarse presionando brevemente el botón para encender o apagar la luz de fondo,de modo que quedara almacenado  el estado de retroiluminación de almacenamiento automático.

2. Reseteo de las lecturas

  • Paso 1: Pulse el botón de encendido durante 5 segundos hasta que la pantalla digital parpadee, luego suelte el botón;
  • Paso 2: Si vuelve a pulsar el botón, los datos de consumo se borran y se borran para dejar de parpadear;
  • Paso 3: Si vuelve a pulsar el botón durante 5 segundos hasta que no parpadee, los datos de carga no se borran y la salida se borra.
  1. Ajustes del valor de la alarma
  • Paso 1: Pulse el botón, cuando la pantalla LCD muestre «SET CLr» después del botón de liberación, ajuste el valor en el informe de estado de energía;
  • Paso 2: El área de potencia muestra el valor actual de la alarma de alimentación y el dígito más bajo comienza a parpadear, entonces puede presionar el botón del +1 digital, cuando no haya operación de tecla más de tres segundos, cambia automáticamente por ajuste digital corto como encima;
  • Paso 3: Después de la configuración, presione el botón más de cinco segundos para guardar y salir automáticamente, el alcance del umbral de potencia activa establecido para el 0.0 ~ 22.0kW.