Estación meteorológica conectada

Veremos una estacion metereologica superpequela que envia las mediciones por wifi usando una placa NodeMcu


Hay algunas otras estaciones meteorológicas basadas en NodeMcu o ESP8266 publicadas en la web, pero sin embargo,casi ninguna incluyen algunos sensores  de los que vamos a ver , y sobre todo,   se programan en un lenguaje más difícil: LUA.
En este proyecto de Ingenerare, los datos recuperados  por varios sensores , se envían a través de  wifi a la plataforma  Thingspeak, para posteriormente poder  visualizar su valores en el canal de Thingspeak o en un sitio web personal.

Este canal transmitirá los siguientes datos a un canal Thingspeak:

  • Temperatura  gracias a  un DHT11 / 22.
  • Temperatura por medio de un BMP180.
  • La humedad  gracias a un DHT11 / 22.
  • La presión atmosférica   por medio de un BMP180.
  • Temperatura del punto de rocío DHT11 / 22.
  • Altitud por medio de un BMP180.
  • La intensidad de la luz gracias  a un LDR.
  • El valor lluvia.

Los componentes  usados en este  proyecto son los siguientes:

caja.PNG

El corazón del sistema es una  placa  NodeMcu , la cual de hecho, es un Arduino  conmenos puertos analogicos  pero con un escudo wifi el cualpuede reconocerse por la placa de metal en la parte superior de la misma.  Este escudo puede ser comprado y utilizado como una controladora individual para su uso con un  Arduino para darle conectividad (de hecho incluso existe una versión conocida como la V1 esp8266 que sólo tiene 2 pines digitales,pero en versiones posteriores disponemos de mas pines digitales).

La gran ventaja de la placa  NodeMcu es que la placa  se puede programar en el entorno Arduino (el IDE  normal de Arduino). Además, la placa  incluye un convertidor de 5 voltios y así se puede conectar de forma segura mediante USB al ordenador sin tener que comprar un módulo conversor Dv-DC  de 3,3 voltios.

Si usted necesita  comprar una placa  NodeMcu se puede comprar la versión 0.9 o la versión 1.0: la única diferencia que sé es que la versión 0.9 es más ancha que la versión 1.0. ( de hecho no puede utilizar la versión 0.9 en una placa de prototipos standard  ).

Hay  gran cantidad de tutoriales en Internet donde explican como  programar esta placa  junta con el software de LUA, pero al ser  básicamente un Arduino con un escudo  wifi, también se puede usar el software Arduino IDE siguiendo estos pasos:

  • Ir   a “Archivo”
  • Haga clic en “Oreferencias”
  • Agregue el siguiente enlace en el campo “URL de la placa adicional ‘:http: //arduino.esp8266.com/stable/package_esp8266c 
  • Después de esto puede reiniciar el software y debe ser capaz de seleccionar la junta en el gestor de tabla (V1.0 o v0.9).

ThingSpeak

En esta ocasión se va a enviar   nuestros medidas a la veterana  plataforma Thingspeak  que ofrece varias opciones para la interacción con sus datos como Thingtweet, Thinghttp etc.

Lo primero que tenemos que hacer es crearnos una cuenta en thingspeak , para ello  simplemente vaya a thingspeak.com y cree  una cuenta ,donde  solo será necesario rellenar en al menos la primera y segunda en la configuración de campo.

Si se conecta un sensor de temperatura y humedad, como se describe mas adelante, rellenar “temperatura” en el campo 1, ‘humedad’ en el campo 2 y el “punto de rocío” en el campo 3. Si desea conectar otros sensores tales como el sensor de BMP, sensor de lluvia, LDR, sólo tiene que hacer lo mismo para el resto de los campos.

En este formulario puede encontrar  una clave API key  que habrá que mencionar en su código para  Arduino bajo la ‘clave de API’  , pues esta clave es necesaria para conectar el Arduino al canal Thingspeak recién creado.

