image

SAQUE EL MÁXIMO RENDIMIENTO A ESTE MANUAL CON EL

image

·Código ISBN de referencia: 9788426727169

·Disponible en www.marcombo.com (se recomienda realizar la búsqueda con el código ISBN)

·Componentes del KIT Aprender Arduino, electrónica y programación con 100 ejercicios prácticos:

Arduino UNO

Adaptador Jack pila

AND (74HC08)

Buzzer EL0503

Cables cocodrilo

Cables protoboard macho-hembra

Cables protoboard macho-macho

DHT11

Display 7 segmentos

DS18B20+

Joystick

LCD

LDR

Led amarillo

Led RGB

Led verde

Multímetro

NAND (74HC132)

NOR (74HC02)

NOT (74HC04)

OR (74HC32)

Pila 9 V

Pila rtc

Potenciómetro

Protoboard

Pulsadores

Resistencia 1000

Resistencia 10000

Resistencia 330

Resistencia 470

Resistencia 4700 Ω

Sensor llama

Sensor PIR

Teclado matricial

Transistor 2n2222 XNOR

(74HC266)

XOR (74HC86)

> ¿Quiere profundizar en Arduino y programación?

Si necesita ir más allá en la electrónica y la programación, le interesará el libro escrito por el mismo autor:

image

Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos

ISBN: 9788426726803

Puede sacar el máximo provecho a este otro libro de Rubén con el KIT Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos (ISBN: 9788426727176), disponible en www.marcombo.com. Se recomienda realizar la búsqueda con el código ISBN.

·Componentes del KIT Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos:

Arduino UNO

Adaptador Jack pila

Atemga328p

Cables cocodrilo

Cables protoboard macho-hembra

Cables protoboard macho-macho

Condensador 1000 µF

Condensador 0,1 µF y 25 V

Condensador 0,33 µF y 25 V

Condensador 100 µF y 25 V

Condensador 22 pF

Conversor de nivel lógico

Diodo 1N4007

Entrada analógica ADS1115

Expansor GPIO PCF8574

Interruptor protoboard

Led amarillo

Led verde

Memoria EEPROM AT24C25

Multímetro

Multiplexor CD74HC4067

Oscilador 16 Mhz

Pila 9 V

Potenciómetro

Power supply breadboard

Programador ftdi

Protoboard

Pulsadores

Registro de desplazamiento 74HC164

Regulador lm7805

Resistencia 1000

Resistencia 10000

Resistencia 1 MΩ

Resistencia 330

Resistencia 470

Resistencia 4700 Ω

Salida analógica MCP4725

También puede conseguir en www.marcombo.com el PACK Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos (ISBN: 9788426727046) que incluye:

> Libro Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos

> KIT Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos

> ¿Desea un kit completo para empezar desde cero y alcanzar un nivel alto?

Consiga el KIT DE ARDUINO Y ELECTRÓNICA (ISBN: 9788426727022) en www.marcombo.com Se recomienda realizar la búsqueda con el código ISBN.

· Componentes del Kit de Arduino y electrónica:

Arduino UNO

Adaptador Jack pila

AND (74HC08)

Atemga328p

Buzzer EL0503

Cables cocodrilo

Cables protoboard macho-hembra

Cables protoboard macho-macho

Condensador 1000 µF

Condensador 0,1 µF y 25 V

Condensador 0,33 µF y 25 V

Condensador 100 µF y 25 V

Condensador 22 pF

Conversor de nivel lógico

DHT11

Diodo 1N4007

Display 7 segmentos

DS18B20+

Entrada analógica ADS1115

Expansor GPIO PCF8574

Interruptor protoboard

Joystick

LCD

LDR

Led amarillo

Led RGB

Led verde

Memoria EEPROM AT24C256

Multímetro

Multiplexor CD74HC4067

NAND (74HC132)

NOR (74HC02)

NOT (74HC04)

OR (74HC32)

Oscilador 16 Mhz

Pila 9 V

Pila rtc

Potenciómetro

Power supply breadboard

Programador ftdi

Protoboard

Pulsadores

Registro de desplazamiento

74HC164 Regulador lm7805

Resistencia 1000

Resistencia 10000

