Si le interesa ver el libro completo, regístrese con el siguiente código en www.marcombo.info
TARDUINO
En pocas horas recibirá un enlace con el libro completo
Taller de Arduino
Taller de Arduino Un enfoque prรกctico para principiantes Germรกn Tojeiro Calaza
Taller de Arduino Primera edición, 2014
© 2014, Germán Tojeiro Calaza
© 2014 MARCOMBO, S.A. Gran Via de les Corts Catalanes, 594 08007 Barcelona www.marcombo.com Diseño de la cubierta: NDENU DISSENY GRÀFIC Corrección: Raquel Sayas Lloris
«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra». ISBN: 978-84-267-2150-1 D. L.: B-11442-2014 Printed in Spain
A mi hermano, Ibรกn Toxeiro
Índice Prólogo ......................................................................................................... xiii Convenciones utilizadas en este libro ............................................................. xv Agradecimientos .......................................................................................... xvii Marcas registradas .......................................................................................xviii Capítulo 1. INICIO CON ARDUINO DESDE CERO................................................. 1 1.1 ¿Qué es Arduino y para qué sirve? ............................................................... 1 1.2 Configuración e instalación ........................................................................... 5 1.2.1 Instalación del entorno de desarrollo (IDE)........................................... 5 1.2.2 Instalación de los drivers de nuestro Arduino ....................................... 7 1.2.3 Instalación de los drivers bajo entorno Windows (XP, Vista, Windows 7 y 8) ..................................................... 8 1.3 Una primera práctica: parpadeo de un LED ................................................ 10 1.4 ¿Qué tipo de Arduino escoger? .................................................................. 19 1.5 Herramientas útiles para desarrollar tus proyectos ................................... 31 1.5.1 Herramientas hardware ...................................................................... 31 1.5.2 Herramientas software ....................................................................... 34 Capítulo 2. EL LENGUAJE DE PROGRAMACIÓN DE ARDUINO........................... 37 2.1 Introducción al concepto de programación ................................................ 37 2.2 Cuerpo de un programa en Arduino ........................................................... 41 2.2.1 Estructuras .......................................................................................... 41 2.2.2 Variables ............................................................................................. 42 2.2.3 Operadores matemáticos, lógicos y booleanos .................................. 44 2.2.4 Estructuras de control: condicionales y ciclos ..................................... 45 2.2.5 Funciones ............................................................................................ 50 vii
Capítulo 3. TRASMISIÓN SERIE EN ARDUINO .................................................. 51 Capítulo 4. LAS ENTRADAS Y SALIDAS DIGITALES ............................................ 55 4.1 Funcionamiento de los interruptores, pulsadores y poténciometros ........ 56 4.2 Práctica 1: encendiendo y apagando varios leds ........................................ 61 4.3 Práctica 2: controlando el encendido de un LED mediante un interruptor ............................................................................. 67 4.4 Práctica 3: control de dos semáforos. Un proyecto completo con LED y pulsadores .................................................................. 71 4.5 Práctica 4: contador de pulsaciones ........................................................... 82 4.6 ¿Qué es eso del PWM? ............................................................................... 85 4.6.1 Práctica 5: variando la luminosidad de un LED ................................... 86 4.6.2 Funcionamiento de un pequeño altavoz ............................................. 88 4.6.3 Práctica 6 y práctica 7: haciendo sonar un altavoz ............................ 89 4.7 Introducción a las interrupciones en Arduino ............................................ 93 4.7.1 Práctica 8: control de un LED mediante un pulsador sin interrupciones ................................................................................ 95 4.7.2 Práctica 9: control de un LED mediante un pulsador con interrupciones ............................................................................... 96 Capítulo 5. LAS ENTRADAS ANALÓGICAS ...................................................... 101 5.1 Un poco de teoría analógica. El potenciómetro ....................................... 103 5.1.1 Práctica 10: el potenciómetro y Arduino .......................................... 103 5.2 Funcionamiento de un transductor piezoeléctrico ................................... 107 5.2.1 Práctica 11: monotorizando un transductor piezoeléctrico.............. 108 5.2.2 Práctica 12: tocando música con el zumbador ................................. 110 Capítulo 6. SENSORES BÁSICOS DE LUZ, TEMPERATURA, DISTANCIA Y PRESENCIA ............................................................. 113 6.1 Práctica 13: funcionamiento de la LDR ..................................................... 113 6.2 Práctica 14: funcionamiento del sensor de temperatura ......................... 116
viii
6.3 Práctica 15: funcionamiento del sensor de distancia por ultrasonidos .... 122 6.4 Práctica 16: funcionamiento de un sensor de movimiento ...................... 126 Capítulo 7. EXTENDIENDO ARDUINO CON LIBRERÍAS .................................... 131 7.1 Librerías core ............................................................................................. 132 7.2 Librerías estándar...................................................................................... 133 7.3 Librerías contributivas............................................................................... 146 7.4 Extendiendo el Arduino con shields .......................................................... 147 Capítulo 8. VISUALIZANDO DATOS CON EL LCD............................................. 153 8.1 Funcionamiento del LCD paralelo. El HD44780 de Hitachi ....................... 158 8.1.1 Práctica 17: el HD44780 de Hitachi .................................................. 160 8.1.2 Práctica 18: diseñando caracteres a medida .................................... 163 8.2 Funcionamiento del LCD serie .................................................................. 164 8.2.1 Práctica 19: mostrando texto con el LCD serie ................................. 167 8.3 Funcionamiento del LCD gráfico. El KS0108.............................................. 168 8.3.1 Práctica 20: utilizando un GLCD ........................................................ 171 8.3.2 Práctica 21: mostrando texto en un GLCD ........................................ 172 8.3.3 Práctica 22: visualizando nuestras propias imágenes ...................... 176 Capítulo 9. CONTROL DE MOTORES CON ARDUINO ...................................... 179 9.1 Funcionamiento de un motor de continua (DC) ....................................... 179 9.2 Práctica 23: haciendo girar un motor DC .................................................. 182 9.3 ¡Más madera! El puente H y el integrado L293D ...................................... 184 9.3.1 Práctica 24: control del giro de un motor DC utilizando el L293D .... 187 9.3.2 Práctica 25: control total de un motor DC utilizando el L293D ......... 190 9.4 Funcionamiento de un motor paso a paso (PAP) ..................................... 193 9.4.1 Práctica 26: giro de un motor PAP unipolar utilizando el ULN2003A..................................................................... 197 9.4.2 Librería “Steeper.h”: simplificando las cosas .................................... 199
ix
9.4.3 Práctica 27: control básico de un motor PAP bipolar utilizando el L293D ............................................................................ 201 9.4.4 Práctica 28: utilizando la librería “Stepper.h” en un PAP unipolar ... 203 9.5 Funcionamiento de un servomotor (SERVO) ............................................ 205 9.5.1 Librería “Servo.h”: simplificando las cosas ....................................... 205 9.5.2 Práctica 29: control básico de un SERVO .......................................... 207 9.6 ¡Más caña con el motor brushless! ........................................................... 209 9.6.1 Práctica 30: control básico de un motor brushless ........................... 212 9.7 Haciéndolo todo más fácil con las shields ................................................. 213 9.7.1 Práctica 31: utilizando la Arduino Motor Shield ............................... 215 Capítulo 10. BUSES DE DATOS ...................................................................... 217 10.1 EL BUS I2C ............................................................................................... 217 10.1.1 Práctica 32: utilización de la memoria I2C 24LC512 ....................... 219 10.1.2 Práctica 33: expandiendo los puertos con el I2C MCP23017 .......... 225 10.1.3 Práctica 34: midiendo el tiempo con el I2C DS1307........................ 228 10.2 El bus SPI ................................................................................................. 232 10.2.1 Práctica 35: utilizando el potenciómetro digital SPI AD5206 ......... 234 Capítulo 11. COMUNICACIONES INALÁMBRICAS .......................................... 239 11.1 Comunicaciones inalámbricas XBee........................................................ 239 11.1.1 Configuración de los módulos XBee ................................................ 242 11.1.2 Práctica 36: aviso sonoro inalámbrico ............................................ 245 11.1.3 Práctica 37: visualización remota de temperaturas ....................... 250 11.2 Comunicaciones inalámbricas bluetooth ................................................ 253 11.2.1 Configuración de los módulos bluetooth Bee ................................. 256 Capítulo 12. ARDUINO Y EL INTERNET DE LAS COSAS .................................... 261 12.1 Características de la Arduino Ethernet shield ......................................... 263 12.1.1 La librería Ethernet ......................................................................... 266
x
12.1.2 Práctica 38: implementando un Arduino web Server ..................... 269 12.1.3 Práctica 39: comunicándose con Twitter ........................................ 277 12.2 Características de la Arduino wifi shield ................................................. 282 12.2.1 La librería wifi ................................................................................. 283 12.2.2 Práctica 40: escaneando tu red inalámbrica WiFi .......................... 285 12.3 El servidor de datos Xively ...................................................................... 290 12.3.1 Práctica 41: monotorizando temperaturas con el servidor Xively ....................................................................... 294 12.4 El servidor de datos Plotly....................................................................... 299 12.4.1 Práctica 42: adquisición y visualización de datos en Plotly ............ 301 12.4.1.1 El sensor de temperatura/humedad DHT22 .............................. 301
12.5 Arduino Yun............................................................................................. 306 12.5.1 Arduino Yun y el servidor Temboo .................................................. 313 12.5.2 Práctica 43: envío de correos electrónicos con Temboo ................. 313 12.5.3 Práctica 44: utilizando el sensor DHT22 y una hoja de cálculo con Temboo .................................................. 319 12.5.4 Práctica 45: utilizando el YUN para controlar un LED ..................... 322 12.5.5 Utilizando el YUN y Temboo con el generador mágico de código ............................................................................ 328 Capítulo 13. ENTORNOS GRÁFICOS DE PROGRAMACIÓN ............................. 331 13.1 Entorno gráfico de programación S4A .................................................... 331 13.1.1 Práctica 46: intermitencia de un LED .............................................. 334 13.1.2 Práctica 47: variación de la intermitencia de un LED...................... 336 13.1.3 Práctica 48: control de un LED con un interruptor .......................... 337 13.1.4 Práctica 49: gobierno de un LED mediante un pulsador virtual...... 338 13.1.5 Práctica 50: control de un semáforo ............................................... 341 13.1.6 Práctica 51: control de un motor Servo .......................................... 343 13.1.7 Práctica 52: LM35 como termostato .............................................. 344
xi
13.2 Entorno gráfico de programación LabVIEW ............................................ 346 13.2.1 Práctica 53: control simple de un LED ............................................. 352 13.2.2 Práctica 54: lectura y escritura de valores en Arduino ................... 358 13.2.3 Práctica 55: intermitencia de un LED .............................................. 360 13.2.4 Práctica 56: control de una salida analógica PWM ........................ 362 13.2.5 Práctica 57: control de la velocidad y sentido de un Motor DC ...... 363 13.2.6 Práctica 58: medida de temperatura con un LM35 ........................ 366 13.2.7 Práctica 59: control de un motor paso a paso (PAP) ...................... 367 13.2.8 Práctica 60: control de un LCD ........................................................ 368 Apéndice I. PROTEUS Y ARDUINO ................................................................. 373
xii
Prólogo En verano de 2013, durante el mes de agosto, haciendo el camino de Santiago por la ruta de Levante desde Valencia, me plantearon desde la editorial la idea de escribir un libro sobre Arduino que fuera dirigido a estudiantes de formación profesional de grado medio. La verdad es que no existía en ese momento un texto en castellano, sencillo y ordenado, que recogiera la inmensa información que existe en Internet sobre este tema y que fuera lo más ameno y práctico posible para aquellos alumnos de electrónica que quieran acercarse a la plataforma Arduino. Por otra parte, no se trataba de realizar un texto excesivamente técnico y riguroso, sino un libro divertido y claro que fuera accesible a estudiantes con pocos conocimientos de electrónica. Debía constituir una auténtica guía de autoaprendizaje que consiguiera «enganchar» a los lectores desde el principio y les proporcionara un camino para poder desarrollar sus propios proyectos o ideas sin perderse en la red, o en libros demasiado técnicos que en casi todos los casos están escritos en el idioma de William Shakespeare. David Cuartelles (uno de los padres de la criatura Arduino) mencionó una vez, en una de sus conferencias, que la idea de la que partió todo fue la de poner en manos de sus alumnos una herramienta de desarrollo que fuera barata y muy sencilla de utilizar. Hasta ese momento las plataformas microprogramables para desarrollar proyectos electrónicos eran demasiado caras y demasiado complicadas para un estudiante que empezara de cero. Personalmente, provengo del mundo de los microcontroladores PIC y debo reconocer que, aunque en su momento supusieron una revolución de precios con respecto a los micros de Intel, el lenguaje ensamblador en que se programaban resultaba bastante tedioso. Pues bien, al poco tiempo aparecieron compiladores en lenguajes de alto nivel como C o Basic, pero eran muy caros, y los pocos compiladores que había libres o GNU venían «pelados», es decir, sin librerías. Con lo cual, para conectarte un PIC a un LCD tenías que currártelo mucho; y no hablemos de conectarlo a Internet. Cuando mi amigo Óscar González, uno de los primeros distribuidores de Arduino en España y responsable de la empresa bricogeek (www.bricogeek.com) me ofreció, hace unos años, las bondades de este producto, la verdad es que no le hice mucho caso, ya que yo seguía a pie juntillas realizando mis proyectos con los famosos
xiii
microcontroladores PIC de la empresa Microchip y no pensaba que esa aventura fuera a revolucionar el mundo de los aficionados a la electrónica. Me equivocaba de lleno. Pues bien, David Cuartelles y Massimo Banzi, ambos profes de universidad, idearon una primera placa de Arduino con la sana idea de que fuera libre y gratuita. De tal manera que cualquiera podía bajarse de la red los esquemas y el pequeño sistema operativo que contiene el micro y hacérselo uno mismo, comprando los componentes en cualquier tienda de electrónica. Se me ocurre un símil como cuando surgió Linux; un concepto libre y puesto a disposición de los internautas y aficionados de lo más variopinto para que lo modificasen, mejorasen o simplemente arrojasen a la papelera de reciclaje y pasasen a otra cosa. Pues algo parecido está pasando con Arduino, una plataforma de hardware libre con una inmensa cantidad de librerías de su compilador realizadas por aficionados, entusiastas, etc. que están disponibles en la red de redes para que las descarguemos, utilicemos o mejoremos. De tal manera que construirse un termómetro con un visualizador LCD sea algo sencillo al alcance de cualquiera. De ahí, la aparición de un término tan en boga últimamente que es el DIY (Do It Yourself: ‘hazlo tú mismo’) ya que esto es posible usando una plataforma libre como Arduino. El libro que tienes en tus manos pretende ser una guía de autoaprendizaje que te permita conocer básicamente lo que es Arduino a través de varios proyectos sencillos resueltos y otros propuestos. Además, aprenderás a manejar algunos dispositivos como ledes, sensores de diversos tipos, LCD, motores de continua, servos, motores paso a paso (tan utilizados hoy en día en las impresoras 3D) y, como no, adentrarte en el novedoso mundo de Internet de las cosas (IOT) comunicando tu Arduino con Internet. Y todo ello, partiendo de unos conocimientos muy elementales de electrónica. Espero que esta aventura que está a punto de comenzar os ilusione lo mismo que me sucedió a mí cuando descubrí lo que esta pequeña plaquita podía llegar a hacer. Germán Tojeiro Calaza Profesor de electrónica en el Instituto Monte Neme (Carballo, La Coruña) http://arduinorastman.blogspot.com.es/
xiv
Convenciones utilizadas en este libro A lo largo del presente libro se exponen un conjunto de prácticas ordenadas en dificultad. Además, se proponen otras para que las realices tú mismo, mejorando tu experiencia en la programación de Arduino. Si tienes la posibilidad de acceder al software de simulación Proteus a través de tu instituto, universidad o a nivel particular, podrás simular su funcionamiento porque la mayoría de los componentes utilizados en estas prácticas están modelizados con este estupendo software. Las prácticas sugeridas se representan de dos maneras: Las anotadas con el siguiente símbolo son de un nivel básico y no comprenden excesiva dificultad.
Con este logotipo se proponen otro tipo de prácticas, que casi podemos catalogar de pequeños proyectos, y que implican un mayor esfuerzo por tu parte. Sin duda, te afianzarán definitivamente en el tema tratado.
Con este indicativo se aclara o se prodfundiza en algún aspecto relatado del texto próximo.
xv
Agradecimientos En primer lugar, agradecer a Jofrer de TFORMICROS.S.A, la revisión de los códigos de programa relativos al capítulo 12. Támbien, debo reconocer la ayuda de mi amigo José Abelenda porque, en los momentos de ofuscación con alguna práctica, me sacaba de casa para tomarnos unas cañas. Finalmente, reconocer la paciencia infinita de mi hijo durante estos últimos meses.
xvii
Marcas registradas El nombre y el logo de Arduino son marcas registradas por el equipo de Arduino en todos los países. El nombre y el logo de Proteus ISIS, VSM y ARES son marcas registradas por Labcenter Electronics en todos los países. El nombre y el logo de S4A son marcas registradas por Citilab en todos los países. El nombre y logo de labVIEW son marcas registradas por National Instruments en todos los países.
xviii
CAPÍTULO
INICIO CON ARDUINO DESDE CERO
En esta primera parte vamos a acercarnos, tímidamente pero con decisión, al Arduino y a la instalación de su entorno de desarrollo (a partir de ahora: IDE). Examinaremos sus principales características y realizaremos una primera práctica sencilla que nos va a funcionar a la primera y hará saltar de alegría. Después, veremos que Arduino no está solo en la vida y que tiene hermanos mayores y menores. Por último, os recomendaré algunas herramientas, tanto de software como de hardware, para hacer realidad vuestros proyectos electrónicos.
1.1 ¿Qué es Arduino y para qué sirve? Arduino es una plataforma de electrónica abierta (open hardware) para la creación de prototipos basada en software y hardware libre. Se creó para artistas, diseñadores, aficionados y cualquier interesado en crear entornos u objetos interactivos. Arduino puede tomar información y datos del entorno a través de sus pines de entrada por medio de toda la gama de sensores que existen en el mercado. En base a ello, puede ser usada para controlar y actuar sobre todo aquello que le rodea; como por ejemplo luces, motores y otro tipo de actuadores. El microcontrolador de la placa Arduino se programa mediante un sencillo lenguaje de programación basado en C/C++ y un entorno de desarrollo (IDE) que responde a las especificaciones de open software. Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectarlo a un ordenador, si bien tienen la posibilidad de hacerlo y comunicarse con diferentes tipos de software (por ejemplo: Flash, Processing, MaxMSP, etc.). Las placas pueden ser hechas a mano o comprarse montadas de fábrica. El software puede ser descargado de forma gratuita. Los ficheros de diseño de 1
Taller de Arduino
referencia (CAD) están disponibles bajo una licencia abierta, así pues eres libre de adaptarlos a tus necesidades. Se llama open hardware a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago o de forma gratuita. Se debe recordar en todo momento que libre no es sinónimo de gratis. El hardware libre forma parte de la cultura libre. Se llama open software al tipo del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, modificado, y redistribuido libremente. Un microcontrolador (abreviado C, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida. Arduino sirve para implementar cualquier idea que te propongas realizar. Por ejemplo, puedes pensar en automatizar el control de tu terrario, o en construir un pequeño robotito, tipo auto, que evite objetos y que suba las escaleras de tú casa. Este último caso revoloteó por mi cabeza hace algunos meses; pero cuando miré los precios en Internet de los dichosos robotitos, pegué un brinco en la silla. Así que me propuse realizar yo mismo (DIY) las carcasas de los mismos. ¿Y cómo? Pues construyendo mi propia impresora 3D (la prusa 2) y dándome cuenta de que su placa controladora está basada en un tipo de Arduino, con lo cual su entorno de programación ya me era conocido. Incluso, este verano, caminando por tierras de Castilla-La Mancha hacia Santiago, bajo un sol de justicia, le di vueltas a la cabeza para averiguar cómo coser a uno de los bolsillos de la mochila algún tipo de célula Peltier gobernada con Arduino que enfriara la botella de agua. No hay nada más desagradable que beberse agua a la divertida temperatura de 35 °C.
2
1. Inicio con Arduino desde cero
Podéis echar un vistazo al siguiente enlace en el que veréis cómo un desarrollador consiguió vulnerar las puertas de un montón de hoteles utilizando una placa Arduino: http://blog.bricogeek.com/noticias/arduino/hack-quepermite-abrir-puertas-de-hoteles-con-arduino/ En definitiva, las posibilidades de Arduino son inmensas y además todos los días aparecen en la red aplicaciones de lo más insospechado y curioso. Además, si te cansas del terrario o del robotito, puedes reutilizar la placa reprogramable para otros nuevos proyectos que se te ocurran.
Figura 1.1
En la figura 1.1 se puede observar la apariencia de un Arduino UNO. Es la placa más utilizada por su carácter de aplicación general. Cabe en la palma de la mano y cuesta alrededor de los 25 euros (dichoso IVA). Con ella realizaremos la mayoría de los proyectos de este libro. El microcontrolador (el chip más grande de la figura 1.1) es un Atmega328 de la empresa Atmel. Tiene 14 pines digitales que se pueden usar como entrada o como salida. Funciona a 5 V y cada pin puede suministrar hasta 40 mA. La intensidad máxima de entrada también es de 40 mA. También dispone de 6 pines de entrada analógicos que trasladan las señales a un conversor analógico/digital de 10 bits.
3