Introduction: Inventoria Sensor Kit

About: Músico, matemático, computación, ciencia... insolente y subversivo, pero siempre propositivo

El sensor kit de Inventoría es una iniciativa de la Fundación Costa Rica para la Innovación en conjunto con CrCibernetica.com, con quienes desarrollamos un kit para facilitar el aprendizaje de herramientas como el Arduino, y facilitar aplicaciones donde el objetivo es medir algún tipo de información y generar algún mecanismo para actuar ante esa información.

Inventoría es un makerspace de acceso público y sin fines de lucro en Costa Rica. Pueden adquirir el sensor kit acá

Step 1: Sensores En El Kit

El sensor Kit incluye

  1. Sensor de luz
  2. sensor dedigital de temperatura DS18B20
  3. Sensor de gases MQ2
  4. Switch magnético
  5. Sensor de tacto
  6. Sensor de distancia ultrasónico HC-SR04
  7. Relay
  8. Sensor infrarojo
  9. Pantalla LCD 1602

El kit no incluye Arduino. La pantalla es compatible con cualquiera de las versiones de Arduino.

Step 2: Conexiones

Todos los sensores vienen con pines o "patas" para facilitar la conexión. En el kit además se incluyen los cables para conectarlos rápidamente.

El conector de cada sensor trae tres "patas", una marcada con G, que corresponde a GND en el arduino (tierra), la del centro que dice V, que corresponde a conexión de 5v, y S que corresponde a "signal" o señal, y es donde el sensor envía o recibe información.

Step 3: Pantalla LCD 1602

La pantalla incluida en el kit es muy útil para hacer lecturas de sensores y mostrarlas en un display. La pantalla trae botones y puertos de conexión para cables, los cuales utilizaremos en este tutorial.

conexión

La pantalla simplemente se conecta al Arduino, haciendo coincidir los pines de la pantalla con las del Arduino como se muestra en la foto.

Librería

Para usar la pantalla utilizamos la librería LiquidCrystal, que viene con el Arduino IDE. Detalles y buenos ejemplos de uso de esta librería van a encontrar acá.

Uso

En el código, los comandos importante son:

#include <LiquidCrystal.h><br>

Lo que hace es incluir la librería en el código. La línea

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Lo que hace es que inicia la pantalla LCD. Los números allí indican los pines que van a ser utilizados en la pantalla para hacerla funcionar. Esos pines son los que especifica el fabricante. En el setup:

void setup() {
  lcd.begin(16, 2);
}

el comando lcd.begin(16,2), indica que es una pantalla de 16 caracteres en las columnas, 2 caracteres en filas. El loop principal:

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Hola a todos!");
  lcd.setCursor(0, 1);
  lcd.print("Sensor Kit");
  lcd.display();
  delay(300);
}

El comando lcd.setCursor, pone el cursor en la posición 0,0, a partir de allí cuando se ejecuta lcd.print("Hola a todos!"), se desplegará a partir de esa posición. Como ven, la línea siguiente dice lcd.setCursor(0, 1), esto indica que ahora vamos a escribir a partir de la primera columna, segunda fila. Al final lcd.display(), lo que hace es refrescar la pantalla con lo que acabamos de escribir con lcd.print(), este comando se ejecuta cada vez que se quiere cambiar la información desplegada en la pantalla.

Botones en la pantalla

La pantalla además cuenta con unos botones. En este instrutable no hablaremos de ellos, pero pueden ver este otro, para aprender a usarlos. Todos esos botones están conectados al pin A0, por eso este pin no es accesible desde los conectores al lado derecho de la pantalla.

Step 4: Lectura Digital Y Analógica

En el arduino UNO, los pines de A0-A5 son los pines pueden hacer lecturas analógicas. Sin embargo, también pueden ser utilizados como pines digitales de entrada o salida. Por esa razón el shield LCD 1602, es extremadamente útil para hacer lecturas en sensores digitales o analógicos y desplegar los datos en la pantalla. En cuestión de minutos se puede hacer un instrumento de medición.

Lectura Analógica

Para leer un pin analógico, en el setup, se debe definir que el pin es de entrada:

pinMode(A1,INPUT);

Donde A1, puede ser cualquiera entre A1-A5. A0 se utiliza para accesar los botones como se explicó anteriormente. Luego en el loop principal, utilizamos el comando:

analogRead(A1);

Para hacer las lecturas analógicas. Arduino UNO tiene un convertidor análogo-digital (ADC) de 10 bits, es decir, voltajes de entre 0 y 5v son leídos como valores entre 0 y 1023 (10 bits de información).