Resistencia 1 MΩ

Resistencia 330

Resistencia 470

Resistencia 4700 Ω

Salida analógica MCP4725

Sensor llama

Sensor PIR

Teclado matricial

Transistor 2n2222

XNOR (74HC266)

XOR (74HC86)

> Para más información sobre los kits y las condiciones de envío, entre en www.marcombo.com o envíe un correo a info@marcombo.com

Aprender

Arduino, electrónica
y programación

con 100 ejercicios prácticos

Acceda a www.marcombo.info
para descargar gratis
el contenido adicional
complemento imprescindible de este libro

Código:APARDUIN01

Aprender

Arduino, electrónica
y programación

con 100 ejercicios prácticos

image

Aprender Arduino, electrónica y programación con 100 ejercicios prácticos

© 2018 Rubén Beiroa Mosquera

Primera edición, 2018

© 2018 MARCOMBO, S.A.

Diseño de la cubierta: ArteMio

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra sólo 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.»

eISBN: 978-84-267-2739-8

Presentación

APRENDER ARDUINO, ELECTRÓNICA Y PROGRAMACIÓN CON 100 EJERCICIOS PRÁCTICOS

Los 100 capítulos que contiene este libro realizan un recorrido por las leyes básicas de la electrónica, los principios de la programación y las características de Arduino. Se recomienda leerlos por orden así como disponer del material básico para realizar los ejercicios prácticos: Arduino UNO, resistencias, protoboard, ledes, pulsadores y potenciómetros.

Una vez finalizado este libro, el lector habrá adquirido las técnicas y conocimientos para afrontar proyectos que en un principio se presentaban imposibles. Tendrá la capacidad de analizar soluciones existentes, realizar sus propias tesis y pruebas, y reutilizar código.

A QUIÉN VA DIRIGIDO

A todo aquel que busque iniciarse en la electrónica, la programación o adentrarse en el mundo de Arduino.

También está dirigido a aquellos que ya hayan realizado sus primeros pasos con Arduino, pues en este libro encontrarán las respuestas a las dudas que les surjan y aquellas que no hayan podido resolver hasta ahora.

LA FORMA DE APRENDER

Nuestra experiencia en el ámbito de la enseñanza nos ha llevado a diseñar este tipo de manual, en el que cada una de las funciones se ejercita mediante la realización de un ejercicio práctico. Dicho ejercicio se halla explicado paso a paso y pulsación a pulsación, a fin de no dejar ninguna duda en su proceso de ejecución. Además, lo hemos ilustrado con imágenes descriptivas de los pasos más importantes o de los resultados que deberían obtenerse y con recuadros IMPORTANTE que ofrecen información complementaria sobre los temas tratados en los ejercicios.

LOS ARCHIVOS NECESARIOS

En la parte inferior de la primera página del libro encontrará el código de acceso que le permitirá descargar de forma gratuita los contenidos adicionales del libro en www.marcombo.info.

Cómo leer los libros “Aprender…”

image

A mis padres, por su apoyo, y a la
Editorial Marcombo, por su confianza
.

Índice

001¿Qué es Arduino?

002MCU

003Hardware Arduino

004Análisis de un Arduino

005Arduino UNO

006Comparativa Arduinos

007Hardware libre

008Software Arduino

009Lenguaje de programación

010Historia y filosofía de Arduino

011Intensidad y tensión

012Resistencia

013Ley de Ohm

014Diodo led

015Leyes de Kirchhoff

016Conectar un led a Arduino

017Conexión Arduino IDE

018Conociendo el IDE y la programación

019Reglas y comentarios en programación

020pinMode digitalWrite

021Cargar el primer programa

022Temporizaciones

023Entradas digitales

024Alimentación

025Pulsador Pull Down y digitalRead

026Pulsador Pull_Up e Input Pull_Up

027Invertir salida

028Variables

029Comunicación Serie

030Monitorización

031Transistores en CI

032Polarización y curvas características del BJT

033Circuito BJT

034Puertas lógicas

035Operador y puerta lógica AND

036Operador y puerta lógica NAND

037Operador y puerta lógica OR

038Operador y puerta lógica NOR

