Guion Arduino Matlab

download Guion Arduino Matlab

of 15

Transcript of Guion Arduino Matlab

  • 7/23/2019 Guion Arduino Matlab

    1/15

    MATLAB: Computacin FsicaPrctica 3 Guin 4

    Informtica Aplicada a la Biologa

    Dpto. Ciencias de la Computacin e Inteligencia Artificial

    E.T.S. de Ingenieras Informtica y de TelecomunicacinUniversidad de Granada

  • 7/23/2019 Guion Arduino Matlab

    2/15

    2 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    1. Introduccin ................................................................................................... 31.1. Conociendo Arduino ................................................................................ 3

    2. Primeros pasos en computacin fsica .......................................................... 73. Percibiendo el mundo exterior .................................................................... 104. Ejercicios ...................................................................................................... 13

    4.1. Qu hemos aprendido? ........................................................................ 14

  • 7/23/2019 Guion Arduino Matlab

    3/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 3

    1. Introduccin

    En esta cuarta prctica con MATLAB nuestro objetivo es que veis como la programacinde ordenadores se utiliza en el mundo real. Cmo se programa un frigorfico, una farola oun semforo. Es lo que se conoce como computacin fsica: el uso de los ordenares para

    aplicaciones tangibles.

    Es esta prctica utilizaremos un sistema de computacin fsica que se conoce comoArduino. Es un dispositivo que nos va a permitir transformar las rdenes que demos enMatlab en seales elctricas que puedan entender los dispositivos electrnicos.

    Una vez que hayis realizado la prctica deberais comprender como se puede utilizar laprogramacin para crear todo tipo de mquinas inteligentes: Desde una alarma anti-incendios hasta un coche.

    1.1. Conociendo Arduino

    Vamos a comenzar conociendo un poco mejor el sistema con el que vamos a trabajar.Arduino es una plataforma de hardware libre, que permite transformar las rdenes dadasa un ordenador en acciones fsicas: encendido de luces, movimiento de motores

    Para ellos Arduino utiliza un microcontrolador y un conjunto de circuitos que transmitenlos impulsos elctricos. Arduino est diseado para facilitar el uso de la electrnica enproyectos multidisciplinares ya sean artsticos o cientficos.

    La placa Arduino con la que vamos a trabajar.

    Arduino

  • 7/23/2019 Guion Arduino Matlab

    4/15

    4 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    Aunque Arduino puede parecer al principio un sistema bastante complicado no ospreocupis. Est diseado para ser utilizado por personas sin la menor formacincientfica o tcnica e incluso por nios (siempre que tengan ms de doce aos)

    Vamos a comenzar viendo cuales son los principales componentes de Arduino. Para elloes recomendable que os fijis en la siguiente figura, en ella se indican la finalidad de las

    distintas partes de Arduino.

    1 Toma de corriente:Sirve paraque Arduino pueda funcionar sin estarconectado a un ordenador

    2 Conexin USB:Permite conectarun ordenador y transmitir informacinentre el ordenador y Arduino.

    6 Pines digitales: Permiten aArduino transmitir rdenes amquinas electrnicas

    7 Luz de encendido: Se enciendecuando Arduino est funcionando.

    8 Botn de reset: Se utiliza cuandoqueremos resetear el Arduino.

    10 Pines analgicos y depotencia: Se utiliza para recibirinformacin y suministrar energa alas mquinas que estemoscontrolando

    Es importante que os fijis en la numeracin de los pines de salida, 6, y de entrada, 10.Cuando queramos dar rdenes o recibir informacin necesitaremos especificar qu pin

    vamos a usar.

    A la derecha del Arduino tenemos un conjunto de circuitos en una placa de pruebas.Aunque no es necesario comprender como funcionan estos circuitos s es interesantetener una breve nocin de cmo funcionan las placas de pruebas.

    Sparkfun Inventor Kit Guide

  • 7/23/2019 Guion Arduino Matlab

    5/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 5

    Placa de pruebas con la que vamos a trabajar

    En una placa de pruebas tenemos un conjunto de pines en los que podemos colocardistintos dispositivos electrnicos. Los pines conectados entre s. Si miris la figura la

    zona 1 est conecta de manera vertical, todos los pines en la misma columna estnconectados. En la zona 2 los pines estn conectados de manera horizontal. Todos lospines en la misma fila estn conectados.

    Para comenzar lo ms importante es la conexin USB, es la que nos permite conectarArduino al ordenador. Deberais tener una plataforma Arduino completa y un cable USB.Lo primero que tendris que hacer es conectar Arduino al ordenador usando el cableUSB. Para ello deberis seguir las instrucciones que os de vuestro profesor deprcticas.

    Sparkfun

    InventorKitGuide

  • 7/23/2019 Guion Arduino Matlab

    6/15

    6 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    Como conectar el Arduino al ordenador.

    Una vez que hayis conectado e instalado Arduino pedidle a vuestro profesor de prcticasque compruebe si todos los cables estn correctamente conectados. Una vez que l os deel visto bueno podris empezar con la prctica propiamente dicha.

    Lo primero que tendremos que hacer es conectar Matlab al Arduino. Para ellonecesitaremos conocer el puerto COM al que est conectado Arduino (deberais tenerloapuntado) El comando que tenis que escribir en Matlab es:

    >> mi_arduino = arduino(COM3);

    Attempting connection .......

    Basic I/O Script detected !

    Arduino successfully connected !

    Fjate que hemos llamado a nuestro arduino mi_arduino,a partir de ahora siempreque nos refiramos a l tendremos que utilizar ese nombre. Una vez que nos hayamosconectado a Arduino, podremos empezar a trabajar.

    SparkfunInventorKitGuide

  • 7/23/2019 Guion Arduino Matlab

    7/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 7

    2. Primeros pasos en computacin fsica

    Nota: Debes haber activado el diary de Matlab usando el comandodiary(Arduino.txt)

    Una vez que ya habis instalado Arduino y habis comprobado que todas las conexionesson correctas podemos empezar a realizar programas que tendrn consecuenciastangibles. Comenzaremos con algo sencillo, encenderemos y apagaremos algunos leds.

    Para ello tenemos instalados en la placa de pruebas cinco leds de color rojo o amarillo.Estos leds son como los de la figura y se van a encender y apagar segn los comandosque indiquemos.

    Leds rojos y amarillos que vamos a utilizar en esta prctica.

    Qu es un LED?

    Se trata de una revolucionaria fuente lumnica de gran eficiencia, larga vida yun consumo energtico mucho ms reducido que el de las fuentestradicionales, como la bombilla incandescente. Considerada la iluminacindel futuro, los LED tienen un enorme potencial en zonas subdesarrolladas, alas que no llega el suministro elctrico.

    Aunque los primeros Leds se crearon en los aos 1960 es un cientficojapons, Shuji Nakamura, el descubridor del proceso que ha permitidofabricar todo tipo de leds de una manera fcil y barata. Shuji Nakamuratrabajaba en una pequea empresa de iluminacin japonesa cuando se leocurri la idea que permitira fabricar leds. A pesar de no tener una granformacin cientfica y de que la empresa no le permiti trabajar en su idea,

    despus de cinco aos de duro trabajo consigui revolucionar el mundo de lailuminacin.

  • 7/23/2019 Guion Arduino Matlab

    8/15

    8 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    Para indicarle a un led que se encienda debemosfijarnos cual es el pin digital del arduino al que estconectado. Podis verlo en el siguiente diagrama,auque es mejor que lo miris directamente en laplaca que se os ha dado. Seguramente vuestros ledsestn conectados a los pines 9, 10, 11, 12 y 13.

    Esquema del circuito con el que estamos trabajando

    Una vez que ya hemos identificado los pines a los que estn conectados podemoscomenzar a encender y apagar leds.

    Para encender el led conectado al pin 11 el comando sera:

    >> enciende_led(mi_arduino,11);

    Para encender los leds conectados a los pins 9,10 y 12 sera:

    >> enciende_led(mi_arduino,[9 10 12]);

    Os tenis que fijar en el pin del

    Arduino (de color azul), los nmeros

    que aparecen en la placa de pruebas

    (de color rojo) no son importantes.

  • 7/23/2019 Guion Arduino Matlab

    9/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 9

    Para apagar el led conectado al pin 9 el comando sera:

    >> apaga_led(mi_arduino,9);

    Para apagar el led conectado a los pins 11, 12 y 13 el comando sera:

    >> apaga_led(mi_arduino,11:13);

    Al menos uno de los leds esta conectado a Arduino mediante un cable largo. Desconectaese cable del Arduino e intenta encender el led. Qu pasa? Escrbelo en la ventana decomandos de Matlab como un comentario.

    Ahora tienes que copiar el cdigo de la siguiente funcin en Matlab y guardarlo. Qu eslo que hace?

    functiondestellos (ard,num)%Funcin destellos. Descripcin de la funcin%Argumento de entrada

    %ard: Arduino conectado%num:

    pinLed1 = 13;pinLed2 = 9;

    forcont = 1:numapaga_led(ard,pinLed1);enciende_led(ard,pinLed2);pause(1); %Para la ejecucin un segundoenciende_led(ard,pinLed1);apaga_led(ard,pinLed2);pause(1); %Para la ejecucin un segundo

    end

    apaga_led(ard,pinLed1);apaga_led(ard,pinLed2);

    end

    Para ejecutarlo debers usar un comando similar al siguiente:

    >> destellos(mi_arduino,4);

    1.

    Modifica el cdigo de destellos para que en vez de utilizar slo dos leds utilicetodos los leds disponibles (como si fuese una luz de navidad, un cylon o el cochefantstico).

    2.

    Modifica el valor dado en pause(1)para que las luces se muevan ms deprisa.

    3.

    Qu pasa si utilizamos pause() en vez de pause(1)? Aviso: La respuesta no esque se queda parado.

  • 7/23/2019 Guion Arduino Matlab

    10/15

    10 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    3. Percibiendo el mundo exterior

    Nota: Debes tener los leds apagados para realizar correctamente esta seccin.

    Una vez que hemos aprendido como utilizar un programa para encender y apagar ledsvamos a ver como percibir el mundo exterior utilizando sensores electrnicos. Para ellovamos a comenzar midiendo la temperatura de la sala.

    Sensor de temperatura que vamos a utilizar en esta prctica.

    Para leer la temperatura debemos fijarnos cual es el pin analgico al cual est conectadonuestro sensor. Podis verlo en el siguiente diagrama, auque es mejor que lo mirisdirectamente en la placa que se os ha dado. Seguramente vuestro sensor de temperatura

    est conectados al pin analgico 0.

  • 7/23/2019 Guion Arduino Matlab

    11/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 11

    Esquema del circuito incluyendo el sensor detemperatura con el que estamos trabajando

    Una vez que ya hemos identificado el pin al que est conectado podemos comenzar a vercual es la temperatura. Si el sensor est conectado al pin 0, sera:

    >> lee_temperatura(mi_arduino,0)

    ans =

    18.9875

    Fjate que la salida de la funcin lee_temperatura va a depender de la temperatura dela sala. No tiene por qu coincidir con el valor del guin.

    Pon ahora tus dedos en la parte negra del sensor de temperatura. Espera unos segundosy vuelve a medir la temperatura. Qu ha pasado? Describe qu resultados has obtenidoen la ventana de comandos de Matlab como un comentario.

    Ahora vamos a proceder a medir la luminosidad en el laboratorio. Para ello vamos autilizar un sensor que nos da una medida entre cero y uno. Cero ser una oscuridad totaly uno el mximo de luminosidad.

    Sensor de luminosidad que vamos a utilizar en esta prctica.

    Para leer la luminosidad debemos fijarnos cual es el pin analgico al cual est conectadonuestro sensor. Podis verlo en el siguiente diagrama, auque es mejor que lo miris

    directamente en la placa que se os ha dado. Seguramente vuestro sensor de temperaturaest conectados al pin analgico 5.

  • 7/23/2019 Guion Arduino Matlab

    12/15

    12 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    Esquema del circuito incluyendo el sensor deluminosidad con el que estamos trabajando

    Una vez que ya hemos identificado el pin al que est conectado podemos comenzar a vercual es la luminosidad. Si el sensor est conectado al pin 5, sera:

    >> lee_luminosidad(mi_arduino,5)

    ans =

    0.8213

    La salida de la funcin lee_luminosidadva a depender de la luminosidad de la sala. Notiene por qu coincidir con el valor del guin.

    Cubre ahora con tus dedos el sensor de luminosidad. Vuelve a medirla. El nuevo valor esmayor o menor que el anterior? Comenta los resultados en la ventana de comandos deMatlab como un comentario.

  • 7/23/2019 Guion Arduino Matlab

    13/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 13

    4. Ejercicios

    Para terminar, se proponen al alumno una serie de ejercicios para afianzar losconocimientos adquiriros. As mismo, se pretende que el alumno sea capaz de imaginarposibles aplicaciones reales utilizando lo aprendido hasta ahora.

    1.

    Modifica el cdigo de la funcin encendido_automatico para que funcionecorrectamente. Luego describe cual es su funcionalidad y cmo se consigue implementar dichafuncionalidad.

    functionencendido_automatico(ard)%funcion encendido_automatico%Enciende los leds si es de noche%Si hay luz los apaga%-------------------------------------- %Repito durante unos diez segundosforcont=1:50

    %Veo qu luminosidad hayluz = lee_luminosidad(ard, 5);

    %Si es menor que un valor dado enciendo la farolaif(luz < 0.9)

    enciende_led(ard, 9:13);else%Apago la farola

    enciende_led(ard, 9:13);endpause (.2) %para unas decimas antes de volver a repetir

    end

    La funcin se llama con el siguiente comando:

    >> encendido_automatico(mi_arduino)

    2.

    Escribe la funcin destellos_luminosidad modificando la funcin destellospara que la frecuencia de los destellos dependa de la luminosidad del ambiente. A menorluminosidad mayor frecuencia de destellos.

    3.

    Analiza el cdigo de la funcin escribee indica qu hace. Para ello debes indicar cuales su funcionalidad y cmo se consigue implementar dicha funcionalidad.

    functionescribe (ard,num)%Saca por leds el nmero que introduzcamos en binario%Mximo nmero 31%Se utilizan los pines del 13 al 9%Argumento de entrada%ard: Arduino conectado%num: el nmero que vamos a pasar a binario

    %Los leds con los que voy a trabajar

    rangoLed = 9:13;

    forcont = rangoLedval = rem(num,2); %Calculo el resto de dividir por dos

  • 7/23/2019 Guion Arduino Matlab

    14/15

    14 MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR

    num = fix(num/2); %Calculo la parte entera del cociente

    %Si la cifra en binario vale 1ifval == 1

    enciende_led(ard,cont); %enciendo el ledelse

    apaga_led(ard,cont); %apago el led

    endendend

    La funcin se llama con el siguiente comando:

    >> escribe(mi_arduino,9)

    4.

    Escribir una funcin de nombre escribe_temperatura que use las funcioneslee_temperaturay escribe. Esta funcin lee la temperatura del sensor de temperatura y laescribe en binario utilizando los leds disponibles. Crear una versin alternativa de nombre

    lecturaContinua en la que el Arduino muestre de manera continua la temperatura en losleds. Nota: para poder realizar correctamente la medida de la temperatura los leds deben estar apagados.

    4.1. Qu hemos aprendido?

    Los principios de la computacin fsica.

    Cmo funcionan algunos componentes electrnicos: Leds, sensores detemperatura, iluminacin...

    Como utilizar lo aprendido en programacin para disear mquinas que hagan loque queremos.

  • 7/23/2019 Guion Arduino Matlab

    15/15

    MATLAB: Computacin fsica Informtica Aplicada a la Biologa DECSAI UGR 15

    Este obra est bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0

    Internacional.

    Para ver una copia de esta licencia visita:

    http://creativecommons.org/licenses/by-sa/4.0/

    O manda una carta a:

    Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.