Taller 2

15
TALLERES DE ARDUINO CAS 1 TALLER DE ARDUINO #N2 ELEMENTOS Y COMUNICACIÓN SERIAL

description

segundo taller de introduccion arduino

Transcript of Taller 2

  • TALLERES DE ARDUINO CAS

    1

    TALLER DE ARDUINO #N 2 ELEMENTOS Y COMUNICACIN SERIAL

  • TALLERES DE ARDUINO CAS

    2

    NDICE DE CONTENIDOS

    introduccin ........................................................................................................................................... 3

    Descripcin ........................................................................................................................................ 3

    Objetivos ............................................................................................................................................. 3

    Metodologa ....................................................................................................................................... 3

    Algunas Reflexiones ............................................................................................................................ 4

    CAS ........................................................................................................................................................ 4

    Redec .................................................................................................................................................... 4

    Open source y colaboracin ........................................................................................................ 5

    Experiencias ........................................................................................................................................... 6

    Experiencia #1: Comunicacin serial ...................................................................................... 6

    Experiencia #2.1: Fotoresistencia (LDR) ............................................................................... 8

    Experiencia #2.2: Fotoresistencia (LDR) ............................................................................... 9

    Experiencia #3.1: BUZZER .........................................................................................................10

    Experiencia #3.2: BUZZER .........................................................................................................11

    Anexos ....................................................................................................................................................12

    Anexos a: cdigos de experiencias ..........................................................................................12

  • TALLERES DE ARDUINO CAS

    3

    INTRODUCCIN

    DESCRIPCIN

    En este taller se aprender a leer datos con el arduino y a mostrarlos en la pantalla del computador. Tambin se aprender a usar sensores y a generar sonidos con Arduino.

    OBJETIVOS

    - Aprender a leer datos con Arduino y a mostrarlos en el monitor serial. - Aprender el esquema bsico de cmo usar un sensor del tipo resistencia

    variable. - Generar sonidos con un Buzzer de acuerdo a los valores que se obtienen de

    los sensores.

    METODOLOGA

    Cada experiencia cuenta con el marco terico necesario para realizar lo pedido. El expositor lo explicar una vez frente a todos, para que luego cada uno se la ingenie para lograr el objetivo.

  • TALLERES DE ARDUINO CAS

    4

    ALGUNAS REFLEXIONES

    CAS

    El grupo Ciencia Aplicada a la Sociedad o CAS es una comunidad que busca la auto transformacin y la obtencin de los conocimientos necesarios para que cada ser humano tenga la capacidad de existir en un mundo con acceso a los recursos necesarios para el buen vivir, de forma de que todas las necesidades bsicas de las personas se encuentren satisfechas en una relacin simbitica mutualista con el planeta tierra. De esta forma la sociedad se encontrar en un contexto propicio para un desarrollo personal de cada individuo y un desarrollo de la humanidad basado en la colaboracin y la creatividad, conceptos ligados profundamente al Open Source.

    Este objetivo se pretende lograr a travs de la materializacin de los conceptos e ideas, charlas, talleres, proyectos, empoderamiento cognitivo y tecnolgico e iniciativas que presenten un modelo colaborativo por sobre el actual modelo competitivo.

    Contctanos en:

    [email protected] www.facebook.com/cas.concienciasocial

    Tenemos un grupo interno de Facebook donde mantenemos una actividad permanente, si quieres unirte envanos un mensaje al Facebook anterior.

    REDEC

    La Red De Evolucin Colaborativa o RedEC es una red de organizaciones y personas que se mueven entorno al objetivo comn de llevar a la sociedad a un nuevo nivel en el que existan las condiciones necesarias para desarrollarse personal y colectivamente. Esto contempla un nuevo orden econmico, poltico y cultural.

    Por lo anterior, RedEC pretende impulsar el desarrollo de la humanidad hacia un estado en el que las necesidades de los individuos y grupos se encuentren satisfechas,

    entendiendo como necesidad todo lo que siendo satisfecho permite a un humano se libre y por libertad el que un individuo o grupo pueda hacer lo que su voluntad le dicte, sin ser sometido ni someter a nadie ms.

    mailto:[email protected]://www.facebook.com/cas.concienciasocial

  • TALLERES DE ARDUINO CAS

    5

    OPEN SOURCE Y COLABORACIN

    El concepto de Open Source se asocia a la accin de compartir el detalle de diseo, fabricacin e implementacin de alguna creacin con la comunidad, ya sea software, hardware, arte, ideas o cualquier obra de creacin que se pueda compartir.

    De la utilizacin de esta idea han emergido crecientes fenmenos culturales de gran impacto en mbitos polticos, sociales, econmicos, cientficos etc.

    Probablemente uno de los fenmenos ms relevantes del Open Source, es su aspecto colaborativo. Cuando una persona comparte los derechos sobre los detalles de alguna creacin o idea, todas las personas tendrn la capacidad de observar esa creacin, estudiarla, replicarla y mejorarla, para compartir nuevamente este trabajo. De esta manera se genera un esquema de desarrollo en donde colectivamente se implementan mejoras sucesivas, entre personas que no necesariamente poseen una relacin fuera de la obra. Es importante notar que la mayor parte de esta forma de trabajo no proviene de un incentivo monetario, sino que por el inters puramente colaborativo, ya sea con el fin de contribuir a alguna causa, o simplemente por la satisfaccin obtenida de crear y compartir.

    El da de hoy vivimos en un modelo basado en la competencia que se expresa socio-econmicamente en el capitalismo, que ha desencadenado en notables injusticias y perjuicios a la sociedad y al planeta tierra, como la sobreexplotacin de los recursos naturales (limitados), una cultura basada en el consumismo y una produccin intencionalmente obsolescente, por decir algunos. Un esquema colaborativo presenta una alternativa en la que no existe la necesidad de ganar a otro, si no que se anan fuerzas en torno a un objetivo comn con el foco de la creacin de un objeto de alta calidad y eficiencia. Actualmente existe un distanciamiento entre el usuario y el producto del mercado, ya que se desconoce su funcionamiento, sus contenidos y sus procesos y suelen deteriorarse rpidamente. Curioso notar que uno de los ndices del sistema actual para medir el bienestar social se relacione con la cantidad de dinero que cada individuo posee, dejando de lado su desarrollo en trminos cualitativos o valricos, como por ejemplo de su creatividad. En la prctica esto sugiere que el mundo puede funcionar en base a otro tipo de motivaciones fuera de las lucrativas o competitivas que son perpetuadas por el sistema el da de hoy.

    Algunos links de iniciativas motivadas por estos principios:

    Arduino: www.arduino.cc Instructables: www.instructables.com Open source ecology: www.opensourceecology.org Open source hardware association: www.oshwa.org Raspberry Pi: www.raspberrypi.org

    http://www.arduino.cc/http://www.instructables.cl/http://www.opensourceecology.org/http://www.oshwa.org/http://www.raspberrypi.org/

  • TALLERES DE ARDUINO CAS

    6

    EXPERIENCIAS

    EXPERIENCIA #1: COMUNICACIN SERIAL

    INTRODUCCIN:

    En esta experiencia se aprender a usar el Arduino para recibir datos en la pantalla el computador. Para ello se leern datos de una resistencia variable llamada potencimetro.

    PRCTICA

    Conecte el pin del medio del potencimetro a uno de los pines de lectura Analgica del Arduino (A0, A1,, o A5) y los pines de los lados a tierra y a 5 [V], sin importar el orden, pues la resistencia no tiene polaridad.

    TEORA

    Electrnica:

    Potencimetro: Consiste en dos resistencias variables tales que la suma de ellas es constante.

  • TALLERES DE ARDUINO CAS

    7

    Divisor de voltaje: Este es el esquema bsico que comparte la mayor parte de los sensores cuando se trabaja con Arduino.

    Viendo la figura siguiente se puede apreciar que la corriente que pasa por R1 es igual a la corriente que pasa tanto por R1 como por R2, luego utilizando la Ley de Ohm I = V/R donde I es la corriente que pasa por el circuito, V es el voltaje y R la resistencia, podemos obtener la siguiente relacin:

    Notemos que si R1 es muy grande y R2 muy chico, el voltaje VA tiende a 0[V], mientras que si R1 es muy pequeo y R2 muy grande, el voltaje VA tiende a 5[V] que es exactamente el rango de valores que podemos leer con el Arduino

    Monitor serial: Es una ventana que se abre desde el IDE de Arduino (encerrado en un cuadrado rojo en la imagen) que permite interactuar con este recibiendo y/o enviando datos o instrucciones desde el computador.

    Programacin:

    Serial.begin(#Velocidad) : Inicializa el puerto serial, por donde el arduino recibir o enviar informacin a una velocidad #velocidad por segundo. (#velocidad puede tomar los valores 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200 baudios, en general se utiliza 9600).

    Serial.print(#Dato): Sirve para imprimir datos en el monitor serial.

    Serial.println(#Dato): Tambin imprime datos en el monitor serial, pero cada vez que recibe datos se salta una lnea, es decir, la instruccin anterior imprime datos

  • TALLERES DE ARDUINO CAS

    8

    hacia la derecha uno al lado del otro, mientras que esta instruccin imprime dato por dato hacia abajo en la pantalla.

    analogRead(#Pin): Lee valores de uno de los 6 pines analgicos del Arduino. Dado que estos pines son solo de lectura, no es necesario declararlos como pines de lectura en el void setup.

    CDIGO

    Con las funciones anteriores escriba un cdigo que haga que los datos obtenidos del potencimetro se vean en el monitor serial.

    Cdigo en Anexos.

    EXPERIENCIA #2.1: FOTORESISTENCIA (LDR)

    INTRODUCCIN

    En esta experiencia se aprender a leer datos de sensores, en particular de una fotoresistencia.

    PRCTICA

    Recordando lo visto sobre el divisor de voltaje, solo se debe reemplazar el potencimetro del circuito anterior por una fotoresistencia y una resistencia normal.

    El circuito a realizar es el siguiente

  • TALLERES DE ARDUINO CAS

    9

    TEORA

    Electrnica

    Fotoresistencia: Resistencia que vara su valor segn la intensidad de luz que incide en ella.

    Programacin

    Se usan las mismas instrucciones de la experiencia anterior.

    CDIGO

    El cdigo es idntico al anterior, la idea es que vean en el monitor serial los valores que obtienen al ir cambiando la cantidad de luz que recibe la fotoresistencia

    EXPERIENCIA #2.2: FOTORESISTENCIA (LDR)

    INTRODUCCIN

    Ahora la idea es que a medida que la fotoresistencia reciba menos luz (tapndola con la mano por ejemplo), se vayan encendiendo los LEDs.

    PRCTICA

    Se conectan varios LEDs a los pines digitales del arduino, recordando que la pata ms larga debe ir conectado al valor positivo (pin digital) y la ms pequea va al negativo, en este caso a una resistencia que va a tierra.

  • TALLERES DE ARDUINO CAS

    10

    Programacin

    Puede ser til crear un vector o arreglo que sirve para almacenar varios datos de un mismo tipo (char, int, boolean, float, double, string, etc.), como por ejemplo los nmeros de los pines que se van a utilizar para encender los LEDs. Para definir un arreglo se usa la siguiente notacin:

    tipo nombre [] = {dato1,dato2,,datoN};

    Para obtener el primer elemento del arreglo (dato1), llamamos nombre[0], para obtener el segundo elemento (dato2) nombre[1] y para el ensimo elemento nombre[N-1].

    Ejemplo: Se quiere guardar los datos 1 y 5 (notar que son enteros) en un arreglo de nombre Arreglo, y luego, obtener el primer elemento y guardarlo en la variable a:

    int Arreglo[] = {1,5};

    int a = Arreglo[0];

    Segn el cdigo anterior, a queda igual a 1. Supongamos que ahora queremos guardar en a el valor del siguiente dato del arreglo. Como ya definimos la variable a como un entero, no es necesario hacerlo de nuevo, luego solo se debe usar la siguiente instruccin:

    a = Arreglo[1];

    De esta forma queda el valor 5 almacenado en la variable a.

    CDIGO

    Si el LDR (Light-Dependant Resistor) o fotoresistencia recibe el mximo de luz, todos los LEDs deben estar apagados, y a medida que recibe menos luz se deben ir encendiendo. Los umbrales para determinar que LEDs se encienden y cules no, los deben determinar viendo los valores que se pueden obtener de la fotoresistencia en el monitor serial.

    Ayuda en Anexos.

    EXPERIENCIA #3.1: BUZZER

    INTRODUCCIN:

    Se har variar el tono de un Buzzer segn el valor medido por un potencimetro o una fotoresistencia.

    PRCTICA

    Conecte un potencimetro y un Buzzer segn el siguiente diagrama:

  • TALLERES DE ARDUINO CAS

    11

    TEORA

    Electrnica

    Buzzer: Es un piezoelctrico que permite generar sonidos de distinto tono segn la frecuencia de la seal que recibe.

    Programacin

    tone(#Pin, #Frecuencia): Se declara el pin que se utilizar para mandar la seal de audio al Buzzer con #Pin y luego se dice que frecuencia se enviar con #Frecuencia.

    CDIGO

    Use el valor ledo por el potencimetro como el valor de la frecuencia de la onda cuadrada que le va a enviar al Buzzer.

    Ayuda en Anexos.

    EXPERIENCIA #3.2: BUZZER

    INTRODUCCIN:

    El objetivo de esta experiencia se va a hacer variar la frecuencia que recibe el buzzer con una fotoresistencia. Pero adems el sonido que emite el buzzer debe ser intermitente y dicha intermitencia debe ser dada por los valores obtenidos de un potencimetro.

  • TALLERES DE ARDUINO CAS

    12

    PRCTICA

    Se conecta el buzzer en un pin digital, y la fotoresistencia con el potencimetro en pines analgicos.

    TEORA

    Programacin

    noTone(#Pin): Detiene la seal cuadrada enviada por tone() en el pin #Pin.

    CDIGO

    Se leen los valores obtenidos del potencimetro y de la fotoresistencia, y se usan para variar la intermitencia y el tono de la seal cuadrada que recibe el buzzer respectivamente.

    Ayuda en Anexos.

    ANEXOS

    ANEXOS A: CDIGOS DE EXPERIENCIAS

    CDIGO EXPERIENCIA #1 Y #2.1:

    void setup(){

    //Se inicializa el puerto serial con una velocidad de 9600 baudios

    Serial.begin(9600);

  • TALLERES DE ARDUINO CAS

    13

    }

    void loop(){

    //Se imprimen en el monitor serial los valores que se obtienen del

    //pin analgico A0.

    Serial.println((analogRead(A0));

    }

    CDIGO EXPERIENCIA #2.2:

    //Primero se guardan los umbrales que se usan para decidir cuantos

    //LEDs encender.

    int umbral1 = 100;

    int umbral2 = 200;

    int umbral3 = 300;

    int umbral4 = 400;

    int umbral5 = 500;

    //Se guarda en un arreglo los valores de los pines que se van a

    //utilizar para encender los LEDs.

    int Led[] = {9,10,11,12,13};

    //Se crea una variable de tipo "entero" para guardar los datos

    //leidos por la fotoresistencia.

    int valorLDR;

    int i;

    void setup(){

    //Se declaran los pines del 9 al 13 como de salida.

    for(i=0;i

  • TALLERES DE ARDUINO CAS

    14

    encenderLEDs(2);

    }

    else if(umbral4

  • TALLERES DE ARDUINO CAS

    15

    //igual a la leda en el pin analgico A0 (potencimetro).

    tone(9,LDR);

    //Se hace un retraso de acuerdo al valor obtenido del

    //potencimetro.

    delay(pot);

    noTone(9);

    delay(pot);

    }