039Operador y puerta lógica XOR

040Operador y puerta lógica XNOR

041Variables numéricas y sistema binario

042Registros de los pines digitales

043Resistencias en serie o en paralelo

044Potenciómetro

045Señales y entradas analógicas

046Señales PWM

047Generar señales PWM

048Estructuras de control

049Elementos básicos de un diagrama de flujo

050Estructura de Control if

051if… else

052if… else anidados

053Ampliación de operadores

054switch

055while

056do while

057for

058Directivas

059break y continue

060goto

061Caracteres tabla ASCII

062Caracteres

063Caracteres de control

064Transmisión de datos, comunicación serie

065Recepción datos, comunicación serie

066Control de Arduino por puerto serie

067Conversión de datos

068Comunicación serie entre Arduinos

069Librerías

070SoftwareSerial

071Funciones

072Funciones con valor de retorno

073Pasar parámetros a una función

074Pestañas IDE Arduino

075Vectores

076Gráficas puerto serie

077Instrucciones matemáticas

078Instrucciones trigonométricas

079Generar números pseudoaleatorios

080Reset

081Pin AREF

082Conector ICSP

083Librerías IDE Arduino

084Shields Arduino

085Led RGB

086LDR

087Buzzers

088Tone() noTone()

089Sensor temperatura DS18B20

090Sensor humedad y temperatura

091Display 7 segmentos

092Joystick

093PIR :Sensor de movimiento

094Sensor de llama

095Teclado matricial

096Pantalla LCD (I)

097Pantalla LCD (II)

098RTC Arduino(I)

099RTC Arduino(II)

100Fritzing

001

¿Qué es Arduino?

IMPORTANTE

Puesto que Arduino es una plataforma son necesarios conocimientos sobre diferentes áreas o elementos que intervienen en el uso de Aduino:

Electrónica

Programación

Software

Hardware

Para que el aprendizaje sea más rápido y entretenido, en este libro se desarrolla mediante casos prácticos que permitan ir adquiriendo conocimientos sobre cada una de las cuatro áreas anteriormente mencionadas de forma paralela.

Arduino se ha convertido en un referente del hardware libre que surgió como una herramienta para estudiantes pero que, poco a poco, ha conseguido romper barreras. Cada vez son más las personas que ven en esta plataforma la herramienta idónea para aprender todo aquello que quisieron conocer y no pudieron.

Debido a su filosofía, a una gran comunidad de desarrolladores y desarrolladoras y a toda la tecnología y plataformas de las que disponemos, Arduino se ha convertido en una herramienta básica en el movimiento maker (crear objetos artesanales, pero utilizando la tecnología), la docencia (en las áreas de ciencia, ingeniería, tecnología y matemáticas), el impulso del IoT (Internet of Things o «Internet de las cosas») y el prototipado.

Todos aquellos que hayan estudiado electrónica o programación saben que muchos de los conceptos básicos son muy abstractos. Con Arduino esto cambia: en el momento en el que aprendamos, por ejemplo, una nueva instrucción, podemos realizar un programa de pocas líneas, conectar un simple led y, si el led se enciende (si ese es nuestro objetivo), significa que, no solo hemos aprendido algo nuevo, sino que hemos afianzado ese conocimiento.

¿Y si no funciona ese programa? Lo modificaremos las veces que sea necesario hasta que encontremos el error. Este proceso de aprendizaje es relativamente rápido. Sin embargo, Arduino no es solo una herramienta importante en el aprendizaje, sino también en el desarrollo de prototipos, en el que disponemos de un hardware totalmente operativo.

Empecemos por ver qué es Arduino: Arduino es una plataforma libre, educativa y de desarrollo. Generalmente, cuando se habla de un Arduino –«Estoy programando un Arduino»–, nos estamos refiriendo al elemento físico de la plataforma Arduino, su hardware image (también conocido como tarjeta, placa o PCB). Arduino es algo más que un hardware, por lo que su definición más exacta es la de plataforma formada por: un hardware, un software image (o entorno de programación) y un lenguaje de programación image.

La función de la plataforma Arduino es facilitar el uso de un microcontrolador (MCU) image. A partir de ahora utilizaremos las siglas MCU para referirnos a un microcontrolador.

