Herramientas de usuario

Herramientas del sitio


proyectos:talleres_esp:start

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
proyectos:talleres_esp:start [2017/06/06 22:37] – [eMotion] brolinproyectos:talleres_esp:start [2018/03/10 21:30] (actual) miguel
Línea 105: Línea 105:
  
 FIXME Agregar esquema de la biostation FIXME Agregar esquema de la biostation
 +
 +https://github.com/unloquer/TalleresESP/tree/master/bioStation
  
 [[proyectos:talleres_esp:biostation|BioStation]] [[proyectos:talleres_esp:biostation|BioStation]]
 +==== Luz / Cantidad de fotones ====
 +
 +Hay varias maneras de medir luz, la mas comun y barata puede ser una fotoresistencia, que ademas es bastante conocida en el mundo del DIY. Un componente mas preciso y con mucho menos ruido es el fotodiodo; el fotodiodo es un semiconductor que transforma luz en corriente electrica, la luz que produce es debido a los fotones que almacena. Debido a que lo que necesitamos es leer esa corriente electrica, la alimentacion debe ser inversa, convertir un LED en un sensor de luz. Ya que el fotodiodo es bastante adecuado lo unico que necesitamos para tomar lecturas de el y medir la luz es conectarlo a traves de un divisor de voltaje al pin analogo del microcontrolador. Tener en cuenta que como necesitamos alimentarlo a la inversa el catodo -pata negativa del fotodiodo- va conectado a positivo del microcontrolador
 +
 +{{:proyectos:talleres_esp:fotodiodo.png?400|}} 
 +
 +Este es un codigo que cada segundo saca una media de la cantidad de luz en donde se encuentra e imprime en la consola, mientras mas luz mas corriente y por lo tanto un valor mas alto. En nuestro garaje con la luz apagada da un muy bonito 0
 +
 +<code c>
 +#include "Arduino.h"
 +
 +const int sensor_pin = 0;
 +int s_value, mean_value, sum_value;// variables para almacenar el valor, y la media de 20 muestras para un mejor resultado
 +int samples = 20;
 +
 +void setup(){
 +
 +  Serial.begin(9600);
 +
 +}
 +
 +void loop(){
 +
 +  sum_value = 0;
 +  for(int i = 0; i < samples; i++){
 +
 +// tomamos 20 muestras por segundo, 1 cada 50 ms
 +
 +    s_value = analogRead(sensor_pin);
 +
 +    sum_value += s_value;
 +    delay(50);
 +
 +  }
 +// media de valores
 +  mean_value = sum_value/samples;
 +
 +
 +  Serial.print("mean value: ");
 +  Serial.println(mean_value);
 +
 +}
 +</code>
 +
 +{{:proyectos:talleres_esp:20180305_191332.jpg?400|}}
 +
 +
 +https://makezine.com/projects/make-36-boards/how-to-use-leds-to-detect-light/ 
 +==== Soil Moisture ====
 +
 +Para leer cambios de humedad en el suelo existen varias técnicas, una que nos interesó bastante es un circuito conductivo basado en el famoso timer 555, y el circuito es el mismo de un drawdio -mas emocionante todavia-; para los que en algún momento han construido ese lápiz que suena depronto se dieron cuenta que lo que hace el timer es apagarse y prenderse cada tanto tiempo, esto genera un pulso a cierta frecuencia y por eso suena :B  .Un pulso puede tener diversos tiempos para sus tiempos de encendido y apagado o.O, digamos que tenemos un pulso que dura 1sg, podemos encender 0.5sg y apagar 0.5sg el timer, o que tal 0.1sg y 0.9sg? ^^, a esto se le llama "duty cycle".La librería de arduino tiene una función que mide el tiempo que un input se encuentra en alguno de estos estados, se llama pulseIn(). En términos generales el duty cycle sube y la frecuencia baja mientras más húmedo se encuentre el suelo, aqui se abre la opción de generar más datos, todavía falta generar mas datos e implementar bien la relación duty cycle/frecuencia
 +
 +El código para leer la frecuencia a partir del periodo de tiempo formado por el pulso HIGH y LOW es el siguiente:
 +
 +<code c>
 +#include "Arduino.h"
 +
 +int pulse_pin = 2;
 +// pulse in devuelve unsigned long, tener cuidado con el envio de esta variable a otros entornos
 +
 +unsigned long pulse_high_time, pulse_low_time, period;
 +int frecuency;
 +int inByte = 0;
 +
 +//---------------------
 +void setup(){
 +
 +  Serial.begin(9600);
 +  pinMode(pulse_pin,INPUT);
 +
 +}
 +//--------------------------------
 +void loop(){
 +
 +    pulse_low_time = pulseIn(pulse_pin,LOW);
 +    pulse_high_time = pulseIn(pulse_pin, HIGH);
 +
 +    period = pulse_low_time + pulse_high_time;
 +    
 +    frecuency = 1000000/period; // valores en sg, 10M de microsegundos son 1 segundo
 +
 +    Serial.print("high :");
 +    Serial.print(pulse_high_time);
 +    Serial.print("\t");
 +    Serial.print("low :");
 +    Serial.print(pulse_low_time);
 +    Serial.print("\t");
 +    Serial.print("frecuency:  ");
 +    Serial.println(frecuency); 
 +
 +    delay(30);
 + 
 +}
 +</code>
 +
 +probado en áreas pequeñas :3 y con bastante humedad
 +
 +{{:proyectos:talleres_esp:20180305_112548.jpg?400|}}{{:proyectos:talleres_esp:20180305_152428.jpg?400|}}{{:proyectos:talleres_esp:2018-03-05-114439_1920x1080_scrot.png?400|}}
 +
 +referentes:
 +
 +https://en.wikipedia.org/wiki/Duty_cycle
 +
 +https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/ 
 +
 +
 +
 +[[proyectos:talleres_esp:soilmoisture|ver detalles soil moisture]]
  
 ==== Automator ==== ==== Automator ====
  
 FIXME Agregar esquema del automator FIXME Agregar esquema del automator
 +
 +https://github.com/unloquer/TalleresESP/tree/master/autoMator
  
 [[proyectos:talleres_esp:automator|AutoMator]] [[proyectos:talleres_esp:automator|AutoMator]]
Línea 118: Línea 230:
 FIXME Agregar esquema del emotion FIXME Agregar esquema del emotion
  
-FIXME Agregar repositorio+https://github.com/unloquer/TalleresESP/tree/master/eMotion
  
 [[proyectos:talleres_esp:emotion|ver detalles eMotion]] [[proyectos:talleres_esp:emotion|ver detalles eMotion]]
 +
proyectos/talleres_esp/start.1496788625.txt.gz · Última modificación: 2017/06/06 22:37 por brolin