thingspeak.PNG

Sensor DHTXX

DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino o ESP8266.

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

Conectar el DHT11   o el DHT22  a  un Arduino o ESP82366  es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino como por ejemplo el pin D4   (No necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output al llevarla ya  integrada la placa ).

El sensor de BMP

El sensor de BMP180  mide la de la temperatura y la presión del aire. Sí, ya tenemos un sensor de temperatura añadido en el paso anterior, pero no un sensor de presión de aire. Conectar la clavija de alimentación a la línea de 3,2 voltios de la NodeMCU y el conector de tierra en el pin GND de la NodeMCU. El SCL tiene que estar conectado a D1 y la SDA a D2.

Sensor de lluvia y sensor de luz

El sensor utiliza materiales de doble cara FR-04 de alta calidad, donde el área extensa es de 5.0 * 4.0CM, y la superficie niquelada, eficaz contra la oxidación, la conductividad, el funcionamiento superior y las áreas de la vida.

El sensor de lluvia no requiere ninguna  otra placa cuando queremos leer el valor analógico.Si queremos leer valores  binarios  en cambio podemos utilizar la placa adicional  que ofrece  una  conexión a los pines digitales . Gracias a un potenciómetro   que contiene  esta placa , se puede establecer el valor  de umbral con que se dispara pues el  formato de salida  puede ser  de conmutación digital (0 y 1) gracias a  un comparador de amplio voltaje LM393 (y salida de tensión analógica AO).

También en este proyecto se ha añadido un LDR , por lo que podemos  tener dos lecturas analógicas. Esta es una parte difícil pues el NodeMCU sólo tiene un pin analógico , pero podemos resolver este problema mediante la multiplexación de los pines analógicos de modo que con la ayuda de dos diodos y dos pines GPIO , podemos suministrar energía a ambos sensores en secuencia para tomar la lectura de ambos ( eso sí tendrá que controlar esta secuencia desde el  propio programa)

canlaes.PNG

Como se puede ver el sensor de lluvia está activada por el pin D7  (GPIO13)  yel LDR es alimentado por el   pin D8  (GPIO15).

Este es el trozo de código que permite la lectura de ambas señales analógicas:

int sensorPin = A0; // selecciona  el pi, t the input pin for the potentiometer
int enable1 = 10; // activar lectura  sensor A
int enable2 = 11; // acvtivar lectura sensor B

int sensorValue1 = 0; // variable to store the value coming from sensor A
int sensorValue2 = 0; // variable to store the value coming from sensor B

void setup() {
Serial.begin(9600);
// declare the enable and ledPin as an OUTPUT:
pinMode(enable1, OUTPUT);
pinMode(enable2, OUTPUT);
}

void loop() {
// read the value from sensor A:
digitalWrite(enable1, HIGH);
sensorValue1 = analogRead(sensorPin);
Serial.println(sensorValue1);
digitalWrite(enable1, LOW);

delay(100);

// read the value from sensor A:
digitalWrite(enable2, HIGH);
sensorValue2 = analogRead(sensorPin);
Serial.println(sensorValue2);
digitalWrite(enable2, LOW);
Serial.println(“—————————————-“);
delay(1000);
}

Las conexión  de todos los sensores  queda pues como en la figura siguiente:

esquema

Finalmente una vez montado el circuito  solo nos queda  programar el ESP por ejemplo usando el código de más abajo.

No debemos olvidar  de cambiar el apikey con el de su cuenta de thingspeak, pues si no se hace NO  se podrán enviar datos a su canal

Es asimismo importante añadir el nombre SSID  de su red Wi-FI (esto es simplemente el nombre que aparece cuando se hace clic en la esquina derecha de Bottum a filtrar) así como añadir la contraseña de esta red wifi.

Si ha cargado el boceto se puede comprobar en el monitor serie cómo funciona. Basta con abrir el monitor pulsando CNTR + M.