image

image

image

image

002

MCU

IMPORTANTE

¿Control de procesos?

Qué complejo parece esto… Vamos a buscar en el diccionario de la RAE qué significa «control» y «proceso».

Control: «Regulación manual o automática sobre un sistema».

Proceso: «Conjunto de fases sucesivas de un fenómeno natural o de una operación artificial».

Entonces el control de procesos sería la regulación manual o automática sobre un conjunto de fases sucesivas de un fenómeno natural o de una operación artificial.

Un MCU es un circuito integrado que puede ser reprogramado y que está diseñado para el control de procesos mediante la lectura y generación de señales image.

Para entender mejor qué es Arduino y un MCU supongamos que tenemos que implementar una solución para el control del nivel de líquido de un tanque. No obstante, vamos a considerar que no disponemos de una plataforma como Arduino o similar ni conocimientos previos sobre programación, electrónica, ni MCU.

Como no disponemos de Arduino, necesitamos un MCU. Primeramente, tenemos que escoger el más adecuado, considerando las características técnicas del proceso que vamos a controlar. En el mercado disponemos de varios fabricantes de MCU, todos ellos con un amplio catálogo. Tendremos que decantarnos por un fabricante y escoger un MCU de entre todos los que tiene; para analizar los MCU, necesitamos trabajar con sus manuales.

El manual de un MCU no está desarrollado para que cualquier persona, independientemente de su formación, pueda interpretarlo. Nos enfrentaremos a manuales de hasta 450 páginas, con un lenguaje muy técnico, por lo que no solo es necesario un conocimiento previo sobre MCU, sino sobre programación, muchos «mecanismos internos», como Timers, interrupciones, etc. Posiblemente, si nunca hemos programado, no entenderemos para qué sirven.

Además, debemos analizar sus limitaciones en cuanto a potencia eléctrica, y si necesita más componentes para poder operar (como osciladores, condensadores…).

También nos limitará el formato (tamaño) de cada MCU; nos encontramos con muchos que no vamos a poder «manejar» por su reducido tamaño. Aún con todas estas dificultades, vamos a suponer que nuestra elección es la correcta.

A continuación, el siguiente problema sería cómo conectar el MCU al PC para poder programarlo: tendremos que comprar un módulo para poder programarlo, lo que nos va a obligar a realizar diferentes conexiones (implicará protoboards, cables, etc.). A todo esto quizás le debamos sumar más componentes que necesite el MCU para poder operar. Sin embargo, podemos con todo, solucionamos todos estos pasos y ya estamos listos para programar. Necesitamos un entorno de programación: lo más seguro es que el fabricante del MCU disponga de uno propio, pero quizás ofrece diferentes versiones (de prueba, para estudiantes, para profesionales) y podrán ser de pago o no.

Descargamos el entorno y ahora sí que empezamos a programar. No obstante, puede que ese entorno no sea todo lo «amigable» que esperemos. Puede ser un entorno muy completo con una gran cantidad de herramientas, menús… Lo cual es bueno, pero quizás, al principio, nos llegue a confundir, aunque al final, después de revisar documentación, lo entendamos y podamos seguir.

Si no tenemos conocimientos de programación, no nos va a quedar otro remedio que aprender, tendremos que buscar información (ejemplos, documentación, manuales, etc.).

Como acabamos de ver, existe una gran cantidad de obstáculos para simplemente empezar a programar un MCU y, con todo esto, una vez que los superemos, tenemos que ser capaces de llegar a una solución, desarrollar el programa adecuado e implementar físicamente este sistema (conectarlo a un entorno).

IMPORTANTE

Sin una formación adecuada, lo más seguro es que no nos veamos capaces de afrontar este reto, pero con Arduino esto cambia. Arduino nos elimina toda una serie de obstáculos para que nuestra principal preocupación sea programar un MCU y conectar el Arduino a los elementos que intervengan en un proceso.

A continuación veremos cómo se nos platea la misma tarea con un Arduino y veremos qué papel desempeña cada uno de los elementos de la plataforma Arduino.

image

003

Hardware Arduino

IMPORTANTE

