Herramientas de usuario

Herramientas del sitio


documentacion-proceso:tecnologicos:sensores:humedad_tierra

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Última revisiónAmbos lados, revisión siguiente
documentacion-proceso:tecnologicos:sensores:humedad_tierra [2016/02/02 18:37] brolindocumentacion-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://zerocharactersleft.blogspot.com.co/2011/11/pcb-as-capacitive-soil-moisture-sensor.html y adaptándolo a materiales locales se ha construído un sensor para el jardín de las delicias versión unloquer. A continuación se muestra el proceso: Basado en los diseños encontrados en el siguiente enlace http://zerocharactersleft.blogspot.com.co/2011/11/pcb-as-capacitive-soil-moisture-sensor.html y adaptándolo a materiales locales se ha construído un sensor para el jardín de las delicias versión unloquer. A continuación se muestra el proceso:
 +
 +FIXME Describir los pasos
  
 {{:documentacion-proceso:tecnologicos:sensores:20160127_153907.jpg?200 |}} {{:documentacion-proceso:tecnologicos:sensores:20160127_153907.jpg?200 |}}
Línea 37: Línea 39:
 {{:documentacion-proceso:tecnologicos:sensores:20160130_224617.jpg?200 |}} {{:documentacion-proceso:tecnologicos:sensores:20160130_224617.jpg?200 |}}
 {{:documentacion-proceso:tecnologicos:sensores:20160130_224630.jpg?200 |}} {{:documentacion-proceso:tecnologicos:sensores:20160130_224630.jpg?200 |}}
 +
 +FIXME  Agregar los videos de demostración
 +
 +{{https://archive.org/download/20160130230025/20160127_175959.ogv}} 
 +{{https://archive.org/download/20160130230025/20160130_225152.ogv}}
 +{{https://archive.org/download/20160130230025/20160130_230025.ogv}}
  
 opciones comerciales - http://vegetronix.com/ opciones comerciales - http://vegetronix.com/
 +
 +==== 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://openenergymonitor.org/emon/node/123
 +<code>
 +//Number of pulses, used to measure energy.
 +long pulseCount = 0;   
 +
 +//Used to measure power.
 +unsigned long pulseTime,lastTime;
 +
 +//power and energy
 +double freq,muestraPromedio,muestraTemporal;
 +
 +void setup()
 +{
 +Serial.begin(115200);
 +
 +// interrupt attached to = pin5
 +pinMode(5, INPUT_PULLUP);
 +attachInterrupt(5, onPulse, FALLING);
 +}
 +
 +void loop()
 +{
 +
 +}
 +
 +// The interrupt routine
 +void onPulse()
 +{
 +
 +
 +//disable_interrupt()
 +//pulseCounter
 +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);
 +
 +}
 +//enableInterrup()
 +
 +}
 +</code>
 +
 +==== Manejo de Interrupciones ====
 +https://en.wikipedia.org/wiki/Interrupt_handler\\
 +https://www.arduino.cc/en/Reference/AttachInterrupt\\
 +https://www.sparkfun.com/tutorials/326\\
 +
 +=== 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://github.com/unloquer/FreqMeasure/blob/master/util/FreqMeasureCapture.h#L69, se agrega una para que pase la compilación. El compilador usa el macro -DESP8266 que proviene del archivo https://github.com/esp8266/Arduino/blob/master/platform.txt en la variable build.extra_flags
 +
 +==== TODO ====
 +
 +- Probar sming https://github.com/SmingHub/Sming\\
 +- Hay varios ejemplos que están en c++ plano. Sming es para poderlos probar\\
 +- Probar platforma.io http://platformio.org/#!/\\
 +
 +==== Referentes ====
 +Uso de los timers de ESP -> https://github.com/DINGGLABS/ESP8266/blob/master/WiFi-Button/WiFi-Button.ino\\ 
 +arduino-frequency-counterduty-cycle-meter -> https://www.electronicsblog.net/arduino-frequency-counterduty-cycle-meter/\\
 +FreqCounter -> http://www.pjrc.com/teensy/td_libs_FreqMeasure.html\\
 +Timer en el ESP8266 -> http://www.switchdoc.com/2015/10/iot-esp8266-timer-tutorial-arduino-ide/\\
 +Contador de frecuencia con arduino (usa interrupciones - ISR) -> http://www.chemcool.co.za/p/603366/arduino-frequency-counter-6-mhz\\
 +Ver como implementan los timers -> https://github.com/NEBULAIR/esponics/blob/master/esponics-01/esponics-01.ino\\
 +Tachometer - ESP8266 implementation -> https://github.com/eadf/esp8266_tachometer
 +Contador de pulsos - http://openenergymonitor.org/emon/buildingblocks/introduction-to-pulse-counting -> código: http://openenergymonitor.org/emon/node/123 (Por este lado va, ¿cómo se deshabilitan las interrupciones?)
 +https://github.com/esp8266/source-code-examples/blob/master/interrupt_example/Makefile
 +https://github.com/esp8266/Arduino/blob/ea302aab05480ad36c076b618abb642b1eb1893b/hardware/esp8266com/esp8266/libraries/Servo/src/esp8266/ServoTimers.h
 +