jueves, 3 de marzo de 2016

Las cosas no se callan

Si es que las cosas hablan de verdad, la caldera, se queja de que se está quedando sin gasoil...

Me ha enviado este correo, como estaba previsto al llegar a los 200l, los siguientes serán a los 150 y de ahí cada 50l.

Caldera a través de smtpcorp.com 

1 mar. (hace 2 días)
para 
El nivel de Gasoil está al 20%, considera pedir
Temp=4,12ºC / Humedad=43%H.R. / Gasoil=196,50litros / Presion atm=1020,0hPa.

Nunca me había durado tanto un tanque de gasoil, este año ha sido de muy poco frío, normalmente entre Diciembre y primeros de Enero tenía que reponer, este año a 1 de Marzo todavía quedan 200l...
Si tuviera el sistema registrando desde hace más tiempo podría hacer una correlación entre la media de temperaturas exteriores y el consumo de calefacción, espero que para el año próximo podamos ir incrementando la inteligencia del sistema y prever consumos o tener en cuenta el pronóstico del tiempo.
El montaje del invento aquí: Caldera WIFI

domingo, 21 de febrero de 2016

Mi nuevo drone

Ayer estuve haciendo pruebas de vuelo con un drone Parrot Bebop2:
(todos los videos están grabados en 1080p mejor verlos a pantalla completa)
Al principio se hace raro acostumbrarse al control estático del invento, tiende a estabilizarse siempre, no es como los aviones de radio control con los que hay que tener máximo cuidado, esto es estable por naturaleza, tiende a mantenerse en su sitio, incluso con algo de viento, de echo se hace difícil volar en curva, supongo que habrá que practicar más...


Es evidente que hay que practicar más, aquí sufrimos un pequeño accidente, pero es impresionante lo resistente que resulta el cacharro, sólo se dobló un poco una de las hélices, la enderecé con la mano y listo.
Como podéis ver continuamos volando perfectamente.
En este caso estaba probando el control con los acelerómetros del iPad, y claro, al inclinarlo hacia atrás para que viniera hacia mi, hay que pensar que el drone lo que hace es ir hacia atrás (no hacia mi)...

Y un par de últimos vuelos antes de recargar baterías.



martes, 9 de febrero de 2016

Tres Relojes

Poco a poco voy introduciendo más cosas en el invento de la caldera:


   La novedad son los dos cuadros de la izquierda, el de los tres relojes (que son los que antes tenía en cuadros separados), incluye además los botones de encender y apagar, que ejecutan el Talkback que cierra o abre el relé del invento que arranca o para la caldera.
  El cuadro de altura Nubes es una estimación teórica de la altura de la base de las nubes basada en la temperatura y el punto de rocio, suponiendo que la distribución del gradiente de temperaturas es lineal desde el suelo y dado que según subimos la temperatura baja, en algún punto la temperatura del aire alcanzará la temperatura del punto de rocio, con lo cual se condensará la humedad.
   Cálculo atura base nubes en Wikipedia, este es el método que he usado, pero he visto otros por ahí, la realidad es que desde que lo he montado, voy siguiendo estos días de invierno y cuando se ve un nivel de nubes bajo, suele amanecer con niebla o nuboso-lluvioso.
   Tampoco se puede relacionar con el  nivel exacto de las nubes, pero como indicador de niebla o nubes bajas, parece válido.

Aquí os dejo la actualización del análisys MATLAB que calcula las variables derivadas (altura base nubes, velocidad de viento, sensación térmica y punto de rocio):


readChannelID = 56115;
TemperatureFieldID = 1;
HumidityFieldID = 2;
tempC = thingSpeakRead(readChannelID,  'ReadKey','------------------------------', 'Fields', TemperatureFieldID, 'Timeout', 20);
url = 'https://api.thingspeak.com/apps/thinghttp/send_request?api_key=--------------------------------';
VViento = urlfilter(url, 'speed');
v=VViento*3.6;
Wch = (13.12+(0.6215*tempC)-(11.37*(power(v,0.16)))+(0.3965*tempC*(power(v,0.16))));
b = 17.62;
c = 243.5;
humidity = thingSpeakRead(readChannelID, 'ReadKey','---------------------------------------', 'Fields', HumidityFieldID, 'Timeout', 20);
gamma = log(humidity/100) + b*tempC ./ (c+tempC);
dewPoint = c*gamma ./ (b-gamma);
display(tempC, 'ºC temp actual');
display(Wch, 'ºC sensacion termica');
display(humidity, '% humedad relativa');
display(VViento, 'viento en m/s');
display(v, 'viento en km/h');
display(dewPoint, 'Dew point ºC');
altnubes=((tempC-dewPoint)/2.5)*304,799;
display(altnubes, 'Altura Base Nubes m.');
writeChannelID = 56115;
writeAPIKey = '-----------------------------';
thingSpeakWrite(writeChannelID, 'Fields',[4,5,6],'Values', [dewPoint,Wch,v], 'Writekey', writeAPIKey);
thingSpeakWrite(71070,'Fields',[2],'Values', [altnubes],'WriteKey','-------------------------------');

miércoles, 3 de febrero de 2016

Las cosas hablan!

Mi caldera me ha escrito un mail.

Hoy me ha llegado un correo de la caldera, como estaba previsto en el programa, al llegar a los 300l en el tanque de Gasoil, envió el siguiente mail:

Caldera calderadecasa@........com a traves de smtpcorp.com                                14:02(hace 7horas)
para mi

El nivel de Gasoil está al 30%
Temp=11,86ºC / Humedad=40%H.R. / Gasoil=293,47litros / Presion atm=1020,0hPa.


Es bastante emocionante a pesar de la sencillez del mensaje, sobre todo cuando no te lo esperas, ya ni me acordaba de que tenía que recibir el mensaje y fue una agradable sorpresa.
Ahora esperemos que llegue otro al llegar a los 200l, a los 100l, a los 75, a los 50... con un mensaje cada vez más dramático.

El resto del invento aquí.


martes, 5 de enero de 2016

Compensación de la presión

  Pues parece que los sensores de presión hay que compensarlos en altura...
  Después de poner el sensor de presión que me había cargado, el BMP180, y ver durante unos días que mide menos que el pronóstico del tiempo, y menos que los sensores de las páginas web con datos meteorológicos, investigando por ahí veo que parece que se compensan en altura.
  Es lógico, sino fuera así, las isobaras de los mapas del tiempo se deformarían sobre tierra firme dependiendo de la altura, según el datasheet:


El sensor se utiliza también para calcular la altura en aviones, drones, por eso al estar situado a 800 metros de altura mide menos que la presión a nivel del mar, despejando la presión a nivel del mar y sustituyendo la altura a la que está instalado el sensor, da que la presión a nivel del mar es igual a la presión medida dividido por 0,90873.

  En cuanto tenga un rato lo implemento en el hardware.

  El resto del montaje aquí

sábado, 12 de diciembre de 2015

Caldera WiFi

  Una caldera de Gasoil debe ser uno de los aparatos menos tecnológicos que quedan, pero como está tan de moda lo de "Internet de las cosas", vamos a darle un poco de inteligencia a la vieja caldera.
  Después de mucho tiempo invertido en el sistema de control de la caldera de Gasoil, varias entradas en este blog (aquí la última parte) y un montón de cacharros conectados para, al final, abandonarlo despues de casi dos años, vuelvo con un nuevo intento.
  Un sistema mucho más sencillo que se basa en una página web "Internet of Things" donde se registran todos los datos recogidos de la caldera y que simplifica muchísimo el sistema.
  En esencia es un microcontrolador con conexión wifi y tres sensores, como no hay cables para la conexión de red, todo es más sencillo y más limpio.
  Se trata de un ESP8266, un micro potente y capaz que en un encapsulado realmente pequeño integra, además de varios de los periféricos de un arduino, la capacidad de acceder a redes WiFi sin conectar hardware adicional, además se puede programar desde el IDE de Arduino, instalando una extensión como se explica aquí, lo que abre un montón de posibilidades.

  Esta historia empezó con el objetivo de tener la posibilidad de poder encender o apagar la caldera en remoto, desde el móvil o desde cualquier sitio con acceso a internet, pero una vez vistas las posibilidades que ofrece el cacharro junto con la página de ThingSpeak, se convirtió en algo mucho más completo, resumen de características:

  • Medición contínua del nivel de combustible, con envío de email automáticamente cuando se alcanzan unos niveles determinados.
  • Medición de:
    • Temperatura exterior.
    • Nivel de humedad relativa exterior.
    • Presión atmosférica.  
  • Capacidad de arranque/paro remoto.
  Además de las capacidades que añade ThingSpeak de registrar todos los datos que se le envien desde el micro, tenemos algunas variables adicionales calculadas en la nube y otras consultadas como la velocidad de viento, así tenemos:
  • Sensación térmica (calculada según la temperatura y la velocidad del viento).
  • Punto de rocío (calculada en base a la temperatura y humedad).
La velocidad del viento la consulto a Openweather.org programando un request ThngHTTP desde la página de Thingspeak.



   Al utilizar ThingSpeak no hace falta ni el reloj en tiempo real ni la tarjeta SD para guardar las lecturas, la plataforma en la nube que es ThingSpeak ya se ocupa de asociar a cada lectura la fecha y la hora correspondiente y de guardar las lecturas, según ellos sin límite de espacio (sí hay un límite en cuanto a la frecuencia de refresco que no puede ser en intervalos menores de 15 segundos).
  Hay un acceso público con algo menos de información aquí, donde podéis consultar datos en tiempo real y ver la temperatura o humedad en la Sierra antes de venir.

  Montaje:


  El ESP-12 (la versión del ESP8266 que estoy usando) es realmente pequeño, tanto que los pines están a menor distancia que la normal en los zócalos de circuitos integrados o de las protoboard, con lo que hay que buscar una forma de adaptarlo, yo utilicé una fila de pines estándar por cada lado soldados con unos trocitos de cobre, de los que se recortan de resistencias o condensadores.
Mide aproximadamente centímetro y medio por dos y medio.

  Una vez tenemos ya los pines  a la distancia estándar, ya lo podemos pinchar en la placa de prototipos y empezar a hacer pruebas:
  

  Como se puede ver en el prototipo hay varios sensores que pueden medir temperaturas, pero sólo se utiliza el BMP-180 para presión y temperatura, después de tener varios funcionando en paralelo, descarté el DS18b20, el DHT se utiliza sólo para la lectura de humedad, ya que su resolución de temperatura es muy pobre.
  El sensor de distancia por ultrasonidos se pone en la boca de llenado del tanque y nos mide la distancia hasta la superficie, con lo que podemos calcular la capacidad restante, está instalado como describía hace más de dos años aquí, y por cierto, está impecable, no le ha afectado ni la corrosión, ni los vapores del gasoil, ni nada parecido como se decía en algún comentario.
  Como este sensor funciona a 5V (el resto funcionan a 3,3V) necesitamos un divisor de tensión en su salida para adaptarlo a los niveles de entrada del ESP, que son las dos resistencias en la linea Echo del sensor.
  Los sensores de temperatura, humedad  y de presión atmosférica están, obviamente, en el exterior, al igual que el del tanque de gasoil que está en el trastero, todo cableado con un único cable UTP.
La placa ya funcionando.

Esquema:




Programa:


El programa está estructurado en funciones, dentro de la función principal, loop, se hace una lectura de cada sensor a través de una función de filtro, llamada medaianamodal, que hace 30 lecturas del sensor correspondiente, las ordena, descarta las de los extremos y calcula la media aritmética de los 10 valores centrales.
 Luego se comprueba el tiempo que ha pasado desde la última actualización y si han pasado más de 3 minutos, se llama a la función que sube los datos a ThingSpeak, además se comprueba si el nivel de combustible llega a unos valores que son:
   500l, envía un correo simplemente diciendo el nivel y las lecturas actuales.
   300l, envía un correo avisando de que el nivel está al 30%.
   200l, envía correo con el nivel al 20%.
   100l, envía correo avisando que queda un 10% y pidiendo repostar.
   50l, envía correo avisando que queda un 5% y pidiendo repostaje URGENTE.

  La rutina para enviar el correo está basada en la de jeanotP1314, en Instructables, Gracias por compartirlo, es un trabajo fantástico.
   Se comprueba si hay algún comando para ejecutar con la función getTalkBack() y se actúa sobre la salida que alimenta el relé.
  Y eso es todo el loop, el resto son funciones para ejecutar las acciones comentadas.

   El programa os lo dejo aquí.

  Hay una parte de programa que vive en la nube, es el programa que consulta la velocidad del viento en Openweathermap.org, calcula los datos de punto de rocio y sensación térmica y graba los datos en los canales correspondientes, es un programa de Matlab Analisys que os dejo en un archivo de texto aquí para copiar y pegar.
  Hay además una temporización, un TimeControl como le llaman en ThingSpeak que ejecuta el análisis cada 20 minutos.
  Por cierto, el cálculo de la sensación térmica está basado en la fórmula que os dejo en esta hoja excell, y que se puede imprimir para ver de un vistazo la sensación térmica.

Programa, esquema y demás aquí.

Conclusión:

  El utilizar una plataforma de almacenamiento en la nube como ThingSpeak, facilita mucho estos proyectos, además tiene varias funcionalidades que se pueden utilizar para ejecutar acciones cuando se den unas condiciones, p.e que la temperatura alcance un valor o cuando pase un tiempo determinado, para analizar los datos, etc.
  Por supuesto el montaje se puede utilizar para otras cosas, en este caso es una caldera pero igualmente se puede controlar un aire acondicionado, se puede utilizar otras salidas adicionales o podemos utilizar otros comandos, como veis en el programa, los comandos son cadenas de texto, no simplemente unos o ceros, con lo cual podemos enviar p.e. un comando que indique la temperatura que queremos y que el sistema funcione como un termostato, o un comando que indique el tiempo que queremos que esté encendida, o... las posibilidades son infinitas.
  Otra cosa que se puede hacer muy fácilmente es que el correo de aviso de nivel de combustible se envie directamente al proveedor para que venga a reponer, o que se genere un correo de alarma en caso de que se den otras circunstancias.
  En fin, se abren un montón de posibilidades.


lunes, 22 de junio de 2015

Para qué es el autoclave?

F5j.es


Esta es la página de los "fabricantes" de veleros eléctricos que le están dando uso al autoclave.
Espero que ganen muchas competiciones y sigamos evolucionando el invento, ¿alguien sabe si podríamos fabricar otras piezas de Fibra de Carbono?  Un cuadro de bici quizás?
El autoclave.
Gracias Santiago, Gracias Paco.