Es importante recalcar que Arduino no fabrica los MCU de su hardware; estos son desarrollados y fabricados por Atmel.

Arduino incorpora los MCU en el proceso de fabricación de las placas. En consecuencia, lo que hicieron fue estudiar ese manual de 450 páginas de cada MCU y dar una solución a ese problema, ofreciéndonos un sistema que incorpora todo la electrónica necesaria para programar e implementar un MCU.

Planteémonos el mismo caso del capítulo anterior, pero ahora, con un Arduino. Primeramente, al igual que pasaba con el MCU, tendremos que elegir un Arduino. Disponemos de un gran catálogo de placas Arduino, todas las placas presentan diferencias entre ellas (debido a la incorporación de periféricos como: WIFI, Ethernet, conector tarjetas SD, etc.), aunque las diferencias básicas son debidas al MCU en concreto que incorpore cada placa.

Gracias a este hardware de Arduino disponemos de:

Conexión para PC

La electrónica necesaria para el correcto funcionamiento del MCU

Puntos de conexión para las patillas del MCU

Alimentación externa (pila, batería, cargador)

Al comprar un Arduino no tenemos que preocuparnos por cómo conectarlo a nuestro PC, solo habrá que comprarlo y, con un cable USB (del tipo correspondiente según el modelo), conectarlo y empezar a programar (la mayoría de los Arduinos aportan esta solución) sin preocuparnos de si necesitamos componentes electrónicos adicionales, como ocurría cuando trabajábamos directamente con el MCU.

Además, si necesitamos conectar sensores resulta más sencillo realizar la conexión a través de los pines del Arduino que a través de las patillas de MCU.

También añadieron un conector Jack (con la electrónica correspondiente) para poder alimentar nuestro Arduino a través de pilas o baterías (no todos lo incluyen). Como disponemos de un gran catálogo de Arduino, revisaremos las placas más conocidas. Primero analizaremos el Arduino UNO y compararemos las restantes placas con respecto a este Arduino mediante un análisis básico.

Partimos entonces del Arduino UNO, ¿por qué el Arduino UNO? Porque es el único que permite reemplazar su MCU, gracias a que se encuentra insertado en un zócalo, el cual sí que está soldado a la placa y no el MCU image.

El resto de Arduinos tienen directamente soldado su MCU a la placa; el no estar soldado a la placa presenta unas grandes ventajas, como la posibilidad de programar un MCU, quitarlo de la placa e insertarlo en otro sistema electrónico.

Asimismo, lo hace ideal para principiantes (y no tan principiantes). En cualquier momento podemos cometer un error y dañar nuestro Arduino y podrían darse varias posibilidades: dañar simplemente el MCU, la placa, o ambos. En los dos últimos casos, no tendríamos más remedio que reemplazar nuestro Arduino. No obstante, en el primer caso, tenemos la posibilidad de reemplazar el MCU, podemos adquirir el MCU por separado y reemplazarlo. Aunque este paso no sería tan sencillo.

IMPORTANTE

Como comentábamos antes, Arduino no fabrica los MCU, sino que los adquiere y los implementa en el proceso de fabricación de las placas; es necesario que le carguen un programa (bootloader) para que pueda trabajar ese MCU en la plataforma Arduino.

Al comprar por nuestra cuenta el MCU, no vendrá con ese programa cargado y será trabajo nuestro realizar ese proceso.

image

004

Análisis de un Arduino

IMPORTANTE

Gracias a la web oficial de Arduino he podido solventar innumerables dudas, sobre todo de programación.

En su página principal dispone de un buscador en su margen superior derecho, en el cual podemos incluir instrucciones las cuales no entendamos bien su funcionamiento, nos direccionará a otra ventana que de forma clara reducida nos explicará su funcionamiento incluso a través de algún caso práctico.

Sea cual sea el uso que le queramos dar a un Arduino una parte importante (y la primera) es analizar el uso que le vamos a dar, con el cual determinar los requerimientos que debe cumplir el Arduino.

Con este paso previo realizado, seleccionaremos el Arduino adecuado, toda la información la tenemos disponible en la web oficial de Arduino (https://www.arduino.cc/