Lectura digital

Ahora bien, sin cambiar nada en el setup, también podemos hacer:

digitalRead(A1);

En este caso, la lectura será de un valor 0, cuando el voltaje es menor que 3.5, y 1 cuando es mayor o igual. Como ven se puede utilizar como pin de entrada digital. Si definen pinMode(A1,OUPUT), pueden utilizar el pin A1 como cualquier otro pin digital de salida digital. En este instructable hay más sobre pines. En los siguientes pasos, esto se utilizará y quedará más claro.

Step 5: Sensor De Luz

El sensor de luz es muy sencillo de utilizar. Nada más conectar el sensor como se muestra en las fotos. El código es sencillo. Hay que inicializar el el pin A1 como INPUT, hacer las lecturas y desplegar en la pantalla.

Lectura analógica

Este sensor de luz puede leerse en analógico. Para eso mover el pequeño interruptor a posición "A". Cargar el código adjunto al Arduino, y la lectura se vera como en la foto. Al tapar con la mano el sensor las lecturas bajan, y al acercar una luz fuerte las lecturas aumentarán.

Lectura digital

El sensor al poner el interruptor en posición "D", funciona como "trigger", es decir, a partir de un valor crítico de luz, emite una señal de "on" y de lo contrario una "off". Muy útil para por ejemplo hacer una luz que se prenda cuando la luz exterior es menor a un valor predeterminado. Ese valor de trigger lo podemos cambiar con el potenciómetro como se ve en la foto. Dejemos el mismo código, solo que ahora en la línea donde dice analogRead(A1), cambiémoslo a digitalRead(A1). cargue el código y note la diferencia.

Luego, carguemos más bien el segundo código "SensorKit_LIghtSensorB.ino". El vídeo muestra el resultado

Step 6: Sensor Infrarojo

Este sensor utiliza un emisor y detector infrarojo, para detectar la señal que se refleja en una superficie. Es decir, se puede utilizar para detectar proximidad o para detectar líneas negras, como muestro en este ejemplo. Simplemente conecten el sensor como se indica en la foto, y al puerto A1, del LCD shield.

Detector de líneas

El código que utilizamos es muy sencillo. El pin A1, lo inicalizamos como pin de entrada con pinMode(A1,INPUT), y luego simplemente leemos con digitalRead. El potenciómetro ajusta la sensibilidad del sensor. EL código principal:

lcd.setCursor(0, 0);
if (digitalRead(A1)) {
    lcd.print("     ");
  } else {
    lcd.print("Linea");
  }
  lcd.display();

En el loop, la lectura del sensor arroja un 1 cuando repleja y un 0 cuando no hay reflejo por la línea negra. Carguen el código "SensorKit_InfraredB.ino" en el arduino.

En la pantalla veremos "linea" cuando hay algún marcador negro, y nada cuando no.

Proximidad

Otra forma de usa el sensor es detectar que tan cerca está de alguna superficie. En el segundo vídeo se ve como funciona. Como ven el código "SensorKit_Infrared.ino" es prácticamente el mismo.

Step 7: Sensor De Tacto

Este sensor es un sensor capacitivo, es decir puede detectar la capacitancia humana y por tanto cuando tocamos el sensor con nuestras manos. Muy practico para aplicaciones de botones escondidos.

El código es muy similar al del sensor infrarrojo que explicamos en el paso anterior. Carguen el código y los dejo con un vídeo para que vean como funciona.

Step 8: Switch Magnético

El interruptor magnético es un sensor que tiene un metal que interrumpe o conecta un circuito en presencia de un imán. Muy práctico para sensor de puertas y ventanas para saber si están abiertas o cerradas.

El código es muy similar al detector de tacto. Carguen el código adjunto y pongan a prueba como se ve en el vídeo

Step 9: Sensor De Gases

El sensor de gas MQ-2 es un detector multiuso que detecta LPG, butano, alcohol, hidrógeno, humo y algunos otros gases. En este instructable mostramos el sensor detectando alcohol. Es un sensor análogo, así que usamos analogRead() para leer la información del sensor.

La conexión es igual que los otros sensores. Cargar el código y listo. El código se explica solo.

En el vídeo utilizo alcohol etílico 80% cuando se acerca la servilleta con alcohol el sensor rápidamente lo detecta. Para otros gases y sensibilidad pueden leer la información del fabricante.

Step 10: Sensor Digital De Temperatura

Librerías

Para la lectura del termómetro digital, vamos a utilizar dos librerías. Una que se llama OneWire, que para instalarla hay que abrir "Sketch > Include Library > Manage Libraries". Como se ve en la foto, en la venta que aparece buscar "OneWire" e instalar la librería que se indica en la foto.

La otra que es del fabricante del sensor de temperatura, Dallas Temperature Control. Bajar el archivo del link. Una vez bajado, abrir en "Sketch > Include Library > add .ZIP Library", como se muestra en la foto, y buscar el archivo bajado. Esto instalará automáticamente la librería.

Código

No voy a entrar en muchos detalles en el código. Lo importante son las líneas donde dice:

sensors.requestTemperatures();
lcd.print(sensors.getTempCByIndex(0));

Allí es donde se pide la información digital del sensor, y donde se acceso para colocarlas en la pantalla LCD. En este link pueden encontrar más información sobre la librería. También pueden ver los ejemplo que vienen con la librería. Adjunto está el código completo

Funcionando

Solamente cargue el código y listo. Debería de inmediato dar lecturas. Póngalo en el freezer para que vea como responde bastante rápido.

Step 11: Medidor De Distancia Ultrasónico

El sensor ultrasónico, emite una señal ultrasónico que al rebotar en una superficie y regresar es medida, y calculando el tiempo que tarda en llegar, se puede medir la distancia con bastante precición.

Conexión

Para conectarlo simplemente conecte "vcc" a +5V en el shield, "Gnd" del sensor con GND del shield, "Trig" and la entrada A1, y "Echo" en el A2, así como se ve en la foto.

Código

El código es algo más complejo. Básicamente hay que hacer que el arduino emita una señal con el sensor y luego hacer que espere en recibirla con el comando pulseIn(), que nos permite hacer eso. Pueden encontrar más detalles sobre pulseIn en la página de Arduino.

El pin A1, lo asignamos de OUTPUT y el pin A2 de INPUT. Ambos debe ser activados en HIGH, utilizando digitalWrite(), en la sección de setup:

pinMode(A1, OUTPUT);
digitalWrite(A1, HIGH);
pinMode(A2, INPUT);
digitalWrite(A2, HIGH);

En el código principal loop, la parte que pone a funcionar el sensor es la siguiente:

digitalWrite(A1, LOW); // Send low pulse 
delayMicroseconds(2); // Wait for 2 microseconds
digitalWrite(A1, HIGH); // Send high pulse
delayMicroseconds(5); // Wait for 5 microseconds
unsigned long echo = pulseIn(A2, HIGH); //Listen for echo
float distance = (echo / 58.138); //convert to CM

Lo que hace el código es mandar un pulso con digitalWrite al pin A1, y luego espera recibirlo con el comando pulseIn, en el pin A2. El tiempo que tarda, y considerando la velocidad del sonido, permite calcular en centímetros la distancia.

El resto del código son todas las operaciones de despliegue de pantalla que ya se explicaron antes.

Step 12: Relay Y Sensor De Luz

Un "relay" o relé en español, es un interruptor electromecánico, que permite controlar un circuito eléctrico con otro circuito eléctrico. Este relé funciona con 120VAC, es decir corriente alterna de las casas, por un lado, y el circuito del Arduino para controlarlo por el otro.

CUIDADO!!!!! en este proyecto trabajamos con 120VAC, así que deben trabajar con mucho cuidado para evitar un shock eléctrico.

Materiales adicionales

Para este proyecto vamos a ocupar además del relé y el sensor de luz, un poco más de materiales:

  1. Extensión eléctrica
  2. Conector de terminales
  3. Cautín y soldadura

Cortar la extensión eléctrica, y "estañar" los cables como se ve en la foto.

Conexión

Las conexiones son sencillas. Conectar el sensor de luz al pin A1 de la pantalla, y colocarlo en modo digital. El relé conectarlo al pin A2 de la pantalla (ver fotos).

Conectar la extensión al relé como se muestra en la foto. En el relé, se conecta un lado de la extensión al COM y del otro, donde está la terminal hembra, al NC (o NO). NC quiere decir "normally closed" es decir cuando no está activado, esta cerrado (sin conexión).

Código

EL código es básicamente el código del ejercicio del sensor de luz, pero modificado con un pinMode(A2,OUTPUT) en el setup para activar el relé, En el condicional if activamos o desactivamos el relé con el comando digitalWrite(A2,HIGH) o digitalWrite(A2,LOW). Listo, cargar el código y ponerlo a funcionar como se muestra en la foto.