SACRAT CH PPARA A ARDUINO
MANUAL S4 A PARA PROGRAMAR TU ARDUINO SIN SABER ARDUINO
Manual básico de S4A ( Scratch para Arduino)
INDICE: 1. 2. 3. 4.
PRIMERAS NOCIONES EMPEZAMOS A TRABAJAR NUESTRA PRIMERA PRÁCTICA: LED INTERMITENTE PRACTICA 2: LED (SALIDA) INTERMITENTE CON CONTROL DE FRECUENCIA MEDIANTE UN POTENCIOMÉTRO (ENTRADA ANALÓGICA) 5. PRACTICA 3: GOBIERNO DEL ENCENDIDO DE UN LED (SALIDA) MEDIANTE UN PULSADOR (ENTRADA DIGITAL) 6. PRÁCICA 4: SEMÁFORO SEMÁFORO 7. PRÁCTICA 5: GIRAR UN SERVO CON UN POTENCIOMETRO 8. PRÁCTICA 6 SEGUIDOR DE LUZ 9. PRÁCTICA 13 MINISKYBOT SEGUIDOR DE LINEAS - ROBOT ROBOT ESCOBA ESCOBA 10. BIBLIOGRAFIA
Ana Núñez Pérez
2
3 5 7 8 9 10 13 15 20
Manual básico de S4A ( Scratch para Arduino)
1. PRIMERAS NOCIONES S4A Scratch for Arduino (S4A)
es una versión modificada de Scratch, preparada para interactuar con placas Arduino permitiendo al usuario programar de forma sencilla e intuitiva. S4A Incluye nuevos bloques para controlar sensores y actuadores conectados a sistema Arduino. Fue desarrollado por el equipo de Smalltalkdel Citilab en el año 2010, y desde entonces se ha usado en todo el mundo para una gran variedad de proyectos . Pero, ¿qué es Scratch? : Scratch es un entorno de programación gratuita, desarrollado por el MIT (Massachussets Institute of Tecnology) que permite programar mediante el uso de una sencilla y interfaz gráfica utilizando un sistema de bloques, que simbolizan diferentes elementos de programación , por ejemplo: instrucciones, condiciones, variables, bucles, entre otros. Estos bloques de programación se van ensamblando, como las piezas de un puzzle hasta formar programas. ARDUINO ¿Y Arduino?: Arduino es tarjeta electrónica sencilla y de bajo precio diseñada para el aprendizaje de electrónica y la creación de prototipos. La integración de estos dos entornos permitió el desarrollo de S4A, cuya plataforma nos permite entrar al mundo de la electrónica, la robótica y programación y desarrollar diferentes prototipos, sin necesidad de tener conocimientos avanzados en estas áreas . LA PLACA ARDUINO UNO Esta es la placa con la que trabajaremos y como puede verse en a la parte superior derecha están las entradas/salidas digitales, y en la inferior, las analógicas, numeradas como A0, A1, así como a su la entrada de Reset. En la parte derecha podemos ver el puerto USB –a la izquierda la entrada de corriente. Seis de las entradas digitales se pueden emplear como entradas PWM. Esto quiere decir que permiten simular un comportamiento analógico enviando señales de valor variable, de cara a modificar la intensidad de iluminación de un LED o la velocidad de giro de un motor. Corresponden a los pines 3, 5, 6, 9, 10 y 11, y permiten enviar señales de 256 valores distintos entre 0 y 5 voltios. Ana Núñez Pérez
3
Manual básico de S4A ( Scratch para Arduino) La alimentación de Arduino UNO se realiza a través de la entrada USB, o bien a través de la entrada de corriente. Por último, Arduino UNO tiene una entrada de RESET que permite reiniciar el bootloader y cargar un nuevo programa, también se puede hacer desde el IDE de Arduino. SHIELDS DE ARDUINO Los shields son placas que se empotran encima de una placa Arduino y que ofrecen funcionalidades complementarias a las de esta . ARDUINO BASIC I/O Para poder realizar montajes de electrónica de control con Arduino deberíamos trabajar con nuestros propios circuitos eléctricos y electrónicos empleando placas Proto Board, pero para simplificarnos algunas prácticas también podemos usar una placa hecha ex profeso para entornos docentes por la empresa vasca MSE Bilbao, la placa BASIC I/O, que podemos ver en la imagen . Las entradas digitales se identifican con una D y un número, y ya van asociadas a LEDs –pines 11, 10, 9 y 6-, 4 pulsadores –pines 12, 8, 7 y 4-, altavoz –pin 2- y motor –pines M+ y M-, que corresponden a dos tornillos de la parte superior derecha. Las entradas analógicas se identifican con una A y van asociadas a dos potenciómetros –pines 0 y 1(situados en la esquina inferior izquierda de la imagen), a su derecha, de color blanco, un fotodiodo –pin 2-, siguiendo hacia la derecha de la imagen, un sensor IR –pin 3-, a su dereha, un sensor de temperatura –pin 4 y en la esquina inferior derecha de la imagen tenemos un transistor. Por último arriba a la izquierda se encuentra el botón de RESET. Con esta placa ya tenemos creados los circuitos eléctricos y electrónicos necesarios para poder empezar a programar en Arduino.
Ana Núñez Pérez
4
Manual básico de S4A ( Scratch para Arduino)
2. EMPEZAMOS A TRABAJAR Para empezar a trabajar lo primero que tenemos que hacer es instalar el software necesario y para ello deberás seguir los pasos siguientes: 1º paso: Descarga e instala S4A S4A funciona sobre los tres sistemas operativos de escritorio más populares. Descargad e instalad el que os convenga. Windows (http://s4a.cat/downloads/S4A15.exe) Mac (http://s4a.cat/downloads/S4A15.dmg) Linux (Debian) (http://s4a.cat/downloads/S4A15.deb) Raspbian (Debian para RaspberryPi) (http://s4a.cat/downloads/S4A15_RP.deb)
2º paso: Descargad e instalad el entorno Arduino siguiendo las instrucciones de http://arduino.cc/en/Main/Software. 3º paso: Instalar el firmware en el Arduino Este firmware es un programa que debe instalarse en vuestra placa Arduino para poderos comunicar con ella desde S4A. Descargad nuestro firmware aquí http://s4a.cat/downloads/S4AFirmware15.ino 4º paso: Conectad la placa Arduino a un puerto USB de vuestro ordenador se instalará el nuevo hardware y fígaros en que puerto está conectada. Siempre podréis comprobarlo en el administrador de dispositivos-puertos COM y LPT En mi caso la placa Arduino se ha instalado en el puerto COM 28 5º paso: Abrid el archivo de firmware que os acabáis de descargar (S4AFirmware15.ino) y a continuación:
Ana Núñez Pérez
5
Manual básico de S4A ( Scratch para Arduino) En el menú Herramientas - Tarjeta, seleccionad la versión de la placa (en mi caso veréis que se trata de la placa Arduino Uno) En el menú Herramientas – Puerto Serial, seleccionad el puerto serie en qué esté conectada la placa. o
o
o
Y a continuación cargad el firmware a la placa mediante la opción de menú cargar.
o
Al terminar os aparecerá en la parte inferior el mensaje “ carga terminada” Nota: Esto solo lo tienes que hacer la primera vez, para que quede instalado en tu palca.
Ahora ya puedes comenzar a programar tu Arduino con S4A. Ejecuta el S4A que instalaste en el paso 1 y observaras que al abrirse lo primero que hace es buscar la placa que ya hemos conectado y en unos pocos segundos la pantalla que te encontraras será esta:
Ana Núñez Pérez
6
Manual básico de S4A ( Scratch para Arduino) Observareis que en la parte superior izquierda aparecen los distintos tipos de bloques o funciones, identificados con un color diferente según las librerías (movimiento, apariencia, sonido, lápiz, control, sensores, operadores y variables. Os recomiendo pinchéis sobre ellas e investigar las funciones que en ellas encontramos.
3. NUESTRA PRIMERA PRÁCTICA: LED INTERMITENTE Nuestro primer ejercicio será el apagado y encendido de un led conectado a la salida Pin 10 de la tarjeta Arduino. Vamos a utilizar de la librería de “contro l” dos funciones:
La primera ejecuta el programa que tiene debajo al presionar la bandera verde, y la segunda ejecuta continuamente los bloques en su interior, lo que hará que el programa sea cíclico. Y la segunda sirve para encerrar en un ciclo un conjunto de instrucciones para que estos se repitan por siempre y de la librería apariencia, que son las instrucciones para apagar y encender una salida digital: De la librería “movimiento”
a los que quitaremos el texto que muestra por defecto, lo que hace esta instrucción es detener el avance del programa durante el tiempo determinado desplegaría una nube de pensamiento si no la hubiésemos quitado. Con lo que nuestro primer programa quedará como indica la figura. Para el montaje puedes utilizar la palca Arduinio Basic I/O colocada encima de la placa Arduino UNO y en la observaras que el led amarillo se corresponde con la salida PIN 10. O bien realizar el montaje sencillo que se muestra en la figura. Presiona la banderita verde y el led parpadeará con una frecuencia de 2 s, para detener el programa pulsa el círculo rojo.
Ana Núñez Pérez
7
Manual básico de S4A ( Scratch para Arduino) Si quisiésemos que en la pantalla del escenario aparezca una imagen de un led que simula su encendido y apagado crearíamos con la herramienta “disfraces”
del entorno dos imágenes, una que llamados led_off y otra led_on que muestren su estado. Para ello lo que podéis hacer es importarlas, o también podéis importar la imagen de un led, y después copiarla y editarla cambiándola el color para que simule el encendido. Y en el programa lo único que tenemos que hacer es modificar el anterior añadiendo de la librería apariencia, los bloques de función y
4. PRACTICA 2: LED (SALIDA) INTERMITENTE CON CONTROL DE FRECUENCIA MEDIANTE UN POTENCIOMÉTRO (ENTRADA ANALÓGICA)
En esta práctica vamos a ver como asociar a una variable al valor de una entrada analógica - Analog0- con el fin de poder variar el retardo en el encendido y apagado de una salida digital (led amarillo) PIN 10. Comenzamos definiendo la variable “frecuencia”. En la librería de variables, clicamos en nueva variable y creamos una con el nombre “frecuencia”, aparecerán distintos bloques de función asociados a dicha
variable.
Tomaremos la función “ fiajar frecuencia a ..”y la asociaremos de la biblioteca “movimiento” la función “valor del sensor Analog0 ” que será el valor
leído del potenciómetro que se encuentra en el canal A0. El tiempo de encendido lo fijamos a 0.1 segundos y en actuamos sobre el tiempo de apagado. El tiempo de apagado los configuramos con la función “esperar a…. segundos” de la librería “control” y colocando en el “operador” la frecuencia/2000 (la frecuencia variará entre 0 y 0,512s) El programa quedará asi. Podemos observar como al modificar el valor del potenciómetro varía el tiempo de apagado del led. Ana Núñez Pérez
8
Manual básico de S4A ( Scratch para Arduino) Si queremos simular el funcionamiento usaremos a la opción de mostrar en la pantalla “escenario” la imagen de
un diodo led encendido y apagado con los disfraces led_off y led_on, mediante la función “cambiar el disfraz a led_on” y “cambiar el disfraz a led_off”
en el programa.
Y así es como quedaría el esquema de conexiones de los componentes si no usáis la placa BASIC I/O.
5. PRACTICA 3: GOBIERNO DEL ENCENDIDO DE UN LED (SALIDA) MEDIANTE UN PULSADOR (ENTRADA DIGITAL)
Queremos gobernar el encendido de nuestro Led amarillo, PIN 10, (o entrada digital D10 de la placa BASIC I/O), mediante el accionamiento de un pulsador, entrada digital D4 de la placa BASIC I/O, o PIN 2. La lógica del programa es sencilla: si el sensor digital 2 (pulsador D4) está presionado, es decir, es igual a verdadero (true), la salida digital 10 (led amarillo) estará encendido; si no, salida digital 10 (led amarillo) apagado. Por lo que utilizaremos el bloque de “sensor… presionado” con el operador .
Ana Núñez Pérez
9
Manual básico de S4A ( Scratch para Arduino) Y por lo tanto el programa y el circuito de conexión quedarán como puedes ver en las imágenes.
Recuerda que la resistencia hay que colocarla entre el pulsador y tierra así evita que +5V se conecte con GND al cerrar el pulsador.
6. PRÁCICA 4: SEMÁFORO
Con lo aprendido hasta ahora la siguiente práctica nos resultará muy sencilla, pues trata de programar un semáforo. Utilizaremos las siguientes salidas: - Pin 12: Led verde. - Pin 11: Led rojo. - Pin 10: Led ámbar. Así que siguiendo la misma lógica que aplicamos en la práctica 3 el programa nos quedará como reobserva en la imagen.
Ana Núñez Pérez
10
Manual básico de S4A ( Scratch para Arduino) Y éste el esquema de conexión:
El servo es un dispositivo con tres entradas, dos son de alimentación (5v y 0v) y la otra es la que recibe la señal que le indica el ángulo que debe girar, esta señal está formada por un pulso que el circuito incluido en el servo interpreta para girar el motor y dejarlo fijo en el ángulo indicado.
7. PRÁCTICA 5: GIRAR UN SERVO CON UN POTENCIOMETRO, S4A Y ARDUINO En este ejercicio vamos a utilizar la señal variable que produce un potenciometro para girar un servo un ángulo determinado como se puede ver en este vídeo. Para hacer el montaje necesitaremos:
Ana Núñez Pérez
11
Manual básico de S4A ( Scratch para Arduino) .
S4A dispone de dos salidas para servos, son la 4 y la 7, y dispone de una instrucción para girar un ángulo determinado el servo. Este servo que usamos puede colocarse en cualquier ángulo entre 0 y 180 grados. Conectaremos las patillas externas del potenciometro, como en el ejemplo anterior, a 5v y 0v, y la patilla central a la entrada analógica Analog6. El conector rojo del servo los conectaremos a 5v, el marrón a 0v y el naranja, que es el de señal, lo conectaremos a la salida 7. El valor recogido del potenciometro varía entre 0 y 1023, esta cantidad hay que transformarla en ángulo (entre 0 y 180) así que los más fácil será multiplicar el valor del potenciometro por 0.18 obtener la parte entera y usar ese valor como ángulo para el servo.
Y el programa quedará: Ana Núñez Pérez
12
Manual básico de S4A ( Scratch para Arduino)
8. PRÁCTICA 6 SEGUIDOR DE LUZ CON S4A Y PLACA ARDUINO Con este ejemplo queremos mover un servo motor para que oriente una pequeña placa (donde está el circuito) hacia la luz recibida desde una linterna. Para esto utilizaremos dos resistencias variables con la luz (LDR) en las que la resistencia varía en función de la luz recibida. En el dibujo del circuito vemos que se generan dos divisores de tensión con la resistencia de 270 ohmios y la resistencia LDR variable en función de la luz recibida. Según sea esta resistencia, en los puntos analógico1 y analógico2 habrá una tensión diferente entre 0V y 5V (si la luz recibida es diferente), que se convertirá en un valor entre 0 y 1023 que la placa Arduino enviará al ordenador. En el programa leeremos los valores de la tensión en los puntos analógico1" y "analógico2" con la instrucción:
Comparando los valores de las dos entradas sabremos cual recibe más luz y por lo tanto hacia donde deberemos mover el servo. Ana Núñez Pérez
13
Manual básico de S4A ( Scratch para Arduino)
Inicialmente el servo se colocará a 90 grados (la variable posición = 90 que corresponde con la posición intermedia del servo), a cada ciclo del bucle y en función de los valores leídos en las entradas añadirá o restará una cantidad (2 o 6) a la variable posición y después moverá el servo a la nueva poción. En función de las LDR utilizadas y la luz suministrada (junto con la luz ambiente) es posible que haya que modificar los valores de las condiciones (en el ejemplo las diferencia consideradas son 50 y 100) para ajustar el movimiento del servo. Con estos elementos, un led blanco y un motor para mover dos ruedas podemos fabricar un pequeño robot siguelínemeas. Este tipo de robot sigue un camino formado por trazo de una línea negra sobre un fondo blanco. La separación de las LDR sería más o menos d ella anchura de la línea y entre ellas estaría el led blanco, si las LDR están sobre el fondo blanco responderán con el mismo valor y el robot seguirá una trayectoria recta, si una de las LDR se coloca sobre el línea negra existirá una diferencia en las resistencias que el programa podrá utiliza par amover el servo y girar el robot hacia posición correcta. Ana Núñez Pérez
14
Manual básico de S4A ( Scratch para Arduino)
9. PRÁCTICA 7 :MINISKYBOT SEGUIDOR DE LINEAS - ROBOT ESCOBA Para finalizar vamos a montar un robot MinSKyBot siguiendo las intrusiones de Borjaper en su tutorial: http://www.arduteka.com/2013/04/robot-miniskybot-2-como-siguelineas-y-detectorde-obstaculos/ Aunque aquí os lo dejo resumido.
Arduino, Impresion 3D, IR , MiniskyBot, Robot, Robótica, sensor ultranosidos, TUTORIAL Borja
Ana Núñez Pérez
15
by
Manual básico de S4A ( Scratch para Arduino) El MiniSkybot es un robot educacional libre e imprimible. Toda la información está disponible para que cualquiera lo pueda estudiar, copiar, modificar y fabricar. Además, ha sido diseñado exclusivamente usando software libre : Sistema operativo Linux, OpenScad, Frecad y Kicad. Esto garantiza que se puedan realizar diseños derivados sin tener que pagar ningún tipo de licencia o realizar copias ilegales de software privativo. Al ser un robot “ libre e imprimible “, cualquier persona lo puede descargar e imprimir!!
El printbot Miniskybot 2 es la segunda generación de la familia de robots imprimibles Miniskybot. Aquí tenéis un fabuloso video orquestado por el gran ObiJuan, en el que podéis ver en acción a diversos PrintrBot o robots imprimibles. Para saber la posición en la que está, se utiliza un potenciómetro que gira simultáneamente con el servo y que indica el ángulo en el que se encuentra. Con la modificación quitamos el potenciómetro y lo sustituimos por dos resistencias iguales con lo que la información que le llega al servo es que se encuentra siempre en la posición de 90º, si le indicamos al servo que se coloque en una posición mayor de 90º, por ejemplo 180º, girará de forma continua en un dirección, si le indicamos al servo que se coloque en una posición inferior, por ejemplo 0º, girará de forma continua en el otro sentido. Si le indicamos 90º el servo se parará. Como las resistencias no son perfectas y tienen cierta diferencia respecto al valor nominal (aunque pongamos resistencias con 1% de tolerancia) se genera un cierto error respecto a la posición central. Así que 90º puede que no pare el motor y tendremos que buscar un ángulo cercano a 90º para que el motor quede parado. Necesitaremos identificar este dato para cada uno de los dos servos. Ahora que ya tenemos un robot imprimible miniskybot 2 que funciona, lo podemos modificar para que se pueda programar desde S4A (Scratch 4 Arduino)! Necesitaremos hacer varias modificaciones: En primer lugar vamos a sustituir el cable USB que conecta la placa Arduno con el ordenador por una conexión inalámbrica usando dos módulos RF Xbee: uno en el robot y otro conectado a una salida USB del ordenador. En segundo lugar tendremos que caracterizar los relés (dirección de giro y punto de parada) con las instrucciones S4A. También tendremos que modificar el firmware que cargaremos en la placa Arduino para gestionar el medidor de distancia (el sensor de ultrasonidos).
Todo ello lo tenéis perfectamente desarrollado por “borja” en la página: http://www.arduteka.com/2013/05/robot-imprimible-miniskybot2-programado-con-s4a/ Ana Núñez Pérez
16
Manual básico de S4A ( Scratch para Arduino) Diseño y construcción sensor ultrasonidos.
de un
“siguelineas·
sensor (IR) y
de un “robot escoba”
También es necesario caracterizar estos sensores para encontrar un umbral entre blanco y negro que podamos usar en el sketch. En las pruebas que he realizado al poner el sensor sobre fondo negro da un valor de 600 y al ponerlo sobre fondo blanco da 30, así que he escogido como umbral 200 o 300 para que cuando la señal sea menor de este umbral entienda que el sensor está sobre fondo blanco y corrija la trayectoria. También incluiremos una tira de 4 pines hembra para alojar el sensor de ultrasonidos. Finalmente se han soldado los seis hilos del trozo cable paralelo para conectar los sensores y la alimentación (5v, GND, Trig, Echo, IR izquiedo, IR derecho) con la placa Arduino. Finalmente se han soldado los seis hilos del trozo cable paralelo para conectar los sensores y la alimentación (5v, GND, Trig, Echo, IR izquiedo, IR derecho) con la placa Arduino. Conexión con la placa Arduino.
Usaremos el trozo de cable paralelo para conectar los sensores con la placa Arduino. El cable va soldado a otra placa en la que también hemos soldado 9 pines macho en un extremo que encajarán con las entradas analógicas, más Vin y GND y un pin que queda entre los dos bloques de pines (en total 9 pines). En el otro extremo de la placa hemos soldado 8 pines macho que encajarán con las entradas digitales (de 0 a 7) de la placa Arduino. De esta forma para conectar y desconectar la placa Arduino del robot sólo hay que sacar la placa que tiene los pines soldados. En esta placa también colocamos dos tiras de tres pines machos (en la paste superior) donde conectaremos los cables de los servos. Por último para conectar las líneas de control de los servos usaremos dos cables que se conectarán directamente a los pines 8 y 12 de la placa Arduino. Ana Núñez Pérez
17
Manual básico de S4A ( Scratch para Arduino) Como vemos en la imagen hemos añadido un interruptor en el cable de alimentación que va desde las pilas a la placa para poder parar el robot. La lógica es muy simple:
Si los sensores “ven” negro (están sobre la línea) los dos motores giran hacia delante. Si un de ellos “ve” blanco parará el motor del otro lado con lo que el robot girará
hacia la línea negra. Si los dos sensores ven blanco el robot se para.
Un ejemplo de funcionamiento es el de un del robot “escoba” con el que el robot buscará objetos que estén a menos de 40 cm y cuando los encuentre los empujará hasta sacarlos de un espacio limitado por una línea negra. Aquí tenéis una posible solución.
Ana Núñez Pérez
18
Manual básico de S4A ( Scratch para Arduino)
Recordad para más detalles entrar en http://www.arduteka.com/2013/05/robotimprimibleminiskybot2-programado-con-s4a/,
que es la
arduteka.com, de la que yo os he sacado esta práctica
Ana Núñez Pérez
19
entrada de “borja”
en
Manual básico de S4A ( Scratch para Arduino)
Documentación – bibliografía - webgrafía:
Arduino la tecnología al alcance de todos de Mikel Etxebarria Isuskiza http://s4a.cat/index_es.html http://www.konstrubotika.com/s4a-scratch-para-arduino/ Software & Barra Libre (http://softwareybarralibre.org/?q=content/e-3-girarun-servo-con-un-potenciometro-s4a-y-arduino) http://www.arduteka.com “Borja” (2013), Robot imprimible miniskybot2 programado con S4A
Recuperado 11 de febrero de 2014 desde: http://www.arduteka.com/2013/05/robot-imprimible-miniskybot2-programadocon-s4a/ S4A (Scracth) + Arduino de José Manuel Ruiz Gutierrez Gutiérrez (Diciembre de 2011 Versión de Documento: V1.0 José Manuel Ruiz Gutiérrez. Blog de referencia: http://josemanuelruizgutierrez.blogspot.com/
Ana Núñez Pérez
20