Kitabı oku: «Arduino. Trucos y secretos.»
Arduino
Trucos y secretos
120 ideas para resolver
cualquier problema
Arduino
Trucos y secretos
120 ideas para resolver
cualquier problema
Paolo Aliverti
Edición original publicada en italiano por Edizioni LSWR
con el título: Arduino trucchi e segreti, © 2018 Edizioni Lswr*
Título de la edición en español:
Arduino. Trucos y secretos
Primera edición en español, año 2019
© 2019 MARCOMBO, S.A.
www.marcombo.com
Traducción: Sònia Llena Hurtado
Corrección: Genís Monraba
Maquetación: Giancarlo Salinas
Directora de producción: Mª Rosa Castillo
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.
Esta publicación contiene opiniones del autor y tiene por objeto proporcionar información clara y precisa. El procesamiento de textos, incluso si se realiza con una atención escrupulosa, no puede asumir la responsabilidad específica del autor y/o editor de los posibles errores o imprecisiones.
El editor ha hecho todo lo posible para obtener y citar las fuentes exactas de las ilustraciones. Si en algunos casos no ha sido posible encontrar alguna con derechos de autor, está disponible para hacer frente a las omisiones involuntarias o errores en las referencias citadas.
ISBN: 978-84-267-2727-5
D.L.: B-13448-2019
Impreso en Prodigitalk
Printed in Spain
Sumario
1.Para empezar
1. Instalar Arduino
2. Cargar un sketch en Arduino
3. Programar Arduino con Arduino Web Editor
4. Cargar un sketch con Arduino Web Editor
5. Simular Arduino con TinkerCAD Circuits
6. Programar Arduino por bloques con Bitbloq
2.Programar Arduino
7. Crear un sketch vacío
8. Utilizar una variable
9. Definir una constante
10. Manipular cadenas de caracteres
11. Utilizar las cadenas
12. Convertir una variable de un tipo a otro
13. Repetir una operación
14. Utilizar un array
15. Obtener la longitud de un array
16. Copiar o ampliar un array
17. Utilizar arrays bidimensionales (matrices)
18. Definir una prueba simple
19. Definir una prueba con más de una alternativa
20. Definir una función
21. Crear clases y objetos
22. Generar números aleatorios
23. Encontrar el número más alto en un array
24. Ordenar una matriz de números
25. Rellenar un array de números aleatorios
26. Transformar una cadena en una matriz (tokenizar)
27. Gestionar índices múltiples y periódicos
28. Trabajar con bits
29. Crear un módulo
30. Utilizar librerías externas
31. Crear librerías propias
3.Los básicos: LED y botones
32. Encender un LED
33. Controlar la luminosidad de un LED
34. Utilizar un LED RGB
35. Crear un PWM en todos los pines (PWM software)
36. Generar una secuencia aleatoria de númerospara encender varios LED
37. Conectar botones
38. Debouncing
39. Mantener el estado de un botón
40. Identificar la pulsación y la liberación de un botón (bordes ascendentes y descendentes)
41. Medir el tiempo de pulsación de un botón
42. Obtener clics múltiples sobre un botón
43. Utilizar una entrada analógica
44. Botón en línea analógica
45. Utilizar un trimmer para configurar parámetros
46. Insertar pausas «largas»
47. Ganar seis pines digitales
48. Utilizar la consola para enviar y recibir comandos
49. Encender cuatro LED en secuencia con un botón
50. Convertir un valor de un intervalo al otro
51. Adivina el LED (programa por estados)
53. Controlar el llenado de una bañera (máquina con estados)
54. Encender una caldera
55. Simon
56. Marcar un número pulsando varios botones
4.Los sensores
57. Alimentar a Arduino
58. Medir una tensión
59. Medir una corriente
60. Conectar un sensor de temperatura (termistor)
61. Conectar un sensor de temperatura LM35
62. Conectar un sensor de luz
63. Conectar un sensor para la humedad
64. Utilizar un sensor digital para humedad y temperatura
65. Detectar un gas
66. Detectar campos magnéticos
67. Detectar la inclinación con un sensor tilt
68. Detectar el movimiento con un PIR
69. Crear un botón táctil o touch sensor
70. Utilizar un sensor de infrarrojos para descodificar un mando a distancia
71. Encender la TV con Arduino
72. Detectar un obstáculo con un sensor infrarrojo
73. Medir la distancia con un sensor a ultrasonidos
74. Utilizar la fecha y la hora actuales
75. Utilizar un teclado numérico
76. Detectar la orientación o el movimiento con acelerómetros y giroscopios
78. Encontrar el norte en una brújula
79. Conocer la posición geográfica con un GPS
80. Conectar un micrófono y realizar un clap control
81. Conectar una fuente de audio
82. Leer etiquetas RFID
83. Aislar una entrada
5.Los actuadores y la visualizaciónde información
84. Encender una bombilla de 12 V con un transistor
85. Controlar un relé con un transistor
86. Encender una bombilla de 12 V con un MOSFET
87. Controlar la velocidad de un motor
88. Controlar la dirección de rotación de un motor c.c.
89. Utilizar un servomotor
90. Encender una bombilla a 220 V
91. Interruptor crepuscular para una bombilla de 220 V
92. Utilizar un motor paso a paso (stepper)
93. Aislar las salidas
94. Aumentar las salidas con un registro de desplazamiento
95. Utilizar una pantalla de siete segmentos
96. Utilizar una pantalla LCD
97. Controlar una pantalla con solo dos cables (I2C)
98. Diseñar caracteres personalizados en una pantalla LCD
99. Crear un terminal de pantalla LCD
100. Crear un menú multinivel con una pantalla LCD
101. Conectar una pantalla gráfica TFT
102. Generar sonidos
103. LED NeoPixel
104. Generar una señal analógica
105. Conectar un amplificador
106. Controlar un potenciómetro digital
107. Reproducir un archivo de audio mp3 o wav
6.Comunicar e intercambiar datos
108. Añadir un nuevo puerto serie (SoftwareSerial)
109. Conectarse a un puerto RS232
110. Conectarse con un puerto RS485
111. Comunicar dos arduinos con el protocolo I2C
112. Comunicar dos arduinos con el protocolo SPI
113. Controlar Arduino con Firmata
114. Utilizar Arduino como consola para Processing
115. Controlar un LED por Bluetooth con un smartphone
116. Encender un LED con Python
117. Transmitir datos de Arduino a Python
118. Conectarse a Internet y ver una página web
119. Arduino como servidor web
120. Publicar una página web dinámica
121. Encender un LED con el navegador
122. Enviar un e-mail con Arduino pulsando un botón
123. Enviar SMS con Arduino
124. Recibir SMS
125. Leer y escribir un archivo desde una tarjeta SD
126. Generar una señal de TV
127. Emular un ratón USB
128. Emular un teclado USB
7.Índice analítico
Para empezar
En esta sección, encontrarás respuesta a los problemas más comunes de instalación y configuración de Arduino. Además, verás distintas alternativas para escribir proyectos y cargarlos en la placa, escribiendo código o colocando bloques.
La primera vez que nos acercamos a un nuevo producto, todo nos parece difícil y oscuro. Incluso Arduino, aunque pueda parecer sencillo, puede mostrar dificultades al inicio. Los problemas mayores surgen durante la fase de instalación, si bien con el tiempo el proceso de setup() ha sido mejorado y, actualmente, no es habitual tener ningún problema. Con las primeras placas, como Arduino Diecimila o Duemilanove, siempre surgía el drama de la instalación de los controladores por el puerto serie, caso que, hoy en día, es muy extraño que ocurra.
En esta primera sección encontrarás algunos «trucos» para resolver los problemas que podrías encontrar en la fase de instalación y configuración del producto. El método clásico para programar Arduino es el de utilizar su entorno de desarrollo (IDE). Hoy en día es posible programar Arduino también con plataformas en la nube (online) e, incluso, simularlo, de manera que la mayoría de los proyectos o sketch y de los ejemplos se pueden probar aun sin disponer de una placa real.
El gran éxito que ha obtenido Scratch (https://scratch.mit.edu), un sistema desarrollado por el MIT para escribir código colocando elementos gráficos, también ha llegado a Arduino, definiendo casi un estándar para este tipo de interfaz de programación. Por esta razón se pueden encontrar sistemas como TinkerCAD Circuits y Bitbloq con los cuales la programación de Arduino se lleva a cabo mediante bloques. Con estos métodos es complicado escribir código complejo, pero son muy eficaces para que niños y principiantes se acerquen con éxito a la programación.
1. Instalar Arduino
Descarga Arduino IDE desde el sitio web http://www.arduino.cc/en/Main/Software y sigue las instrucciones que te proporciona el sistema (Windows, Mac o Linux). Es imprescindible que instales Arduino IDE en tu ordenador para poder programar Arduino.
Figura 1.1 – Descarga del software para Arduino.
Al detalle
Visita la dirección web http://www.arduino.cc/en/Main/Software y descarga la última versión del programa. En el momento de escribir este libro, la versión publicada es la 1.8.5 y está disponible para Windows, Mac OS X y Linux. Elige la versión compatible con tu sistema y descárgala en una carpeta.
Windows
El procedimiento de instalación de Arduino es en general bastante sencillo.
Si trabajas con Windows, puedes consultar las instrucciones publicadas en el sitio web de Arduino (http://www.arduino.cc/en/Guide/Windows).
Para empezar, consigue una placa Arduino y un cable para conectarla al ordenador. El cable depende de la versión de Arduino que hayas comprado. Para la más habitual, Arduino Uno, necesitarás un cable USB tipo A-B, de los que se utilizan para las impresoras (Figura 1.2). El conector USB macho tipo B es de forma rectangular, mientras que el conector macho de tipo A tiene forma cuadrada, con dos bordes redondeados.
Si dispones de un Arduino Mega, un Due o un Leonardo, deberás utilizar un cable micro-USB: el cable que se utiliza normalmente para cargar los teléfonos móviles Android.
Figura 1.2 – Cable USB de tipo A-B, adecuado para Arduino Uno.
Si la placa es nueva, conecta el cable y comprueba que el conector encaja bien en la clavija. Si utilizas un cable micro-USB, fíjate porque, aunque la toma micro-USB se encuentra soldada sobre el circuito impreso, es muy fácil romperla con una pequeña flexión.
Conecta Arduino al ordenador: la placa debería encenderse. Todas las placas Arduino cuentan, como mínimo, con un LED que empezará a parpadear, es decir, indicará algún tipo de actividad. Probablemente1 Windows detectará la presencia de nuevo hardware y solicitará la búsqueda o instalación de los nuevos controladores. Con las últimas versiones del programa, el procedimiento de instalación se ha simplificado notablemente y resulta muy raro tener que instalar dichos controladores de forma manual, si bien no lo es para algunas placas en concreto.
La descripción oficial del procedimiento de instalación, en el sitio web de Arduino, dice:
1.Conecta Arduino al ordenador y espera a que Windows inicie el proceso de instalación de los controladores hasta que la instalación falle.
2.Abre el Panel de control, pulsa en «Sistema y seguridad». Luego, en «Sistema».
3.En la ventana «Sistema», abre «Administrador de dispositivos».
4.En la lista de hardware, busca la opción «Puertos (COM y LPT)». Entre las opciones, deberías ver un puerto denominado «Arduino Uno (COMxx)». Si no encuentras el periférico, busca en «Otros dispositivos» o «Dispositivos desconocidos».
5.Pulsa con el botón derecho del ratón sobre «Arduino Uno (COMxx)» y elige «Actualizar el software de controlador».
6.Elige «Examinar las carpetas para buscar el controlador».
7.Navega por las carpetas donde has descargado y desempaquetado el programa de Arduino y localiza el archivo arduino.inf que encontrarás en la carpeta «Driver» (¡no en la carpeta «FTDI USB Drivers»!). En las versiones más antiguas de Arduino IDE (hasta la 1.0.3) este archivo de denomina Arduino Uno.inf.
8.Windows reconocerá el controlador y la instalación finalizará.
Ya puedes iniciar Arduino pulsando sobre el icono que aparece en el Escritorio o en el menú de inicio.
Mac OS X
Para OS X, el procedimiento de instalación es aún más sencillo. Puedes consultar las instrucciones en el sitio web de Arduino (http://www.arduino.cc/en/Guide/MacOSX).
Debes descargar un archivo comprimido (.zip) en tu ordenador. Normalmente, dicho archivo acaba en la carpeta «Descargas» o en el Escritorio. Descomprime el archivo con un doble clic y verás otro archivo con el nombre Arduino.app: arrástralo a la carpeta «Aplicaciones».
Por lo general, con las nuevas placas no deberás hacer nada más, ni tendrás que instalar ningún tipo de controlador. Los controladores FTDI te servirán en el caso de que quieras utilizar una placa «Duemilanove». Puedes encontrar estos controladores en el sitio web de FTCI (http://www.ftdichip.com/Drivers/VCP.htm).
Inicia Arduino con un doble clic sobre el icono situado dentro de la carpeta «Aplicaciones».
GNU/Linux
Desde la versión diez de Ubuntu, puedes encontrar Arduino en los repositorios de sistema («Universe»). Utiliza synaptic para localizar el paquete e instalarlo. Si no, puedes abrir un terminal y escribir:
sudo apt-get update && sudo apt-get install arduino arduino-core
Deberás introducir tu contraseña porque estás utilizando el comando sudo
. Cuando finalice la instalación, Arduino estará entre los programas instalados.
Si el software no se inicia, quizás tengas que instalar Java. Instala el paquete open-jdk utilizando synaptic o desde un terminal.
Comprueba si tu usuario forma parte del grupo «dialout», para que tenga los permisos para utilizar los puertos serie. De no ser así (o en caso de duda), únete al grupo con:
sudo usermod -aG dialout pablo
Sustituye pablo
por el nombre de tu usuario. De forma alternativa, puedes lanzar Arduino desde un terminal utilizando el comando sudo:
sudo ./arduino
2. Cargar un sketch en Arduino
Para cargar un sketch en Arduino, pulsa el botón «Verify» situado en la barra de herramientas del IDE y, después, haz clic en «Upload». También se puede cargar directamente pulsando simplemente en «Upload».
Al detalle
Mientras trabajas con Arduino, tendrás que cargar continuamente nuevos sketch en la placa. La operación de carga es muy sencilla y rápida, y ha caracterizado el éxito de Arduino. Hace unos años, el procedimiento para programar un microcontrolador era bastante complejo, pero actualmente es cuestión de segundos. Para cargar un nuevo sketch en la placa, solo necesitas un cable USB del tipo adecuado. El cable depende del tipo de placa y, por desgracia, ¡cada modelo necesita uno distinto! Para programar Arduino Uno, la placa más utilizada, se necesita un cable USB de tipo A-B, de los que se utilizan habitualmente para conectar una impresora al ordenador (Figura 1.2). Si es la primera vez que cargas un sketch, antes debes instalar el software (consulta el truco núm. 1 para ver cómo hacerlo).
Para cargar un sketch en Arduino:
1.Inicia el entorno de programación de Arduino.
2.Crea tu prototipo y cabléalo a Arduino.
3.Escribe el sketch.
4.Conecta Arduino al ordenador.
5.En Tools > Port, comprueba que se encuentra seleccionado el puerto correcto. En Windows, debería aparecer una opción del tipo COMx (Arduino Uno); en Mac, verás algo como /dev/tty.usbmodemXXX, mientras que en GNU/Linux encontrarás /dev/ttyACM0 o /dev/ttyS0 o S1.
6.Comprueba también que el hardware configurado en Tools > Board corresponde a tu placa (por ejemplo, Arduino Uno).
Figura 1.3 – Ventana de Arduino con el sketch Blink cargado. En la barra de herramientas, puedes ver los botones «Verify», para controlar el código (1), y «Upload» para cargarlo en la placa (2).
7.Ahora, pulsa el botón «Verify» (el primero de la barra de herramientas).
8.El ordenador trabajará durante unos segundos mientras controla el código. Si todo ha ido bien y no hay errores, en la parte inferior de la ventana, en la consola, deberías ver solo texto de color blanco.
9.Pulsa «Upload», el segundo botón de la barra de herramientas, para transferir el programa a la placa.
10.Si no surge ningún problema de comunicación (normalmente, debido a la selección errónea del puerto), tras unos instantes el firmware será transferido y, en la parte inferior de la ventana, debería aparecer el texto «Done Uploading».
Si algo va mal:
•Comprueba el puerto serie: ¿es el correcto? ¿Se ha instalado correctamente?
•¿El cable está bien introducido en la placa? ¿Se encienden los LED?
•¿Has elegido la placa correcta?
Figura 1.4 – Ventana de Arduino al finalizar la carga de un sketch.
3. Programar Arduino con Arduino Web Editor
Arduino Web Editor es la versión online del clásico Arduino IDE. Puedes programar Arduino utilizando simplemente un navegador con conexión a Internet. Para utilizar Arduino Web Editor, conéctate al sitio web https://create.arduino.cc/editor (es obligatorio registrarse).
Al detalle
Desde hace poco tiempo, se encuentra disponible también la versión online, llamada Arduino Web Editor, que permite programar online y guardar todos los proyectos en la nube, es decir, en los servidores de Arduino. Arduino Web Editor forma parte de la nueva plataforma Arduino Create, nacida para ayudar a los makers a escribir código, colaborar y encontrar soporte para sus proyectos. Con esta solución utilizarás siempre la versión más actualizada del IDE, completa con todas las librerías. Puedes empezar a utilizar la versión online de Arduino visitando la página de descarga (http://www.arduino.cc/en/Main/Software). Para poder acceder al editor, es necesario, obviamente, registrarse. El acceso se lleva a cabo desde una página donde hay que introducir los datos de inicio de sesión y una contraseña. Una vez te hayas registrado, recibirás un correo electrónico con un enlace para activar tu cuenta y completar el proceso de registro. Puedes acceder a Arduino Web Editor en la dirección web https://create.arduino.cc/editor.
Figura 1.5 – La página web de acceso al Web Editor.
Aun así, para utilizar Arduino Web Editor, necesitarás instalar un pequeño programa, denominado plugin, que funciona en el ordenador y se comunica con la placa y el Web Editor. Este plugin está disponible para Windows, Linux y Mac y se instala con un proceso similar al de Arduino IDE. El plugin reconoce la placa que se encuentra conectada al ordenador y administra la carga del firmware que has escrito online.
Figura1.6 – La página web de acceso al Web Editor.
El Web Editor se puede utilizar con los navegadores más comunes (Chrome, Firefox, Safari y Edge), aunque se recomienda utilizar con Chrome. Cuando te hayas identificado, verás a la izquierda, en la primera columna, el menú principal con las opciones:
•Sketchbook: el lugar donde guardarás todos tus proyectos.
•Examples: una sección con varios ejemplos que puedes descargar para entender el funcionamiento de Arduino.
•Libraries: la sección de gestión de las librerías.
•Serial Monitor: una sección para activar el Serial Monitor online y recibir y transmitir datos con Arduino conectado al ordenador.
•Help: enlace y páginas de ayuda.
•Preferences: las opciones de configuración del Web Editor.
La segunda columna solo contiene las opciones relativas a cada menú, mientras que la tercera es el área principal donde se escribe el código.
El Web Editor es muy cómodo porque te permite tener siempre disponibles tus proyectos estés donde estés y con la última versión del compilador y de las librerías. Desgraciadamente, a veces es más lento respecto al IDE de Arduino, puesto que trabaja online y los proyectos que creas se compilan en un servidor remoto y se descargan en tu ordenador.