*
This sketch is a combination of two other sketches:
1.
Plot DTH11 data on thingspeak.com using an ESP8266
April 11 2015
Author: Jeroen Beemster
Website: http://www.arduinesp.com
2.
Example sketch: adafruit BMP 085
Sensor api BMP180
*/
//library DHT22
#include

//library esp
#include

//library bmp180
#include
#include
#include

// replace with your channel’s thingspeak API key,
String apiKey = “”; //fill in the api key from thingspeak
const char* ssid = “”; //fill in your wifi name
const char* password = “”; //fill in your wifi password

const char* server = “api.thingspeak.com”;
#define DHTPIN 2 // what pin we’re connected to

DHT dht(DHTPIN, DHT22,15);
WiFiClient client;

int sensorPin = A0; // input for LDR and rain sensor
int enable1 = 15; // enable reading LDR
int enable2 = 13; // enable reading Rain sensor
int sensorValue1 = 0; // variable to store the value coming from sensor LDR
int sensorValue2 = 0; // variable to store the value coming from sensor Rain sensor
//————————–setup————————-
void setup() {

// declare the enable and ledPin as an OUTPUT:
pinMode(enable1, OUTPUT);
pinMode(enable2, OUTPUT);
Serial.begin(115200);
delay(10);

dht.begin();

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);
Serial.print(“……….”);
Serial.println();
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);

}
Serial.println(“WiFi connected”);
Serial.println();

}
void loop() {
//————————–DHT22/DHT11————————-

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println(“Failed to read from DHT sensor!”);
return;
}
Serial.print(“Temperature: “);
Serial.print(t);
Serial.print(” degrees Celcius “);
Serial.println();

Serial.print(“Humidity: “);
Serial.print(h);
Serial.print(“%”);
Serial.println();

//— extra—- you can measure dew point with the temperature and the humidity

double gamma = log(h/100) + ((17.62t) / (243.5+t));
double dp = 243.5
gamma / (17.62-gamma);

Serial.print(“Dew point: “);
Serial.print(dp);
Serial.print(” degrees Celcius “);
Serial.println();

//————————–BMP180————————

if(!bmp.begin()) {
Serial.print(“Failed to read from BMP sensor!!”);
while(1);
}

sensors_event_t event;
bmp.getEvent(&event);

Serial.print(“Pressure: “);
Serial.print(event.pressure);
Serial.println(” hPa”);

float temperature;
bmp.getTemperature(&temperature);
Serial.print(“Temperature: “);
Serial.print(temperature);
Serial.println(” degrees Celcius “);

//— extra—-you can measure the altitude with the temperature and the air pressure

float seaLevelPressure = 1015;
Serial.print(“Altitude: “);
Serial.print(bmp.pressureToAltitude(seaLevelPressure,event.pressure));
Serial.println(” m”);

//————————–LDR————————-

digitalWrite(enable1, HIGH);
sensorValue1 = analogRead(sensorPin);
sensorValue1 = constrain(sensorValue1, 300, 850);
sensorValue1 = map(sensorValue1, 300, 850, 0, 1023);
Serial.print(“Light intensity: “);
Serial.println(sensorValue1);
digitalWrite(enable1, LOW);
delay(100);

//————————–Rain Sensor————————-

digitalWrite(enable2, HIGH);

delay(500);
sensorValue2 = analogRead(sensorPin);
sensorValue2 = constrain(sensorValue2, 150, 440);
sensorValue2 = map(sensorValue2, 150, 440, 1023, 0);

Serial.print(“Rain value: “);
Serial.println(sensorValue2);
Serial.println();
delay(100);

digitalWrite(enable2, LOW);

//————————–thingspeak————————-

