Tutorial 1: Entradas, Salidas y Sonido

Versión 4

       

     
      Paso 1: Entradas, Salidas y Sonido

       
       

    Se encuentra a tu alrededor, sin embargo, puedes verlo? El sonido es una onda de presión que esta formada de diversas frecuencias, las cuales pueden propagarse a través de diversos medios como el aire o el agua. Nosotros como humanos tenemos la capacidad de escuchar, sentir e interpretar el sonido. La maquinas por otra parte tienen una forma única y fascinante de interpretar el sonido.
         
    En esta lección exploraremos como un micrófono, interpreta el sonido como una serie de números. Para interactuar con este sensor, primero debes de conectarlo de manera correcta. Para  cumplir esta ultima sentencia aprenderás como funciona una placa de pruebas (protoboard) y como realizar conexiones para formar un circuito dentro de ella. Ademas de lo anterior, aprenderás como calcular los valores para los resistores de tu proyecto en base a los componentes que lo conforman.

     

    Paso 2: Equipo requerido

         
         
     
    • Placa Intel® Galileo
    • Fuente de poder para Galileo.
    • Cable microUSB (Tipo B)
     

    Esta lección hace uso de los siguientes componentes que esta disponibles para su compra por separado:

           
     

    Paso 3: Placa de pruebas

     

    Una placa de pruebas puede ser usada para llevar a cabo un prototipo de tu siguiente gran idea. Lo increíble de estas placas es que son re-utilizables. Todo maker debe de tener algunas para sus proyectos.

     

         
    Las pistas horizontales, marcadas con los símbolos + y -, permiten un flujo de corriente eléctrica a todo lo largo de la placa de pruebas. Las       pistas verticales, definidas por columnas de la 'a' a la 'j', y filas de la '1' a la '30', permiten el flujo de corriente solo en forma horizontal.
         
    La mayoría de las placas de prueba siguen esta distribución. Las lineas verticales, azul y roja, son utilizadas de manera regular para conectar la linea de voltaje (V) y tierra (GND) desde la fuente de poder a la tabla de pruebas. Galileo requiere una alimentación de 5 volts, sin embargo puede ofrecer una linea de alimentación tanto de 5 como de 3.3 volts. Para alimentar tu placa de pruebas desde galileo solo tienes hacer una conexión con las terminales de 3.3 V o 5 V presentes en galileo. En total, Galileo ofrece dos terminales de tierra (GND) y dos terminales de poder (PWR).
         
    Para empezar a utilizar algunos sensores, deberás utilizar al menos 3 cables:
         
     
    • 1 para la entrada de tierra (GND)
    • 1 para la entrada de poder (PWR)
    • 1 para comunicar tu placa Galileo con el modulo.
     

    Antes de empezar a conectar cables, es necesario que conozcas cuanta energía eléctrica requiere tu modulo o sensor para funcionar de manera correcta. De manera general puedes buscar esta información con el fabricante del modulo, por ejemplo, la hoja de especificación de nuestro micrófono indica que se requiere alimentar el circuito con 5 V o 3.3 V.

     

    Cuando trabajes con un sensor o modulo por primera vez, siempre revisa su hoja de especificaciones! Esto es un paso crucial para el éxito de tu circuito, ya que una alimentación o conexión incorrecta puede provocar un mal funcionamiento o incluso dañar tu sensor, tu Galileo o ambos!  


     

     

    Paso 4: Entradas Básicas

               
     

    Primer paso: Conecta la alimentación de tu circuito!

     

    Utilizando dos cables, conecta las ultimas terminales de las lineas verticales de la tarjeta de prueba con las terminales de poder y tierra que se encuentran debajo del logo de Intel® Galileo.

     

    El uso de los últimos espacios de las pistas verticales te dará mas espacio para trabajar en el resto de la placa de pruebas. Recuerda, conecta la pista azul a cualquiera de las dos terminales marcadas como GND en Galileo. La terminal de poder de 5 volts de Galileo deberá de conectarse a la pista roja del la placa de pruebas.

     

    Segundo paso: Alimenta el sensor de sonido 

     

    Conecta las terminales de poder y tierra del sensor de sonido a sus pistas correspondientes en la placa de pruebas. De manera regular, los sensores tienen un cable rojo para conectar a una terminar de poder, y un cable de color negro para la terminal de tierra (GND), sin embargo debes cerciórate de este dato en la hoja de especificaciones del dispositivo.

     

    Paso 3: Prepara la placa de pruebas para la comunicación con el micrófono
        

    La sección media de la placa de pruebas distribuye las señales de manera horizontal. Conecta un cable desde la terminal aun disponible del sensor a una de las columnas internas de la placa de pruebas. Con otro cable, conecta la terminal marcada como A0 de la placa Galileo a la misma fila donde conectaste el cable anterior.

     

         
         
    El micrófono es alimentado por medio de las pistas verticales. Para comunicarse con la placa Galileo, el micrófono utiliza una de las pistas       horizontales del área media de la placa de pruebas.
         
                                                     
    Nota: Para  apturar datos emitidos por el micrófono, utilizaremos la terminal análoga numero 0, esta terminal es nombrada A0 dentro del código Arduino. Haremos uso de una función llamada analogRead, la cual regresa un valor entre 0 y 1023, donde 0 es igual a 0 volts y 1023 representa una lectura de 5 volts.
                 
    Por que el valor máximo es 1023?
                 
    Intel Galileo cuenta con un chip AD7298, el cual es un convertidor análogo-digital de 10 bits. Utilizando el sistema binario (base 2), obtenemos que 2^10 = 1024. Sin embargo en ciencias de la computación, las secuencias numéricas inician con el numero 0, por lo que el valor máximo es 1023.
        

    Paso 4: Visualizando el sonido:

     

    Una vez que todos los cables han sido conectados de manera correcta, es tiempo de alimentar tu placa Galileo. Después de la alimentación, conecta el cable microUSB a tu computadora y si aun no tienes abierta la aplicación de Arduino es momento de abrirla.  

    Carga el siguiente Sketch a tu placa Galileo para que sea ejecutado:    

     

     

    //Declare and assign an integer variable that stores the pin of the microphone sensor    

    int pin_sound = A0;

     

    // Declare an integer variable that will store the sound sample from the microphone    

    int sound_sample;

     

    void setup() {    

    // Begin serial communication at 57600 bits per second.    

    Serial.begin(57600);

    }

     

    void loop() {    

    // Assign the current sound reading sound_sample     

    sound_sample = analogRead(pin_sound);

     

    // Print the sound sample to the serial monitor    

    Serial.println(sound_sample);    

    } 

        

    El puerto serial es utilizado para comunicar tu computadora con la placa Galileo a través del cable microUSB. El puerto serial representa un conjunto de funciones agrupadas bajo el nombre -Serial-, como en el sketch anterior, , una de esta funciones (a veces llamados métodos) es la función begin. Esta función establece una velocidad de transferencia de información de 57600 bits por segundo.

     

    Para visualizar la comunicación entre la placa Galileo y el micrófono, abre una nueva ventana de monitor serial, realizando un clic en la parte superior derecha de la interfaz de usuario de Arduino. Una vez abierto el monitor serial, habla al micrófono:

     

     

         
         
    Una cadena de valores representa la captura de sonido que esta ocurriendo en tiempo real.
         
    Conforme el micrófono capta nuevas ondas sonoras, podrás notar como ocurren cambios en la ventana del monitor serial.
         
    El monitor serial es utilizado para mostrar información en transito entre dispositivos.in la función setup, hay una referencia a otra función llamada Serial.begin, a la cual se le proporciona un parámetro de 57600. Este ultimo numero representa la velocidad de transmisión, en bits por segundo (bauds), entre la placa Galileo y tu computadora.Si en el monitor serial seleccionas una velocidad diferente, a 57600 para este ejemplo, podrás observar que se despliegan caracteres en la pantalla que no tienen sentido alguno. Siempre verifica que la velocidad de transmisión entre la computadora y la placa Galileo corresponda con la velocidad a la que el monitor serial esta prestando atención.
         
    No se despliega nada en el monitor serial?
    • Estas utilizando la velocidad de transmisión correcta?
    • Verifica todas las conexiones .Si cada uno de los cables desde la placa de pruebas hasta Arduino y verifica que todo esta en su lugar.

     

     

    Paso 5: Resistores

     

    Ver números en un monitor puede tornarse aburrido. Demos un paso mas y enviemos los datos obtenidos del micrófono a un LED. Como mencionamos antes, entender como fluye la corriente a través de un circuito es importante. Utilizaremos una resistencia para limitar la cantidad de corriente que fluye a través de tu circuito para asegurarnos que el LED no reciba mas corriente de la que necesita para funcionar.

     

    Observando de cerca el LED, podrás notar que solo cuenta con dos terminales de diferente longitud. Estas terminales son nombradas ánodo (positivo) y cátodo (negativo). La electricidad fluye a través del ánodo (la terminal de mayor longitud), entra al LED para encenderlo, y finalmente abandona al LED a través del cátodo (terminal corta) para llegar a tierra.

     

    Calculando resistores

     

    Esta es la ley de Ohm:

     

    (Voltaje de alimentación - Voltaje  consumido) / corriente (Amperios) = Valor del resistor.

     

    La ley de ohm es utilizada para calcular la resistencia de un circuito. La resistencia esta dada en ohms y se representa por medio del símbolo Ω (omega)                .

               
    • Voltaje de alimentación: La cantidad de voltaje que proporciona la fuente de poder (5 volts).
    • Voltaje consumido: La cantidad de voltaje necesaria para alimentar al LED (o un sensor) que utilizaremos (2 volts).
    • Corriente: La cantidad de corriente necesaria para operar el LED (o sensor).
    • Resistencia: La cantidad de resistencia necesaria para regular la corriente en el circuito.
     

    Nuestro LED utiliza 200 mA (mili amperios) para ser capaz de encender sin quemarse. Un amperio es la unidad básica para medir la corriente. Las características básicas de los LEDs (https://www.sparkfun.com/products/9592)  indican que un LED común y corriente tiene un consumo de voltaje alrededor de 2.0 V y requiere de una corriente de 20 mA.

     

    20mA = 0.02 amperios.

                                                     
    TIP: Si un documento especifica la corriente en un dispositivo en mili-amperios, primero divide la cantidad de amperios entre 1000 y después utiliza el resultado en la ley de Ohm.
     

    Como la mayoría de las placa Arduino, Galileo tiene un voltaje de operación de 5 V. Dado que el LED solo requiere 2 V (voltaje consumido) para encender. Con estos datos podemos calcular el resistor necesario para nuestro circuito:

     

    (Voltaje de alimentación - Voltaje  consumido) / corriente (Amperios) = Valor de la resistencia

     

    (5 V - 2 V) / 0.02 A = ?

     

    3 / 0.02 = 150

     

    Necesitamos un resistor de 150 ohms o una mayor a este valor para completar nuestro circuito.

     

    Seleccionando el resistor correcto

     

    Para asegurar que nuestro LED tiene la cantidad correcta de corriente fluyendo a través de el, necesitamos incrementar la resistencia para que menos corriente fluya. Necesitaremos un resistor de 150 ohms o mayor para proporcionar la corriente correcta al circuito. Debido a que escribir el valor de la resistencia en el resistor resulta difícil, se creo un código de colores con el cual resulta fácil identificar el valor de cada resistor.

                                                     
    TIP: Puedes encontrar en linea muchas tablas con el código de colores para los resistores. Tener una copia de estas tables resulta útil para identificar de manera ágil el valor de resistencia de cada uno de tus resistores.
     

    Cada dígito en el valor de resistencia corresponde a un color en el resistor. Los resistores mas comunes utilizan un código de colores de 4 bandas. No siempre es posible encontrar un resistor con valor igual al valor de resistencia calculado mediante la ley de ohm, por ejemplo, no existe una resistencia de 150 ohms por lo que utilizaremos el valor comercial mas cercano que es 220 ohms.

               
    • 2 Rojo
    • 2 Rojo
    • 0 Café (Ver siguiente TIP)
                                                     

    TIP: La tercera banda puede ser difícil de entender. Como el valor de nuestro resistor es de 220 y esta codificado en 4 bandas, utilizamos la siguiente formula para entender el significado de la tercera banda:


    primera banda (2) segunda banda (2) * x = 220
                  22 * x = 220
    resolviendo para x
                  x = 220 / 22 = 10
                 
    Así vemos que la tercera banda representa un valor por el cual se multiplica el numero formado por las dos bandas anteriores.

     

     

     

    Paso 6: Salidas básicas

     

    Visualizando el sonido con un LED

     

    En el paso 4 de este tutorial se mostró como conectar un micrófono a Galileo. Haremos uso de ese mismo circuito pero agregaremos un LED como salida extra.

     

    Paso 1: Proveer energía al LED

     

    Conecta el cátodo (terminal corta) a la pista azul (negativo) de la placa de pruebas.    

    Conecta el ánodo (terminal larga) a una fila de la sección media de la placa de pruebas.

     

    Paso 2: Agrega un resistor

     

    En la misma fila a la cual esta conectado el ánodo del LED, conecta una de las terminales del resistor.    

    En la misma fila, pero en la otra mitad de la placa de pruebas (ver foto) conecta la terminal restante del resistor.

     

    Paso 3: Conectar al pin 9 de Galileo

     

    Conecta un cable desde el pin 9 de Galileo hasta la terminal del resistor que no esta en contacto con el LED. Cuando el pin 9 envié una señal en alto, esta pasara a través del resistor, subirá por el anodo y encenderá al LED al pasar a través de el, y finalmente la señal ira a tierra (GND).

     

         
    Aquí podemos visualizar el recorrido de la corriente eléctrica.
         
    Una vez que tengas todo conectado, ejecuta el siguiente Sketch:     
          

    //Using 'const' we ensure that pin_sound cannot be changed in this sketch

     

    const int pin_sound = A0;     

    const int led = 9;

     

    int sound_sample;

     

    void setup() {

     

    Serial.begin(57600);

     

    // Set the digital pin 9, the LED, to behave as an output.    

    pinMode(led, OUTPUT);  

     

    }

     

    void loop() {

     

    sound_sample = analogRead(pin_sound);

     

    // Using an if condition, we test to see if the sample is over 100.   

    if(sound_sample > 100){

     

    // If the sample is over 100, send a high signal to the LED, turing it on    

    digitalWrite(led, HIGH);    

    }

    else {

    // If not, send a LOW signal, turning off the LED

    digitalWrite(led, LOW);

    }

     

    // Print the sound sample to the serial monitor

    Serial.println(sound_sample);

    }

     

    Cada vez que la señal leída desde  el micrófono sobre pase el valor       de 100, se libera una señal en alto hacia el LED para encenderlo.

         
         
         
     

    Paso 7: En resumen

     

    En esta lección aprendimos que las maquinas puede escuchar. Desde una salida sencilla en el monitor serial, hasta LEDs que responden a la intensidad del sonido. Solo hemos descubierto una pequeñísima parte  de lo que se puede llegar a hacer.

     

    Aprendimos como las placas de prueba nos ayudan a extender los módulos  y sensores que se pueden conectar a nuestro Galileo.

     

    Podemos ver el sonido! bueno, algo así. Utilizando el monitor serial fuimos capaces de ver los valores de la salida del micrófono. Ademas, fuimos capaces de tomar estos valores y mostrarlos al mundo físico por medio de un LED y su resistor. Haciendo uso de la ley de ohms fuimos capaces de calcular el valor del resistor para suministrar solo la corriente necesaria a nuestro LED y de esta manera prevenir que se quemara.

     

    Desafíos

    • Que tanto deberías cambiar tu código para que el LED encienda con valores bajos de sonido?
    • Conecta mas LEDs a tu proyecto y enciéndelos en base a los datos provenientes del micrófono. Trata de hacer que cada LED responda a un  rango diferente de valores del micrófono.
    • Abre el ejemplo fade (File > Examples > 01.Basics  > Fade). Como puedes utilizar este ejemplo para ampliar tu proyecto?
                                                     
    Nota: El código de ejemplo fade utiliza el pin 9 para manejar el LED, por esta razón puedes probar el ejemplo sin modificar tu circuito. El código puede resultar intimidante al principio, pero estúdialo  y experimenta con el!
     
    • Cada vez que el valor leído del micrófono alcance un cierto valor, haz que el LED empiece a reducir su intensidad, de lo contrario que haz que brille a su máxima capacidad.
    • La información de sonido que llega a Galileo presenta cambios abruptos, no son cambios graduales entre valor y valor. Como utilizarías una técnica de suavizado (Calculando el promedio de de los valores recibidos) para obtener transiciones mas suaves entre cada lectura?  http://www.arduino.cc/en/Tutorial/Smoothing