documentacion-proceso:tecnologicos:sensores:humedad_tierra
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaÚltima revisiónAmbos lados, revisión siguiente | ||
documentacion-proceso:tecnologicos:sensores:humedad_tierra [2016/02/02 18:37] – brolin | documentacion-proceso:tecnologicos:sensores:humedad_tierra [2016/02/25 21:50] – brolin | ||
---|---|---|---|
Línea 12: | Línea 12: | ||
Basado en los diseños encontrados en el siguiente enlace http:// | Basado en los diseños encontrados en el siguiente enlace http:// | ||
+ | |||
+ | FIXME Describir los pasos | ||
{{: | {{: | ||
Línea 37: | Línea 39: | ||
{{: | {{: | ||
{{: | {{: | ||
+ | |||
+ | FIXME Agregar los videos de demostración | ||
+ | |||
+ | {{https:// | ||
+ | {{https:// | ||
+ | {{https:// | ||
opciones comerciales - http:// | opciones comerciales - http:// | ||
+ | |||
+ | ==== Software ==== | ||
+ | |||
+ | * No funciona en arduino para el ESP8266 la librería FreqCounter por como son manejadas las interrupciones :S | ||
+ | * Ya se por lo menos qué es lo que hay que hacer para implementar una alternativa a la librería FreqMeasure que no funciona para el ESP. | ||
+ | - Necesito tomar una muestra de la señal por un determinado periodo de tiempo. | ||
+ | - Contar las interrupciones en el flanco de caída de la señal cuadrada que arroja el sensor | ||
+ | - Medir el tiempo entre cada interrupción (para detectar el período) | ||
+ | - Sacar el promedio de los periodos e invertirlo para obtener la frecuencia de la señal | ||
+ | |||
+ | Código que no funciona. La implementación del manejo de las interrupciones esta mal. Adaptado de acá http:// | ||
+ | < | ||
+ | //Number of pulses, used to measure energy. | ||
+ | long pulseCount = 0; | ||
+ | |||
+ | //Used to measure power. | ||
+ | unsigned long pulseTime, | ||
+ | |||
+ | //power and energy | ||
+ | double freq, | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(115200); | ||
+ | |||
+ | // interrupt attached to = pin5 | ||
+ | pinMode(5, INPUT_PULLUP); | ||
+ | attachInterrupt(5, | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | // The interrupt routine | ||
+ | void onPulse() | ||
+ | { | ||
+ | |||
+ | |||
+ | // | ||
+ | // | ||
+ | if(pulseCount++ < 4) {// Número de pulso de la muestra | ||
+ | //Calculate power | ||
+ | //used to measure time between pulses. | ||
+ | lastTime = pulseTime; | ||
+ | pulseTime = micros(); | ||
+ | | ||
+ | muestraTemporal = freq; | ||
+ | freq = pulseTime - lastTime; | ||
+ | |||
+ | muestraPromedio = (muestraTemporal + freq)/2; | ||
+ | | ||
+ | } else { | ||
+ | pulseCount = 0; | ||
+ | //Print the values. | ||
+ | Serial.println(muestraPromedio); | ||
+ | |||
+ | } | ||
+ | // | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Manejo de Interrupciones ==== | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | === Portando FreqMeasure para el ESP8266 === | ||
+ | |||
+ | * La librería verifica unas definiciones para en cada plataforma definir adecuadamente el tipo de timer y flags que va a usar en https:// | ||
+ | |||
+ | ==== TODO ==== | ||
+ | |||
+ | - Probar sming https:// | ||
+ | - Hay varios ejemplos que están en c++ plano. Sming es para poderlos probar\\ | ||
+ | - Probar platforma.io http:// | ||
+ | |||
+ | ==== Referentes ==== | ||
+ | Uso de los timers de ESP -> https:// | ||
+ | arduino-frequency-counterduty-cycle-meter -> https:// | ||
+ | FreqCounter -> http:// | ||
+ | Timer en el ESP8266 -> http:// | ||
+ | Contador de frecuencia con arduino (usa interrupciones - ISR) -> http:// | ||
+ | Ver como implementan los timers -> https:// | ||
+ | Tachometer - ESP8266 implementation -> https:// | ||
+ | Contador de pulsos - http:// | ||
+ | https:// | ||
+ | https:// | ||
+ | |||