if (client.connect(server,80)) { // “184.106.153.149” or api.thingspeak.com
String postStr = apiKey;
postStr +=”&field1=”;
postStr += String(t);
postStr +=”&field2=”;
postStr += String(h);
postStr +=”&field3=”;
postStr += String(dp);
postStr +=”&field4=”;
postStr += String(event.pressure);
postStr +=”&field5=”;
postStr += String(temperature);
postStr +=”&field6=”;
postStr += String(sensorValue1);
postStr +=”&field7=”;
postStr += String(sensorValue2);
postStr +=”&field8=”;
postStr += String(bmp.pressureToAltitude(seaLevelPressure,event.pressure));
postStr += “\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n”;

client.print(“POST /update HTTP/1.1\n”);
client.print(“Host: api.thingspeak.com\n”);
client.print(“Connection: close\n”);
client.print(“X-THINGSPEAKAPIKEY: “+apiKey+”\n”);
client.print(“Content-Type: application/x-www-form-urlencoded\n”);
client.print(“Content-Length: “);
client.print(postStr.length());
client.print(“\n\n\n\n\n\n\n\n”);
client.print(postStr);

}
client.stop();
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}

Weather_station_for_instructables.inoWeather_station_for_instructables.ino

Todo el conjunto se puede meter en un pequeña caja .  El sensor de DHT y el sensor de BMP pueden posicionarse en el lado de la caja cubriendo los dos sensores con un poco de múltiplex para que la lluvia no pudo influir en las lecturas
Asimimos Thingspeak tiene un montón de opciones de plugin. Uno de ellos es que es posible hacer que los medidores  los publique en su página web de thingspeak   en la pestaña ‘vista privada’ de Thingspeak. Se pueden  vincular los medidores de su sitio web privado  mediante el uso de un iframe que tiene que estar conectado a Thingspeak para poder ver los medidores.

Fuente   aqui

Monte su detector de humo en 2 minutos

Un detector de humo puede salvar nuestra vida, la de nuestras seres queridos y nuestro patrimonio de modo quedebemos protegernos con detectores autónomos que funcionan con una pila de 9v, y que además integran una pequeña sirena que genera un sonido de alarma capaz de alertarnos oportunamente, y por si fuera poco a un bajisimo costo


Un detector de humo es una alarma que detecta la presencia de humo en el aire y emite una señal acústica  de gran intensidad avisando del posible  peligro de incendio lo cual en ocasiones ,por ejemplo por la noche,  pueden salvarnos literalmente la vida, pues en estados de sueño profundo,   tardamos mucho en reaccionar ante señales evidentes  de posibles incendios. Personalmente creo que es una “inversión” (sobre  15€)   que merece la pena realizar , pues como vamos a ver,  no es para nada complicado su instalación.

 

 

Hay muchos tipos de detectores  diferenciándose sobre todos según al método de detección   implementado en la electronica  que contienen: los iónicos  y los ópticos .

Los menos usados , son los ser  iónicos  , mayormente usados para la detección de gases en ambientes industriales ,los cuales  no son visibles a simple vista .

Estos sensores constan de una cámara formada por dos placas y un material radiactivo (Americio 241), que ioniza el aire que pasa entre las placas,  generando  una pequeña corriente eléctrica permanente, que es medida por un circuito electrónico conectado a las placas, siendo esta  la condición “normal” del detector

 

iones.PNG

Este tipo de composición, los hace  especialmente sensibles a los humos que contienen pequeñas partículas presentes en  de fuego de crecimiento rápido y humo no visible, tal como el que se genera en fuegos de combustión rápida provocados por: gasolina, alcohol, aceites, plásticos, líquidos químicos, etc.  normalmente presentes en laboratorios, talleres, tiendas de pintura,etc.

 

Los  detectores ópticos  son en general  mayormente usados en la actualidad por  su gran fiabilidad   y  bajo precio  detectando humos visibles mediante la absorción o difusión de la luz , pudiendo ser   según la electronica :

  • De infrarrojos directos:   el humo obstaculiza  la luz producida por un led  infrarojo enfrentado a  un LDR generando una alarma
  • De láser : funcionan de un modo parecido al anterior  detectando  un oscurecimiento de una cámara de aglutinación con tecnología láser
  • De tipo puntual : es la tecnologia mas extendida por su gran fiabilidad,   estando  los detectores  puntuales  tanto el emisor y receptor alojados en la misma cámara ( es decir  no se ven al formar sus ejes un ángulo mayor de 90º)  y ademas  separados por una pantalla, de manera que el rayo emitido no alcanza el receptor. Cuando entra humo en la cámara, el haz de luz emitido se refracta en las partículas de humo y puede alcanzar al receptor, activándose la alarma.

sesnor.png

 

Normativa

NF EN 14604  es una normativa  de Noviembre de 2005 DI 89/106 / CE 21/12/1988 que indica la directiva sobre la aproximación de las disposiciones legales, reglamentarias y administrativas de los Estados miembros sobre los productos de construcción.

Esta norma europea especifica los requisitos, métodos de prueba, criterios de rendimiento e instrucciones del fabricante para dispositivos de alarma de humo que utilizan el principio de dispersión o transmisión de la luz, o ionización, para aplicaciones domésticas o similares.

La norma incluye requisitos adicionales para dispositivos de alarma de humo que también son adecuados para su uso en autocaravanas. Para probar otros tipos de dispositivos de alarma de humo o dispositivos de alarma de humo que operan bajo diferentes principios, esta norma debe usarse solo como guía. Las características especiales para alarmas de humo, como un enlace de radio, o características especiales diseñadas para riesgos específicos, no están cubiertas por este estándar. Este estándar permite, cuando sea apropiado, incluir en los dispositivos de interconexión de dispositivos de alarma de humo otros dispositivos de alarma de humo similares y / o incidentales, y desactivar la alarma. Cuando se incluyen dispositivos de esta naturaleza, esta norma especifica los requisitos aplicables. Esta norma no cubre dispositivos destinados a ser incorporados en sistemas que utilizan equipos de control e indicación separados.

 

Electrónica de un detector de humo

 

En la siguiente imagen podemos ver el interior de detector de humo fotoeléctrico de tipo  puntal .

 

 

detector fotoelectrico.jpg

Como podemos ver el circuito es muy sencillo   limitándose a  una  bateria de 9v  conectada  a  una pequeña placa donde van integrados el sensor fotoeléctrico ( suelen ir compactos en una carcasa opaca) , el buzzer piezoelectrico , el led de estado , el pulsador del test, el ajuste de sensibilidad (el trimmer amarillo)  y por supuesto la electronica de control (suele ser un único  chip especializado)

 

 

 

 

 

 

Instalación de un detector de incendios

Resumiendo ,los detectores de humo fotoeléctricos  en general son los utilizados para detectar incendios de pequeña  velocidad de propagación, y  que generan humo visible , como los que se generan en incendio donde tenemos combustibles como: maderas, cuero, lana, y la mayoría de los polímeros, es decir  todo aquellos materiales que tenemos  en  un ambiente domestico ( viviendas  y oficinas), Además estos detectores son menos propensos a falsas alarmas en ambientes controlados.

Ademas  no debemos olvidar  que los detectores iónicos utilizan un isotopo radioactivo de modo que existe el riesgo de un accidente y que este se mezcle con el medio ambiente, generando un problema de contaminación.Además  por su gran sensibilidad son mas propensos a falsas alarmas provocadas por acumulación de polvo y corrientes de aire  no olvidando ademas de que también tienen un coste mucho mayor.

 

Vemos   ahora paso a paso como  instalar  uno de los  detectores  mas sencillos de configurar : el detector de humo tipo GS506

 


Este detector de humo se utiliza para la detección temprana de humo peligroso de modo que tan pronto como el humo entre en el interior del dispositivo, sonará una alarma bastante potente  de 85 dB basados en un piezolectrico

Este  detector detecta el humo y no las llamas, pero es obvio que en casi todas las combustiones   hay presencia de humo  sobre todo si hablamos de ambientes domésticos

Cada 30-40 segundos, el detector de humo realiza un auto-test ,lo cual  puede ser notado por un breve destello del LED. En caso de fallo del sensor o de falta de batería lo indicaría mediante una señal audible

Este modelo para facilitar la instalación  contempla dos mejoras respecto a otros modelos convencionales :

  • Soporte magnético  : para no tener que taladrar nada y hacer mas sencilla su instalación  este detector incluye un  kit de fijación magnética de modo que se puede montar rápida y fácilmente sin el empleo de herramientas, tornillos o tacos.
  • Batería de Litio para 10 años: esto  puede parecer  excesivo , pero en realidad es una excelente decisión del fabricante pues  lo hace inmune a los mantenimientos periódicos producido por el agotamiento de la batería y por tanto mucho mas seguro

 

Estas  son la descripcion de producto:

  • Modelo: GS506 (detector de la alarma del humo)
  • Dimensiones: Ø 100x37mm
  • Rango de temperatura: 0°C a + 45°C
  • Volumen de alarma:  85 dB (A) dentro de los 3 metros
  • Certificaciones: EN 14604, NF
  • Fuente de alimentación: Batería de DC 9V (batería de litio: CR9V)
  • Autonómica : 10 años de batería a largo plazo
  • Advertencia de batería baja

 

 

Montaje del detector

Una vez desempaquetemos  este modelo ,en   primer colocaremos la batería de 9V de Litio,para lo cual eliminaremos precintos  de esta y la fijaremos al porta-pilas del detector.

Destacar que este tipo de baterías, vienen cargadas  obviamente  pero  son algo mas gruesas que la pilas convencionales ,pero aun así caben con un poco de  habilidad dentro del compartimiento de una pila convencional

 

IMG_20180317_132024_HDR[1].jpg

Normalmente ahora fijaríamos la base de sujeción  a la pared mediante dos tornillos para luego simplemente mediante un sistema de bayoneta fijaríamos a esta  el detector ,pero en este producto simplemente colocaremos  ahora la cubierta  quedando como enla siguiente imagen todo el conjunto:

IMG_20180317_132120_HDR[1]

Con este detector se adjunta un de kit de fijación magnética  de modo que se pueden montar rápida y fácilmente sin el empleo de herramientas, tornillos o tacos.
Las siguientes superficies no son adecuadas para la fijación:

  • Empapelado de vinilo
  • Poliestireno,
  • Superficies con revestimiento antiadherente,
  • Superficies siliconadas o recubiertas de teflón
  • Superficies que contienen partículas sueltas
  • Superficies que han sido pintadas varias veces

 

Ahora desprincintado el kit observe que hay dos juegos de chapas;

Tomaremos aquella que tiene los dos  imanes distinguibles por dos pequeños círculos:

IMG_20180317_132338_HDR[1]

Eliminaremos el plástico protector del adhesivo  y lo fijaremos   a la base del detector y  la otra pieza  a la pared o alguna superficie plástica  ( por ejemplo los cajetines de conexiones de la instalación eléctrica )

 

 

Pulse el botón de test   que tiene en el centro del detector para probar su funcionamiento normal . Si oye un fuerte pitido que cesa , !enhorabuena ya ha instalado el detector!

 

Realmente gracias  a los colores neutros, este tipo de sensores  quedan bastante disimulados  si se sitúan en las tapas de los registros o en cualquier parte que incluya algo de plástico ( incluso hay personas  que quitan la carcasa exterior  que suele ir a presión  y la pintan de otros colores).

IMG_20180318_175046[1]

Mantenimiento:

El detector fotoeléctrico está diseñado para detectar el humo dentro de una cámara con uno o dos leds ópticos y  uno o varios sensores  que informan cuando hay humo si detectan luz infaroja por la refracción del humo en su interior. El problema con este tipo de detector es que el polvo o suciedad lo puede llegar a leerse como humo creado falsas alarmas, por lo que si es posible  deberíamos  hacer un plan de mantenimiento para limpiar las cámaras de los detectores fotoeléctricos para mantenerlas limpias y evitar falsas alarmas en el sistema .

 

 

Envío de datos de Iot en Raspberry Pi a la nube

Como conectar un sensor de temperatura simple a una Raspberry Pi y publicar sus datos en la nube de Realay


Hoy vamos a  ver  lo fácil  que es conectar un sensor simple conectado a una Raspberry Pi a la nube de transmisión utilizando para ello  un sensor de temperatura digital, el popular DS18B20 y dos scripts de Python simples: uno para enviar los datos del sensor a la nube y el otro para recibirlo para su uso en alguna otra aplicación.

El código  para que pueda iniciarse esta disponible en un repositorio de GitHub .

CONEXIÓN DE UN SENSOR A SU RASPBERRY PI

Primero debe conectar el sensor a su Raspberry Pi. Debe conectar conectar al sensor una resistencia de Pull Uo  de 4,7 K entre  la linea de datos (que conectaremos al GPIO4 )  y la alimentacion de 3.3V

En la imagen se describe la sencilla conexión utilizando el bus 1wire con tres pines GPIO (alimentación, tierra y el pin de datos real).

Connection diagram for ds18b20 1-wire temperature sensor to Raspberry Pi GPIO

Después de hacer las conexiones  debe asegurarse de que el módulo kernel del dispositivo de comunicación 1wire esté cargado.

El procedimiento para hacerlo es ligeramente diferente entre las versiones de Raspberry Pi antes y después de enero de 2015, cuando kernel 3.18.8 se incluyó en Raspbian , la distribución de Linux más utilizada para Raspberry Pi. En las actualizaciones recientes debe modificar el archivo /boot/config.txt como se describe aquí:

# with a pre-3.18.8 kernel:
[email protected] ~ $ sudo modprobe w1-gpio && sudo modprobe w1_therm

# else:
[email protected] ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
[email protected] $ sudo nano /boot/config.txt
# add this line at the bottom (and then reboot):
# dtoverlay=w1-gpio

Ahora puede buscar los dispositivos 1wire respectivos en su sistema de archivos. Cada sensor DS18B20 tiene una identificación única que aparece en este directorio de dispositivos, en nuestro caso 28-000004a365ef .

La siguiente sección muestra cómo leer los datos del sensor para que puedan publicarse en la nube.

LECTURA DE LOS DATOS DEL SENSOR

Una vez que conozca la identificación única de su DS18B20 , puede acceder a los datos del sensor de una manera más reutilizable con una función de Python como la de read_temp.py .

Al ejecutar este código también se ejecutará un ciclo corto para leer y visualizar la temperatura ambiente alrededor del sensor. Intente tocar el sensor con los dedos para ver cómo afecta las lecturas.

Ahora que el sensor está funcionando y entrega datos, es hora de enviar esos datos a la nube , la cual en esta ocasion sera ofrecida por el proveedor europeo relayr

relayr.png

Si no tiene una cuenta de desarrollador relayr , tendrá que crear una. Una vez que tenga una cuenta, puede crear un prototipo de sensor simplemente accediendo a la página de dispositivos de su dispositivo y moviendo el puntero del mouse sobre el botón con el signo más en la esquina inferior derecha.

Luego, desplácese hacia abajo y seleccione “Continuar sin un modelo” para crear el dispositivo. Ahora, cambie el lenguaje de programación a “Python” y copie el código de firmware generado, que será útil para la siguiente sección.

PUBLICACIÓN  DE SUS DATOS DE SENSOR EN LA NUBE DE RELAYR

