ArduinoBlocks 2ed
ArduinoBlocks 2ed
ii
ArduinoBlocks.com
iii
Juan José López Almendros
2ª EDICIÓN
arduinoblocks.com
iv
Copyright © 2017 - Juan José López Almendros
www.innovadidactic.com
ÍNDICE
1 Introducción
1.1 Plataforma Arduino
1.2 Plataforma ArduinoBlocks
1.3 ArduinoBlocks-Connector
2 Hardware
2.1 Conceptos básicos de electrónica
2.2 La fuente de alimentación
2.3 La placa Arduino UNO
2.4 Sensores
2.5 Actuadores
2.6 Comunicaciones
2.6.1 Comunicación serie
2.6.2 Comunicación I2C/TWI
2.6.3 Comunicación SPI
3 Software
3.1 Algoritmos
3.2 Bloques de uso general
3.2.1 Lógica
3.2.2 Control
3.2.3 Matemáticas
3.2.4 Texto
3.2.5 Variables
3.2.6 Listas
3.2.7 Funciones
3.3 Bloques Arduino
3.3.1 Entrada/Salida
3.3.2 Tiempo
3.3.3 Puerto serie
3.3.4 Bluetooth
3.3.5 Sensores
3.3.6 Actuadores
3.3.7 Pantalla LCD
3.3.8 Memoria EEPROM
3.3.9 Motores
3.3.10 Keypad
3.3.11 Reloj (RTC)
3.3.12 GPS
3.3.13 Tarjeta SD
3.3.14 MQTT (IoT)
4 Proyectos resueltos (x40)
1 INTRODUCCIÓN
https://www.arduino.cc/en/Main/Boards
1
Juan José López Almendros
Arduino UNO
Arduino MEGA
Arduino Nano
Muy pequeño.
Ideal para “wearables”
2
ArduinoBlocks.com
www.arduinoblocks.com
3
Juan José López Almendros
Inicio de sesión
4
ArduinoBlocks.com
5
Juan José López Almendros
6
ArduinoBlocks.com
Los bloques que estén fuera del bloque de inicialización o del bloque del bucle
del programa principal serán ignorados a la hora de generar el programa (excepto
los bloques de funciones).
http://www.arduinoblocks.com/web/help/libraries
http://www.arduinobocks.com/web/site/abconnector
7
Juan José López Almendros
8
ArduinoBlocks.com
Guardar
Barra de información
Importar un proyecto:
“Me gusta”
9
Juan José López Almendros
10
ArduinoBlocks.com
11
Juan José López Almendros
Comentarios:
Duplicar:
Crea una copia del bloque actual.
Entradas en línea:
Modifica el aspecto del bloque de forma compacta o en línea.
Desactivar bloque:
El generador de código no tendrá en cuenta este bloque.
12
ArduinoBlocks.com
Eliminar:
Elimina el bloque.
Ayuda:
Abre un enlace con ayuda sobre la función del bloque.
13
Juan José López Almendros
1.3 ARDUINOBLOCKS-CONNECTOR
http://www.arduinoblocks.com/web/site/abconnector
ArduinoBlocks-Connector ArduinoBlocks-Connector
ejecutándose bajo Windows ejecutándose bajo Ubuntu
14
ArduinoBlocks.com
15
Juan José López Almendros
2 HARDWARE
16
ArduinoBlocks.com
Keyestudio EASY-plug
Ejemplo de conexión modular:
17
Juan José López Almendros
C.A. C.C.
Voltaje o tensión eléctrica: Energía acumulada por unidad de carga que hace
que las cargas circulen por el circuito (genera una corriente). Se mide en voltios (V)
P=V·I
Ley de Ohm: Es una sencilla fórmula matemática que relaciona estas tres
18
ArduinoBlocks.com
V=I·R
A través de los pines 3.3v , 5v, GND y Vin obtenemos la alimentación para
circuitos auxiliares, sensores, shields, etc.:
19
Juan José López Almendros
20
ArduinoBlocks.com
Especificaciones técnicas:
Microcontrolador ATmega328P
Alimentación 5V
Alimentación (recomendada) 7-12V
Alimentación (límite) 6-20V
Número de pines E/S 14 (6 con salida PWM)
Número de pines PWM 6
Número de pines analógicos 6
Corriente pines E/S 20 mA
Corriente pin de 3.3V 50 mA
32 KB (ATmega328P)
Memoria Flash
(0.5 KB para el bootloader)
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Velocidad de reloj 16 MHz
Largo 68.6 mm
Ancho 53.4 mm
Peso 25 g
https://www.arduino.cc/en/Main/ArduinoBoardUno
21
Juan José López Almendros
PINES DE ALIMENTACIÓN:
22
ArduinoBlocks.com
Pines: 3,5,6,9,10,11 Dentro de los pines digitales estos pines permiten utilizar
como salida digital PWM (modulación en ancho de pulso)
para simular una salida pseudo-analógica.
23
Juan José López Almendros
24
ArduinoBlocks.com
https://www.arduino.cc/en/Reference/SoftwareSerial
25
Juan José López Almendros
+información:
https://www.arduino.cc/en/Main/ArduinoShields
26
ArduinoBlocks.com
2.4 SENSORES
27
Juan José López Almendros
28
ArduinoBlocks.com
29
Juan José López Almendros
Codificador (encoder)
Sensor de temperatura Sensor de obstáculos
rotativo
Sensor DHT-11 de
Joystick Sensor de efecto Hall
temperatura y humedad
30
ArduinoBlocks.com
2.5 ACTUADORES
31
Juan José López Almendros
2.6 COMUNICACIONES
32
ArduinoBlocks.com
Para poder desde un ordenador visualizar los datos recibidos vía puerto serie
debemos utilizar una aplicación de tipo “terminal” o “consola” serie:
A la hora de establecer una conexión serie los dos extremos que intervienen
en la conexión (en este caso Arduino y el PC) deben establecer el mismo valor en
la velocidad de la conexión.
Velocidad en baudios estándar: 9600 bits por segundo
Otras velocidades utilizadas: 4800, 19200, 38400, 57600, 115200, …
33
Juan José López Almendros
El bus I2C (I²C o TWI) es un bus de datos seire desarrollado por Philips.
Se utiliza principalmente internamente para la comunicación entre diferentes
partes de un circuito, por ejemplo, entre un controlador y circuitos periféricos
integrados.
Atmel introdujo por motivos de licencia la designación TWI (Two-Wired-
Interface) actualmente utilizada por algunos otros fabricantes. Desde el punto de
vista técnico, TWI e I2C son idénticos.
El I2C está diseñado como un bus maestro-esclavo. La transferencia de
datos es siempre inicializada por un maestro; el esclavo reacciona. Es posible
tener varios maestros (Multimaster-Mode). En el modo multimaestro pueden
comunicar dos maestros entre ellos mismos, de modo que uno de ellos trabaja
como esclavo. El arbitraje (control de acceso en el bus) se rige por las
especificaciones, de este modo los maestros pueden ir turnándose.
34
ArduinoBlocks.com
SDA: Pin A4
SCL: Pin A5
35
Juan José López Almendros
Tarjeta micro SD
Pantalla OLED Reloj de tiempo real (RTC)
MOSI: Pin 11
MISO: Pin 12
SCLK: Pin 13
SS/CS: Depende de la programación, puede usarse cualquier pin.
36
ArduinoBlocks.com
3 SOFTWARE
37
Juan José López Almendros
3.1 ALGORITMOS
38
ArduinoBlocks.com
3.2.1 LÓGICA
Con estos bloques tenemos acceso a las funciones lógicas necesarias para
implementar en nuestro programa de Arduino.
Las funciones lógicas trabajan con valores o expresiones de “verdadero” o
“falso”
Ejemplo:
39
Juan José López Almendros
= Igual
≠ Distintos
< Menor que
≤ Menor o igual que
> Mayor que
≥ Mayor o igual que
y Se cumple si las
“and” dos operandos
son verdaderos
o Se cumple si
“or” alguno de los dos
operandos es
verdadero.
Ejemplo:
Ejemplo:
40
ArduinoBlocks.com
estados posibles
On = Verdadero
Off = Falso
3.2.2 CONTROL
Ejemplo:
Ejemplo:
41
Juan José López Almendros
Ejemplo:
3.2.3 MATEMÁTICAS
42
ArduinoBlocks.com
Operaciones básicas:
+ Suma
- Resta
x Multiplicación
÷ División
^ Potencia
Ejemplo:
Aumenta la variable en +1
variable = variable + 1
Disminuye la variable en -1
variable = variable – 1
Funciones matemáticas:
43
Juan José López Almendros
Ejemplo:
-Sensor de temperatura: 10ºC … 50ºC
-Arduino lectura analógica: 0 … 1023
Ejemplo:
Ejemplo:
44
ArduinoBlocks.com
Ejemplo:
45
Juan José López Almendros
3.2.4 TEXTO
46
ArduinoBlocks.com
Ejemplo:
47
Juan José López Almendros
Ejemplo:
48
ArduinoBlocks.com
Ejemplo:
Partir texto: Obtiene una parte del texto, indicando la posición de inicio y
fin dentro del texto para crear la subcadena.
Ejemplo:
Ejemplo:
49
Juan José López Almendros
3.2.5 VARIABLES
Ejemplo:
Ejemplo:
Ejemplo:
50
ArduinoBlocks.com
Ejemplo:
Ejemplo:
Ejemplo:
51
Juan José López Almendros
3.2.6 LISTAS
Listas numéricas:
Ejemplo:
52
ArduinoBlocks.com
Ejemplo:
Listas de textos:
Ejemplo:
53
Juan José López Almendros
Ejemplo:
3.2.7 FUNCIONES
54
ArduinoBlocks.com
Definición:
Llamada:
Llamada:
55
Juan José López Almendros
Definición:
56
ArduinoBlocks.com
3.3.1 ENTRADA/SALIDA
Leer pin digital: Obtiene el valor digital del pin (0/1, ON/OFF,
verdadero/falso). (Recuerda para leer un ON/1 debemos aplicar 5v en la
entrada digital y 0v para leer un OFF/0)
Ejemplo:
Escribir pin digital: Escribe el valor en un pin digital pin (0/1, ON/OFF,
verdadero/falso).
(Si se activa, la salida suministrará 5v en caso contrario 0v)
57
Juan José López Almendros
Ejemplo:
Versión equivalente:
Ejemplo:
58
ArduinoBlocks.com
3.3.2 TIEMPO
Milisegundos
Microsegundos
59
Juan José López Almendros
Milisegundos
Microsegundos
60
ArduinoBlocks.com
Programa equivalente:
61
Juan José López Almendros
62
ArduinoBlocks.com
63
Juan José López Almendros
Ejemplo:
Ejemplo:
Enviar byte: Envía un valor numérico como un byte (8 bits). Por tanto el
valor debe estar comprendido entre 0 y 255.
64
ArduinoBlocks.com
Recibir texto: Lee una cadena de texto recibida por el puerto serie. Si se
indica la opción “hasta salto de línea” en cuanto se encuentra un salto de
línea devuelve el texto recibido. Si no, hasta que se dejen de recibir
datos.
Ejemplo:
65
Juan José López Almendros
Recibir como número: Leer una cadena de texto recibida por el puerto
serie e intenta interpretarla como un número (analiza la cadena de texto
buscando un formato numérico válido)
66
ArduinoBlocks.com
67
Juan José López Almendros
3.3.4 BLUETOOTH
68
ArduinoBlocks.com
Enviar byte: Envía un valor numérico como un byte (8 bits). Por tanto el
valor debe estar comprendido entre 0 y 255.
Recibir texto: Lee una cadena de texto recibida por el puerto serie. Si se
indica la opción “hasta salto de línea” en cuanto se encuentra un salto de
línea devuelve el texto recibido. Si no, hasta que se dejen de recibir
datos.
Recibir como número: Leer una cadena de texto recibida por el puerto
serie e intenta interpretarla como un número. Funciona igual que el
boque del puerto serie (ver detalles de funcionamiento en el puerto serie)
69
Juan José López Almendros
70
ArduinoBlocks.com
3.3.5 SENSORES
71
Juan José López Almendros
Conexión: Conexión:
sin presionar “off” / presionado: “on” sin presionar “on” / presionado: “off”
72
ArduinoBlocks.com
Ejemplo: Encendido del led del pin 13 al detectar movimiento. Sensor PIR
conectado al pin 6:
Tipo: Datos
Pin: 2-13/A0-A5
Valor: Temperatura: 0-50ºC ±2ºC / Humedad: 20-90% ±5%
73
Juan José López Almendros
Tipo: Datos
Pin: 2-13/A0-A5
Valor: Temperatura: -40º - 125ºC ±0.5ºC / Humedad: 0-100% ±2%
74
ArduinoBlocks.com
75
Juan José López Almendros
Tipo: Datos
Pin Trigger (emisión): 2-13/A0-A5
Pin Echo (recepción): 2-13/A0-A5
Valor: 2 – 400 cm
76
ArduinoBlocks.com
Tipo: Datos
Pin: 11
77
Juan José López Almendros
Para evitar este problema podemos tratar el valor como un valor entero
sin signo de 32 bits añadiendo el bloque “Número entero sin signo” visto
en el apartado de bloques matemáticos (3.2.3).
78
ArduinoBlocks.com
Tipo: Datos
Pin: Clk (A): 2 / Dt (A): 3
Valor: posición virtual del encoder (variable interna)
Tipo: Analógico
Pin: A0-A5
Valor: 0-100 % posición X o Y
79
Juan José López Almendros
80
ArduinoBlocks.com
81
Juan José López Almendros
82
ArduinoBlocks.com
83
Juan José López Almendros
84
ArduinoBlocks.com
85
Juan José López Almendros
86
ArduinoBlocks.com
87
Juan José López Almendros
Ejemplo 1: Lectura del valor de luz con LDR para obtener más precisión.
88
ArduinoBlocks.com
3.3.6 ACTUADORES
89
Juan José López Almendros
Tipo: PWM
Pin R/G/B: 3,5,6,9,10,11
Valor: Color
90
ArduinoBlocks.com
91
Juan José López Almendros
Tipo: PWM
Pin R/G/B: 3,5,6,9,10,11
Ms: Duración del tono en milisegundos
Hz: Frecuencia del tono
92
ArduinoBlocks.com
Al igual que con los sensores, puede que tengamos actuadores digitales o
analógicos no implementados en ArduinoBlocks o que queramos controlar de una
forma diferente a como lo hacen los bloques. Para ello podemos utilizar
directamente los bloques de entrada/salida genéricos.
Con los bloques genéricos (Naranja => Rojo = 204, Verde=153, Azul=51)
93
Juan José López Almendros
94
ArduinoBlocks.com
(La dirección I2C depende del módulo o pantalla LCD, 0x27 es la más común)
95
Juan José López Almendros
0 0
1
2
3
4 1
5
6
7
8 2
9
10
96
ArduinoBlocks.com
11
… …
97
Juan José López Almendros
3.3.9 MOTORES
98
ArduinoBlocks.com
Estos módulos suelen integrar el control para dos motores. Los pines de un
módulo de control de motores en puente en H suele tener estas conexiones:
99
Juan José López Almendros
Servomotor
Los servomotores son motores DC a los que se les ha añadido una reductora
y una electrónica de control PID que permite controlar el motor situándolo en una
posición muy precisa. El servomotor está intentando siempre situarse en la
posición indicada, de forma que si se le fuerza o impide ir hasta la posición
indicada intentará moverse a la posición indicada continuamente.
Los servomotores pueden situarse en una posición entre 0º y 300º
aproximadamente según el modelo. Un servomotor no permite el giro libre a no ser
que se modifique con ese propósito.
100
ArduinoBlocks.com
101
Juan José López Almendros
102
ArduinoBlocks.com
103
Juan José López Almendros
3.3.10 KEYPAD
Configuración del keypad: define los pines de conexión para las filas y
columnas del keypad.
104
ArduinoBlocks.com
105
Juan José López Almendros
Obtener texto con la fecha: permite obtener un valor de tipo texto con la
fecha formateada como DD/MM/YYYY
Obtener texto con la hora: permite obtener un valor de tipo texto con la
fecha formateada como hh:mm:ss
Ejemplo: Ajuste de fecha y hora del reloj RTC desde PC (vía consola serie)
106
ArduinoBlocks.com
107
Juan José López Almendros
3.3.12 GPS
Los módulos GPS nos permiten de forma sencilla obtener los datos de
posición global (latitud/longitud), velocidad, orientación, altitud, … facilitados por
el sistema de posicionamiento global. El módulo GPS conectado debe ser un
módulo de conexión serie que proporcione los datos según el protocolo NMEA.
Uno de los módulos más utilizados de este tipo son los GPS NEO-6.
GPS Iniciar: Inicia el módulo GPS indicando los pines utilizados para la
comunicación serie con el módulo.
108
ArduinoBlocks.com
Distancia entre: Calcula los metros de distancia en línea recta entre dos
puntos indicando la latitud y longitud del punto inicial y final.
109
Juan José López Almendros
110
ArduinoBlocks.com
3.3.13 TARJETA SD
Los módulos o shields SD se conectan con la interfaz SPI utilizando los pines
11,12 y 13 y otro pin para CS (normalmente las shields utilizan el pin 4).
Iniciar SD: Inicia el uso del módulo de tarjetas SD indicando los pines
donde está conectado. (los pines SPI son fijos, sólo indicamos el pin CS)
111
Juan José López Almendros
Leer cada byte: Permite leer byte a byte todos los datos de un archivo.
112
ArduinoBlocks.com
Ejemplo: Registrar el nivel de luminosidad medido con una LDR cada 30s
113
Juan José López Almendros
3.3.13 MQTT
114
ArduinoBlocks.com
Por otro lado podemos utilizar brokers MQTT públicos disponibles en internet
con fines experimentales o docentes y en cualquier otro caso podemos contratar
servicios de brokers de pago con diferentes limitaciones de ancho de banda o
número de conexiones según nuestras necesidades.
iot.eclipse.org
broker.hivemq.com
www.cloudmqtt.com
(con usuario y clave, opción gratuita limitada en velocidad y conexiones)
115
Juan José López Almendros
Publicar MQTT: Permite enviar un mensaje al broker para que los nodos
suscritos a este topic reciban el valor. El tema es el “topic” a publicar y el
valor puede ser un valor fijo (texto o numérico) o el valor de una variable.
Para variables numéricas (el valor recibido debe ser un número válido y se
guardara en la variable indicada)
116
ArduinoBlocks.com
MyMQTT (Android)
117
Juan José López Almendros
118
ArduinoBlocks.com
119
Juan José López Almendros
4 PROYECTOS
P01.-Secuenciador de luces
P02.-Simulación amanecer y anochecer
P03.-Lámpara con regulación manual
P04.-Semáforo
P05.-Timbre
P06.-Control inteligente de iluminación
P07.-Encendido automático por movimiento
P08.-Contador manual
P09.-Cronómetro
P10.-Fotómetro
P11.-Iluminación crepuscular
P12.-Encendido y apagado con palmada
P13.-Termómetro
P14.-Termostato
P15.-Medidor de distancia
P16.-Riego automático
P17.-Lámpara multicolor con control IR
P18.-Piano con teclado
P19.-Sensor de aparcamiento
P20.-Control pan/tilt con joystick
120
ArduinoBlocks.com
121
Juan José López Almendros
Material necesario:
4 x leds de los colores deseados.
4 x resistencias de 220 Ω.
Placa de prototipos, cables de interconexión.
Conexiones:
Led 1 = Pin 2
Led 2 = Pin 3
Led 3 = Pin 4
Led 4 = Pin 5
Programa ArduinoBlocks:
Secuencia 1: Secuencia 2:
122
ArduinoBlocks.com
Material necesario:
1 x led
1 x resistencia de 220 Ω.
Placa de prototipos, cables de interconexión.
Conexiones:
Led = Pin ~9
Programa ArduinoBlocks:
123
Juan José López Almendros
Material necesario:
1 x led
1 x resistencia de 220 Ω.
1 x potenciómetro 10k
Placa de prototipos, cables de interconexión.
Conexiones:
Led = Pin ~9
Potenciómetro = Pin A0
Modificando el mapeo del valor leído al valor enviado al led podemos invertir el
sentido de giro para aumentar o disminuir la intensidad del led en sentido
contrario:
124
ArduinoBlocks.com
P04 - SEMÁFORO
Material necesario:
1 x led RGB de cátodo común
3 x resistencia de 220 Ω.
Placa de prototipos, cables de interconexión.
Conexiones:
Led R = Pin ~9
Led G = Pin ~10
Led B = Pin ~11
Programa ArduinoBlocks:
125
Juan José López Almendros
P05 - TIMBRE
Con este sencillo proyecto vamos a realizar un timbre para casa, al detectar
el pulsador presionado reproduciremos una melodía con el zumbador.
Material necesario:
1 x zumbador
1 x pulsador
1 x resistencia 10 kΩ
Placa de prototipos, cables de interconexión.
Conexiones:
Zumbador = Pin 5
Pulsador = Pin 7
Programa ArduinoBlocks:
126
ArduinoBlocks.com
Material necesario:
1 x led
1 x pulsador
1 x resistencia de 220Ω
1 x resistencia 10 kΩ
Placa de prototipos, cables de interconexión.
Conexiones:
Led = Pin ~9
Pulsador = Pin 7
Programa ArduinoBlocks:
127
Juan José López Almendros
128
ArduinoBlocks.com
El ahorro energético es cada vez más importante. Por eso con este sistema
además de comodidad evitamos dejarnos la luz encendida. El sistema
automáticamente activará la luz cuando detecte la presencia de una persona y
transcurrido un tiempo a partir de dejar de detectar la presencia la luz se apagará.
Material necesario:
1 x módulo de relé
1 x módulo de detección de movimiento PIR
Placa de prototipos, cables de interconexión.
Conexiones:
Relé = Pin 8
Sensor PIR = Pin 6
Programa ArduinoBlocks:
129
Juan José López Almendros
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
1 x pulsador
1 x resistencia 10kΩ
Placa de prototipos, cables de interconexión.
Conexiones
Pulsador = Pin 7
LCD (i2c) = Pin SDA (A4) , Pin SCL (A5)
130
ArduinoBlocks.com
Programa ArduinoBlocks:
131
Juan José López Almendros
Con sólo una pantalla LCD crearemos un cronómetro capaz de contar horas,
minutos y segundos. Con el mismo montaje se implementan los programas de
cuenta hacia adelante y de cuenta hacia atrás.
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
Placa de prototipos, cables de interconexión.
Conexiones LCD:
Pin SDA (A4)
Pin SCL (A5)
Programa ArduinoBlocks:
132
ArduinoBlocks.com
133
Juan José López Almendros
134
ArduinoBlocks.com
P10 - FOTÓMETRO
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
1 x resistencia LDR 10kΩ
1 x resistencia 10kΩ
Placa de prototipos, cables de interconexión
Conexiones:
LDR = Pin A0
LCD (i2c) = Pin SDA (A4) , Pin SCL (A5)
Programa ArduinoBlocks:
135
Juan José López Almendros
Material necesario:
1 x resistencia LDR kΩ
1 x resistencia 10kΩ
1 x potenciómetro rotativo 10kΩ
1 x led
1 x resistencia 220Ω
1 x módulo de relé
Placa de prototipos, cables de interconexión
Conexiones:
Potenciómetro = Pin A1
LDR = Pin A0
Led = Pin 6
Relé = Pin 7
136
ArduinoBlocks.com
Programa ArduinoBlocks:
137
Juan José López Almendros
Este sencillo sistema nos permite controlar la luz sin movernos del sofá.
Como habrás comprobado no sólo sirve una palmada, cualquier sonido que supere
el umbral configurado activará el sistema (la palmada nunca falla).
Material necesario:
1 x módulo de sensor de sonido
1 x potenciómetro rotativo 10kΩ
1 x led
1 x resistencia 220Ω
1 x módulo de relé
Placa de prototipos, cables de interconexión
Conexiones:
Sensor de sonido = Pin A0
Potenciómetro = Pin A1
Led = Pin 6
Relé = Pin 7
138
ArduinoBlocks.com
Programa ArduinoBlocks:
139
Juan José López Almendros
P13 - TERMÓMETRO
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
1 x resistencia NTC 10kΩ
1 x resistencia 10kΩ
Placa de prototipos, cables de interconexión
Conexiones:
Resistencia NTC = Pin A0
LCD (i2c) = Pin SDA (A4) , Pin SCL (A5)
Programa ArduinoBlocks:
140
ArduinoBlocks.com
P14 - TERMOSTATO
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
1 x sensor DHT-11
1 x potenciómetro 10kΩ
1 x módulo de relé
Placa de prototipos, cables de interconexión
Conexiones:
Potenciómetro = Pin A0
Sensor DHT-11 = Pin 2
Relé = Pin 3
LCD (i2c): Pin SDA (A4) / Pin SCL (A5)
141
Juan José López Almendros
Programa ArduinoBlocks:
142
ArduinoBlocks.com
Material necesario:
1 x pantalla LCD 2x16 (con módulo de conexión i2c)
1 x sensor de ultrasonidos HC-SR04
Placa de prototipos, cables de interconexión
Conexiones:
Sensor HC-SR04: Trigger = Pin 2 , Echo = Pin 3
LCD (i2c) = Pin SDA (A4) , Pin SCL (A5)
Programa ArduinoBlocks:
143
Juan José López Almendros
Material necesario:
1 x sensor de humedad
1 x potenciómetro rotativo
1 x módulo de relé
Placa de prototipos, cables de interconexión
Conexiones:
Sensor humedad = Pin A1
Potenciómetro = Pin A0
Relé = Pin 3
Programa ArduinoBlocks:
144
ArduinoBlocks.com
Material necesario:
1 x led RGB (cátodo común)
1 x sensor IR
1 x mando IR
Placa de prototipos, cables de interconexión
Conexiones:
Led R = Pin ~3
Led G = Pin ~5
Led B = Pin ~6
Sensor IR = Pin 11
Programa ArduinoBlocks:
145
Juan José López Almendros
Antes de realizar este montaje es recomendable obtener los códigos para cada
botón del mando a distancia utilizado. Esto se puede realizar fácilmente con este
programa para obtener los códigos de cada botón por la consola serie:
146
ArduinoBlocks.com
Material necesario:
1 x zumbador pasivo
1 x keypad 3x4
Placa de prototipos, cables de interconexión
Conexiones:
Keypad: Fila 1 = Pin 11, Fila 2 = Pin 10, Fila 3 = Pin 9, Fila 4 = Pin 8
Keypad: Col-1 = Pin 6, Col-2 = Pin 5, Col-3 = Pin 4
Zumbador = Pin ~3
147
Juan José López Almendros
Programa ArduinoBlocks:
148
ArduinoBlocks.com
Material necesario:
1 x zumbador
1 x sensor de ultrasonidos HC-SR04
Placa de prototipos, cables de interconexión
Conexiones:
Sensor HC-SR04:
Trigger = Pin 6
Echo = Pin 7
Zumbador = Pin ~3
Programa ArduinoBlocks:
149
Juan José López Almendros
Material necesario:
2 x micro-servos + mecanismo pan/tilt
1 x módulo joystick
Placa de prototipos, cables de interconexión
Conexiones:
Servo pan = Pin ~9
Servo tilt = Pin ~10
Joystick X = Pin A0
Joystick Y = Pin A1
150
ArduinoBlocks.com
Programa ArduinoBlocks:
151
Juan José López Almendros
Material necesario:
1 x led
1 x resistencia 220Ω
Placa de prototipos, cables de interconexión
Conexiones:
Led = Pin ~3
Programa ArduinoBlocks:
152
ArduinoBlocks.com
153
Juan José López Almendros
https://play.google.com/store/apps/details?id=es.pymasde.blueterm&hl=es
Material necesario:
1 x módulo Bluetooth HC-06
2 x módulo relé
Dispositivo móvil con conexión Bluetooth
Placa de prototipos, cables de interconexión
154
ArduinoBlocks.com
Conexiones:
Bluetooth RX = Pin 2, TX = Pin 3
Relé 1 = Pin 8
Relé 1 = Pin 9
Programa ArduinoBlocks:
155
Juan José López Almendros
156
ArduinoBlocks.com
Material necesario:
1 x sensor DHT-11
1 x módulo Bluetooth HC-06
1 x dispositivo móvil con conexión Bluetooth
Placa de prototipos, cables de interconexión
Conexiones:
Bluetooth RX = Pin 2 / TX = Pin 3
Sensor DHT-11 = Pin 7
Programa ArduinoBlocks:
157
Juan José López Almendros
158
ArduinoBlocks.com
Material necesario:
1 x led
1 x resistencia 220Ω
1 x módulo Bluetooth HC-06
1 x dispositivo móvil con sistema Android
Placa de prototipos, cables de interconexión
Conexiones:
Bluetooth:
RX = Pin 2
TX = Pin 3
Led = Pin ~9
Programa ArduinoBlocks:
159
Juan José López Almendros
160
ArduinoBlocks.com
161
Juan José López Almendros
162
ArduinoBlocks.com
163
Juan José López Almendros
Programa ArduinoBlocks:
164
ArduinoBlocks.com
165
Juan José López Almendros
166
ArduinoBlocks.com
167
Juan José López Almendros
168
ArduinoBlocks.com
Esquema de conexión:
169
Juan José López Almendros
Programa ArduinoBlocks:
170
ArduinoBlocks.com
171
Juan José López Almendros
Esquema de conexión:
Programa ArduinoBlocks:
172
ArduinoBlocks.com
origen
distancia Posición actual (GPS)
Esquema de conexión:
173
Juan José López Almendros
Programa ArduinoBlocks:
Para obtener las coordenadas GPS del punto origen podemos utilizar sitios webs como por
ejemplo: http://www.coordenadas-gps.com/ donde indicando una dirección o marcando
sobre el mapa podemos obtener fácilmente la latitud y longitud del punto:
174
ArduinoBlocks.com
Un registrador GPS puede ser de gran utilidad para registrar nuestras rutas y
su posterior procesamiento o visualización. Podemos utilizarlo por ejemplo para
grabar nuestras rutas en bicicleta. El archivo generado en formato CSV se puede
abrir fácilmente en aplicaciones de hoja de cálculo para su posterior
procesamiento o con herramientas más potentes como por ejemplo la aplicación
web GpsVisualizer o Google Maps.
Esquema de conexión:
175
Juan José López Almendros
Programa ArduinoBlocks:
176
ArduinoBlocks.com
177
Juan José López Almendros
Esquema de conexión:
178
ArduinoBlocks.com
Programa ArduinoBlocks:
Editor de texto: Importación a LibreOffice Calc o Excel y creación de gráficas con los valores:
179
Juan José López Almendros
Esquema de conexión:
Programa ArduinoBlocks:
180
ArduinoBlocks.com
Siguiendo esta teoría vamos a realizar un proyecto en el que ante una caída
se envíe una señal vía Bluetooth a una aplicación móvil Android que
automáticamente llamará a un teléfono de emergencias.
Esquema de conexión:
Programa ArduinoBlocks:
181
Juan José López Almendros
182
ArduinoBlocks.com
Como ya hemos visto un led RGB nos permite obtener multitud de tonos de
luz de diferentes colores simplemente combinando los valores de rojo, verde y azul
de los que se compone. Este proyecto nos va a permitir controlar un led RGB
desde el móvil y además vía internet, es decir, desde cualquier lugar del mundo
con conexión a internet podremos ajustar nuestro led al color e intensidad
deseado.
Para ello utilizaremos una Shield Ethernet que debemos conectar a internet
mediante un router.
Esquema de conexión:
Programa ArduinoBlocks:
183
Juan José López Almendros
184
ArduinoBlocks.com
Esquema de conexión:
Programa ArduinoBlocks:
185
Juan José López Almendros
https://play.google.com/store/apps/details?id=net.rou
tix.mqttdash&hl=es
186
ArduinoBlocks.com
Vamos a controlar dos puntos de luz accionados por relé y la posición de una
persiana simulada con un servo.
Por otro lado detectaremos la presencia con un sensor PIR y el nivel de luz
ambiente con una LDR.
Esquema de conexión:
187
Juan José López Almendros
Programa ArduinoBlocks:
188
ArduinoBlocks.com
https://play.google.com/store/apps/details?id=com.thn.
iotmqttdashboard&hl=es
189
Juan José López Almendros
Esquema de conexión:
190
ArduinoBlocks.com
https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller
90º parado
0º gira en un sentido a máxima velocidad
180º gira en sentido contrario a máxima velocidad
191
Juan José López Almendros
Programa ArduinoBlocks:
192
ArduinoBlocks.com
Los robots móviles con motores DC son los más habituales, el proyecto
anterior con servos de rotación continua es muy sencillo pero es más habitual y
fácil de conseguir robots con motores de corriente continua.
Esquema de conexión:
193
Juan José López Almendros
Programa ArduinoBlocks:
194
ArduinoBlocks.com
195
Juan José López Almendros
Esquema de conexión:
196
ArduinoBlocks.com
Programa ArduinoBlocks:
197
Juan José López Almendros
198
ArduinoBlocks.com
199
Juan José López Almendros
Esquema de conexión:
200
ArduinoBlocks.com
Programa ArduinoBlocks:
201
Juan José López Almendros
Esquema de conexiones:
El brazo robótico para probar este proyecto ha sido impreso en 3D. El modelo
puedes encontrarlo compartido en el enlace:
https://www.thingiverse.com/thing:65081
202
ArduinoBlocks.com
Programa ArduinoBlocks:
203
Juan José López Almendros
204
ArduinoBlocks.com
Los siguientes bloques deben realizar tareas periódicas en segundo plano y por lo
tanto debemos evitar situaciones en nuestro programa donde se bloquee la
ejecución. Si un bloque o bloques consumen mucho tiempo de ejecución del
procesador no dejarán realizar estas tareas en segundo plano y por lo tanto el
funcionamiento no será correcto.
205
Juan José López Almendros
http://www.pighixxx.com/test/pinouts/boards/uno.pdf
206
ArduinoBlocks.com
CONTACTO:
Juanjo López
[email protected]
207
Juan José López Almendros
ANOTACIONES
208
ArduinoBlocks.com
209