Kitabı oku: «Aprender Arduino, prototipado y programación avanzada con 100 ejercicios»
SAQUE EL MÁXIMO RENDIMIENTO A ESTE MANUAL CON EL
KIT
Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos
·Código ISBN de referencia: 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
> ¿Quiere conseguir una base sólida de Arduino y electrónica?
Si necesita iniciarse en la electrónica y la programación para adentrarse en Arduino desde cero, le interesará el libro escrito por el mismo autor:
Aprender Arduino, electrónica y programación con 100 ejercicios prácticos
ISBN: 9788426726483
Puede sacar el máximo provecho a este otro libro de Rubén con el KIT Aprender Arduino, electrónica y programación con 100 ejercicios prácticos (ISBN: 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)
También puede conseguir en www.marcombo.com el PACK Aprender Arduino, electrónica y programación con 100 ejercicios prácticos (ISBN: 9788426727039) que incluye:
> Libro Aprender Arduino, electrónica y programación con 100 ejercicios prácticos
> KIT Aprender Arduino, electrónica y programación 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, prototipado y programación avanzada
con 100 ejercicios prácticos
Acceda a www.marcombo.info para descargar gratis el contenido adicional complemento imprescindible de este libro
Código:APARDUINO2
Aprender
Arduino, prototipado y programación avanzada
con 100 ejercicios prácticos
Aprender Arduino, prototipado y programación avanzada con 100 ejercicios prácticos
© 2019 Rubén Beiroa Mosquera
Primera edición, 2019
© 2019 MARCOMBO, S.A.
Diseño de la cubierta: ArteMio
Maquetación: ArteMio
Correctoras: Mónica Muñoz Marinero y Laura Seoane Sánchez Majano
Directora de producción: Ma Rosa Castillo Hidalgo
Director de colección: Pablo Martínez Izurzu
«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-2740-4
Presentación
APRENDER ARDUINO, PROTOTIPADO Y PROGRAMACIÓN AVANZADA CON 100 EJERCICIOS PRÁCTICOS
Los 100 capítulos que contiene este libro tratan las problemáticas que cualquier desarrollador o maker se encuentra al realizar sus proyectos más complejos.
A partir de casos prácticos, se abordan temas como el filtrado de señales, la comunicación I2C y SPI (presentes en muchos de los módulos o sensores compatibles con Arduino), la creación de una librería, el diseño del hardware de un Arduino para poder adaptarlo y la programación de interfaz de control, entre otros.
A QUIÉN VA DIRIGIDO
A todo desarrollador o maker que tenga unos conocimientos mínimos sobre Arduino, electrónica y programación, y quiera entender la arquitectura y programación de las comunicaciones presentes en cualquier Arduino.
También está dirigido a todo profesional que requiera integrar Arduino en proyectos complejos y necesite comunicarse con sensores o módulos de los que carezca de ejemplos.
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á acceder de forma gratuita a los contenidos adicionales del libro en www.marcombo.info.
Cómo leer los libros “Aprender…”
A mis padres, por su apoyo, y a la editorial Marcombo, por su confianza.
Índice
001La electrónica no es ideal
002Introducción a los condensadores
003Propiedades de un condensador
004Gestión de tiempo: millis() y micros()
005Descarga de un condensador
006Debounce (I)
007Debounce (II)
008De PWM a señal analógica con filtro paso bajo
009Interrupciones
010Interrupciones por evento
011Interrupciones por tiempo. Parpadeo de un led
012Interrupciones por tiempo. Timer2 y 3
013Interrupción del puerto serie
014Comunicación serie Serial.flush, Serial.availableForWrite
015Comunicación serie Serial.end, Serial.setTimeout
016Comunicación serie Serial.parseInt
017Comunicación serie Serial.parseFloat, Serial.readBytes
018Comunicación serie(V) Serial.readBytesUntil, Serial.readString
019Comunicación serie (VI) Serial.readStringUntil, Serial.find
020Comunicación I2C. Introducción
021Comunicación I2C. Wire.begin
022Comunicación I2C. Comunicación del maestro al esclavo
023Comunicación I2C. Controlar al esclavo con un maestro
024Comunicación I2C. Comunicación esclavo maestro
025SPI Introducción
026SPI en Arduino
027Comunicación SPI. Comunicación maestro esclavo
028Comunicación SPI. Comunicación esclavo maestro
029Memoria EEPROM. EEPROM.read
030Memoria EEPROM (I). EEPROM.write
031Memoria EEPROM (II). EEPROM.put, EEPROM.get
032Memoria EEPROM. Almacenar datos correctamente
033Memoria EEPROM. Alargar la vida útil
034Sensor de temperatura interno
035Arduino modo Sleep. Librería LowPower
036Arduino modo Sleep. IdleWakePeriodic
037Arduino modo Sleep. PowerDownExternalInterrupt
038Watchdog
039Simulador Tinkercad. Crear cuenta, interfaz
040Simulador Tinkercad. Montar el primer circuito
041Simulador Tinkercad. Programación
042Simulador Tinkercad. Opciones avanzadas
043Debugger. FiILE, LINE, FUNTION, DATE, TIME
044Debugger. Funciones de depuración
045Crear librerías. Archivo .h
046Crear librerías. Archivo .cpp
047Arduino Web Editor
048Diseño y fabricación de un Arduino
049Hardware Arduino
050Hardware de alimentación. Análisis
051Hardware de alimentación. Diodo y regulador de tensión
052Hardware de alimentación. Montaje en protoboard
053Hardware de alimentación. USB y alimentación externa
054ATmega328. Señal de reloj
055ATmega328. Reset
056ATmega16U2
057Grabar gestor de arranque
058Arduino protoboard. Programador
059De la protoboard al PCB. Un poco de teoría
060De la protoboard al PCB. Herramientas
061Conceptos generales de una PCB
062Encapsulados
063PCB. Huella, pads, pistas
064Consideraciones de diseño Fritzing, barra de menú
065Diseño PCB. Fritzing, primeros pasos
066Diseño PCB. Montar los primeros componentes
067Diseño PCB. Hardware de alimentación
068Diseño PCB. Alimentación, reset, reloj ATmega328P
069Diseño final PCB
070Fabricación PCB Opciones
071Fabricación PCB y ensamblado
072Fabricar mi propia shield para Arduino
073Diseñar y fabricar un dispositivo basado en Arduino
074Multiplexores, Demultiplexores
075CD74HC4067 como multiplexor
076CD74HC4067 como demultiplexor
077Registro de desplazamiento. Teoría
078Registro de desplazamiento. 74HC164
079PCF8574. Teoría
080PCF8574. Ampliar salidas digitales
081PCF8574. Ampliar entradas digitales
082Ampliar entradas analógicas con ADS1115
083Salida analógica con MCP4725
084Amplia la memoria EEPROM con AT24C256
085Processing
086Conectar Processing con Arduino
087Parpadeo de led con Processing
088Ratón Processing
089Teclado Processing
090Monitorización de datos por consola
091Interfaz gráfica de usuario(GUI) con Processing
092Processing Text Field
093Processing button
094Processing checkbox
095Processing slider
096Processing knob
097Processing toggle
098Processing GUI(I)
099Processing GUI(II)
100Processing GUI(III)
001
La electrónica no es ideal
•Cuando trabajamos con un componente electrónico, ya sea una resistencia, un led o los propios cables, tenemos que partir de la premisa de que no son ideales.
•Esto significa que, cuando utilizamos una resistencia de 1 kΩ, su valor real no es ese. Y ¿cuál es? Cada fabricante vende resistencias con una tolerancia.
•La tolerancia es el valor que nos dice cuánto puede variar el valor de una resistencia de lo esperado; es decir, cuál puede ser su valor máximo y mínimo, que suele expresarse en porcentaje.
•De tal modo que, si comparamos una resistencia de 1 kΩ con una tolerancia del 2 %, su valor real oscila entre 1020 y 980 Ω; por lo tanto, siempre será importante medir el valor de la resistencia con un multímetro.
•Este hecho que ocurre con las resistencias se puede extender al resto de la electrónica y, como la base de la electrónica son las señales eléctricas, estas también tendrán sus «tolerancias».
•Esto nos lleva a realizar un pequeño caso de demostración: montamos un simple circuito en donde conectaremos un pulsador y un Arduino .
•Con el siguiente programa , contabilizaremos el número de pulsaciones.
•Si pulsamos muy rápido, veremos cómo el contador alcanza un valor superior al número de pulsaciones reales; este fenómeno se conoce como «efecto rebote».
•Esto se produce por el mecanismo del pulsador ; es un elemento mecánico que consta de una lámina de metal que hace contacto con sus patillas. Al pulsar la unión entre la lámina de metal y las patillas, sufre una serie de vibraciones o rebotes.
•Estos rebotes repercuten en la señal .
•El Arduino considerará estos rebotes como pulsaciones y es por eso que el contador no refleja el número real de pulsaciones que hemos efectuado.
•Pero este fenómeno tiene una solución tanto por software como por hardware lo que nos llevará en los próximos capítulos a estudiar los condensadores.
•La solución a este fenómeno se conoce como pulsador antirebore (Debounce):
•Debounce por hardware
•Debounce por software
002
Introducción a los condensadores
Un condensador es un componente electrónico ampliamente usado; para empezar a entender lo que es un condensador, podemos compararlo con una pila o batería ya que, como veremos, es capaz de almacenar carga eléctrica. Se fabrican diferentes tecnologías de condensadores que se diferencian, básicamente, por el tipo de material:
•A lo largo de este capítulo y de los siguientes nos centraremos en el estudio de los condensadores electrolíticos.
•Estos condensadores tienen polaridad, por lo que hay que tener especial cuidado a la hora de realizar las conexiones.
•Los condensadores electrolíticos disponen de dos patillas, una más larga que la otra y que, si revisamos el encapsulado, veremos una franja, por lo general, de un color gris en el lado de la patilla corta.
•En el caso de los condensadores electrolíticos, el símil con una pila es muy aproximado ya que, al igual que esta, dispone de dos polos (patillas).
•La patilla larga representa el polo positivo y la corta, el negativo; por lo tanto, debemos respetar su polaridad.
•Si un condensador se encuentra sometido a una diferencia de tensión, iniciará un proceso de carga hasta que iguale el valor de la tensión a la que se encuentre sometido.
Con el siguiente caso práctico, comprobaremos el funcionamiento de un condensador:
1Conectamos el condensador de 1000 μF y 25 V y una resistencia de 330 Ω en serie y a 5 V .
2Al cabo de un instante el condensador se habrá cargado hasta alcanzar los 5 V, podemos hacer una comprobación con un multímetro.
3Ahora conectamos el condensador y la resistencia a un diodo led .
4Veremos cómo rápidamente el led empezará encendido y, según se vaya descargando el condensador, el led se irá apagando.
5Si esto se produce muy rápido, podemos cargar el condensador con una pila de 9 V, para que el led no se apague tan rápido.
Con este simple caso, hemos comprobado el funcionamiento de un condensador, es un componente simple pero con el que conseguiremos realizar circuitos complejos.
La importancia de un condensador viene en sus características de carga y descarga. Con los condensadores, podemos realizar filtros para, por ejemplo, eliminar los rebotes de una señal, pero, para eso, debemos profundizar más en su estudio y lo haremos a lo largo de los siguientes capítulos. Aun así, ya tenemos conceptos que podemos analizar:
•La unidad de los condensadores son los faradios (F); en el caso anterior, 0,001 F.
•Todos los condensadores soportan una tensión máxima; en el caso anterior era de 25 V.
•Como existen diferentes condensadores, cada uno de ellos tiene su propia representación (en el caso del electrolítico, es la siguiente ).
003
Propiedades de un condensador
La capacidad es una propiedad de los condensadores, que nos indica la cantidad de carga eléctrica que pueden almacenar, que dependerá de la tensión de carga.
La fórmula que define un condensador es la siguiente:
•Q = C * V
•Q -> carga (culombios)
•C -> capacidad (faradios)
•V -> voltios
De la expresión anterior deducimos que la carga que almacena un condensador dependerá de la capacidad de este por la tensión de carga; por lo tanto, en el capítulo anterior que teníamos un condensador de 1000 μF a una tensión de carga de 5 V, la carga que almacena es de 0,005 culombios.
•Un culombio es la cantidad de carga transportada por segundo (1 C = 1 A * s), y a su vez 1 C = 6,24 * 10 ^ 18 electrones.
Hasta aquí hemos estudiado el comportamiento básico del condensador, así que pasemos a analizar sus características de carga y descarga.
Cuando un condensador se carga o descarga, no lo hace de forma lineal. Si tuviéramos que hacer una gráfica que represente este proceso, se mostraría una gráfica en forma de curva; para entender este fenómeno, será necesario un ejemplo de la carga de un condensador:
1. Conectamos una resistencia de 1 kΩ en serie con un condensador de 1000 μF al pin A0 (valdría cualquier otro pin).
2.Una vez activemos la salida, el condensador se empezará a cargar: la intensidad inicial a la que lo haga será la intensidad máxima. A medida que se vaya cargando, irá disminuyendo .
3.Esta intensidad se puede calcular por la ley de Ohm, V = R * I -> I = V / R -> I = 5 / 1000 = 5 mA.
4.Este efecto es debido a la conexión en serie entre la resistencia y el condensador. Inicialmente, la tensión del condensador será 0 V, por lo tanto, la diferencia de tensión en la resistencia es de 5 V, lo que haría que la intensidad fuese de 5 mA .
5.El condensador se irá cargando por el flujo de intensidad, al igual que un vaso cuando abrimos un grifo y se va llenando de agua.
6.Supongamos que el condensador acaba de llegar a los 2,5 V, pues resulta que, si analizamos el circuito , la resistencia ya no tiene una caída de tensión de 5 V sino de 2,5 V, por lo tanto, la intensidad será de I = 2,5 / 1000 = 2,5 mA.
7.Esto se producirá a lo largo de la carga del condensador. Entonces, ¿cómo podemos saber en qué momento se cargará el condensador? Existe una fórmula matemática que nos dice que el condensador llegará al 63,2 % de la carga en un tiempo tau (t).
t = R * C
8.La unidades con las que debemos trabajar en la ecuación anterior son Ω y F, para que el resultado sea en segundos.
9.El tiempo final para el cual el condensador estará cargado totalmente será 5 * t.
Vamos a realizar un caso práctico para comprobar estas leyes, pero, para ello, tenemos que ampliar nuestro lenguaje de programación.