Esta estacion metereologica comenzo con sensores reales
Servidor estacion de modo local
microcontrolador 24bits / esp-8266 esp-12
Medicion de temperatura y humedad: DHT-22
Medicion de presion atmosferica: BMP-180
Punto de rocio a presion atmosferica - Calculado
Pronostico - Calculado (mejorar)
Obtencion de request a API
No me agradan las API pero luego de leer un muy buen post
https://cirujadigital.wordpress.com/2017/01/11/obteniendo-informacion-de-internet-para-nuestro-proyecto-iot-apis-del-clima-geolocalizacion-fechahora-and-other-issues/
como que me dio curiosidad y admito que tiene una potencia increible pero dependemos de tener internet.
Api Geolocalizacion de google
Obtenemos los datos de georeferencia latitud y longitud desde donde generemos la peticion ip, o torre celular (funciona bien en mi caso no detecta antena pero me da la posicion por ip bastante acertada)
request(post-https) --->devuelve un json -->lo parseamos con arduino-json
Api Openweathermap
Obtenemos los datos del clima a partir de pasarle la latitud y longitud obtenida de la api de google
request(get-http) --->devuelve un json -->lo parseamos con arduino-json
Herramientas a usar
Rest Clinet para firefox para hacer las pruebas
Deben registrarse en ambas api para obtener las api_key y revisar la documentacion par obtener los datos.
openweathermap http://openweathermap.org/api
GET http://api.openweathermap.org/data/2.5/weather?lat=XXX&lon=XXX&APPID=(aca va su api_key)e&units=metric&lang=es
Geolocalizacion api google https://console.developers.google.com
Documentacion de su uso
https://developers.google.com/maps/documentation/geolocation/intro?hl=en_US
Esta es diferente usamos el metodo POST
POST https://www.googleapis.com/geolocation/v1/geolocate?key=("aca va su api_key")
Head
Content-Type: application/json
Body
{ "homeMobileCountryCode": 310, "homeMobileNetworkCode": 410, "radioType": "gsm", "carrier": "Vodafone", "considerIp": "true", "cellTowers": [ // See the Cell Tower Objects section below. ], "wifiAccessPoints": [ // See the WiFi Access Point Objects section below. ] }
Ahora con los datos de respuesta en formato JSON usamos la libreria arduino-json el cual tambien tiene un generador de variables dinamicas
https://bblanchon.github.io/ArduinoJson/assistant/
Aca dejo la implementacion de las api para la estacion metereologica no finalizada aun.
Estacion con sensores
sudo git clone https://github.com/pablinn/est_met.git
https://github.com/pablinn/est_met
Uso de API
sudo git clone https://github.com/pablinn/api_google.git
https://github.com/pablinn/api_google
Version final implementar todo mejorar la geolocalizacioncon un GPS real..
Saludos..
Mejoras implemente el modo deepsleep gracias a la ayuda del grupo esp8266 de facebook, con buenos resultados pero en el grupo me comentaban que el consumo deberia ser menor del orden de los uA
modo normal conectado 80mA
modo deepsleep 8mA deberia ser 10uA
Pero el regulado as1117 drena alrededor de 7.5 a 8 mAlo que nos da una vida de bateria aprox.
Segun este blog
http://arduinoamuete.blogspot.com.ar/2017/01/modo-deep-sleep-en-esp8266.html
ESP.deeepsleep( uint32_t uS,int modo de reinicio)
Machete :)
1 minuto --> 60 segundos S
1 minuto -> 60000 milisegundos mS (60exp3)
1 minutos -> 60000000 microsegundos uS (60exp6)
El maximo valor uint32_t seria 2^32 = 4294967296 uS = 71min , 32 seg
4294967296/ 60000000=71 minutos
//*gpio16 conectado a reset
if (millis() >= 60000) {//1 min
ESP.deepSleep(300 * 1000000, WAKE_RF_DEFAULT);//3min
}
//*
v_BAT [v] * a_BAT [ah] / vc_BAT [v] * ac_BAT [a]
7.4 V * 0.850 AH / 3.3 V * 0.082 A =23.2 Hs
7.4 V * 0.850 AH / 3.3 V * 0.008 A =238 Hs :)
las 238 hs son en teoricas ya que el consuma oscilaria entre 8mA a 80mA por lo que depende del tiempo
t <tiempo de actividad (mayor consumo 80mA)
t >tiempo de deepsleep (menor consumo 8mA)
En teoria este calculo lo saque de un blog
=(v_bat / corr_work ) * (tiempo_sleep / tiempo_work)
=(850mAH /80mA )* (300s / 60s)
=53 Hs
Si extendemos el tiempo de deepsleep aumentamos las horas de autonomia
=(850 /80 )* (600 / 60)
=106hs
=(850 /80 )* (2000 / 10) --->2000/60 = 33 minutos sleep x 10 seg work
=2125 hs
Probando la api de thingspeak esta bastante buena y podemos para realizar tendencias..
No hay comentarios.:
Publicar un comentario