Manual Pinguino v 1.1.pdf

40
  Responsables:  Miguel Papadópulos  Sergio Arciénaga Taller Práctico de Robótica ducativa con Hardware y Software Libre Multiplataforma Conocimiento al alcance de todos Pensado para su aplicación en el aula

Transcript of Manual Pinguino v 1.1.pdf

  • Responsables:

    Miguel Papadpulos

    Sergio Arcinaga

    Taller Prctico de Robtica

    Educativa con Hardware y

    Software Libre

    Multiplataforma

    Conocimiento al alcance de todos

    Pensado para su aplicacin en el aula

  • Robtica Educativa con Pingino

    2 Salta Argentina 2013

    A modo de Prlogo

    Estimados estudiantes y docentes: En esta cartilla hemos tratado de recopilar parte de la informacin que se encuentra fundamentalmente en la web, a los efectos de poner a disposicin del sistema educativo salteo, los conocimientos necesarios para iniciarse en el fascinante mundo de la robtica. El taller est pensado para desarrollar las capacidades de creatividad y pensamiento lgico de nuestros estudiantes y docentes, para mejorar las competencias comunicativas y de resolucin de problemas, en forma colaborativa. Toda la informacin ha sido extractada de sitios de personas que comulgan con la filosofa del hardware y el software libre, es decir de la libre circulacin del conocimiento y su intercambio. Es por ello que les decimos a todos los que tengan acceso a este material y lo consideren de utilidad, sintanse libres de modificarlo y distribuirlo. Por ltimo agradecemos a todas las instituciones educativas que, a partir de su participacin en el taller, nos hicieron llegar sus sugerencias y correcciones.

    Miguel y Sergio

  • Robtica Educativa con Pingino

    3 Salta Argentina 2013

    NDICE

    ::: Introduccin a la Plataforma "Pingino" .................................................................................................4

    Plataformas de Hardware Libre: ..............................................................................................................4

    ::: Hardware Mnimo Inicial .........................................................................................................................5

    Resultado Final del armado Fsico ...........................................................................................................5

    Esquema lgico de la plataforma ............................................................................................................6

    ::: Software inicial ........................................................................................................................................6

    Instalacin del Software Pingino en Windows 7 ...................................................................................7

    ::: Creacin y ejecucin de mi primer programa (Hola Mundo). .......................................................... 13

    ::: Inicio de tu primer proyecto ................................................................................................................. 18

    1 Opcin de Solucin: Fuerza Bruta ................................................................................................. 19

    2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta) ............................................ 20

    3 Opcin de Solucin: Utilizacin de un vector. .................................................................................. 22

    :::: Encender y Apagar un led utilizando un pulsador ............................................................................... 23

    :::: Armemos un semforo ........................................................................................................................ 24

    :::: Combinando los ejemplos anteriores .................................................................................................. 25

    :::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite............................................... 26

    ::: Calentando Motores! .......................................................................................................................... 29

    :::: Pongamos Blanco sobre Negro o Negro sobre Blanco ........................................................................ 34

    :::: Fuentes de informacin consultada .................................................................................................... 36

    :::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE ..................................... 37

    :::: Anexo II: Instalacin de los Drivers de Pingino en Windows 8 .......................................................... 39

  • Robtica Educativa con Pingino

    4 Salta Argentina 2013

    ::: Introduccin a la Plataforma "Pingino"

    Pingino es una plataforma de hardware y software "open source" para la experimentacin con

    microcontroladores, similar a Arduino pero basada en un microcontrolador PIC18F2550/4550 y cuenta con su

    propio Entorno de Desarrollo Integrado (IDE) de uso y apariencia similar al de Arduino. A diferencia de la placa

    Arduino, el Pingino no necesita una Interfaz UART a USB adicional para comunicarse con la PC, debido a que el

    microcontrolador PIC18F2550/4550 tiene un mdulo USB integrado, lo cual le permite comunicarse

    directamente con la PC y reduce el costo del hardware, dejando adems libre el puerto UART del

    microcontrolador para las aplicaciones.

    Plataformas de Hardware Libre:

    Arduino1 Pingino2

    El circuito bsico del Pingino es muy simple y slo se precisan unos pocos componentes; todo el software

    necesario est disponible para bajarse de internet gratuitamente.

    En este manual vamos a ver los siguientes aspectos:

    Hardware mnimo inicial

    Instalacin de los programas necesarios

    Compilacin

    Ejecucin de un primer programa.

    1 http://www.arduino.cc/es/

    2 http://www.pinguino.cc/

  • Robtica Educativa con Pingino

    5 Salta Argentina 2013

    ::: Hardware Mnimo Inicial

    Un Microcontrolador Pic 18F2550/4550

    1 Pulsador

    1 Cuarzo 20 MHz

    5 Capacitores

    o 1 capacitor cermico de 0.1 uf (N 104) o 2 capacitores cermicos de 22 pf (N 22) o 1 capacitor cermico de 220 nf (N 224) o 1 capacitor electroltico de 10 uf

    2 Leds

    o 1 rojo o 1 verde

    3 Resistencias

    o 1 de 10 K Ohm o 2 de 470 Ohm

    Una Protoboard/Placa de prueba

    Cables para conectar en la protoboard

    Resultado Final del armado Fsico

    Resultado Final de la plataforma Pingino.

    Imagen desarrollada con un soft ware de licencia libre llamado Fritzing. Lo pods bajar

    desde su pgina oficial: http://fritzing.org/

    Pata larga

    Pata corta

  • Robtica Educativa con Pingino

    6 Salta Argentina 2013

    Esquema lgico de la plataforma

    Resultado Final de la plataforma Lgico y

    Fsico pingino.

    Muy importante

    Adems !!!

    Para que el circuito funcione, el PIC18F2550/4550 debe tener grabado el cargador de arranque (bootloader) de

    Pingino, el cual puede ser descargado de:

    http://sites.google.com/site/pinguinotutorial/bootloader.

    Se necesita un programador de microcontroladores Microchip como el Pickit 2, Pickit 3 u otro compatible para

    grabar el bootloader en el PIC18F2550/4550.

    ::: Software inicial

    Actualmente el software para Pingino est soportado oficialmente para los sistemas operativos:

    Linux

    Windows XP

    Tener en cuenta que los Pines Lgicos estn numerados por fuera del PIC y son utilizados por el lenguaje

    de programacin a la hora de programar al PIC18F2550 y las patitas fsicas estn numeradas en forma de

    U por dentro del PIC y se utilizan para el armado del circuito.

    Por ej. la patita 2 del micro corresponde al PIN 13/ANALGICO

  • Robtica Educativa con Pingino

    7 Salta Argentina 2013

    Windows 7

    MACOSX

    Debido a que el entorno de desarrollo integrado de Pingino, el cual permite escribir, compilar y

    grabar los programas, est escrito en Python, es necesario instalar componentes Python para su

    funcionamiento.

    En el caso de Windows, la lista de componentes vara ligeramente segn sea el sistema operativo

    (Windows XP o 7) en el cual querremos instalar, sin embargo todo esto est detallado en los tutoriales

    oficiales del proyecto Pinguino.

    Instalacin del Software Pingino en Windows 73

    En el sitio:

    https://sites.google.com/site/pinguinotutorial/installation/windows-7, se encuentra el procedimiento

    para la instalacin del software en Windows 7. Como se encuentra en ingls, simplemente lo

    tradujimos y desarrollamos a continuacin.

    Primero es necesario instalar el driver libusb. El instalador lo puedes bajar de aqu

    (http://www.hackinglab.org/pinguino/download/driver%20pinguino%20windows%207/setup.exe).

    Este driver es compatible con 32 y 64 bits con mltiples arquitecturas ( X86,AMD64,IA64 ).

    La instalacin de los drivers debe seguir este orden!!!

    1. Setup

    3 Actualmente tenemos desarrollado un sistema de instalacin desatendida de todo el software de Pingino.

  • Robtica Educativa con Pingino

    8 Salta Argentina 2013

    2. Una vez finalizada la instalacin del Pingino Driver conectamos la Placa Pingino en el puerto

    USB de la PC. Es probable que el sistema al detectar un nuevo hardware nos muestre el Asistente

    para instalarlo. Si esto sucede se debe cancelar o cerrar dicha pantalla. A continuacin

    verificamos a travs del administrador de dispositivos si Windows reconoci nuestra placa

    Pingino haciendo:

    a) Clic en el botn Iniciar (Windows 7) o en el botn Inicio (Windows XP),

    luego clic con el botn derecho sobre Equipo (Windows 7) o en Mi PC (Windows XP)

    En la opcin Propiedades del men contextual hacer clic

    Luego hacer clic en Administrador de dispositivos ubicado en el panel de la izquierda (Windows 7)

    Las pantallas corresponden a Windows 7

    Debe aparecer la siguiente pantalla:

  • Robtica Educativa con Pingino

    9 Salta Argentina 2013

    Vemos que el reconocimiento de la Placa Pingino debe ser curado para que Windows la

    detecte adecuadamente.

    3. Para ello ir a la carpeta libusb-win32-bin-1.2.6.0, luego abrir la carpeta bin y ejecutar el inf-wizard,

    El asistente te gua en la instalacin haciendo clic en los botones .Cuando llegues a la

    siguiente pantalla selecciona la opcin Pingino Project y contina con el botn

    Cuando llegues a la pantalla con el botn hacer clic y esperar la finalizacin de la

    instalacin

  • Robtica Educativa con Pingino

    10 Salta Argentina 2013

    Cuando este driver est instalado verifica en el Administrador de dispositivos (panel de

    control/sistema/administrador de dispositivos). Se debe ver algo parecido a esto:

    Ya instalamos los driver!!!

    Luego debes instalar los siguientes programas:

    Python 2.6.6 (http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi)

  • Robtica Educativa con Pingino

    11 Salta Argentina 2013

    wxpython 2.8 (http://downloads.sourceforge.net/wxpython/wxPython2.8-win32-unicode-

    2.8.11.0-py26.exe)

    pyusb for python 2.6

    (http://sourceforge.net/projects/pyusb/files/PyUSB%200.x/0.4.3/pyusb-0.4.3.win32-

    py2.6.exe/download)

    Muy Bien!!! ya instalamos todos los paquetes de Python.

  • Robtica Educativa con Pingino

    12 Salta Argentina 2013

    Descarga la ltima versin de Pingino:

    (http://www.hackinglab.org/pinguino/download/latestpinguino/)

    Por ltimo necesitamos instalar el software pingino, la versin X.2 o la X.34 haciendo clic en Siguiente > y

    Finalizar

    El ltimo programa que nos falta instalar es el Pingino Kit, para ello simplemente hacemos doble clic

    sobre el cono del instalador y vamos aceptando los valores que por defecto nos propone el proceso

    de instalacin, haciendo clic en Aceptar o en Siguiente-Next, segn sea el caso.

    Ya instalamos todos los programas, es el momento de5:

    4 En este Taller se trabaja con la versin X.2 por ser la ms estable en estos momentos.

    5 Aqu tendramos que poner sonido de redoblantes!!!

  • Robtica Educativa con Pingino

    13 Salta Argentina 2013

    ::: Creacin y ejecucin de mi primer programa (Hola Mundo).

    En el primer ejemplo de programacin del microprocesador simplemente vamos a

    prender y apagar un LED de manera intermitentemente.

    Presentamos una gua paso a paso para no morir en el intento y asegurar el xito

    de la tarea:

    1.- Tenemos que tener en claro el objetivo:

    Hacer que parpadee un LED de manera intermitente conectado a una de las patitas del micro.

    2.- Los componentes necesarios son: 1 led

    Tener en cuenta que la pata larga del LED tambin llamada nodo- va

    hacia el microprocesador (en este caso al Pin 13 Analgico

    correspondiente a la patita 2 del PIC).

    3.- Montar el led en la protoboard:

    Pata larga

    Pata larga

    Mueca del PIC

  • Robtica Educativa con Pingino

    14 Salta Argentina 2013

    4.- Arrancar Pingino Kit y arrastrar los bloques hasta que quede como la imagen de la columna de

    la izquierda:

    Desde Pingino Kit Diagrama de Flujo Cdigo:

    presionando F4 aparece el siguiente cdigo (sin los comentarios en verde)

    Inicio del Programa

    Pin Mode 13 Analogico - Output

    Enciende LED por 4 seg

    Apaga LED por 1 seg

    Fin del Programa

    void setup() //Aqu se establece el

    comportamiento de los pines

    {

    pinMode(13,OUTPUT); // Establecemos el

    Pin 13 como salida para el led

    }

    void loop() // Aqu se inicia un ciclo que

    repite indefinidamente lo que est

    encerrado entre las dos llaves.

    { //llave de apertura

    digitalWrite(13,HIGH); // El led se prende

    delay(4000); //durante 4 segundo.

    digitalWrite(13,LOW); // El led se apaga

    delay(1000); // durante 1 segundo.

    } //llave de cierre

    Al cdigo que aparece en una ventanita luego de presionar F4, lo seleccionamos y lo copiamos presionando

    Ctrl C o haciendo clic con el botn derecho del mouse y eligiendo la opcin Copy del men contextual.

  • Robtica Educativa con Pingino

    15 Salta Argentina 2013

    5.- Minimizar el Pingino Kit y arrancar el Pingino IDE X.2

    Ahora hay que Compilar el cdigo con el botn "Compile" en la barra de herramientas (si apuntas los

    conos con el mouse, se pueden ver las funciones de cada botn):

    Hacer clic en

    Archivo, luego clic

    en Nuevo.

    Presionar Ctrl V

    para pegar el

    cdigo.

  • Robtica Educativa con Pingino

    16 Salta Argentina 2013

    Si todo ha ido bien debe aparecer en la ventana inferior Output (la que tiene fondo negro) compilation

    done. Esto significa que el Pingino IDE ha podido compilar (traducir el cdigo a un lenguaje que pueda

    ser entendido por el micro) con xito.

    6.- Grabar el compilado en el Microprocesador

    Hacer clic en el botn "Upload to Pingino".

    1.- Botn para

    compilar

    2.- Botn Upload to

    Pingino para grabar el

    programa compilado

    en el micro.

    Eurekas!!

    !

  • Robtica Educativa con Pingino

    17 Salta Argentina 2013

    Aparece la ventana "Vascobootloader". En este momento debes presionar el pulsador de la placa

    Pingino montada en la protoboard, esperar tres segundos aproximadamente (cuenta hasta 3) y luego

    haz clic en el botn "Write" para cargar el programa en la placa Pingino.

    1.- Presionar el pulsador de Reset

    2.- Esperar 3 segundos y hacer clic en el botn

    Write

    En la ventana de VascoBootloader aparece la leyenda6:

    PIC found

    NoName0.hex uploaded

    Esto quiere decir que el PIC ha sido encontrado o reconocido y el programa previamente compilado

    llamado NoName0.hex ha sido cargado con xito. Una vez cargado, el programa empieza a ejecutarse en la

    placa Pingino y en este caso el LED empieza a parpadear7.

    Nota: No te olvides que para grabar otro nuevo programa en la placa, debes apretar el botn reset, contar hasta

    3 y recin pulsar el botn "Write" en la ventana "Vascobootloader", de otro modo el Pingino no es reconocido

    por el software.

    6 Si en vez de PIC found aparece la leyenda PIC not found!! no te asustes, es probable que te hayas apresurado o

    demorado en presionar Write. Simplemente vuelve a presionar reset, cuenta hasta tres y haz clic en Write nuevamente. 7 Este es el momento de los fuegos artificiales !!!

    Probando, probando!!: el nmero "4000" en la instruccin "delay(4000);" representa el tiempo en milisegundos

    que el LED permanece prendido (o sea 4 seg.). Cambia la cantidad a 200 u 800 para ver qu sucede. Lo mismo con

    el delay(1000); que es el que define el tiempo que el LED est apagado. No te olvides del ; al final de c/lnea.

  • Robtica Educativa con Pingino

    18 Salta Argentina 2013

    ::: Inicio de tu primer proyecto

    En esta primera actividad vamos a realizar una secuencia de leds que se enciendan y se apaguen

    simulando un desplazamiento de luces rojas.

    Para ello contaremos con la conexin de 5 leds agregados al circuito de Pingino.

    La secuencia sera la siguiente:

    Tiempo 1: Led encendido conectado a la salida 3 (En el Grafico Led N 1)

    Tiempo 2: Led encendido conectado a la salida 4 (En el Grafico Led N 2)

    Tiempo 3: Led encendido conectado a la salida 5 (En el Grafico Led N 3)

    Tiempo 4: Led encendido conectado a la salida 6 (En el Grafico Led N 4)

    Tiempo 5: Led encendido conectado a la salida 7 (En el Grafico Led N 5)

    Manos a la obra!!!

    El esquema de conexin ser el siguiente:

    Esta actividad puede ser resuelta de diferentes maneras:

  • Robtica Educativa con Pingino

    19 Salta Argentina 2013

    1 Opcin de Solucin: Fuerza Bruta

    Desde Pingino Kit Diagrama de Flujo Cdigo

    Inicio del Programa

    Pin Mode 3 Analgico - Output

    Pin Mode 4 Analgico - Output

    Pin Mode 5 Analgico - Output

    Pin Mode 6 Analgico - Output

    Pin Mode 7 Analgico - Output

    Enciende Led 3 por 1 Seg Apaga Led 3 por 1 Seg

    Enciende Led 4 por 1 Seg Apaga Led 4 por 1 Seg

    Enciende Led 5 por 1 Seg Apaga Led 5 por 1 Seg

    Enciende Led 6 por 1 Seg Apaga Led 6 por 1 Seg

    Enciende Led 7 por 1 Seg Apaga Led 7 por 1 Seg

    Fin del Programa

    void setup() {

    pinMode(3,OUTPUT);

    pinMode(4,OUTPUT);

    pinMode(5,OUTPUT);

    pinMode(6,OUTPUT);

    pinMode(7,OUTPUT);

    }

    void loop() {

    digitalWrite(3,HIGH);

    delay(1000);

    digitalWrite(3,LOW);

    delay(1000);

    digitalWrite(4,HIGH);

    delay(1000);

    digitalWrite(4,LOW);

    delay(1000);

    digitalWrite(5,HIGH);

    delay(1000);

    digitalWrite(5,LOW);

    delay(1000);

    digitalWrite(6,HIGH);

    delay(1000);

    digitalWrite(6,LOW);

    delay(1000);

    digitalWrite(7,HIGH);

    delay(1000);

    digitalWrite(7,LOW);

    delay(1000);

    }

  • Robtica Educativa con Pingino

    20 Salta Argentina 2013

    2 Opcin de Solucin: Utilizacin de ciclos for (Fuerza no tan Bruta)

    Qu es un ciclo for?

    Este tipo de ciclos es uno de los ms usados para repetir una secuencia de instrucciones, sobre todo cuando se

    conoce la cantidad exactas de veces que se requiere ejecutar un tipo de instrucciones.

    Su formato es:

    for (valores de entrada ; condicin de terminacin ; iteracin por ciclo)

    Las tres partes del ciclo se encuentran separadas por ; (punto y coma)

    La primer parte del ciclo especifica valores previos a su inicio.

    La segunda parte indica la condicin de terminacin para el ciclo, la cual est directamente relacionada

    con los valores iniciales.

    Finalmente, la ltima parte especifica cmo sern incrementados los valores iniciales en cada iteracin

    o repeticin del ciclo: de uno en uno, de dos en dos, etc.

    Desde Pingino Kit Diagrama de Flujo Cdigo

    Inicio del Programa

    Inicializamos variables

    I = 0 utilizado en ciclo ForTiempo = 2000, 2 Seg

    i3

    i < 8

    i i + 1

    Pin (i, Output)

    SiNo

    i < 8

    i i + 1

    Si

    Enciende Led (i) por (Tiempo) Seg

    Apaga Led (i) por (Tiempo) Seg

    i3

    Fin del Programa

    No

    int tiempo=2000; // Inicializamos

    la variables tiempo en 2 seg.

    int i=0; // y la variable i que ser

    utilizada en el ciclo for.

    void setup() {

    //Inicializamos las salidas

    analgicas utilizando un ciclo for

    for(i=3;i

  • Robtica Educativa con Pingino

    21 Salta Argentina 2013

    Analicemos con detenimiento lo que hace el ciclo for y el comando digitalWrite que est en su interior:

    for (i=3;i

  • Robtica Educativa con Pingino

    22 Salta Argentina 2013

    3 Opcin de Solucin: Utilizacin de un vector.

    Qu es un vector en informtica?

    Un array o vector es una coleccin ordenada de elementos de un mismo tipo de datos, agrupados de forma

    consecutiva en memoria. Cada elemento del array o vector tiene asociado un ndice o direccin, que no es ms

    que un nmero natural que lo identifica inequvocamente y nos permite acceder a l. Por ej. el vector a puede

    ser representado como una cajonera cuyo contenido son valores numricos (3,4,5,6,7):

    3 Este cajn contiene el valor numrico 3. El ndice del 1 cajn es cero. Se representa: a[0]=3

    4 Este cajn contiene un 4 y su ndice es 1. Se representa como: a[1]=4

    5 Este cajn contiene un 5 y su ndice es 2. Se representa como: a[2]=5

    6 Este cajn contiene un 6 y su ndice es 3. Se representa como: a[3]=6

    7 El ltimo cajn contiene el valor numrico 7 y su ndice es 4: a[4]=7

    Es decir que se identifica el vector con un nombre (puede ser una letra o una palabra) luego se encierra entre

    corchetes el ndice -que es la posicin que ocupa el dato dentro del vector- teniendo en cuenta que la primera

    posicin es el ndice cero- luego se coloca el signo igual y a continuacin su valor: nombre vector[ndice]=valor

    Cdigo a ser escrito en el Pingino IDE X.2

    En primer lugar definimos el vector llamado leds con 5 cajoncitos ({3,4,5,6,7}) cuyos contenido sern nmeros

    enteros (int). La 1 posicin o ndice [0] tendr el valor 3 y la ltima posicin o ndice [4] tendr el valor 7:

    int leds[]={3,4,5,6,7}; // Se define un vector llamado leds que contiene los valores enteros (int) 3,4,5,6 y 7

    int tiempo=200;

    int n=0;

    int contador=0;

    void setup() {

    for (n=0;n

  • Robtica Educativa con Pingino

    23 Salta Argentina 2013

    void loop() {

    for(n=0;n

  • Robtica Educativa con Pingino

    24 Salta Argentina 2013

    En el esquemtico se observa las conexiones necesarias para poner en prctica el siguiente ejemplo de cdigo: void setup() { pinMode(7,OUTPUT); pinMode(13,INPUT); } void loop() { if(digitalRead(13)== LOW) //Si el Pin 13 es LOW, el pulsador est presionado. { toggle(7); //El Pin 7 cambia de estado: si est LOW pasa a HIGH y viceversa while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador. delay(250); } } En esta secuencia de cdigo definimos por primera vez una patita del micro como entrada (INPUT), tambin

    vemos como se lee dicha entrada o sea, cuando se presiona el pulsador (con el comando digitalRead). El

    comando toggle nos permite prender si est apagado o apagar si est prendido el led conectado al Pin 7

    (definido como de salida/OUTPUT). Por ltimo con el comando while (que significa: mientras) evitamos los

    efectos de rebote que pueda tener el pulsador ya que nicamente deja que el void loop se repita si es que el

    pulsador efectivamente est presionado.

    :::: Armemos un semforo

    Materiales: 3 leds de color

    rojo, amarillo y verde

    Circuito: conectar las patitas largas (nodo) de

    los leds en los pines: 7(V), 6(A) y 5 (R) del micro.

    Cdigo: debes completar el cdigo con los valores correctos int i=5;

    int tiempo=?;

    void setup() {

    for(i=?;i

  • Robtica Educativa con Pingino

    25 Salta Argentina 2013

    :::: Combinando los ejemplos anteriores

    Te proponemos combinar el ejemplo del uso de un pulsador con el encendido del semforo en un solo

    proyecto.

    Si te animas, puedes armar un semforo como el de

    la imagen, dentro de un tubito de estao vaco. La

    base est hecha con un pedazo de una disquetera

    vieja y un poco de poxilina. Los agujeros para los leds

    fueron hechos con el mismo soldador (ojo con

    quemarse).

    Una ayudita con el cdigo (una mezcla de los dos ejemplos anteriores):

    int i=5;

    int tiempo=?;

    void setup() { pinMode(13,INPUT);

    for(i=?;i

  • Robtica Educativa con Pingino

    26 Salta Argentina 2013

    digitalWrite(i,LOW);

    delay(tiempo);

    }

    while(digitalRead(13)==LOW); //Para superar rebotes aleatorios del pulsador. delay(250); } }

    :::: Aprendamos a usar nuevas instrucciones: analogRead y analogWrite

    A continuacin vamos a transcribir de la excelente pgina de Henry Laredo un tutorial referido al uso de estas

    dos instrucciones:

    Este tutorial trata sobre dos instrucciones magnficas del Pingino que son: analogRead y analogWrite.

    Mediante el analogRead es posible implementar lecturas de voltajes analgicos, es decir leer niveles de tensin

    que varen entre 0V y 5V. Con el analogWrite conseguiremos tener una salida de PWM8 cuyo duty cycle es

    variable pero de frecuencia fija.

    Vamos a explicar un poco cmo trabaja analogWrite. En el siguiente grfico vemos que el ancho del pulso o

    Duty Cycle (la meseta) puede variar de tamao. A medida que es ms ancho vemos que la tensin media Vm

    (representada por lnea de puntos) aumenta y se acerca al valor mximo de tensin Vp de 5 voltios en nuestro

    caso. Esto hace que la seal que sale por la patita del PIC vare segn se aumente o disminuya dicho ancho

    (Duty Cycle).

    Ntese que el tiempo entre el inicio de una seal y otra es constante y se llamada PERODO (la distancia en

    tiempo entre una meseta y otra).

    8 La modulacin por ancho de pulsos (tambin conocida como PWM, siglas en ingls de pulse-width modulation)

    de una seal o fuente de energa es una tcnica en la que se modifica el ciclo til de una seal (el que tiene forma de meseta), ya sea modificando el ancho del pulso o duty cycle (modulacin de ancho de pulso) o el tiempo entre pulso y pulso (modulacin por frecuencia de pulso).

  • Robtica Educativa con Pingino

    27 Salta Argentina 2013

    Esto significa que la frecuencia (nmero de ciclos tiles por unidad de tiempo) siempre es la misma. Por

    ejemplo, si tenemos durante un segundo la seal a 5 voltios y durante otro segundo a 0 voltios, el nivel medio

    en 2 segundos habr sido de 2.5 V exactos. Si utilizamos una seal, por ejemplo, que est al 40% del nivel alto

    (5 vol), tendremos un nivel medio de 2.0V (0.40V*5). En definitiva esto har que si tenemos un led conectado

    al pin de salida del PIC- la intensidad de su luz aumente o disminuya.

    La instruccin anlogWrite hace esto a travs de los dos valores que deben definirse separados por una coma y

    encerrados entre parntesis:

    analogWrite(pin PWM, DutyCycle)

    Recordar que el PIC tiene las patitas 12 y 13 como pines PWM (las patitas 12 y 13 corresponden a los pines 11 y

    12 respectivamente, ver esquemtico de la pgina 6) y los valores de Duty Cycle pueden variar entre 0 y 1023

    (0= sin seal y 1023=mximo valor de la seal).

    En la siguiente tabla se ejemplifican algunos valores:

    Instruccin Duty Cycle Pin de salida PWM

    % de la seal Valor de la seal de salida

    analogWrite(11, 64) 256 11 25% de 5 vol. 1.25 vol.

    analogWrite(11, 127) 512 11 50% de 5 vol. 2.5 vol.

    analogWrite(11, 191) 768 11 75% de 5 vol. 3.75 vol.

    Los efectos de ambas instrucciones las veremos en el siguiente circuito de aplicacin:

    Materiales:

    Un potencimetro de ms de 47 k Ohm.

    Un led Conexin: Del potencimetro: ubicado con el cabo regulador hacia arriba

    El conector de la izquierda se conecta a 5 vol.

    El conector del medio al pin 13 de Pingino

    El conector derecho a tierra o negativo

    Del Led:

    La patita larga al pin 11 del PIC

    La patita corta a tierra o negativo

  • Robtica Educativa con Pingino

    28 Salta Argentina 2013

    El siguiente cdigo lee el valor que el potencimetro introduce por el pin 13 del PIC, para utilizar dicho valor en

    el tiempo de encendido y apagado de un led conectado al pin 11. Ntese que si el pin 13 es usado como de

    ingreso de datos analgicos no necesita ser definido en el void setup. El resultado es un led que modifica su

    velocidad de parpadeo segn se modifiquen los valores introducidos a travs del giro del cabo del

    potencimetro.

    #define LED 11 // Al pin 11 lo llamamos LED #define POT 13 // Al pin 13 lo llamamos POT int val = 0; void setup() { pinMode(LED, OUTPUT); } void loop() { val = analogRead(POT); digitalWrite(LED, HIGH); delay(val); digitalWrite(LED, LOW); delay(val); }

    El siguiente cdigo permite cambiar la intensidad de la luz emitida por un diodo Led conectado al pin 11

    (recordemos que es un pin de salida PWM) segn se vare la seal de entrada por el pin 13 a travs del giro del

    cabo del potencimetro. Ntese que en el void setup no se define nada ya que las entradas (INPUT) como las

    salidas (OUTPUT) analgicas no necesitan definirse.

    #define LED 11 #define LDR 13 int valu = 0; void setup() { } void loop() { valu = analogRead(LDR); valu = valu/4;//Se divide por 4 el valor entregado por el potencimetro para que no sea tan alto

    analogWrite(LED, valu); delay(10); }

  • Robtica Educativa con Pingino

    29 Salta Argentina 2013

    ::: Calentando Motores!

    En esta seccin vamos a incursionar en el mundo de los motorcitos de corriente continua de 5 vol. Te

    vamos a mostrar dnde los puedes conseguir y la forma de conectarlo a la placa Pingino.

    En Busca De Los Motores: Los motorcitos de cc o dc (corriente continua - los que andan si los

    conectamos con una pila) se los pueden extraer de una lectora de CD/DVD en desuso. Como una imagen vale

    ms que mil palabras, veamos la secuencia de imgenes para poder extraerlos:

    1

    8 7

    6 5

    4 3

    2

  • Robtica Educativa con Pingino

    30 Salta Argentina 2013

    9 10

    14

    16 15

    13

    12 11

    17

  • Robtica Educativa con Pingino

    31 Salta Argentina 2013

    Conectando el motor a Pingino: no se puede conectar los dos cables del motorcito directamente a la

    placa Pingino ya que es necesario proteger la placa contra posibles picos de corriente inversa cuando se activa

    o desactiva el motor9. Para poder proteger la placa vamos a conectar el motor a un chip llamado L293D

    El L293D no solo nos permite proteger el circuito sino tambin controlar el sentido del giro del motor y tambin

    combinado con las salidas PWM del Pingino- la variacin de su velocidad.

    El circuito de conexin es el siguiente:

    Como se ve en el esquemtico anterior se pueden conectar dos motorcitos, copiando en el lado derecho las

    conexiones detalladas en el lado izquierdo.

    Para que te resulte ms fcil su conexin presentamos las imgenes -desarrolladas en Fritzing- del cableado

    desde Pingino al L293D y al motor:

    9 Cuando un motor contina girando (debido a la inercia) despus de ser apagado se convierte en un generador

    de corriente. Esta corriente generada por el motor puede daar la placa electrnica, al retornar a la placa Pingino.

    Pin PWM de Pingino

    Pin digital de Pingino (13)

    Pin digital de Pingino (14)

  • Robtica Educativa con Pingino

    32 Salta Argentina 2013

    Referencia:

    Cable marrn => del pin 11 del Pingino al pin 1 del L293D

    Cable gris => del pin 13 del Pingino al pin 2 del L293D

    Cable naranja => del pin 14 del Pingino al pin 7 del L293D

    Cable verde => del pin 3 del L293D al motorcito

    Cable amarillo => del pin 6 del L293D al motorcito

    Cdigo para Pingino:

    void setup(){

    pinMode(13,OUTPUT);

    pinMode(14,OUTPUT);

    digitalWrite(13,LOW);

    digitalWrite(14,LOW);

    }

    void loop(){

    //giro en un sentido

    digitalWrite(13,HIGH);

    digitalWrite(14,LOW);

    delay(2000);

    //giro en el otro sentido

    digitalWrite(13,LOW);

    digitalWrite(14,HIGH);

    delay(2000);

    //para parar el giro motor

    digitalWrite(13,LOW);

    digitalWrite(14,LOW);

    delay(2000);

    }

    L293D

  • Robtica Educativa con Pingino

    33 Salta Argentina 2013

    Explicacin del cdigo:

    En primer lugar definimos a los pines 13 y 14 como pines de salida y lo ponemos en cero. Para manejar el

    sentido de giro y la parada del motor debemos tener en cuenta la siguiente tabla:

    Pin 13 Pin 14 Motor

    LOW LOW PARADA

    HIGH LOW GIRO EN UN SENTIDO

    LOW HIGH GIRO EN OTRO SENTIDO

    Para manejar adems la velocidad de giro debemos manejar los valores del pin PWM; a tal efecto presentamos

    un ejemplo de cdigo:

    #define motor 11 // Recordar que los nicos pines PWM son el 11 y el 12

    void setup()

    {

    //Recordar que los pines analgicos no necesitan ser definidos

    }

    void loop(){

    unsigned int a;

    for (a=0;a0;a--) {

    analogWrite(motor,a);

    delay(100);

    }

    }

    Explicacin del Cdigo: Definimos al pin 11 con el nombre motor, y luego variamos de 0 a 1023 los parmetros de la instruccin analogWrite a travs de un ciclo for. El motor debe empezar a aumentar su velocidad de giro hasta alcanzar el valor mximo. All se espera 1 milisegundos (casi nada) y se comienza a decrementar la velocidad de giro (de 1023 a 0). Este ciclo se repite indefinidamente hasta que desconectemos Pingino del puerto USB. Vamos por ms!!! Te proponemos combinar los dos cdigos a los efectos de poder hacer que el motor vare la velocidad y el sentido de giro. Esto puede complementarse con el uso de pulsadores que segn se presionen tengamos distintas velocidades y distinto sentido de giro.

  • Robtica Educativa con Pingino

    34 Salta Argentina 2013

    :::: Pongamos Blanco sobre Negro o Negro sobre Blanco

    Es posible hacer que Pingino distinga entre una superficie clara/blanca (capaz de refractar la luz) y una

    superficie obscura/negra (incapaz de refractar la luz). Para ello tenemos que echar mano a un componente

    llamado foto diodo emisor/receptor; el sensor CNY70 que es uno de los sensores ms empleados dada su

    economa y sus variadas aplicaciones prcticas.

    Habitualmente se lo usa si se desea que un robot mvil siga un camino marcado por una raya en el suelo; el

    CNY70 enviar al microcontrolador la informacin necesaria para que sepa si est desplazandose sobre la raya

    o no. El tratamiento de dicha informacin por Pingino originar los comandos adecuados hacia las ruedas

    motrices para continuar sobre la raya que hace de gua.

    A continuacin se presenta cmo funciona el CNY7010 y el circuito para conectarlo a Pingino:

    10 Cuando la luz del emisor infrarrojo impacta sobre la base del fototransistor se conduce una corriente entre el Colector y el Emisor que produce la

    seal de salida. La salida de este circuito es analgica y viene determinada por la cantidad de luz reflejada.

    Diodo IR Fototransistor A: nodo E: Emisor K: Ctodo C: Colector

  • Robtica Educativa con Pingino

    35 Salta Argentina 2013

    Conectamos un led al pin 7 de Pingino y el cable blanco que sale del circuito del CNY70 lo conectamos al pin

    13 de Pingino, tal como lo muestra el esquema:

    Una vez que se tiene todo conectado procedemos a grabar en el Pingino el cdigo para probar la

    deteccin de superficies claras y obscuras. Para ello cargamos el IDE de Pingino X2 y copiamos el siguiente

    cdigo:

    #define ledR 7 #define CNY70 13 int rojo=0; void setup(){ pinMode(ledR,OUTPUT); digitalWrite(ledR,LOW); } void loop() { rojo = (5.0 * analogRead(CNY70) ) / 1024; if (rojo < 1) { digitalWrite(ledR,LOW); } if (rojo > 2.0) { digitalWrite(ledR,HIGH); } delay(1000); }

    Como vemos el cdigo es muy sencillo y lo que hace es: 1. Bautizar (definir) al pin 7 con el nombre ledR, ya que en dicho pin vamos a conectar la patita larga del

    led rojo. Al pin 13 con el nombre de CNY70 ya que en ese pin vamos a leer la informacin que mande el circuito del CNY70 (por el cablecito blanco). Inicializar una variable llamada rojo con el valor cero.

    2. En el void setup definimos al pin 7 (ledR) como salida y lo pone en estado bajo (el led apagado). Recordar que los pines analgicos no hace falta definirlos como entrada o salida.

    3. En el void loop tenemos una frmula que dice lo siguiente: al valor ledo del CNY70 transformarlo en un valor que represente un porcentaje en relacin a los 5 vol (que es el 100%) y 1024 (que representa el mximo valor de la seal que se lee en el pin analgico). Este valor se almacena en la variable rojo.

  • Robtica Educativa con Pingino

    36 Salta Argentina 2013

    4. Luego se pregunta si rojo es menor que 1, esto quiere decir si sobre el CNY70 hay una superficie blanca, el led rojo permanece apagado o se apaga si estaba encendido.

    5. Si rojo es mayor a 2 quiere decir que sobre el CNY70 hay una superficie rojo y el led rojo ser encendido si estaba apagado o continuar prendido si ya lo estaba.

    De esta manera le hemos enseado a Pingino a distinguir entre superficies blancas y superficies negras.

    :::: Fuentes de informacin consultada

    Henry Laredo, http://microembebidos.wordpress.com

    Ral Alvarez Torrico, http://www.tecbolivia.com

    Sitio oficial, http://www.pinguino.cc/

    Yeison Cardona, http://yeisoneng2.blogspot.com.ar

    http://www.crya.com.mx/manuales/atcryabot1.pdf

    Ingenio Slido S.A.S., http://www.ingeniosolido.com/blog/

    De la Cruz, Julio, http://micropinguino.blogspot.com.ar/

  • Robtica Educativa con Pingino

    37 Salta Argentina 2013

    :::: Anexo I: Sintaxis y Estructuras del Lenguaje de Programacin Pingino IDE

  • Robtica Educativa con Pingino

    38 Salta Argentina 2013

  • Robtica Educativa con Pingino

    39 Salta Argentina 2013

    :::: Anexo II: Instalacin de los Drivers de Pingino en Windows 811

    Pasos

    1. Descargar el controlador de Pingino de este enlace: https://sites.google.com/site/camachomedia/home/archivos/controlador%20pinguino.zip?attredirects=0&d=1

    2. Presionar la tecla que tiene el smbolo de windows y 'R' de forma simultnea.

    3. Copiar en en el cuadro de texto de la ventana de ejecutar el comando entre comillas "shutdown.exe /r /o /f /t 00" y a continuacin pulsa"Aceptar".

    4. Selecciona la opcin "Solucionar Problemas"

    5. Selecciona "Opciones Avanzadas"

    6. Selecciona "Configuracin de Inicio" y pulsa "Reiniciar".

    11

    Tutorial extrado de la pgina http://micropinguino.blogspot.com.ar/

  • Robtica Educativa con Pingino

    40 Salta Argentina 2013

    7. Una vez se reinicie el sistema aparecer un men donde se pueden elegir diferentes opciones como: Habilitar Depuracin, Habilitar el registro de arranque, Habilitar modo seguro, etc. Hay que elegir la opcin 7 "Deshabilitar el uso obligatorio de controladores firmados".

    8. Conectar la tarjeta pingino y ejecutar el asistente de instalacin del controlador de pingino.

    9. Verificar que est instalando en dispositivos e impresoras.