lunes, 28 de marzo de 2016

Jugando a pilotos

   Este fin de semana he estado probando a editar videos grabados con el drone, superponiendo unos gráficos con los datos de vuelo, el software de edición de video es de Garmin, VIRB, es gratuito y bastante potente, aunque los datos del Bebop2 no son compatibles de manera nativa y hay que traducirlos con Flight Data Manager, otra aplicación gratuita que te permite extraer un montón de información de los registros de vuelo del Bebop2.

  Aquí los videos (mejor verlos a pantalla completa porque están grabados en 1080p):




jueves, 24 de marzo de 2016

Pronóstico del tiempo

Ya que tenemos sensores de temperatura, humedad, presión, velocidad del viento y demás, podremos predecir el tiempo?

Pues hay recursos por ahí para hacerlo, pero no es fácil, ni las agencias meteorológicas aciertan a veces... Con súper ordenadores dedicados a calcular modelos de predicción, satélites, sensores por todo el mundo y demás, tampoco pretendo competir con ellos.
  Pero encontré un modelo de principios de siglo muy curioso, que se basa en la variación de la presión, el modelo Zambretti, si es cierto lo que dicen, acierta en un 90% las predicciones leídas a las 9 de la mañana... Supongo que como se hacía en los barcos para predecir las tormentas mirando la velocidad de bajada del barómetro.
   El algoritmo tiene en cuenta un montón de combinaciones de datos de los sensores para elegir un pronostico entre la lista de 26 posibles estados del tiempo.
Las posibles predicciones traducidas que he incorporado en el algoritmo:
1.Bueno, estable
2.Buen tiempo
3.Bueno, mejorando
4.Bueno, un poco menos estable
5.Bueno, algun posible chubasco
6.Casi bueno, mejorando
7.Casi bueno, posible chubasco pronto
8.Casi bueno, posibles chubascos mas tarde
9.Chubascos pronto, mejorando
10.Variable, mejorando
11.Variable, probable lluvia
12.Mas bien inestable, aclarando luego
13.Inestable, probablemente mejorando
14.Lluvioso con intervalos de claros
15.Lluvioso, tendiendo a mas inestable
16.Variable, algo de lluvia
17.Inestable, algun corto intervalo de claros
18.Inestable, lluvia mas tarde
19.Inestable, algo de lluvia
20.En general inestable, algo mejor a veces
21.Lluvia ocasional, empeorando
22.Lluvia a veces, muy inestable
23.Lluvia intervalos frecuentes
24.Lluvia, muy inestable
25.Tormenta, puede mejorar
26.Tormenta, muy lluvioso

Los números se los he puesto para tener una idea de la escala y tener de un vistazo el grado de "bueno" de un tiempo bueno.

  Para calcular la variación de la presión de una manera simplificada, en vez de utilizar derivadas de la función resultante, lo que hace el algoritmo es calcular la media de los valores de los últimos 30 minutos y de los últimos 10 minutos, si ésta es mayor, la presión está subiendo y viceversa.

  En ThingSpeak está configurado como un plugin, os dejo el código HTML, CSS y JAVASCRIPT en un archivo de texto donde siempre  este plugin genera una visualización en una ventana como las de siempre, con el texto de la predicción.



  Se me ocurre ahora que sería fácil implementar un montaje decorativo como aquellos monjes que había de madera y cartón que hacían una especie de predicción del tiempo:


  Estos funcionaban con un pelo humano que hacía de higrómetro, según la humedad del aire se encogía o estiraba moviendo la mano del pobre fraile... Entonces pondría lluvioso cuando ya el aire estuviese húmedo.

  Pues con el algoritmo anterior adaptado al micro y un servo para mover el brazo, sería fácil de hacer, y además podría funcionar de manera autónoma sin conexión a internet, y supongo que mejor que lo del pelo...

  Esto es parte del invento de la caldera WiFi, el resto aquí y en las entradas posteriores.

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í