Anuncios

Monitor de pulso online usando NodeMCU y Cayenne


El fondo de este proyecto es la  monitorización cardíaca mediante un sensor de pulso del cuerpo humano mostrando en una  pantalla OLED  la forma de onda   y   enviando una alerta al  correo electrónico cuando el pulso del corazón supere la condición normal (en este caso 200).

La esencia de estos detectores  es un sensor integrado de circuito de amplificación óptica y con un circuito de eliminación de ruido de la frecuencia cardíaca  todo ello alimentado  con una tensión de alimentación: 3.3V ~ 5 V

Lo ideal  para medir el pulso  es  poner  el sensor de pulso en el dedo o lóbulo de la oreja, directamente  o bien  mediante algún sistema mecánico que lo deje fijo como por ejemplo   alguno de los sistemas que mostramos a continuación:

 

soportes sensores.PNG

 

Estos sensores cuentan con una salida analógica   que se puede conectar  a una entrada analógica de un  Arduino, para probar la frecuencia cardíaca y de ahi que se pueda usar este sensor con un NodeMcu  junto con un pequeña pantalla OLED  para mostrar la fecuencia cardiaca en tiempo real

 

Los elementoshw y sw  necesarias para hacer este proyecto son las siguientes.

Hardware necesario:

1. NodeMCU ESP-12E

2. Sensor de pulso

3. SSD1306 0,96 pulgadas pantalla OLED

4. Cablezillos  de puente

Software necesario:

1. Arduino IDE

2. Cayenne para iOS/Android/Web Browser

3. Sensor de pulso modificado para ESP

4. biblioteca de Adafruit SSD1306 para Arduino    P

El sensor de pulso

El sensor de pulso cardiaco es esencialmente un fotopletismógrafo, que es un dispositivo médico conocido que se usa para controlar la frecuencia cardíaca de forma no invasiva. Asimismo  los fotopletismógrafos miden los niveles de oxígeno en la sangre (SpO2) pero no siempre lo soportan.

La señal de pulso cardíaco que sale de un fotopletismograma es una fluctuación analógica de voltaje, y tiene una forma de onda predecible, tal como estamos acostumbrados a ver ( la representación de la onda de pulso se denomina fotopletismograma o PPG).

El Sensor de pulso  amplifica la señal bruta del Sensor de pulso anterior y normaliza la onda de pulso alrededor de V / 2 (punto medio en voltaje) respondiendo a los cambios relativos en la intensidad de la luz

Tal y como esta construido ,veremos que  la luz  interna del LED verde del sensor  se refleja de nuevo en el sensor cambiando durante cada impulso, ocurriendo las siguintes casuiticas:.

  • Si la cantidad de luz incidente en el sensor permanece constante, el valor de la señal permanecerá en (o cerca de) 512 (punto medio del rango de ADC).
  •  Más luz y la señal aumentará.
  • Menos luz, todo lo contrario: el valor de la señal analógica dismuniira

El objetivo es encontrar momentos sucesivos de latido instantáneo del corazón y medir el tiempo transcurrido entre ellos, llamado intervalo Inter Beat (IBI)  pues al seguir la forma y el patrón predecibles de la onda PPG, podemos hacer exactamente eso.

Cuando el corazón bombea sangre por el cuerpo, con cada latido hay una onda de pulso (una especie de onda de choque) que viaja a lo largo de todas las arterias hasta las mismas extremidades del tejido capilar donde está conectado el sensor de pulso. La sangre real circula en el cuerpo mucho más lentamente de lo que viaja la onda de pulso.

 

Figura 1

 

Sigamos los eventos a medida que progresan desde el punto ‘T’ en el PPG a continuación. Se produce un aumento rápido en el valor de la señal a medida que la onda de pulso pasa por debajo del sensor, luego la señal vuelve a descender hacia el punto normal. A veces, la muesca dicroica (pico descendente) es más pronunciada que otras, pero, en general, la señal se establece en el ruido de fondo antes de que la siguiente onda de pulso se filtre. 

Como la onda se repite y es predecible, podríamos elegir casi cualquier característica reconocible como punto de referencia, por ejemplo, el pico, y medir la frecuencia cardíaca haciendo cálculos matemáticos sobre el tiempo entre cada pico,pero sin embargo, esto puede dar lugar a lecturas falsas desde la muesca dicroica, si está presente, y puede también ser susceptible a la imprecisión con respecto al ruido de línea base.