Puede publicar sus datos usando MQTT (un protocolo para comunicar mensajes de máquina a máquina). Si aún no está instalado, tendrá que configurarlo en su Pi. El paquete paho-mqtt proporciona soporte MQTT para Python y se puede instalar fácilmente como un paquete Python con pip como este (instale pip primero si aún no lo tiene):

 pi @ raspberrypi ~ $ sudo apt-get install python-pip
 pi @ raspberrypi ~ $ sudo pip install paho-mqtt == 1.1

Sabrá si lo ha instalado con éxito si puede ejecutar esta declaración en Python sin ningún error: import paho .

A continuación, puede copiar el fragmento de muestra de Python de la página del prototipo del panel que haya visto al crear un prototipo. Para hacer esto, reemplace el ciclo while en la parte inferior del código con el de publish_temperature.py (disponible en el repositorio).

No olvide incluir la función read_temperature desde arriba y también agregar su identificación de sensor única al ciclo while (la que encontró al configurar el sensor). Alternativamente, puede usar el código en publish_data_mqtt.py , asegurándose de cambiar las credenciales (con las de su panel) y el device_id en la parte inferior de la página.

Esto le permitirá ejecutar un ciclo sin fin, leer los valores de temperatura y publicarlos uno por segundo a la nube de retransmisión.

CONSULTA DE SUS  DATOS

A medida que introduce sus datos en la nube de relayr, puede ver los valores en tiempo real a medida que cambian en el tablero de relayr.

Screen_Shot_2016-07-12_at_16.12.28.png

Ver sus datos en el tablero de instrumentos a medida que cambia es genial, pero en algún momento querrá extraer los datos para usarlos. Para ello, puede acceder a sus datos a través de MQTT de nuevo escribiendo un script simple como el Llamado fetch_data_mqtt.py en el repositorio de GitHub .

Si ejecuta esa secuencia de comandos, mostrará los mensajes MQTT en vivo que contienen los valores de datos tal como se recibieron.

Para ello, utilice el SDK de Relayr Python instalando primero los paquetes necesarios (ejecute las líneas a continuación en su pi):

sudo pip install git + https: //github.com/relayr/pythonsdk

sudo pip install relayr upgrade

Si tiene una Raspberry Pi nueva, asegúrese  de actualizar su lista de paquetes Debian e instalar algunos paquetes de desarrollador antes de instalar el paquete más nuevo de GitHub de la siguiente manera:

  pi @ raspberrypi ~ $ sudo apt-get update 
  pi @ raspberrypi ~ $ sudo apt-get install python-dev libffi-dev libssl-dev 
  pi @ raspberrypi ~ $ pip install git + https://github.com/relayr/python-sdk 

Ahora puede usar el código en receive_data.py para recibir datos de la nube. Asegúrese de cambiar la identificación de su dispositivo y el token de acceso (omitiendo la parte “Portador” del token).


En este ejemplo ha visto cómo puede conectar un sensor de temperatura simple a una Raspberry Pi y publicar sus datos en la nube de transmisión . Esto le permite ver los datos en vivo en el tablero, o exportarlos para usarlos en una aplicación. Puede usar MQTT para publicar y recibir los datos del sensor, o usar uno de los SDK de Relayr, como el SDK de Python , para acceder a los datos de manera más conveniente.

También puede usar sensores más emocionantes y publicar valores de datos más complejos que un solo flotante (es decir, una lista de tres flotantes que representan información geoespacial). Siempre que proporcione una lecturaconocida en el panel de control de relayr, mostrará sus datos en un buen widget. Y también puede publicar algo aún más complicado, como un objeto con niveles de anidación más profundos. En ese caso, el tablero mostrará un widget genérico. ¡Depende de usted y de lo que quiera hacer!

El código del ejemplo esta disponible ena GitHub (buscar relayr-raspberry-pi).