Existen otras buenas razones para no basar el algoritmo de detección de latidos en fenómenos de onda arbitrarios. Idealmente, queremos encontrar el momento instantáneo del latido del corazón. Esto es importante para el cálculo preciso de BPM, la variabilidad del ritmo cardíaco ( y mida la frecuencia cardíaca haciendo cálculos en el tiempo entre cada pico.

Sin embargo, esto puede dar lugar a lecturas falsas desde la muesca dicroica, si está presente, y puede también ser susceptible a la imprecisión con respecto al ruido de línea base.

.

 

Algunos investigadores del corazón dicen que es cuando la señal alcanza el 25% de la amplitud, algunos dicen que es el 50% de la amplitud, y algunos dicen que es el momento en que la pendiente es más pronunciada durante el evento ascendente.

 

 

El sensor de pulsos cardíacos  se conecta a la alimentación de +5V  entre el hilo rojo(+5v)   y el naranja (GND)   y del  hilo marrón obtenemos la salida analógica que conectaremos a la primera entrada analogica (A0) de cualquier placa que  soporte entradas analogicas como pueden ser Arduino o Netduino

Si usa un  ESP8266 ( no NodeMCU) no trate de conectarse directa señal de sensor A0. Debe agregar 2.2 KOhm entre señal y A0 y 10KOhm entre A0 a GND.  

arduino.PNG

Para complementar el circuito se conecta un pequeña pantalla OLED  de  2,4cm (128×64)  que ira a los pines digitales  D2 (salida SDA de la pantalla ) y  el pin D1(salida SCL de la pantalla)   ,asi como obviamente la alimentación Vcc( pin 5v) y Gnd

 

 

Software

Se necesita importar biblioteca de paso dos para hacer que funcione este código.

Asimismo debemos abrir ESP_OLED, modificar su contraseña de token, SSID, y el apikey de Cayenne y luego conecte su NodeMCU con el Cable USB al ordenador y suba el código a NodeMCU.

Ahora su OLED debe mostrar algo, esta es la señal si su proyecto trabajado. Y ahora su NodeMCU está conectado al Cayenne, pero pequeño paso otra vez para configurar panel de Cayena que mostrará su BPM y dar un alerta if BPM a alta.

 Configuración de Cayenne

Suponiendo qeu ya tenga  cuenta en Cayenne (es gratuita) ,siga estos pasos

  • Acceda al tablero de Cayena
  • Añadir widget personalizado gráfico de salpicadero de cayena y seleccione Virtual 13 Pin que contienen el valor de BPM de NodeMCU.
  • Agregar desencadenadores y si widget valor por encima del valor que necesites (por ejemplo puese ser 00, pero s160 es suficiente para darnos la alerta) y Cayena enviará alerta al correo electrónico.

Picture of Setting Up Cayenne

 

 

En el siguinte  video podemos ver el funcionamiento del circuito:

 

 

Fuente  aqui
Anuncios

Estación meteorológica conectada


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

Monitorización de gases con Arduino


Gracias  a la plataforma de Cayenne , de la que hemos hablado en este blog en numerosas  ocasiones, es bastante sencillo monitorizar cualquier variable física  de un modo realmente sencillo  simplemente arrastrando al panel de control de Cayenne sin escribir apenas código, tanto para el dispositivo IoT como para la parte web  o incluso la app móvil,  pues incluso proporcionan una app multipropósito para controlar su dispositivo IoT.

En esta ocasión  ejemplo  vamos a lo fácil que es crear un monitor temperatura ,humedad y humos  usando Arduino   y la plataforma Cayenne , sin tener conocimientos  de programación consiguiendo controlar o monitorizar  un Arduino o Raspberry Pi    en tan solo unos minutos.

 

En efecto   gracias  a un  framework  genérico desarrollado por  myDevices IO Project Builder llamado Cayenne , los desarrolladores , fabricantes y  también aficionados  pueden  construir rápidamente prototipos y proyectos que requieran controlar o monitorizar   cualquier cosa conectada a una  Raspberry  o un ARduino  , permitiendo con una sóla cuenta gratuita de Cayenne, crear un número ilimitado de proyectos  mediante una solución  muy sencilla  basada en arrastrar y solta.
Obviamente el punto fuerte de Cayenne  son las  capacidades de  IO  para que pueda controlar de forma remota sensores, motores, actuadores, incluidas los puertos  de GPIO con  almacenamiento ilimitado de datos recogidos por los componentes de hardware,   triggers y alertas,  pues  proporcionan las herramientas necesarias para la automatización y la capacidad de configurar alertas. 
Ademas desde el interfaz se puede crear cuadros de mando personalizados para mostrar su proyecto con arrastrar y soltar widgets que también son totalmente personalizables.

Resumidamente algunas  características clave de esta novedosa  plataforma son las siguientes:

  •  Ofrecen una aplicación móvil para configurar, el monitor y los dispositivos de control y sensores desde cualquier lugar.
  • Fácil instalación que conecta rápidamente los dispositivos, sensores, actuadores, y las extensiones en cuestión de minutos.
  • Motor de reglas para desencadenar acciones a través de dispositivos.
  • Panel personalizable con widgets de visualización de arrastrar y soltar.
  • Programación de las luces, motores y actuadores
  •  Control de GPIO que se pueden configurar desde una aplicación móvil o  desde un navegador
  • Acceso remoto instantáneo desde su smartphone o con un ordenador
  • Para construir un proyecto de la IO a partir de cero se ha logrado el objetivo de proporcionar  un Proyecto Generador de IO que reduce el tiempo de desarrollo de horas en lugar de meses.

Sabemos la gravedad que puede suponer un incendio, por lo que es sumamente importante disponer de medidas en los edificios de detección eficaces para protegerlos contra la acción del fuego.

En este post  vamos a intentar abordar el grave problema de los incendios desde una perspectiva completamente diferente usando para ello un Arduino   y  un hardware especifico consistente en un DHT22 , un detector de  gas   junto con  la plataforma  Cayenne.

Tradicionalmente los detectores de incendios difieren en función de los principio de activación siendo los mas habituales los de Tipo Óptico basado en células fotoeléctricas ,las cuales, al oscurecerse por el humo o iluminarse por reflexión de luz en las partículas del humo, disparando una sirena o alarma.Asimismo existen detectores de calor

La solución que se propone se basa en detectores termicos al ser los mas precisos ,al que se ha añadido para aumentar la fiabilidad y mejorar la flexibilidad un doble sensor permitiendo de esta manera poder modificar los parámetros de disparo con un enorme facilidad como vamos a ver aparte de poder transmitir la información en múltiples formatos y formas hasta nunca vistas.

 

Monitorización de gases con Arduino

En esta  ocasión vamos  a ver  cómo monitorizar  temperatura, humedad así como ofrecer a alertas en tiempo real  si suben  las concentraciones de gas o humo respecto al nivel normal usando la plataforma a Arduino (si no dispone de un Arduino , un    proyecto  muy similar  lo  abordamos en este blog  con una Raspberry Pi 2)

Como vamos  a ver es realmente sencillo  construir un proyecto de este tipo  usando la plataforma  Cayenne  y desde luego  muy útil , pues podemos prevenir fuego o incluso  fugas de gas  en cualquier lugar   monitorizando  ademas en tiempo real desde Internet.

El hardware  necesario para este proyecto es el  que describimos  a continuación:

 

Sensor de Co2

Como sensor de humo se ha usado un detector de gases basado en el circuito MQ4 .Este detector se puede montar un circuito con el sensor , o bien se puede adquirir con el sensor y el modulo de disparo con un led ya soldado, lo cual por su bajo coste  (menos de 2€ en Amazon  )es la opción más recomendada. Estos módulos permiten Dual-modo de señal de salida, es decir cuentan con dos salidas diferenciadas:
  • Salida analógica : 0.1 – 0 .3 V (relativa a polución , La máxima concentración se muestra con un  voltaje de 4 V
  • Salida con sensibilidad de nivel TTL (la salida es a nivel alto si se detecta GLP, el gas, el alcohol, el hidrógeno y mas)

Estos módulos son de rápida a respuesta y recuperación ,cuentan con una buena estabilidad y larga vida siendo ideales para la detección de fugas de gas en casa o fabrica .Son ademas muy versátiles , pudiendo usarse para múltiples fines ,detectando con facilidad lo siguientes gases:

  • Gas combustible como el GLP
  • Butano
  • Metano
  • Alcohol
  • Propano
  • Hidrogeno
  • Humo
  • etc.

Algunas de las características del módulo:

  • Voltaje de funcionamiento: 5V DC
  • Rango de Detección: 300 a 10000 ppm
  • Salida TTL señal valida es baja
  • Tamaño: 32X22X27mm

 

Para conectar el  detector de gases a nuestra  placa Arduino, es esta ocasión optaremos por usar el puerto  analógico A0,  que conectaremos a la salida analógica  2 del sensor ( marcado como OUT).

La alimentación del sensor la tomaremos desde cualquiera de las dos conexiones de +5V de nuestra Arduino conectándo al pin 4 del sensor (marcado como +5v) y la conexión de masa pal pin1 del detector ( marcado como GND)

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 22  (No necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output al llevarla ya  integrada la placa ).

El esquema eléctrico queda como la siguiente imagen:

 

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional mediante un único hilo , empleando señales temporizadas por lo que en general, lo normal es que empleemos una librería existente para simplificar el proceso.Por ejemplo podemos usar la librería de Adafruit disponible en este enlace.

En este ejemplo como podemos  en el esquema final ver, el pin  digital usado es el el pin 22

Como realmente  lo que buscamos es controlar los puertos del GPIO  a distancia y mediante un interfaz gráfico remoto, para comenzar la configuración de su Arduno   ,lo primero es crear una cuenta gratuita en cayenne-mydevices.com que servirá tanto para entrar en la consola web como en la aplicación móvil.

Para ello, vaya a la siguiente url  e introduzca simplemente su nombre ,dirección de correo y una clave de acceso  que  utilizara para validarse.

paso1.png

Una vez registrado , solamente tendrá que elegir la plataforma  para avanzar en el asistente. Obviamente   seleccionamos  en nuestro caso   Arduino

paso2.png

El  siguiente pasos es obtener el Token para nuestro Arduino , el cual copiaremos en nuestro skecth

 Cargar Sketch

Necesitaremos    añadir el valor del token de Cayenne al obtenido  en el paso anterior  y cargar el  siguiente código .(fuente MQ2)

#include “CayenneEthernet.h”
#include “DHT.h”

#define DHTPIN 22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

char token[] = “”; //fill with your token

const int MQ2 = A0;

void setup()
{
Serial.begin(115200);
Cayenne.begin(token);
dht.begin();
}

void loop()
{
Cayenne.run();
}

CAYENNE_OUT(V0)
{
float t = dht.readTemperature();
Cayenne.virtualWrite(V0, t); //virtual pin
}

CAYENNE_OUT(V1)
{
float h = dht.readHumidity();
Cayenne.virtualWrite(V1, h); //virtual pin
}

CAYENNE_OUT(V2) {
Cayenne.virtualWrite(V2, MQ2);
}

 Configuración Cayenne

Montado ya el circuito y cargado el firmware de Arduino  ( y por supuesto conectado este a Internet ) , lo siguiente es, configurar el panel de control de  Cayenne  y  añadir un widget para sensor de gas MQ2 al pin virtual 2.

 

Picture of Setup Cayenne Dashboard

Si ha seguido todos los pasos anteriores tendremos en la consola de Cayenne nuestra placa Arduino  con la información en tiempo real de la temperatura o detección de gas.Ademas, por si fuera poco gracias a la aplicación móvil  de Cayenne , también podemos ver en esta en tiempo real lo que están captando los sensores que hemos instalado

Pero aunque el resultado es espectacular todavía nos queda una característica para que el dispositivo sea inteligente : el poder interaccionar ante los eventos de una forma lógica,lo cual lo haremos a través de lo triggers , los cuales nos permitirán desencadenar acciones ante cambios en las variables medidas por los sensores.

A la hora de definir triggers en Cayenne podemos hacerlo tanto desencadenado acciones como pueden ser enviar corres de notificaciones o envio de SMS’s a los destinatarios acordados o bien actuar sobre las salidas.

Para definir un disparador en myTriggers, pulsaremos “New Trigger” y nos presentara dos partes:

  • IF ; aqui arrastraemos el desecadenante, lo cual necesariamene siempre sera la lectura de un sensor ( en uestro caso el termometro o el detector de gas)
  • THEN: aqui definiremos lo que queremos que se ejecute cuando se cumpla la condición del IF. Como comentábamos se pueden actuar por dos vías : se puede activar /desactivar nuestra actuador ( el buzzer) o también enviar correos o SMS’s

En este caso   puede establecer   el trigger para MQ2 sensor de gas  si el valor supera el valor  500,  que  entonces de  una alerta a su teléfono móvil.

 

Picture of Setup Cayenne Dashboard
Picture of Setup Cayenne Dashboard

 

Es obvio que las posibilidades son infinitas ( y las mejoras de este proyecto también), pero desde luego un circuito así es indudable la gran utilidad que puede tener.¿Se anima a replicarlo?

 

Fuente  parcial  instructables.com

Sistema de reconocimiento de colores para personas con discapacidades visuales


ColorDec  es un interesantismo  proyecto  que representará  al colegio Lope de Vega de 3ª de el ESO  para el concurso RetoTech que organiza ENDESA    creado por   Esther Scott, Irene Yebra, Irene Jimenez,Lucia Gomez y Paula  Vidal  ,  con el propósito de   ayudar  a  personas con discapacidad  visual para  mejorar su percepción de los colores,  gracias  a un hardware de bajo coste basado en Arduino   y una aplicación móvil  que ellas mismas han escrito usando el Mit App Inventor, una herramienta de la que por cierto hemos hablado en numerosas ocasiones en este blog .

El proyecto  tiene  pues su base  en un Arduino Nano, al que le han acoplado  un modulo bluetooth  para el envío de datos a  un smartphone  mediante los pines 9 (Rxd)  , 8(Txd)  para los datos  vía serie,   así como  VCC y gnd para la alimentación desde Arduino al  propio modulo  Bluetooth.

Para el reconocimiento de colores cuenta con un sensor especializado como es  el GY33 ( unos 15€ en Amazon)  el cual conectan al propio Arduino via I2C  por los pines A4,A5  alimentándose desde el propio Arduino  desde los pines  5v y GND.

El  GY-33 es un modulo  de reconocimiento de color de bajo costo que puede alimentarse  entre  3-5 V, con bajo consumo de energía, de  tamaño pequeño y facilidad de instalación.
Su principio de funcionamiento radica en que la iluminación de la irradiación de luz LED debe medirse  hacia el objeto de modo que la  luz de retorno es  detectada por los filtros de valores RGB y el propio modulo identifica los colores según los valores RGB.
Este módulo, soporta dos maneras de envió de  datos:

  • Via serie,  es decir mediante UART en serie (nivel TTL) configurando la conexión a 9600bps y 115200bps  siendo la velocidad en baudios del puerto en serie  configurable.
  • I2C (mediante 2 líneas) que es el que han empleado en este circuito mediante  lso pnes A4 y A5 .

El modulo puede hacer  un reconocimiento simple de 7 colores y no es necesario calcular el valor RGB o se puede gestionar  el dato de una manera compleja como vamos a ver.

Se complementa  el circuito   final con un pulsador(pin2)  con su respectiva resistencia para evitar rebotes    y la alimentación de  todo el conjunto  por un pila de 9v desde los pines VIN y GND de Arduino.

El diagrama   final  lo  podemos ver en  la imagen de mas abajo:

 

esquema

 

El dispositivo esta pensado para ser portátil de modo que sujetándolo con una mano se apoya en el objeto del que se  desea conocer el color , se pulsa el botón para que este lo transmita (tras convertirlo de RBG a HSV) por bluetooth al teléfono móvil del usuario, desde donde una APP   lo  reproduce hablando en inglés o castellano.

En cuanto al software para este  proyecto ha sido realizado utilizando el IDE de Arduino para programar un Arduino Nano, al que se le ha conectado un módulo Bluetooth, un Pulsador y un módulo GY-33 para el reconocimiento de color  lo cual es tarea del firmware de Arduino gestionarlo

El programa del Arduino, en su inicialización realiza un balance de blanco, y después espera a que se pulse el pulsador para leer el color, convertirlo a HSV y enviarlo por Bluetooth al móvil.

El código provisional para el firmware de Arduino que aun esta es proceso de mejora  nos lo comparten en estas lineas:

 

Colorview4-ino_1.png

Colorview4-ino_2.png

Colorview4-ino_3

Ya desde el teléfono, se conecta al Arduino por Bluetooth, se cargan dos arrays con los datos de dos ficheros CSV, uno con los códigos RGB de los colores y otro con los nombre de esos colores .

Se busca el color en el array y si se encuentra ese será el que el teléfono lea en voz alta.

Sino se encuentra entre los más de 600 códigos RGB, se usa el código en HVS para construir una frase que describe como es el color y se envía al sistema de síntesis de voz del teléfono.

La conversión a HVS han tenido que hacerla al no poder ordenar los códigos RGB para poder situarse sobre el color más cercano al leído.

Amablemente nos han compartido sin código escrito con el MIt App Inventor  para desplegarlo en un terminal Android

 

App-Inventor-Blocks 2-page.png

 

Es sin duda  un sistema  de mínimo coste  que puede ser de muchísima ayuda para  identificar  los colores para personas con deficiencias visuales,  así que le deseamos desde este blog  toda la suerte posible . El premio es una plaza para cada una de las cinco en un campamento de verano donde seguirán aprendiendo robótica y programación , así que queridos lectores porfavor  si os parece interesante  todo el esfuerzo de esta   chicas y  merece vuestra confianza, esta es la dirección para  votar   su proyecto:

https://pr.easypromosapp.com/voteme/826101/630232517

Personalmente  ya he votado porque me ha parecido impresionante el trabajo realizado , así que desde esta lineas  les deseamos toda la suerte en este concurso  y ojala puedan seguir aprendiendo  y perfeccionando sus conocimientos  tecnicos de modo que puedan seguir ayudando a construir un mundo mucho mejor gracias al uso de la tecnología y su ingenio

Watimetro con Arduino


Realmente construir un watimetro no es demasiado  complejo cuando hablamos de corriente continua , por ejemplo pensando en una instalación fotovoltaica , pues basta  simplemente en recordar  la formula física de la  Potencia(P)   , la cual es el producto de la tensión instantánea(voltios) por la intensidad  (Amp ) , es decir  P = V x I ,  expresándose la unidad de potencia en  Watt o KW
Pero la potencia  en watios,  no expresa  ensimismo  potencia energética, por lo  que se recurre  al  producto de la potencia (vatios)  por el tiempo (en horas) , es  decir  E = P x t , expresándose  la unidad de energía que  todo conocemos como  vatios hora(Wh) o kilovatios hora (kWh).

Si unimos ambas formulas sustituyendo el valor de P obtenemos E =Px t= (V xI) x t , es decir  el producto de la tensión  e intensidad por el el tiempo

Precisamente pues de la ultima fórmula anterior queda claro que para medir la energía que necesitamos tres parámetros:

  1.  Tensión
  2.  Intensidad
  3.  Tiempo

Veamos pues como  obtener estas valores con un Arduino  para obtener en tiempo real en un display lcd  la potencia en kwh de un sistema en cc

En el siguiente  video podemos ver el proyecto funcionando, incluso enviando datos al IoT  con  Xively (esta opción ya no esta disponible para aficionados)

Medida de tensión

El voltaje se puede medir con la ayuda de un circuito divisor de tensión  formado  por dos resistencias iguales  . Como el  voltaje de entrada en cualquier pin analógico de ARDUINO esta limitado a 5V por se logica TTL , el  divisor de voltaje servirá para  que el voltaje de la salida de ella sea menor que 5V y no queme la electronica interior.

Por ejemplo para una batería  que se utilice para almacenar la energía de un  panel solar de  6v  y   5.5Ah  de capacidad , tendríamos que bajar la  tensión desde 6.5v a una tensión menor que 5V para no estropear el Arduino.

Si usamos R1 = 10k y R2 = 10K  nos da una corriente pequeña 6.5v/(10k+10K)=0,325mA .

Es cierto que se podrían  tomar valores de R1 y R2    inferiores, pero el problema es que cuando la resistencia es menor  mayor corriente  pasas  a través de ella generando como resultado gran cantidad de energía  disipada en forma de calor(recuerde  que P = I ^ 2R) . por tanto el valor de las resistencias  puede ser elegido diferente pero debe tenerse cuidado para reducir al mínimo la pérdida de energía a través de las resistencias.

El resultado de la tensión entre una de las resistencias y masa seria igual a R xI =10k  x 0.325mA=3.25v que es inferior a 5v y, tensión soportada sin problemas  para el pin analógico de  ARDUINO

Calibración de voltaje:

Cuando la batería está completamente cargada (6.5v) obtenemos una Vout = 3.25v y ese seria el valor  que iría al  convertidor analógico digital  de un puerto analógico  de  Arduino

Si tenemos que medir los 3.25v desde el divisor de tensión   obtendremos un valor aproximado de 696 en el monitor serial (  sample1 es el valor de ADC corresponde a 3.25v)  .

Precisamente con ese valor o tendremos que extrapolar  que 3.25v  es equivalente a 696,  1 es equivalente a 3.25/696=4.669mv    por lo que podemos usar  estas dos reglas:

Vout = (4.669 * sample1 ) / 1000 voltios
voltaje de la batería real = (2 * Vout) voltios

Con el siguiente código de Arduino  podemos obtener el valor de tensión:

/ / tomar 150 muestras de divisor de tensión con un intervalo de 2 segundos y medio samples data collected for(int i=0;i<150;i++)
{
sample1=sample1+analogRead(A2); //leer  el voltaje del circuito divisor
delay (2);
}
sample1=sample1/150;
voltage=4.669*2*sample1/1000;

Medición de intensidad

Para mediciones de intensidad  es típico usar una resistencia en serie  de poco  valor con la carga  y medir la diferencia de potencial entre los extremos   de esta  y luego calcular   la intensidad gracias a la la ley de ohm (I=V/R  ) donde como vemos   dividiríamos este valor por el valor en ohmios de la resistencia

El efecto Hall se basa en  la producción de una diferencia de potencial(el voltaje de Hall) a través de un conductor eléctrico, transversal a una corriente eléctrica en el conductor y un campo magnético perpendicular a la corriente.

Afortunadamente actualmente existen CI especializados  como   son  los   sensores de corriente basados en efecto Hall ACS 712

Existen comercialmente  sensores de la gama ACS712  para  diferentes  rangos de corrientes máximas , así que se debe escoger este  según su requisito,como por ejemplo para una corriente máxima de 20 A.

ACS712.png

En el  esquema vemos un LED como una carga ( aunque  la carga real sera diferente) .

Tambien vemos el  ACS 712 (soporta  20Amps DC)  ofreciendo una una salida analógica 100mV/A

Tambien es destacar la alimentación del Arduino  cuya salida alimenta a través de la placa de prototipos a la ACS712

La calibración  es muy sencilla :
La lectura analógica  produce un valor de 0-1023, equiparando a 0v a 5v analógico .Leer 1 = (5/1024) V = 4.89mv
Valor = (4,89 * valor analógico leído) / 1000 V,  pero según hojas de datos offset 2.5V (cero corriente obtendrá 2.5V del sensor de salida)
valor Actual = (valor 2.5) V
corriente en amp = valor real * 10

Código de ARDUINO:

/ / tomando 150 ejemplos de sensores con un intervalo de 2 segundos y luego media de los datos de las muestras recogidos
for (int i = 0; i < 150; i ++)
{
+= sample2 analogRead(A3);  //  leer la corriente de sensor
delay(2);
}
sample2 = sample2/150;
=(5.0*sample2)/1024.0; 
actualval = val-2.5;  //tensión de offset es 2.5v
amperios = actualval * 10;

 Medición del tiempo

Para la medida del tiempo no se necesita ningún hardware externo, pues ARDUINO en sí mismo tiene contador de tiempo incorporado.

La función millis() devuelve el número de milisegundos desde que la placa Arduino comenzó a ejecutar el programa actual.

Código de ARDUINO:

long milisec = millis();  // calcular el tiempo en milisegundos
long time=milisec/1000; // convertir de milisegundos a segundos

 Calculo de la potencia y energía

Estas son las formulas basicas empleadas por el fw  en Arduino:
  • totamps = totamps + amperios;  //calcular amperios total
  • avgamps = totamps/tiempo;  // promedio de amps
  • amphr =(avgamps*time)/3600;  // Ah
  • Watts = voltaje * amperios;  //Potencia = Voltaje * corriente
  • energía =(watt*time)/3600;  // Vatios-seg vuelve a convertir en Watt-hora dividiendo 1hr(3600sec)
  •  energy=(watt*time)/(1000*3600); //para la lectura en kWh

completo.jpg

Todos los resultados se pueden visualizar en el monitor serial o mediante una pantalla LCD   de 16 x 2 caracteres para mostrar todos los resultados obtenidos en los pasos anteriores.

El conexionado del LCD sigue la conexión estandar de 4 pines para la linea de  datos mas las señales de control RS,RW  y Enable

Asimismo también es necesario un trimer de 10k  para el contraste de la pantalla

Resumidamente estas son pues las conexiones para el lcd

LCD -> Arduino
1. VSS -> GND de Arduino
2. VDD -> Arduino + 5v
3. VO -> Arduino GND pin + resistencia o potenciómetro
4. RS -> Arduino pin 8
5. RW -> Arduino pin 7
6. E -> pin Arduino 6
7. D0 -> Arduino – no conectado
8. D1 -> Arduino – no conectado
9. D2 -> Arduino – no conectado
10. D3 -> Arduino – no conectado
11. D4 -> Arduino pin 5
12. D5 -> Arduino pin 4
13. D6 -> Arduino pin 3
14. D7 -> pin Arduino 2
15. A -> Pin 13 de Arduino + resistencia (potencia de luz de fondo)
16. K -> Arduino GND (tierra de luz de fondo)

A continuación este es el  código de ejemplo para sacar por el monitor serie  los valores calculados

Serial.Print (“tensión:”);
Serial.print(voltage);
Serial.println(“Volt”);
Serial.print (“actual:”);
Serial.print(amps);
Serial.println(“Amps”);
Serial.print (“potencia:”);
Serial.print(watt);
Serial.println(“Watt”);
Serial.print (“energía consumida:”);
Serial.print(energy);
Serial.println(“Watt-Hour”);
Serial.println(“”);  //imprimir los siguiente conjuntos de parámetro después de una línea e
delay(2000);
Para manejar el  LCD tiene que primero importar la biblioteca de “LiquidCrystal” en el código.
A continuación este es el  código de ejemplo para sacar por el display  lcd  los valores calculados:
#include
lcd (8, 7, 6, 5, 4, 3, 2);
luz int = 9;
void setup()
{
pinMode (luz de fondo, salida); //set pin 9 como salida
analogWrite (contraluz, 150); //controls la intensidad de luz 0-254
lcd.begin(16,2); / / columnas, filas. tamaño de pantalla
LCD.Clear(); claro la pantalla
}
void loop()
{
lcd.setCursor(16,1); / / establecer el cursor fuera de la cuenta de pantalla
lcd.print(“”); imprimir carácter vacío
delay(600);
impresión de potencia y energía que un LCD / / /
lcd.setCursor(1,0); coloca el cursor en la columna 1 y fila 1

LCD.Print(Watt);
lcd.print (“W”);
lcd.print(voltage);
lcd.print(“V”);
lcd.setCursor(1,1); coloca el cursor en la fila 1 columna y 2 º
lcd.print(energy);
lcd.print (“WH”);
lcd.print(amps);
lcd.print(“A”);
}

 

Componentes

A continuación por ultimo algunos de los componentes necesarios para llevar a cabo este circuito:

 

1. ARDUINO UNO  (unos 9€ en Amazon)


3. Display LCD de 16 x 2 caracteres LCD (en Amazon con I2C  menos de 5€ )

4. ACS 712 SENSOR de corriente .Rango de corriente: 30A; Tamano: 31 x 13mm / 1.2 “x 0.5” (L * W) ( en Amazon unos 2€ )


Varios : resistencias de 10k v2,resistencia de 330ohm, POTENCIÓMETRO de 10K ,cables puente , placa de prototipos,etc

 

Pulsera refigeradora inteligente


Desde  Bangladesh,   un  estudiante de programación   y robótica llamado  Abtahee nos enseña  como construir una pulsera refrigerante  o calefactora basada una vez en una célula Peltier ,y que como aspecto destacable , es controlable desde una app que el propio autor ha creado.
Puede parecer extraño  que desde  una pulsera “normal” se pueda cambiar su sensación térmica y reemplazar el aire acondicionado o calefacción de habitaciones pero ,lo cierto es que es  un hecho científicamente demostrado que     basta  calentar o enfriar sólo la zona de la muñeca   para simular un ambiente térmico  que haga que se sienta más fresco en verano o  se este  caliente en invierno simplemente aplicando frio o calor  solo en  la muñeca

Hablamos  pues de un sistema asequible que teóricamente  podría sustituir  equipos de aire acondicionado destacando el  bajo consumo y su gran portabilidad.

Aunque la pulsera  solo puede enfriar o calentar una pequeña zona del cuerpo, es absolutamente eficaz( incluso según su autor   podría decirse  que  no menos de un aire acondicionado o un calefactor)  consumiendo no más de 2,5 vatios.

Después de usar este sistema  se empieza a sentir fresco dentro de muy poco tiempo ,tanto que incluso si el clima es muy caliente se siente una suave brisa que fluye constantemente hacia el poseedor de la pulsera

El autor ademas comenta que ha probado su diseño de  pulsera en más de 50 personas en condiciones de temperatura diferentes y todos ellos tuvieron respuesta positiva.

 

 

 

 

Hardware

Cambiar la temperatura del cuerpo es muy difícil y se necesita una gran cantidad de energía,por eso  con esta técnica de centrarnos en calentar o enfriar solo un parte del cuerpo (las muñecas  ) sólo necesitamos cambiar la sensación térmica  consumiendo en esa zona consumiendo por tanto  mucho menos energía.

¿Cómo enfriando o calentando una pequeña zona de su cuerpo puede enfriar su cuerpo entero? Pues en realidad no cambia la temperatura de su cuerpo como lo hace un equipo de  aire acondicionado o calefacción pues el trabajo de la pulsera es realmente “engañar” al cerebro con la percepción   

Si se mantiene la mano en agua fría, inmediatamente se siente frío por un tiempo,pero después de que su cerebro procese el cambio de temperatura repentino al rato  ya no sentirá frescor o por lo menos la sensación tan acusada así que en el caso de esta pulsera, si cambiamos  la temperatura cada segundo, su cerebro no puede hacer frente a la sensación de la temperatura y seguirá sintiendo frescor mientras se ponga la pulsera aprovechando  que  los sensores térmicos de la muñeca son más sensibles que otra parte del cuerpo

 

Veamos esto empíricamente mediante un gráfico donde en abscisas indicaremos el tiempo  trascurrido  y  en ordenadas la tasa de cambio de temperatura

grafico.png

 

Puede asumir que  refrescarse o calentar su cuerpo lo hace esta pulsera pero realmente no es así . Algo cambia la temperatura de su muñeca cada segundo como se representa en el gráfico anterior o que hace que su cerebro pare de sentir que la temperatura está cambiando de un ambiente más caliente o más frío. La temperatura aumenta durante 6 segundos y la pulsera se apaga cada segundo de modo  que el cambio continuo de la temperatura en la muñeca obliga a su cerebro a centrarse en la temperatura de su muñeca.

Así que las otras partes de su cuerpo no se sienten  la temperatura del ambiente tan fuertemente como en las muñecas: es por eso que si su muñeca está siendo calentada por la pulsera, usted se sentirá caliente y si la muñeca está siendo enfriada, usted se sentirá fresco por lo que exactamente cuando usted use una pulsera de este tipo, no sentirá la temperatura del ambiente sino la inducida parcialmente por el dispositivo, pero si la temperatura no cambiase, su cerebro se ajustará con la temperatura de la muñeca en un tiempo y nuevamente se comienza a sentir la misma aunque cambie la temperatura de su cuerpo en una tasa pequeña.

 

Bien   veamos ahora los compontes utilizados por este interesante proyecto:

1. Arduino UnoArduino Nano (esta ultima es una mejor opción que uno por ser de tamaño pequeño)                                                                                                        

2. Módulo del controlador Motor L298N/L293D.  pues cada pin en un Arduino puede manejar 40 mA así que conectar directamente la celula  peltier a un pin arduino destruirá la placa arduino.Una opción seria usar un driver basado en relé que consume menos energia y es mas barato pero al requerir refrigerar o enfriar  esto se consigue cambiando los hilos de alimentación  por lo se requiere una electronica mas avanzada como por ejemplo un driver de motor pasos a paso de potencia                                                                                                                   

3.Módulo compatible con Arduino  Bluetooth HC-06/HC-05

4. Sensor LM35 para medir la temperatura exterior                                                                                                                                                                                                                   

5. Módulo peltier (se usa tanto para calefacción y refrigeración.)                                                                                                                                                                 

6.Varios : Disipador de calor, Correas  de relojVelcro/reloj, cables de puente,Bateria  de más  5 voltios,Ledas azul y Led rojo (para indicar si el dispositivo de enfriamiento o calefacción,Pasta térmica y el disipador térmico completo

Montaje  célula  Peltier

Ahora es el turno para hacer la pulsera asi que en primer lugar  tendrá  que adjuntar la célula de  peltier con el disipador de calor así que tome el peltier y el disipador de calor.

Ponga pasta térmica en la parte posterior del disipador de calor y coloque el lado caliente de peltier con el disipador de calor como en la foto

Un aspecto  particularmente es colocar la cara correcta al radiador que como se ve es la zona no seriegrafiada .

Ahora para fijar la célula  peltier puede usar pegamento caliente como se muestra en la imagen.

peltier.PNG

Ahora tocaría fijar el radiador con la célula Peltier a una correa  para lo cual se puede tomar un cable grueso y el disipador de calor  usando un sistema similar al de un cuadro  para que cree dos  ganchos en forma de D en ambos lados del disipador de calor.

Ahora se puede  utilizar pegamento caliente para unir el cable con el disipador de calor más fuertemente y  para que el cable no salga de la pulsera.

Puede  tomar la correa de Aun viejo reloj  o correas de Velcro y fije los ganchos como las imágenes mediante el uso de pegamento caliente.

pulseras.PNG

Ahora la pulsera está lista. Se puede diseñar mediante el uso de pegamento caliente en la parte superior del disipador de calor para que se vea más atractivo.

Diagrama del circuito, código y aplicación

El circuito usado para controlar la célula de Peltier  es relativamente sencillo pues realmente hay un modulo bluetooth   que invierte TX x RX   y Rx xTX    adema de alimentarse de la propia placa

  •  Arduino 3.3V >> módulo Bluetooth VCC
  •  Arduino Tx >> Bluetooth módulo Rx
  •  Arduino Rx >> Bluetooth módulo Tx
  • Arduino GND >> Masa modulo Bluetooth

Ademas tenemos dos leds   conectando el cátodo  del  Led azul al pin  Pin 10  y al  cátodo del led  rojo al pin 11 .

El sensor de temperatura usado  utiliza tres pines  porque se puede alimentar el Peltier  de un modo  y entonces ofrecerá frio por la cara no serigrafiada  y si se invierte la alimentación  también se invierte el efecto térmico

  • Arduino Pin A1 >> Vout del sensor LM35
  • GND >>GND del LM35
  • Vcc>>5v delLM35

Para la placa de potencia  usaremos dos conexiones :

  •  Arduino Pin 3 >> Motor Driver en 1
  •  Arduino Pin 5 >> controlador de Motor en 2
  • Arduino GND >> Masa modulo driver

Lógicamente de la salida de la placa aumentaremos el modulo de Peltier

Por  ultimo concluimos con una batería  y un interruptor general para apagar o encender todo el dispositivo

esqeuma.png

 

Resumidamente las conexiones son pues las siguientes:

  •  Arduino Vin >> Motor Driver VCC y la batería.
  •  Arduino 5V >> Vin del sensor LM35
  •  Arduino 3.3V >> módulo Bluetooth VCC
  •  Arduino Tx >> Bluetooth módulo Rx
  •  Arduino Rx >> Bluetooth módulo Tx
  •  Arduino Pin 3 >> Motor Driver en 1
  •  Arduino Pin 5 >> controlador de Motor en 2
  • Arduino Pin 10 >> Led Blue(+)
  • Arduino Pin 11 >> Led 7.Polarized
  • Arduino Pin A1 >> Vout del sensor LM35
  • Todos los componentes del suelo >> Battery(-)
  • Motor Driver Out1 >> Peltier (cable rojo)
  • Motor Driver Out2 >> Peltier (alambre negro)

El código   usado  los puede  descargar desde Instructables.com

[Nota: pin Tx y Rx del módulo bt no debería conectarse a arduino mientras se cargan el código.]

Ahora es necesario poner todos los componentes en una caja. Utilice una caja que se puede poner fácilmente en su bolsillo.

La caja debe tener suficiente espacio para guardar todos los componentes  y los mas pequeña posible  para contener  el arduino y otros componentes dentro de la caja.  Puede  hacer un área separada para la batería  o ponerla aparte . Es interesante  que el indicador led  y el sensor de temperatura debe estar fuera de la caja. Los cables conectados con la peltier deben ser lo suficientemente largos que pueden mantener la caja en su bolsillo mientras que usa la pulsera en su mano.

 

App movil

pantalla.PNG

Se puede descargar e instalar la aplicación que ha diseñado el autor también desde instructables.com:

Active la conectividad bluetooth en su teléfono inteligente y encienda el dispositivo . Ahora abra la aplicación y pulse el botón conectar y emparejelo  con el módulo bluetooth HC-06/HC-05.

La aplicacion  dispone de tres modos:

  • Auto Control:Si usted activa control automático pulsando el botón de auto control, la pulsera será calentar o enfriar te según la temperatura del ambiente. El dispositivo tiene un sensor de temperatura que mide la temperatura del ambiente. La temperatura se mostrará en su smartphone cuando se conecta el dispositivo con tu smartphone. Si la temperatura es superior a 28° C, enfriará y si la temperatura es inferior a 25° C, calentará. La velocidad de enfriamiento y la tasa de calentamiento depende de la temperatura se muestra en el gráfico anterior.
  • Modo manual :Cuando no se siente satisfecho con el modo automático, se puede ir a través del modo manual usando los controles deslizantes para enfriar o calentar te según tus. Puede utilizar el modo después de trabajo físico o gimnasio para relajarse le para arriba. La temperatura del ambiente no importa si usas el modo manual.
  • Modo de agua e:Si desea bañarse en agua fría o estanques, puede activar el modo de agua caliente te y esperar 4-5 minutos y usted sentirá el agua 1-2 grados más calientes que antes. Pero no funcionará efectivamente cuando el agua es demasiado fría. Pero en caso de enfriamiento o de calefacción, la pulsera funciona como encanto.

Si se utiliza el modo manual, no define la pulsera demasiado caliente o frío así que debe establecer la posición del control deslizante según sus preferencias

Construya su huerto robotico


En efecto   ya es posible  construirse   un huerto robótico ,  donde incluso el sw de gestión es open sw y cuyo cerebro no podía ser otro que una Raspberry Pi 3  .

Evidentemente para llevarlo a  la praxis realmente la barrera no es otra que el exigente hardware para controlar el huerto en si , pues este requiere  de una gran cantidad de elementos  que sin duda hacen mucho mas complejo  su construcción ,pero la buena  noticia  es que   aproximadamente FarmBot (que es la empresa que hay detrás de las idea)  prometen simplificarlo mediante diferentes kits  si esta dispuesto a  realizar una inversión entre 2595$ ( la version standard) o la 3795$ ( la version XL)

Aparte del potente hardware que funciona a modo de un puente grúa  con un cabezal multiherramienta bastante original llama la atención el sw para controlarlo bajo el concepto de arrastrar y soltar donde se puede diseñar gráficamente una granja arrastrando y colocando las plantas en el mapa  desde un interfaz que se  aprende en pocos minutos , por  lo que llevar a la plantación como podemos ver es bastante sencillo ya  que se tendrá todo previsto en todo momento cuando llegue la temporada de cultivo.

Es evidente que unos de los valores mas apreciados en el sw es que permite construir nuevas características,crear  código de propios mods personalizados o soportar  la aplicación web localmente  para ser independiente de la red. Ademas todo el software está bajo la licencia MIT en código abierto (open software)  y este esta compartido en Github , permitiéndole contribuir, copiar, modificar, redistribuir e incluso vender software FarmBot. ¿desea ayudar a crear nuevas funciones o tiene un error que reportar? ¡ Involúcrese en github!

 

En  el sw ademas  se contemplan regímenes de crecimiento  para construir pautas para el cuidado de una planta a lo largo de toda su vida mediante la programación de las secuencias a ejecutar cuando la planta es de una cierta edad. Incluso  los regímenes se pueden reutilizar, haciendo una brisa de replantación. Otro aspecto son las secuencias de construcción donde rápidamente se pude crear secuencias personalizadas para aprovechar al máximo su hardware donde ningún código es requerido. Simplemente arrastrar y soltar las operaciones básicas  ajustar los parámetros y guardar.

Ademas   el control se hace en tiempo real debido a que se pueden  utilizar  las  herramientas en tiempo real con los controles manuales. !Incluso se puede ahuyentar aves en tiempo real ordenándolo desde un smartphone  !

El Hardware ha pasado por grandes esfuerzos al diseño, fabricación y controles de calidad  siendo además, todos los modelos de CAD  públicos así que usted puede construir sus propias piezas.

Respecto  a  los elementos el hw ( que incluyen ambos kits)  estos son los elementos que lo   componen:

  • Extrusiones de aluminio para las pistas, pórtico y eje z
  • Placas de aluminio de 5mm anodizado
  • V-ruedas con rodamientos de bolas de goma sellada de acero inoxidable
  • Moldeado de inyección UV estabilizado componentes de plástico ABS
  • Tornillos de acero inoxidable, tuercas t, separadores y otros hardware
  • Cuatro motores de pasos NEMA 17 con codificadores rotatorios y cables
  • GT2 de correas y poleas de aluminio
  • Portacables de plástico durable
  • Acero inoxidable leadsrew y delrin bloque de 8mm alta tolerancia
  • Fuente de alimentación impermeable IP67 con 110 y 220V CA
  • Raspberry Pi 3 y 8GB de tarjeta microSD
  • Farmduino microcontrolador con montado y probado con controladores paso a paso
  • Caja o impermeable para la electrónica
  • Montaje de la herramienta universal, cubierta y cable de 12 hilos
  • Herramienta de inyector de semilla con bomba de vacío, tubos, compartimiento de la semilla, bandeja de la semilla y agujas de bloqueo luer adaptable (3 dimensiones)
  • Boquilla de  riego con válvula solenoide, tubos y adaptadores para manguera de jardín estándar de Estados Unidos
  • Herramienta de sensor de suelo
  • Herramienta desyerba con implementos personalizables
  • cámara  USB IP67 impermeable
  • Dos toolbays de 3 ranuras

 

En este video podemos ver el equipo en funcionamiento !es impresionante!

 

Software

OpenFarm.CC fue concebido originalmente como un pequeño componente del proyecto FarmBot. A medida que se progresó, se hizo evidente que OpenFarm no tenía ninguna razón para estar atado a FarmBot, sino que podría vivir por sí solo. En septiembre de 2014, 1.605 personas respaldaron a OpenFarm en el pedal. Hoy en día, OpenFarm es una aplicación independiente, sin fines de lucro y comunidad. Puede de hecho involucrarse con OpenFarm uniendo el canal  y  contribuyendo en Github, o yendo a OpenFarm.cc y creando contenido!

Hay muchos sistemas de software que contribuyen a la funcionalidad de FarmBot. El siguiente diagrama muestra los diferentes componentes y la forma en que los datos fluyen entre ellos. Lea las breves descripciones de cada componente en las siguientes secciones para entender el sistema como un todo, y luego Sumérjase en la configuración de los componentes necesarios para su FarmBot.

La aplicación web FarmBot  ,como se pude ver en el video  anterior, permite configurar y controlar fácilmente  FarmBot desde un navegador web en su laptop, Tablet o smartphone. La aplicación cuenta con controles manuales en tiempo real y registro, un generador de secuencias para crear rutinas personalizadas para que se ejecute FarmBot y un diseñador de granjas de arrastrar y soltar para que pueda diseñar y administrar gráficamente su granja.

El broker de mensajes es una aplicación de nube que actúa como intermediario para todos los mensajes entre la aplicación web FarmBot y los dispositivos FarmBot . Maneja conexiones de socket, identificación de dispositivos y autenticación.

FarmBot Raspberry PI utiliza un sistema operativo personalizado llamado FarmBot os para mantener una conexión y sincronizar con la aplicación web a través del intermediario de mensajes. Esto permite a FarmBot descargar y ejecutar eventos programados, ser controlados en tiempo real, y cargar logs y datos de sensores. El SO se comunica con el Arduino sobre USB para enviar comandos de código G y F y también recibir datos recopilados.

FarmBot os tiene una utilidad integrada denominada Configurator que permite introducir fácilmente las credenciales de WiFi y de aplicación web desde un dispositivo habilitado para WiFi (como un ordenador portátil o un smartphone). Esto es útil para la configuración inicial con el fin de obtener su FarmBot conectado a su casa wifi.

Respecto  firmware  Farmbot para Arduino es flasheado en el microcontrolador Arduino mega 2560 de FarmBot y es responsable de operar físicamente el hardware, las herramientas, los sensores  otros componentes electrónicos de FarmBot. Recibe los códigos de G y de F del regulador del PI de la Raspberryde FarmBot vía conexión serial del USB, y después mueve los motores y Lee y escribe los pernos por consiguiente. También envía los datos recogidos de los codificadores rotatorios y el PIN Lee de nuevo a la Raspberry PI.

OpenFarm.cc es una base de datos gratuita y abierta para la agricultura y el conocimiento de jardinería. Este servicio proporciona información de cultivo y crecimiento a la aplicación web para un usuario racionalizado experimentado.

 

Hardware

FarmBot Genesis es  la plataforma de hardware de código abierto de bricolaje optimizada para la producción de alimentos a pequeña escala basada en el suelo .FarmBot Genesis , quee s la version mas económica ,  está diseñado para ser una Fundación FarmBot flexible para la experimentación, prototipado y hacking. Los factores que conducen detrás del diseño son simplicidad, manufacturabilidad, escalabilidad, y hackeabilidad.

FarmBot Genesis es una pequeña escala FarmBot principalmente construida a partir de protuberancias en V-ranura de aluminio y placas de aluminio y soportes. Génesis es conducida por cuatro motores de pasos NEMA 17 con codificadores rotativos, el microcontrolador Farmduino, y un ordenador de frambuesa PI 3. El Génesis puede variar en tamaño desde un área de plantación tan pequeña como 1m2 hasta un máximo de 4,5 m2, mientras que alberga una altura máxima de planta de aproximadamente 1m. Con el hardware y las modificaciones adicionales Anticipamos que el concepto del Génesis podría escalar a aproximadamente 50 m2 y una altura máxima de la planta de 1.5 m.

Como vemos  Farmbot no es su producto típico pues sus creadores  han pasado por grandes esfuerzos para diseñar FarmBot Genesis para ser duraderos, fácilmente ensamblados y modificados con herramientas comunes, construidos a partir de componentes en gran parte fuera de la plataforma, y fabricados con procesos y materiales fácilmente disponibles. Nada sobre FarmBot habla de obsolescencia o de propiedad.

Las pistas son uno de los componentes que realmente diferencian la tecnología de FarmBot de los tractores de ruedas tradicionales de conducción libre. Las pistas son las que permiten al sistema tener una gran precisión de una manera eficiente y sencilla. Hay muchas razones de por qué las pistas son superiores, algunas de las cuales se enumeran a continuación.

  • Las pistas proporcionan una gran precisión y permiten que el FarmBot vuelva a la misma posición repetidamente
  • Cualquier tipo de estructura de empaque de las plantas se puede crear y manejar
  • Las pistas ocupan menos área que las trayectorias para las ruedas del tractor y no compactan el suelo

El pórtico es el componente estructural que puentea las dos pistas y se mueve en la x-dirección vía un sistema de impulsión de la x-dirección. Típicamente, sirve como una guía lineal para el deslizamiento transversal y una base para el sistema de impulsión de la y-dirección que mueve el Cruz-resbale a través del pórtico en la y-dirección. También puede servir como base para el montaje de otras herramientas, electrónica, suministros y/o sensores.

La Cruz se mueve en la Y-dirección a través del pórtico. Este movimiento proporciona el segundo grado mayor de libertad para FarmBots y permite que las operaciones como la plantación se realicen en cualquier lugar del plano XY. El deslizamiento transversal se desplaza utilizando un sistema de impulsión y-dirección y funciona como la base para el montaje de la herramienta y el sistema de la impulsión de la Z-dirección.
Eje Z

El eje z se conecta a la corredera transversal y proporciona el FarmBot con movimiento de dirección z. Sirve como base para la fijación del montaje universal de la herramienta y de otras herramientas. .

Para que los FarmBots crezcan adecuadamente las plantas más altas, el pórtico, la corredera transversal, el eje Z y las herramientas deben tener una separación vertical adecuada de las plantas. Esto generalmente se puede lograr de dos maneras:

  • Usando pistas levantadas y un pórtico Low-Profile
  • Usando pistas bajas con un pórtico alto

En general, el uso de pistas bajas con un pórtico alto es el mejor diseño, especialmente para aplicaciones más grandes, ya que ahorra en costo material, es menos de una monstruosidad, bloquea menos luz del sol, y sería más fácil de mantener. Sin embargo, en el caso de un FarmBot que se está instalando en un invernadero u otra estructura, utilizando las paredes existentes para apoyar las pistas más altas puede ser una mejor solución.

 

El  Soporte universal para herramientas (universal Tool Mount o UTM)  permite a FarmBot Genesis cambiar automáticamente las herramientas para realizar diferentes operaciones. La UTM es necesaria porque no es factible tener todas las herramientas montadas en el eje z al mismo tiempo por varias razones:

  • Esto sería muy pesado y aumentaría las tensiones en todos los componentes, así como requerir un motor más grande del z-axis.
  • La mayoría de las herramientas necesitan ser la cosa “más baja” en el eje z para poder trabajar. Tener múltiples herramientas compitiendo por la posición más baja (ej: una sonda de temperatura y un inyector de semillas) no sería ideal y puede que no funcione en absoluto. El uso de mecanismos de elevación y descenso de herramientas individuales, o un mecanismo de estilo de torreta sería complejo, pesado, voluminoso y limitado en el número de herramientas que podría soportar.
  • El tamaño del eje z debe mantenerse a un mínimo para que tenga un impacto mínimo sobre las plantas, especialmente cuando no hay mucho espacio entre ellos.

La UTM es un componente de plástico que se monta en la extrusión de aluminio del eje z utilizando dos tornillos M5 y tuercas en t.Algunas de sus características:

  • 3 imanes fuertes del anillo del neodimio para sostener magnético las herramientas en el lugar vía otros imanes colocados en la misma configuración en la herramienta.
  • Pasadizos para agua, enmiendas líquidas (ej.: abono), y vacío o aire comprimido para pasar de la UTM (y el resto de FarmBot) a la herramienta.
  • 12 tornillos de resorte que hacen conexiones eléctricas con herramientas.

 

Es como vemos una de las partes cruciales del proyecto pues la que realemnte actua sobe las plantas. Precisamente en este video nos explican en que consiste esta versátil herramienta;

 

Mas información en https://farm.bot/

 

A %d blogueros les gusta esto: