ArduinoBlocks FreeBook
ArduinoBlocks FreeBook
ArduinoBlocks.com
junio 2020
Colabora:
ArduinoBlocks - Free Book
1 Introducción
ArduinoBlocks es la herramienta perfecta para niños, jóvenes y no tan jóvenes que quieren
iniciarse en el mundo Arduino de una forma divertida e intuitiva.
Aprender a programar con bloques, aunque parece un juego, es una forma totalmente válida
de obtener los conceptos básicos de programación que posteriormente se podrán aplicar a cualquier
otro lenguaje de programación, ya sea visual o escrito. Programando con bloques nos olvidamos
principalmente de los fallos de sintaxis pero tenemos que aprender de igual forma conceptos básicos
como secuenciación, bucles, variables, condiciones, funciones, etc. Desarrollamos la capacidad de
abstracción de un problema para convertirlo en una secuencia de comandos, o bloques, que
resolverán el problema, es decir, aprenderemos a pensar como un programador.
Por experiencia, creo que el aprendizaje con un sistema visual suele ser menos estresante y
permite obtener resultados mucho más rápido, obteniendo una experiencia mucho menos fustrante
para el programador novel. Y en muchos casos, se utiliza esta iniciación como trampolín para dar el
salto a una programación avanzada mediante código escrito obteniendo muchas más éxito.
Arduino es un proyecto de hardware libre que ideó una plataforma completa de hardware y
software compuesta por placas de desarrollo que integran un microcontrolador y un entorno de
desarrollo IDE. La idea surgió para facilitar el uso de la electrónica en proyectos multidisciplinarios.
La primera placa Arduino fue introducida en 2005, ofreciendo un bajo costo y facilidad para
uso de novatos y profesionales.
https://es.wikipedia.org/wiki/Arduino
2
ArduinoBlocks - Free Book
El más utilizado y estándar es el Arduino UNO, sin embargo en algunos casos podemos
necesitar otra placa Arduino para adaptarnos al tipo de proyecto a realizar.
https://www.arduino.cc/en/Main/Boards
Arduino UNO
Arduino MEGA
Arduino Nano
3
ArduinoBlocks - Free Book
NodeMCU
Dentro de nuestros proyectos, la placa Arduino será el “cerebro” que gestiona toda la
información recogida desde los sensores, toma decisiones y actúa sobre los elementos de control
conectados.
Según las necesidades del proyecto deberemos elegir la placa Arduino más apropiada.
ArduinoBlocks soporta multitud de placas y robots basados en Arduino: Arduino UNO, Nano y MEGA,
Leonardo, ProMicro, EasyPlug, Otto DIY, KeyBot, 3dBot,...
Por otro lado el “framework Arduino” se ha adaptado a otros microcontroladores de bajo costo
y muy potentes como esl el caso del “ESP8266”, en concreto podremos programas las placas de
desarrollo basadas en este chip: NodeMCU y WeMos D1 / mini..
El tamaño de memoria Flash para el programa de un Arduino UNO es de 32KB de los cuales
debemos restar el tamaño del “bootloader” pregrabado (0.5KB en Arduino UNO y 2KB en Arduino
NANO)
ArduinoBlocks es una plataforma donde podemos programar nuestra placa Arduino de forma
visual sin necesidad de conocer el lenguaje C++/Processing que utiliza Arduino IDE.
ArduinoBlocks actualmente funciona con todos los navegadores de última generación: Mozilla
Firefox, Google Chrome, Opera, Safari, etc. (recomandado Firefox y Chrome)
4
ArduinoBlocks - Free Book
● Añadir archivos adjuntos relacionados con el proyecto: esquemas, fotos, archivos para
impresión 3D, aplicaciones, etc.
● Exportar el proyecto completo como .zip incluyendo librerías para Arduino IDE
www.arduinoblocks.com
5
ArduinoBlocks - Free Book
● Registro de nuevo usuario: Para empezar a usar ArduinoBlocks y tener acceso a todas sus
funcionalidades debemos de registrarnos para tener nuestra cuenta de usuario. Para ellos
debemos pinchar en “iniciar sesión” y a continuación en la opción “nuevo usuario”:
6
ArduinoBlocks - Free Book
A continuación revisa tu bandeja de entrada del correo electrónico y recibirás un correo con un
enlace para confirmar y activar tu cuenta de usuario. A partir de ese momento puede iniciar sesión y
crear tus proyectos dentro de tu cuenta de ArduinoBlocks.
Si eres profesor y quieres crear cuentas para tus alumnos o centro educativo sin utilizar el
correo electrónico de los alumnos, puedes crear “cuentas gestionadas”.
● Inicio de sesión: Debemos iniciar sesión o crear previamente una nueva cuenta en caso de
acceder por primera vez. Esto nos permitirá acceder a nuestros proyectos en la nube y a
todas las ventajas de la comunidad ArduinoBlocks.
7
ArduinoBlocks - Free Book
● Usuarios gestionados: Si eres profesor y quieres crear cuentas para tus alumnos o centro
educativo puedes utilizar la opción de usuarios gestionados. De esta forma no se necesita
correo electrónico de los alumnos y los usuarios están bajo el control de la cuenta de usuario
del profesor (o profesores). Los usuarios gestionados tienen algunas limitaciones como no
permitir archivos adjuntos en los proyectos o no poder crear proyectos como profesor.
Lo primero que debemos hacer es crar una organización. Puede ser el nombre de nuestro
centro, academia, etc.
Podemos añadir a otros profesores a partir de su cuenta (con el correo electrónico) para que
sean colaboradores dentro de la organización y también puedan gestionar alumnos.
Cada usuario gestionado tendrá un nombre y para iniciar sesión el nombre de usuario será:
nombre.organización
8
ArduinoBlocks - Free Book
-Cambiar la clave de los usuarios (no pueden ver la actual, pero sí cambiarla)
-Exportar un proyecto a archivo (si tienen una cuenta de usuario normal, de esta forma
pueden exportar e importar proyectos entre cuentas)
● Perfil de usuario: Dentro del perfil del usuario podemos ajustar datos personales y
configuración específica del usuario:
9
ArduinoBlocks - Free Book
● Creación de un nuevo proyecto : Para iniciar un nuevo proyecto debemos hacer clic en el
menú:
10
ArduinoBlocks - Free Book
11
ArduinoBlocks - Free Book
Puerto de conexión
de la placa Arduino:
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 o
bloques especiales como interrupciones y otros eventos).
12
ArduinoBlocks - Free Book
http://www.arduinoblocks.com/web/help/libraries
http://www.arduinobocks.com/web/site/abconnector
13
ArduinoBlocks - Free Book
Señalando la opción “público” podemos hacer que nuestro proyecto esté disponible
públicamente para que otros usuarios busquen nuestro proyecto (sin poder editarlo) y pueden
importar una copia a su propia cuenta.
14
ArduinoBlocks - Free Book
● Área de archivos adjuntos del proyecto: De igual forma podemos adjuntar imágenes, hojas
de datos o cualquier otro archivo relacionado con el proyecto.
● Guardar proyecto para alumnos: Con esta opción generamos un proyecto de profesor a
partir del actual, es decir un tipo de proyecto que el profesor plantea a los alumnos y puede
supervisar y evaluar y al cual los alumnos se suscriben con un código. De esta forma
podemos plantear proyectos a a los alumnos con bloques para que los alumnos los corrijan o
los complenten, pues si iniciamos un nuevo proyecto como profesor siempre estará vacío.
● Exportar a archivo: La opción “Exportar a archivo” permite generar un archivo con toda la
información del proyecto: bloques, información, archivos adjuntos, etc. De esta forma
podemos enviar un proyecto por email, subirlo a un sitio web para su descarga, o como copia
de seguridad del proyecto.
15
ArduinoBlocks - Free Book
● Importar desde archivo: Permite importar un nuevo proyecto desde un archivo exportado
anteriormente desde la plataforma.
● Captura de pantalla: Mediante el botón con el icono de la cámara de fotos, podemos obtener
una captura del área de bloques del proyecto en formato de imagen PNG. Esta función
permite obtener la imagen de los bloques para documentar proyectos, prácticas, tutoriales,
presentaciones, etc.
● “Me gusta”: De igual forma si accedemos a ver proyectos compartidos por otros usuarios
aparecerá un botón “me gusta” para valorar positivamente el trabajo realizado por el usuario.
16
ArduinoBlocks - Free Book
Cualquier bloque que no esté dentro del bloque de inicialización o de bucle y no forme parte
de una función (ver apartado 3.2.6) será ignorado a la hora de generar el código.
Ejemplo: Al iniciar (o reset) se envía un mensaje por el puerto serie. El led conectado al pin
13 se ilumina, espera 500ms, se apaga y espera otros 500ms (este ciclo ser repetirá
indefinidamente).
17
ArduinoBlocks - Free Book
18
ArduinoBlocks - Free Book
● Contraer / expandir bloque: Reduce el tamaño del bloque para ahorrar espacio
mientras no necesitamos editarlo.
● Ayuda: Abre un enlace con ayuda on información sobre el bloque. En algunos bloques
la opción ayuda abrirá una aplicación específica, por ejempo en las pantallas en el
bloque Bitmap de las pantallas OLED abrirá un editor de mapas de bits
19
ArduinoBlocks - Free Book
● Ayuda contextual: Permite información rápida del bloque, por ejemplo en los
sensores podemos obtener la referencia del módulo recomendado.
20
ArduinoBlocks - Free Book
http://www.arduinoblocks.com/web/site/abconnector
21
ArduinoBlocks - Free Book
ArduinoBlocks-Connector
ArduinoBlocks-Connector
ejecutándose bajo Windows
ejecutándose bajo Ubuntu
22
ArduinoBlocks - Free Book
23
ArduinoBlocks - Free Book
2 Hardware
La parte hardware del proyecto Arduino está formada por el conjunto de placas Arduino
disponibles en el mercado o que tú mismo te puedes fabricar (Arduino es un proyecto totalmente
abierto)
Las conexiones entre sensores, actuadores y Arduino se pueden realizar mediante la ayuda
de una placa de prototipos, de forma modular, o incluso con kits de conexión fácil (EasyPlug).
ArduinoBlocks toma como referencia en sistemas modulares y fácil conexión los kits del
fabricante Keyestudio por su calidad y facilidad, aunque se pueden utilizar otros fabricantes e incluso
fabricarte tus propios sensores y actuadores a partir de los elementos electrónicos.
EasyPlug
Modular: http://shop.innovadidactic.com/index.php?id_category=87&controller=category
EasyPlug: http://shop.innovadidactic.com/index.php?id_category=86&controller=category
24
ArduinoBlocks - Free Book
● Sensor shield: Es una shield sin electrónica extra, sustituye a la protoboard facilitándonos
pines extras de alimentación (5v y GND) junto a cada pin digital o analógico. Además nos
facilita la conexión en los pines I2C o de comunicación serie. Esta shield se puede añadir a
cualquier placa Arduino (existe para los distintos modelos más populares).
La placa sensor shield agrupa los pines G (GND) , V (5v) , S (Señal del pin correspondiente)
Por tanto si ampliamos, por ejemplo para el pin 7, tendriamos los pines:
Internamente todos los pines G (GND) y V (5v) están interconectados entre ellos.
25
ArduinoBlocks - Free Book
● Arduino con pines extras: Fabricantes como Keyestudio fabrican modelos de Arduino
mejorados como éste, donde tenemos los pines normales (hembra) ya en la misma placa los
pines extra de alimentación con los pines de señal (machos) además de la conexión I2C y
serie. Es quizás la opción ideal que sirve como Arduino estándar, y en caso de necesitarlo
equivale a un Arduino + Sensor shield todo en uno.
Ejemplo del detalle de las conexiones “extras” para los pines D3 y A0.
Internamente todos los pines G (GND) y V (5v) están interconectados entre ellos.
26
ArduinoBlocks - Free Book
● Módulos con protoboard: Permite fácilmente conectar módulos usando la protoboard para
ramificar los pines de alimentación (5V y GND). También se puede combinar con el sistema
anterior, mezclando módulos y componentes por separado en la misma protoboard.
● Módulos con sensor shield o Arduino con pines extra: Es el sistema más sencillo, cada
pin viene acompañado de los pines de alimentación por lo que no necesitamos la protoboard
para ramificar las conexiones. Los módulos unifican sus pines de forma sencilla: 5V (+), GND
(-) y las señales de entrada o salida correspondientes. Existen placas para ramificar los pines
i2c también si fuera necesario (hub i2c).
27
ArduinoBlocks - Free Book
http://shop.innovadidactic.com/index.php?id_product=665&controller=product
http://shop.innovadidactic.com/index.php?id_product=666&controller=product
28
ArduinoBlocks - Free Book
Se trata de una versión de Arduino personalizada con conectores RJ en vez de pines. Facilita la
conexión y con la ayuda de colores evita equivocacioens. Un opción ideal para los más pequeños.
29
ArduinoBlocks - Free Book
Vamos a hacer un breve repaso de los conceptos más importantes que debemos conocer:
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)
Resistencia: mide la oposición que ofrece un material al paso de corriente eléctrica. Se mide
en Ohmios (Ω)
Ley de Ohm: Es una sencilla fórmula matemática que relaciona estas tres magnitudes
básicas entre sí.
30
ArduinoBlocks - Free Book
Circuito eléctrico: Conjunto de elementos unidos de tal forma que permiten el paso de
corriente eléctrica para conseguir algún efecto (luz, calor, movimiento, etc.)
La placa Arduino necesita energía para funcionar, existen varias formas de alimentar la placa
Arduino:
-A través del conector USB: cuando conectamos al ordenador para programarlo o utilizando
un “power bank” con conexión USB por ejemplo.
-A través de los pines 5v o Vin: A través del pin 5v podemos alimentar con una fuente de
alimentación de 5v, o a través del pin Vin podemos alimentar de igual forma que con el conector
externo con un voltaje de entre 7 a 12v, pues se ajutará a 5v con el regulador interno.
En el caso de alimentar desde USB o a través del conector externo, por los pines 3.3v , 5v,
GND y Vin obtenemos la alimentación para circuitos auxiliares, sensores, shields, etc.:
31
ArduinoBlocks - Free Book
32
ArduinoBlocks - Free Book
Arduino UNO es la placa Arduino más utilizada de todas las versiones existentes, Arduino
Nano es muy similar a Arduino UNO en características pero en un formato más pequeño. Aqui se
pueden ver dos modelos de la placa Arduino UNO y Arduino Nano:
http://shop.innovadidactic.com/index.php?id_product=690&controller=product
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
33
ArduinoBlocks - Free Book
● Pines de entradas/salidas digitales: Los pines digitales permiten trabajar con dos
estados (ON/OFF, Activado/Desactivado, 1/0). Los pines se pueden configurar como
entrada o como salida según se necesite conectar un sensor o un actuador.
34
ArduinoBlocks - Free Book
35
ArduinoBlocks - Free Book
● Pines de entradas analógicas: Estos pines sólo se pueden utilizar como entradas.
Las entradas analógicas leen un voltaje entre 0 y 5V y a través de un ADC (Analog to
Digital Converter) obtienen un valor de 10 bits proporcional a la señal de entrada.
● Pines de comunicación serie: Estos pines conectan con la unidad serie (UART)
interna del microprocesador de Arduino. Una conexión serie utiliza un pin para la señal
de envío de datos (TX) otro para la recepción de datos (RX) y la señal GND.
Los pines 0,1 conectan con el puerto serie implementado en el hardware Arduino. En
caso de necesidad se podrán implementar otras conexiones serie a través de otros pines
digitales emulando el puerto serie con librerías software (por ejemplo para la conexión con el
módulo Bluetooth HC-06 explicado más adelante)
https://www.arduino.cc/en/Reference/SoftwareSerial
36
ArduinoBlocks - Free Book
Otra ventaja evidente del sistema Arduino es el entorno de programación “Arduino IDE”
sencillo ofrecido de forma totalmente libre y que facilita enormemente la programación de este tipo de
microcontroladores para inexpertos.
La clave del éxito de la plataforma Arduino es que es una plataforma totalmente abierta y
existe una gran comunidad de colaboradores y desarrolladores. Un ejemplo de las aportaciones de la
comunidad Arduino son las conocidas como “shields”, que son módulos de extensión apilables para
Arduino con las que podemos añadir rápidamente funcionalidades a la placa Arduino.
Shield Educativa
Shield GPS Motor shield 1
TDR STEAM innovadidactic
http://shop.innovadidactic.com/index.php?id_category=93&controller=category
37
ArduinoBlocks - Free Book
Los modelos Arduino Nano y ProMicro son similares en características y tamaño a los
modelos UNO y Nano respectivamente, la principal diferencia es que la comunicación USB para la
programación y la comunicación con el PC está integrada en el mismo controlador. Gracias a esta
característica estos modelos de Arduino además pueden emular el comportamiento de un dispostivio
USB tipo HID (Human Interface Device), es decir, ser detectados por el PC y comportarse como un
teclado o un ratón.
De esta forma es sencillo implementar periféricos HID para el control del PC o como forma de
intercambiar información. Por ejemplo podemos implementar dispostivos para controlar el puntero del
ratón y las pulsaciones de los botones o implementar un controlador de juegos enviando los códigos
de teclas pulsadas como si de un teclado se tratara.
http://shop.innovadidactic.com/index.php?id_product=728&controller=product
Debemos elegir este tipo de Arduino cuando nuestro proyecto vaya a necesitar un número de
entradas/salidas superior al Arduino UNO o en casos de realizar programas grandes donde la
memoria de Arduino UNO pueda ser un problema. Otro aspecto importante a tener en cuenta es la
38
ArduinoBlocks - Free Book
posibilidad de utilizar varias conexiones serie (puertos serie) implementados por hardware en el
propio microcontrolador. Mienstras que los Arduinos de gama inferior tienen un único puerto serie
(compartido con la comunicación USB), Arduino MEGA tiene 4 puertos serie hardware.
http://shop.innovadidactic.com/index.php?id_product=848&controller=product
Una de las características en las que se diferencian de Arduino principalmente es que trabajan
con un voltaje de 3.3v en vez de 5v, por lo que hay que llevar cuidado con ésto y en algún caso será
necesario utilizar adaptadores de tensión 3.3v - 5v
Tienda: http://shop.innovadidactic.com/index.php?id_product=859&controller=product
39
ArduinoBlocks - Free Book
2.7 Sensores
Los sensores o periféricos de entrada nos permiten obtener información del mundo real para
utilizarla desde el programa de Arduino.
La interfaz de conexión de un sensor con Arduino lo podemos clasificar en tres tipos: digital,
analógico o datos.
● Digital: un sensor digital sólo tiene dos estados: activado/desactivado, ON/OFF, 1/0,
Alto/Bajo, … En este caso conectaremos el sensor a una de las entradas digitales de Arduino
para leer el estado.
Ejemplo: un pulsador es un tipo de sensor sencillo que sólo nos da dos estados, “pulsado o
no pulsado”. Conectado a la placa Arduino debe generar 0v en reposo y 5v al pulsarlo. De esta forma
desde el programa de Arduino podremos leer el estado del botón.
40
ArduinoBlocks - Free Book
● Analógico: el sensor nos puede dar un rango de valores, normalmente se traduce en un valor
de tensión o de corriente variable en función de la señal captada al sensor. En este caso
conectaremos el sensor a una de las entradas analógicas de Arduino. El rango de entrada
será una tensión entre 0v (GND) y 5v.
(versión modular)
41
ArduinoBlocks - Free Book
42
ArduinoBlocks - Free Book
Pulsador
Potenciómetro deslizante Sensor de distancia
Sensor DHT-11 de
Sensor humedad suelo Encoder
temperatura y humedad
http://shop.innovadidactic.com/index.php?id_category=87&controller=category
43
ArduinoBlocks - Free Book
2.8 Actuadores
Un actuador o periférico de salida permite actuar sobre el mundo real desde el programa de
Arduino.
http://shop.innovadidactic.com/index.php?id_category=87&controller=category
44
ArduinoBlocks - Free Book
2.9 Comunicaciones
La placa Arduino permite múltiples vías de comunicación con el exterior, por un lado
disponemos del bus I2C o del SPI pensado para periféricos externos o sensores mientras que como
vía de comunicación principal para la programación o monitorización tenemos la conocida como
conexión serie (puerto serie) a través del conector USB.
Es muy importante tener en cuenta que este puerto serie es el que se utiliza para “subir” el
firmware y reprogramar la placa Arduino desde un ordenador (bootloader).
Las primeras placas Arduino disponían de un conector de puerto serie tipo DB9 de 9 pines
utilizado antiguamente para este tipo de conexiones. Hoy en día se utiliza un chip de conversión serie
a USB que permite emular en el equipo un puerto serie estándar.
Durante el uso normal podemos utilizarlo como vía de comunicación sencilla entre el
microcontrolador y el un PC.
Arduino UNO sólo dispone de un puerto serie hardware aunque podemos emular más puertos
serie vía software. La conexión serie es utilizada por algunos periféricos o sensores para interactuar
con Arduino:
45
ArduinoBlocks - Free Book
Para poder desde un ordenador visualizar los datos recibidos vía puerto serie debemos utilizar
una aplicación de tipo “terminal” o “consola” serie:
46
ArduinoBlocks - Free Book
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.
El bus I2C (I²C o TWI) es un bus de datos seire desarrollado por Philips.
47
ArduinoBlocks - Free Book
La dirección de I2C estándar es el primer byte enviado por el maestro, aunque los primeros 7
bits representan la dirección y el octavo bit (R/W-Bit) es el que comunica al esclavo si debe recibir
datos del maestro (low/bajo) o enviar datos al maestro (high/alto). Por lo tanto, I2C utiliza un espacio
de direccionamiento de 7 bits, lo cual permite hasta 112 nodos en un bus (16 de las 128 direcciones
posibles están reservadas para fines especiales).
Cada uno de los circuitos integrados con capacidad de soportar un I2C tiene una dirección
predeterminada por el fabricante, de la cual los últimos tres bits (subdirección) pueden ser fijados por
tres pines de control. En este caso, pueden funcionar en un I2C hasta 8 circuitos integrados. Si no es
así, los circuitos integrales (que precisan ser idénticos) deben ser controlados por varios buses I2C
separados.
48
ArduinoBlocks - Free Book
El Bus SPI (del inglés Serial Peripheral Interface) es un estándar de comunicaciones, usado
principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos.
El bus de interfaz de periféricos serie o bus SPI es un estándar para controlar casi cualquier
dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj (comunicación
sincrónica).
Incluye una línea de reloj, dato entrante, dato saliente y un pin de Chip Select, que conecta o
desconecta la operación del dispositivo con el que uno desea comunicarse. De esta forma, este
estándar permite multiplexar las líneas de reloj.
● SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se
lee o se envía un bit. También llamado TAKT (en Alemán).
● MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al
Slave. También llamada SIMO.
● MISO (Master Input Slave Output): Salida de datos del Slave y entrada al Master.
También conocida por SOMI.
● SS/CS/Select: Para seleccionar un Slave, o para que el Master le diga al Slave que se
active. También llamada SSTE.
49
ArduinoBlocks - Free Book
MOSI: Pin 11
MISO: Pin 12
SCLK: Pin 13
Ejemplo: conexión de módulo para tarjetas SD (el pin SS está conectado al pin 4):
La conexión Ethernet nos permite la conexión a la red (normalmente para acceder a internet)
a través de un cable Ethernet, conectado a nuestro routero o switch. Esta conexión se caracteriza
por usar el conector RJ45 y es una forma sencilla de conectar nuestro Arduino a la red.
Para añadir la conectividad lo más sencillo es usar una Shield Ethernet w5100.
http://shop.innovadidactic.com/index.php?id_product=679&controller=product
50
ArduinoBlocks - Free Book
Para más información consultar el uso de los bloques MQTT para intercambio de información
a través de conexiones IP con conexión Ethernet o WiFi.
Otra forma de conectar a la red por la que podemos optar con Arduino es mediante una
conexión inalámbrica WiFi. Sin embargo las shields WiFi a parte de tener un precio bastante alto
(comparado con el precio habitual de los componentes Arduino) la mayoría han sido descatalogadas
en favor de placas con WiFi integrado.
Una opción sencilla y económica para la conexión de cualquier modelo Arduino a internet a
través de WiFi es usar un ESP-01 (placa basada en el chip ESP8266) como periférico WiFi a través
de una conexión serie, es decir, usando dos pines (RX,TX).
El periférico ESP-01 necesita un sencillo adaptador para ajustar los niveles de voltaje en la
comunicación:
http://shop.innovadidactic.com/index.php?id_product=866&controller=product
El módulo ESP-01 comunica con protocolo serie y por defecto trabaja a una velocidad de
115200 bps, por lo que sólo funcionaría correctamente conectándolo a un puerto serie hardware de
51
ArduinoBlocks - Free Book
Arduino (en otros pines se usaría una comunicación serie emulada por software a un máximo de
velocidad de 57600 bps).
Por tanto a velocidad de 115200 bps , en Arduino UNO solo podemos usar el periférico
ESP-01 en los pines:
En Arduino Mega, disponemos de varios puertos serie hardware por lo que podemos dejar
libre los pines 0,1 para no interferir en la progrmación USB, y utilizar cualquiera de los otros puertos
implementados en la placa.
Pin RX Pin TX
Serial 0 0 1
Serial 1 19 20
Serial 2 17 16
Serial 3 15 14
De igual forma que con la conexión Ethernet, la conexión a la red por cable o WiFi nos permite
utilizar los bloques MQTT para intercambiar información a través de la red o internet.
52
ArduinoBlocks - Free Book
3 Software
Una vez tenemos definido el hardware necesario para un proyecto el siguiente paso es
programar el microcontrolador de la placa Arduino para que realice las tares necesarias para el
funcionamiento deseado.
En los últimos años han aparecido entornos mucho más sencillos e intuitivos para desarrollar
aplicaciones que nos permiten introducirnos de forma práctica y sencilla en el mundo de la
programación. Es el caso de Scratch, un entorno de desarrollo de videojuegos multiplataforma, y
AppInventor, un entorno de desarrollo de aplicaciones para dispositivos móviles Android.
ArduinoBlocks, al igual, es un entorno online que nos permite programar Arduino (sin
necesidad de conocer el lenguaje de programación C++) de forma visual al estilo de programación de
bloques.
53
ArduinoBlocks - Free Book
3.1 Algoritmos
La definición previa del algoritmo nos permitirá agilizar el proceso de creación del programa.
54
ArduinoBlocks - Free Book
Los bloques de uso general nos permiten implementar funciones comunes en cualquier
entorno o sistema programable. Esto incluye funciones lógicas, matemáticas, condiciones, bucles,
funciones de texto, etc.
3.2.1 Lógica
Con estos bloques tenemos acceso a las funciones lógicas necesarias para implementar en
nuestro programa de Arduino.
● Condición / decisión: Evalúa una condición lógica, si se cumple realiza el bloque “hacer” si
no se cumple realiza el bloque “sino” (opcional)
Ejemplo de comparaciones:
55
ArduinoBlocks - Free Book
= Igual
≠ Distintos
< Menor que
≤ Menor o igual que
> Mayor que
≥ Mayor o igual que
= Igual
≠ Distintos
56
ArduinoBlocks - Free Book
● Constantes lógicas: son valores booleanos indicando uno de los dos estados posibles
On = Verdadero
Off = Falso
57
ArduinoBlocks - Free Book
3.2.2 Control
Ejemplo:
● Repetir según condición: Repite mientras o hasta que se cumpla una condición.
Ejemplo:
● Contar: Realiza un bucle contando con un variable índice. Se define un valor de inicio, una
valor de fin y los incrementos que se realizarán en cada iteración del bucle. Dentro del bucle
podremos usar esta variable.
58
ArduinoBlocks - Free Book
Ejemplo:
3.2.3 Matemáticas
Ejemplo:
● Número entero / sin signo: Trata el valor como un entero. Si especificamos sin signo, trata el
valor como una variable sin signo internamente.
Para las variables ArduinoBlocks utiliza el tipo de dato “double” cuando traduce el programa a
lenguaje C++. En caso de hacer la conversión se trata como un “cast” a un tipo de datos “long” o
“unsigned long”
● Ángulo: Permite definir un valor de ángulo en grados. Es un valor numérico tal cual, pero con
la ventaja que permite definir el valor de una forma visual viendo el ángulo gráficamente.
59
ArduinoBlocks - Free Book
● Operaciones básicas:
+ Suma
- Resta
x Multiplicació
n
÷ División
^ Potencia
Ejemplo:
● Cambiar variable por: Aumenta o disminuye el valor de una variable por el valor indicado (si
es un valor positivo aumenta si es negativo disminuye)
Aumenta la variable en +1
variable = variable + 1
Disminuye la variable en -1
variable = variable – 1
● Funciones matemáticas:
60
ArduinoBlocks - Free Book
● Mapear: Permite modificar el rango de un valor o variable desde un rango origen a un rango
destino. Esta función es especialmente útil para adaptar los valores leídos de sensores o para
adaptar valores a aplicar en un actuador.
Ejemplo:
-Sensor de temperatura: 10ºC … 50ºC
-Arduino lectura analógica: 0 … 1023
Ejemplo:
Ejemplo:
61
ArduinoBlocks - Free Book
Ejemplo:
3.2.4 Texto
Las funciones de texto son especialmente útiles con la utilización en el puerto serie (consola),
y otros periféricos como pantallas LCD. Permiten trabajar con variables de tipo texto o con textos
prefijados.
● Formatear número: Obtiene en forma de texto el valor de una variable o constante numérica
en el formato especificado.
62
ArduinoBlocks - Free Book
Ejemplo:
63
ArduinoBlocks - Free Book
● Crear texto con: Crea un texto a partir de la unión de otros textos o variables. Las variables
especificadas se convertirán a texto con formato decimal.
Ejemplo:
64
ArduinoBlocks - Free Book
● Contiene el texto: Comprueba si existe un texto dentro del texto indicado. Devuelve
verdadero si existe y falso en caso contrario.
Ejemplo:
● Buscar en el texto: Busca la posición de un texto dentro de otro texto. Si el texto buscado no
se encuentra devuelve el valor 0, en otro caso devuelve la posición donde empieza el texto.
65
ArduinoBlocks - Free Book
Ejemplo:
● Partir texto: Obtiene una parte del texto, indicando la posición de inicio y fin dentro del texto
para crear la subcadena.
Ejemplo:
● Reemplazar en texto: Reemplaza todas las ocurrencias del texto indicado por el nuevo
dentro de la variable de texto seleccionada.
Ejemplo:
66
ArduinoBlocks - Free Book
● Valor ASCII: Obtiene un valor numérico correspondiente al valor de la tabla ASCII del
caracter correspondiente. Este bloque es útil para detectar pulsaciones de teclas que son
enviadas por comunicación serie, bluetooth, etc. como bytes independientes.
67
ArduinoBlocks - Free Book
3.2.5 Variables
Ejemplo:
Ejemplo:
● Variables de texto: permite almacenar valores de texto. Internamente utiliza el tipo de dato
“String” a la hora de generar el código para Arduino.
Ejemplo:
68
ArduinoBlocks - Free Book
Ejemplo:
Ejemplo:
Ejemplo:
69
ArduinoBlocks - Free Book
3.2.6 Listas
Las listas de datos nos permiten almacenar un listado de valores y acceder a ellos por su
posición en la lista. Las listas pueden ser de tipo numéricas o de texto.
● Listas numéricas:
Podemos crear una lista asignándole un nombre a la lista y asignándole valores iniciales.
Ejemplo:
Para saber el número de elementos que tenemos en una lista podemos usar el bloque:
En una lista podemos obtener el valor de una posición (desde la 0 hasta el número de
elementos -1 en la lista) con el bloque, por ejemplo si tenemos 10 elementos podremos acceder a
ellos desde el 0 al 9:
70
ArduinoBlocks - Free Book
Ejemplo:
● Listas de textos:
Podemos crear una lista asignándole un nombre a la lista y asignándole valores iniciales.
Ejemplo:
Para saber el número de elementos que tenemos en una lista podemos usar el bloque:
71
ArduinoBlocks - Free Book
En una lista podemos obtener el valor de una posición (desde la 1 hasta el número de
elementos en la lista) con el bloque:
3.2.7 Funciones
Las funciones permiten agrupar bloques de código. Esto es útil cuando un bloque de código
se repite en varias partes del programa y así evitamos escribirlo varias veces o cuando queremos
dividir el código de nuestro programa en bloques funcionales para realizar un programa más
entendible.
72
ArduinoBlocks - Free Book
● Definición de una función: La definición consiste en crear el grupo donde podremos insertar
el código de bloques que forma la función. Debemos darle un nombre representativo que
utilizaremos para llamar a esa función y ejecutarla.
● Parámetros: A las funciones se les pueden añadir parámetros para especificar en la llamada.
73
ArduinoBlocks - Free Book
Definición:
Llamada:
Definición:
Llamada:
74
ArduinoBlocks - Free Book
Definición:
75
ArduinoBlocks - Free Book
En el siguiente apartado veremos los bloques relacionados con funciones propias de la placa
Arduino. Estos bloques nos permitirán acceder a funcionalidades del propio microcontrolador y otros
estarán orientados a sensores, actuadores o periféricos que podemos conectar a la placa Arduino
para desarrollar nuestros proyectos.
3.3.1 Entrada/Salida
Las funciones de entrada/salida genéricas nos permiten leer o escribir en los pines digitales y
analógicos de la placa Arduino descritos en el apartado 2.3.
● 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).
76
ArduinoBlocks - Free Book
Ejemplo:
Versión equivalente:
El conversor interno DAC (Digital Analog Converter) es de 10 bits por lo que los valores leídos
de una entrada analógica van de 0 a 1023
Ejemplo:
● Escribir pin analógico: Establece el valor del ciclo de pulsos activo/inactivo de una salida
digital PWM. El valor debe estar en el rango entre 0 y 255.
77
ArduinoBlocks - Free Book
● Leer pulso: Lee un pulso en un pin hasta que el valor de la entrada cambie a estado alto
(ON) o bajo (OFF). Mide la duración del pulso en microsegundos. Si se supera el tiempo de
espera indicado sin cambiar de estado devolverá el valor 0.
3.3.2 Tiempo
Las funciones de tiempo o retardo nos permiten realizar pausas y obtener información sobre el
tiempo transcurrido dentro del microcontrolador.
● Esperar: Realiza una pausa (bloquea la ejecución del programa) hasta seguir con la
ejecución del siguiente bloque.
Milisegundos
Microsegundos
78
ArduinoBlocks - Free Book
● Tiempo transcurrido: Obtiene un valor con el tiempo transcurrido desde el inicio o reset del
microcontrolador de la placa Arduino. El valor puede ser en milisegundos o microsegundos.
Milisegundos
Microsegundos
Ejemplo : Ejecutar la Tarea1 cada 3 segundos y la Tarea2 cada 7 segundos sin bloquear la
ejecución del programa:
79
ArduinoBlocks - Free Book
80
ArduinoBlocks - Free Book
Programa equivalente:
Cuando necesitemos realizar distintas tareas periódicas y que parezca que se ejecuten
paralelamente sin bloquearse unas a otras utilizaremos este tipo de bloque “ejecutar cada”.
La precisión de la ejecución de tareas de esta forma depende del tiempo que emplea cada
tarea, si una tarea “tarda” mucho bloqueará y “retrasará” al resto. Para un funcionamiento correcto
cada tarea debe ejecutarse en el menor tiempo posible y no usar nunca bloques de tipo esperar o
realizar bucles de indeterminada duración que puedan quedarse en ejecución por tiempo indefinido.
81
ArduinoBlocks - Free Book
Ejemplo: Juego en el que tenemo que pulsar un botón periódicamente sin dejar que pase
nunca más de 10s entre pulsaciones, en caso contrario se ilumina un led indicando que hemos
perdido
82
ArduinoBlocks - Free Book
● Dormir: Este bloque pone la placa Arduino en modo bajo consumo durante unos
milisegundos.
La comunicación vía puerto serie es muy utilizada. Es una vía de comunicación bidireccional
sencilla que nos permite enviar información desde Arduino que visualizaremos en la consola o al
contrario, enviar información desde la consola que recibiremos en el Arduino.
83
ArduinoBlocks - Free Book
● Iniciar: Configura la velocidad de la comunicación serie. Este valor debe ser igual en la
consola y en el programa Arduino para establecer una comunicación correcta. Por defecto, y
si no se pone nada, la velocidad es 9600bps.
Ejemplo:
● Enviar: Escribe un valor de texto o el valor de una variable en el puerto serie. La opción “Salto
de línea” permite añadir o no un retorno de carro al final del envío para bajar de línea.
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.
84
ArduinoBlocks - Free Book
● 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:
85
ArduinoBlocks - Free Book
● 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)
86
ArduinoBlocks - Free Book
3.3.4 Bluetooth
La comunicación con el módulo Bluetooth HC-06 es exactamente igual que la del puerto serie,
de hecho lo que hace el módulo Bluetooth es encapsular toda la información serie a través de una
conexión serie virtual a través de un perfil Bluetooth de emulación de puerto serie.
Podemos simular una conexión serie con un dispositivo móvil (con Bluetooth compatible con
el perfil de puerto serie), un PC u otro módulo Bluetooth similar en otro dispositivo.
Arduino UNO sólo posee un puerto serie implementado en su hardware, para no utilizar el
módulo Bluetooth en los pines 0 y 1 (correspondientes al puerto serie hardware) e interferir con la
comunicación serie o la programación del dispositivo (como hacen otros entornos) los bloques de
Bluetooth implementan un puerto serie software que funciona exactamente igual pudiendo
configurarse en cualquier otro pin digital tanto para RX (recibir) como para TX (transmitir).
87
ArduinoBlocks - Free Book
● Iniciar: Permite configurar los pines donde está conectado el módulo Bluetooth y la velocidad
a la que vamos a trabajar.
● Nombre: El módulo Bluetooth HC-06 permite configurar el nombre y el código PIN a través de
comandos. Con este bloque podemos hacerlo fácilmente, el único requisito para que funcione
es que ningún dispositivo Bluetooth esté conectado en ese momento al módulo HC-06. Por
otro lado normalmente es necesario reiniciar el módulo para que aparezca la nueva
configuración (y desemparejar el dispositivo móvil si ya lo estaba).
● Enviar: Escribe un valor de texto o el valor de una variable en el puerto serie. La opción “Salto
de línea” permite añadir o no un retorno de carro al final del envío para bajar de línea.
● 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.
88
ArduinoBlocks - Free Book
● 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)
89
ArduinoBlocks - Free Book
3.3.5 Sensores
En el mercado existen infinidad de sensores y módulos para Arduino, aunque con los bloques
genéricos descritos en el apartado 3.3.1 (entrada/salida) podemos leer la información de la mayoría
de sensores digitales y analógicos ArduinoBlocks implementa bloques específicos para los sensores
más comunes del mercado. Estos bloques a veces se limitan a leer la información digital o analógica,
según el tipo de sensor, y en otros casos realizan una adaptación de los datos leídos para ajustarlos
a la realidad (por ejemplo al leer un sensor de temperatura adapta la lectura a grados centígrados
con un cálculo interno).
90
ArduinoBlocks - Free Book
ArduinoBlocks incorpora bloques para la mayoría de sensores modulares que podemos encontrar en
el mercado, algunos muy populares como los sensores de Keyestudio y similares.
ArduinoBlocks es una plataforma online en continua evolución por lo que seguramente desde la
edición de este libro ya incorporará nuevos sensores con nuevas funcionalidades.
● Sensor potenciómetro: Nos permite obtener la posición del mando rotativo. Ángulo de
operación de unos 270º. Varía el valor de voltaje aplicado a la entrada en función de la
posición de su resistencia variable interna.
Ejemplo: Sensor potenciómetro conectado al pin analógico A0 para ajustar una variable de
temperatura a un valor entre 5 y 30 grados.
91
ArduinoBlocks - Free Book
Conexión: Conexión:
sin presionar “off” / presionado: “on” sin presionar “on” / presionado: “off”
Alguno módulos de pulsador internamente trabajan de forma inversa por su conexión interna.
En ese caso el pulsador siempre está dado una señal “On” y cuando lo pulsamos genera la señal
“Off”. En ese caso podemos invertir la condición para detectar cuando está pulsado.
92
ArduinoBlocks - Free Book
Al igual que en el anterior, si por la conexión interna del pulsador la señal lógica funciona al
revés (“on” en reposo y “off” al pulsar) podemos indicar que trabajo con lógica invertida:
93
ArduinoBlocks - Free Book
94
ArduinoBlocks - Free Book
Ejemplo: Mostrar por la consola cada 5 segundos el valor de temperatura y humedad. Sensor
conectado al pin 10.
● Sensor de luz (LDR): Obtiene el nivel de luz ambiente mediante la resistencia LDR que varía
en función de la luz ambiente aplicada.
95
ArduinoBlocks - Free Book
96
ArduinoBlocks - Free Book
● Sensor de distancia (HC-SR04): El sensor genera una serie de tonos de ultrasonidos (no
audibles), estos tonos si rebotan en una superficie vuelven y son captados por un receptor de
ultrasonidos que incorpora el propio sensor. Midiendo el tiempo que tardan en volver los
ultrasonidos podemos calcular la distancia a la que se encuentra el objeto sobre el que han
rebotado.
Tipo: Datos
Valor: 2 – 400 cm
97
ArduinoBlocks - Free Book
98
ArduinoBlocks - Free Book
Dependiendo el tipo de mando recibiremos unos códigos con valores de un tamaño u otro.
Algunos mandos utilizan códigos de 32 bits, al almacenar el valor del código recibido en una variable
de ArduinoBlocks se convierte a un valor decimal de 32 bits con signo y eso puede producir una
alteración en el valor mostrado (número decimales extraños).
Para evitar este problema debemos 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).
Ejemplo: Mostrar por consola el código recibido:
Si utilizamos mandos genéricos RC5 como el modelo de Keyestudio, podemos acceder a los
códigos directamente con el bloque correspondiente:
99
ArduinoBlocks - Free Book
El encoder no tiene ninguna posición predefinida y no tiene límite de giro en ningún sentido.
Automáticamente mantiene un valor interno con la posición virtual según los pasos en un sentido u
otro, empezando siempre en 0.
100
ArduinoBlocks - Free Book
Ejemplo: Esperar hasta que el encoder recorra 5 saltos (clicks) hacia la derecha.
● Sensor de joystick: Este tipo de sensor de palanca se basa en dos potenciómetros que
detectan la posición en cada uno de los ejes X e Y.
101
ArduinoBlocks - Free Book
102
ArduinoBlocks - Free Book
● Sensor foto-interruptor: Detecta cuando un objeto interrumpe un haz de luz entre un emisor
y receptor.
● Sensor sonda de humedad: Mide la humedad con la ayuda de una sonda que se introduce
en la tierra.
103
ArduinoBlocks - Free Book
Ejemplo: Activación del led conectado al pin 13 en caso de detectar un nivel de humedad inferior al
20%. Sensor conectado en el pin A3
104
ArduinoBlocks - Free Book
● Sensor detector de llama: Detecta el nivel de fuego o una llama detectando la frecuencia de
luz del fuego.
● Sensores de gas MQ-X: Están diseñados para detectar ditintos gases. Por lo general no son
muy precisos. Los datos de estos sensores se obtienen sin procesar, con un valor entre
0...1023 o ajustado a %. En todo caso se deberá consultar las características detalladas del
fabricante del sensor en concreto para interpretar el dato.
105
ArduinoBlocks - Free Book
MQ-8 Hidrógeno
MQ-131 Ozono
MQ-137 Amoniaco
● Sensor de nivel de luz (TEMT6000): Permite medir la luz ambiente con alta precisión
además de ser un sensor que mide sólo la luz ambiente que percibe el ojo humano, filtrando
el espectro de luz no visible y realizando así una medición más real para ciertas aplicaciones.
106
ArduinoBlocks - Free Book
● Sensor acelerómetro (ADXL335): Este tipo de sensores permite medir la aceleración en los
tres ejes espaciales X,Y y Z. En reposo los ejes X e Y deben tener una valor aproximo de 0G
y el eje Z debe tener un valor aproximadamente de 1G (la aceleración de la gravedad). Ante
cualquier sacudida o movimiento el sensor nos indicará la aceleración en cada eje en
unidades G. Este sensor permite medir desde -3G hasta 3G.
107
ArduinoBlocks - Free Book
108
ArduinoBlocks - Free Book
● Sensor acelerómetro (ADXL345): Acelerómetro de 3 ejes con conexión I2C que permite
obtener las aceleraciones en X,Y,Z y los grados de giro X-Roll,Y-Pitch. La conexión I2C lo
hace muy fácil de utilizar y obtiene uno datos más precisos que el modelo ADXL335
analógico.
109
ArduinoBlocks - Free Book
● Sensor de polvo PM2.5: Este sensor mide con alta precisión las partículas en el aire.
Ejemplo de conexión:
● Sensor de color (TCS34725): Sensor con conexión i2c para reconocimiento de colores de las
superificies cercanas.
110
ArduinoBlocks - Free Book
111
ArduinoBlocks - Free Book
112
ArduinoBlocks - Free Book
● Sensor de CO2/TVOC (CCS811): Sensor de calidad del aire. Obtiene el valor de Compuestos
Volatiles Organicos (TVOC) y de Dioxido de Carbono Equivalente (eCO2)
113
ArduinoBlocks - Free Book
● Sensor de gestos (PAJ7620): Este sensor identifica hasta 9 gestos que se realizan con la
mano cerca del sensor: izquierda, derecha, arriba, abajo, giro horario, antihorario y ola.
114
ArduinoBlocks - Free Book
En algunos casos puede que necesitemos leer el valor del sensor directamente para obtener
una mayor precisión o simplemente porque el sensor no está implementado en ArduinoBlocks y
necesitamos usar los bloques de entrada/salida genéricos para obtener datos del sensor digital o
analógico.
Ejemplo 1: Lectura del valor de luz con LDR para obtener más precisión.
115
ArduinoBlocks - Free Book
Este sensor modificar su resistencia en función de la presión que se ejerce sobre él y por
tanto conectado a una entrada analógica variará el voltaje leído en ella. La fuerza aplicada se traduce
en un valor analógico leído de 0 a 1023. En estos casos debemos consultar las especificaciones del
fabricante para interpretar el dato obtenido.
3.3.6 Actuadores
116
ArduinoBlocks - Free Book
117
ArduinoBlocks - Free Book
● Led RGB: Controla un led RGB. Define un color calculando automáticamente los valores de
cada componente R,G y B para definir el color.
Tipo: PWM
Pin R/G/B: 3,5,6,9,10,11
Valor: Color
Cada color se activa mediante un valor de 0 (mínimo) a 255 (máximo), en caso de especificar el tipo
“ánodo común” el valor se invertirá internamente automáticamente ( 255 - valor especificado).
118
ArduinoBlocks - Free Book
Tipo: Digital Pin: 2-13 Hz: frecuencia del tono / Ms: duración en mseg.
119
ArduinoBlocks - Free Book
● Zumbador melodía RTTTL: Este bloque permite reproducir una melodía a partir de un texto
con formato RTTTL.
120
ArduinoBlocks - Free Book
El formato RTTTL es un formato creado por Nokia para las primeras melodías de los teléfonos
móviles. Existen sitios webs donde descargar estas melodías.
121
ArduinoBlocks - Free Book
● Emisor IR: Mediante el módulo emisor IR podemos emitir códigos de infrarojos como un
mando a distancia.
https://learn.adafruit.com/using-an-infrared-library/hardware-needed
122
ArduinoBlocks - Free Book
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)
123
ArduinoBlocks - Free Book
Uno de los periféricos más utilizados y versátil que podemos conectar a Arduino es una
pantalla LCD (display) para mostrar información e interactuar con el usuario.
Necesitamos 4 bits para datos y dos señales de control En (Enable) y Rs (Register select). La
conexión RW la conectamos fija a GND. Además se debe añadir una resistencia ajustable o un
potenciómetro para regular el contraste de la pantalla.
Esta conexión es bastante compleja y utiliza muchos pines, es muy recomendable utilizar la
pantalla con conexión i2c. A cualquier pantalla LCD le podemos añadir un módulo para convertirla en
conexión i2c.
124
ArduinoBlocks - Free Book
Es la forma más sencilla, necesitamos una pantalla con interfaz I2C o un módulo adaptador
que realiza todo el trabajo.
● LCD iniciar: Permite configurar la forma de conexión de la pantalla LCD a la placa Arduino.
Recomendable en el bloque “inicializar”.
(La dirección I2C depende del módulo o pantalla LCD, 0x27 y 0x3F son las más comunes)
125
ArduinoBlocks - Free Book
126
ArduinoBlocks - Free Book
● LCD definir símbolo: Permite definir uno de los 8 símbolos personalizables que puede
almacenar la pantalla LCD. El símbolo se define por un mapa de bits (1’s y 0’s indicando cada
píxel del símbolo). Los símbolos tienen una resolución de 5x8 píxeles (blanco o negro).
El bloque definir símbolo normalmente irá dentro del bloque “inicializar” de Arduino.
127
ArduinoBlocks - Free Book
B00000,B00000,B00000,B01010,B00000,B10001,B01110,B00000
128
ArduinoBlocks - Free Book
Las pantallas OLED (leds orgánicos) son muy comunes en la actualidad, y las podemos incluir
en nuestros proyectos con Arduino de una forma bastante sencilla.
http://shop.innovadidactic.com/index.php?id_product=751&controller=product
129
ArduinoBlocks - Free Book
● OLED iniciar: Indicamos el número de pantalla (#), pues podemos usar varias a la vez,
indicando la dirección a la que está conectada. Si queremos más de una pantalla en el bus i2c
y controlarlas de forma independiente deben tener direcciones distintas, por lo que debemos
modificar los pines de configuración.
● OLED bitmap: Permite dibujar una imagen a partir de una mapa de bits. Con la ayuda del
editor de mapas de bits podemos procesar una imagen y mostrarla en la pantalla OLED de
forma bastante sencilla.
130
ArduinoBlocks - Free Book
131
ArduinoBlocks - Free Book
132
ArduinoBlocks - Free Book
Resultado:
http://arduinoblocks.didactronica.com/2019/05/graficos-y-animaciones-en-pantallas/
133
ArduinoBlocks - Free Book
Origen: X1, Y1
Destino: X2,Y2
Origen: X1, Y1
Ancho: W
Alto: H
Podemos seleccionar si queremos que el rectángulo esté relleno o sólo se dibuje el borde.
Centro: X,Y
Radio: R
Podemos seleccionar si queremos que el círculo esté relleno o sólo se dibuje el contorno.
El microcontrolador de la placa Arduino UNO tiene 1024 bytes de memoria EEPROM, sin
embargo en ArduinoBlocks cada variable usada internamente utiliza 4 bytes por lo que a la hora de
almacenar o recuperar una variable de la memoria EEPROM sólo podemos almacenar en 256
posiciones (256 x 4 = 1024 bytes).
134
ArduinoBlocks - Free Book
0 0
1
2
3
4 1
5
6
7
8 2
9
10
11
… …
Ejemplo: Lee la temperatura cada minuto y guarda la temperatura máxima en la memoria EEPROM
para reservarla aunque cortemos la alimentación:
135
ArduinoBlocks - Free Book
IMPORTANTE:
3.3.10 Motores
Las salidas de la placa Arduino no proporcionan suficiente corriente para controlar un motor
de corriente continua (Arduino proporciona unos 50mA y un motor puede consumir unos 1000mA) por
lo que necesitaremos realizar un pequeño circuito con un transistor para controlar una corriente
mucho mayor.
Utilizaremos un transistor NPN en modo corte/saturación que permitirá, como un interruptor, el paso
de una intensidad de corriente mucho más alta desde un fuente de alimentación auxiliar.
La pila de 9v genera la corriente necesaria para mover el motor. A través del pin 3 generamos
la señal que activa el transistor y permite el paso de corriente de la pila. Si utilizamos la salida como
PWM podremos controlar la velocidad del motor (si se escribe un valor bajo, menos de 100
aproximadamente, el motor no girará por no aplicarle la suficiente energía)
136
ArduinoBlocks - Free Book
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:
137
ArduinoBlocks - Free Book
● 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.
138
ArduinoBlocks - Free Book
Existe un tipo especial de servomotor que permite la rotación continua. En algunos casos se
trata de servomotores “trucados” de forma que se modifican para permitir la rotación continua
quitando los topes mecánicos y se sustituye el potenciómetro por un divisor de tensión con dos
resistencia iguales (en algunos casos no se ponen resistencias y se bloquea el potenciómetro para
que no gire dejándolo justo en su punto central).
139
ArduinoBlocks - Free Book
En cualquier caso también podemos comprar un servomotor de rotación continua listo para
funcionar sin tener que hacer bricolaje.
90º Parado
Si utilizamos valores cercanos a 90º el motor girará a una velocidad más lenta en cada uno de
los sentidos.
140
ArduinoBlocks - Free Book
Este tipo de motor es capaz de avanzar una serie de grados (paso) dependiendo de su
entrada de control. Son ideales para los mecanismos donde se requiera mucha precisión, por
ejemplo son utilizados para los mecanismos de movimiento de las impresoras 3D.
Estos motores están formados por un rotor sobre el que van aplicados varios imanes
permanentes y por un cierto número de bobinas excitadoras en su estator.
Para controlar un motor paso a paso utilizamos un módulo capaz de controlar cada una de las
4 señales de control que activan cada bobina. Realizando la secuencia correcta movemos el motor,
según el número de pasos y velocidad a la que avanzamos en la secuencia. Todo esto se realiza
internamente automáticamente.
● Pasos/vuelta: Configura la conexión de las bobinas del motor paso a paso así como el
parámetro de pasos por vuelta para controlar el motor correctamente.
● Velocidad: Establece la velocidad de giro del motor en rpm (revoluciones por minuto).
141
ArduinoBlocks - Free Book
142
ArduinoBlocks - Free Book
3.3.11 Motor-Shield
Una opción sencilla y muy utilizada para controlar motores de una forma sencilla es
utilizar una shield de control de motores. La más utilizada posiblemente sea la motorshield v1
diseñada por Adafruit. Con esta shield podemos controlar 2 servos, 4 motores C.C. y 2
motores paso a paso.
Es importante saber que la shield utiliza todos los pines digitales excepto 0,1,2,13. Y
que podemos tener acceso a los pines analógicos A0...A5 que podremos usar como pines
digitales o analógicos de E/S y el bus i2c a través de A4,A5 sin problemas.
La shield permite alimentar los motores desde una fuente externa a través de un conector
atornillable en la propia placa.
Los bloques son similares a los indicados en el apartado Motores, pero adaptados a la shield.
143
ArduinoBlocks - Free Book
● Motor-Shield paso a paso: Permite seleccionar uno de los dos posibles motores paso a paso
que se pueden controlar con la shield. El funcionamiento es igual a los bloques indicados en
el apartados Motores.
● Motor-Shield motor (DC / CC): Permite controlad uno de los 4 motores CC que podemos
conectar a la shield. Tensmo un bloque para fijar la velocidad (0 … 255) y otro para controlar
el movimiento.
144
ArduinoBlocks - Free Book
3.3.12 Keypad
El teclado o “keypad” nos permite de una forma sencilla añadir un pequeño teclado numérico
a nuestro proyecto. Se basa en una botonera conectada de forma matricial por filas y columnas.
ArduinoBlocks gestiona automáticamente la detección de filas y columnas activadas para detectar la
tecla pulsada.
● Configuración del keypad: define los pines de conexión para las filas y columnas del
keypad. Podemos configurar un keypad de 3x4 o de 4x4
145
ArduinoBlocks - Free Book
El reloj de tiempo real DS3231 es un reloj de alta precisión. El reloj incorpora una batería para
guardar la fecha y la hora cuando la placa Arduino pierde la alimentación.
146
ArduinoBlocks - Free Book
● Fijar campo de fecha/hora: Permite establecer uno de los campos de la fecha / hora por
separado.
147
ArduinoBlocks - Free Book
● Obtener campo de fecha/hora: Permite obtener los campos de fecha y hora de forma
independiente.
● 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
148
ArduinoBlocks - Free Book
Ejemplo: Ajuste de fecha y hora del reloj RTC desde PC (vía consola serie)
149
ArduinoBlocks - Free Book
3.3.14 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.
http://shop.innovadidactic.com/index.php?id_product=844&controller=product
http://shop.innovadidactic.com/index.php?id_product=733&controller=product
● GPS Iniciar: Inicia el módulo GPS indicando los pines utilizados para la comunicación serie
con el módulo.
● ¿Datos válidos?: Indica verdadero en caso de que el módulo GPS reciba señal desde los
satélites GPS de forma correcta y los datos obtenidos sean válidos, si no obtendremos valor
falso.
150
ArduinoBlocks - Free Book
● Posición: Obtiene la latitud y longitud para así obtener la información de la posición actual.
Los valores de latitud y longitud son valores decimales que determinan nuestra posición sobre
la Tierra.
● Velocidad: Obtiene el valor de la velocidad a la que nos movemos, puede ser en Km/h o
Millas/h.
● Fecha/hora: Obtiene los valores de fecha y hora recibidos desde el satélite GPS.
151
ArduinoBlocks - Free Book
● Distancia entre: Calcula los metros de distancia en línea recta entre dos puntos indicando la
latitud y longitud del punto inicial y final.
152
ArduinoBlocks - Free Book
Ejemplo: Mostrar la distancia en Km hasta Madrid desde nuestra posición actual cada 5s
3.3.15 Tarjeta SD
Los bloques de tarjeta SD nos permiten trabajar con archivos almacenados en una tarjeta SD
o microSD conectada a Arduino. Los módulos para tarjetas SD utilizan la conexión SPI para
comunicarse con la placa Arduino.
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).
153
ArduinoBlocks - Free Book
Módulo SD
Algunas shields como la “Ethernet” incorporan también un módulo para tarjetas SD. Debemos
comprobar su documentación para asegurarnos los pines que utilizan (en el caso de la shield
“Ethernet” utiliza el pin 4 para CS)
● 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)
● Imprimir: Escribe un texto dentro de un archivo de texto en la tarjeta SD. El texto se añade al
final del contenido actual del archivo.
154
ArduinoBlocks - Free Book
● Leer cada byte: Permite leer byte a byte todos los datos de un archivo.
● Existe el archivo: Obtiene el valor verdadero si el archivo existe o falso en caso contrario.
155
ArduinoBlocks - Free Book
Ejemplo: Registrar el nivel de luminosidad medido con una LDR cada 30s
156
ArduinoBlocks - Free Book
3.3.16 MQTT
Mediante los bloques MQTT podemos conectar nuestro Arduino o placa ESP8266 al IoT
(internet de las cosas) para realizar aplicaciones de control remoto, monitorización, recogida de
datos, etc.
La shield Ethernet utiliza los pines 10,11,12 y 13 (SPI) . Además utiliza el pin 4 si utilizamos el
módulo de tarjetas SD que incorpora.
La shield Ethernet incorpora un conector RJ45 para cable Ethernet que debemos conectar a
nuestro router o switch con conexión a internet.
http://shop.innovadidactic.com/index.php?id_product=679&controller=product
157
ArduinoBlocks - Free Book
La opción más sencilla y económica para añadir conectividad WiFi a nuestra placa Arduino es
mediante el módulo ESP01. Este módulo se basa en el chip ESP8266 y permite conectarlo a nuestro
Arduino como un periférico serie que dotará de conectividad WiFi de forma muy económica y sencilla.
Para conectar el módulo ESP01 necesitamo un modulo adaptador para ajsutar los niveles de voltaje
entre el módulo y la placa.
158
ArduinoBlocks - Free Book
Protocolo MQTT
MQTT es un protocolo de comunicación para redes TCP/IP muy sencillo y ligero en el que
todos los dispositivos se conectan a un servidor (llamado “broker“). Los dispositivos pueden enviar
(publicar) o recibir (suscribirse) mensajes asociándoles un “topic” (tema).
El “broker” se encarga de gestionar los mensajes y distribuirlos entre todos los dispositivos
conectados.
Podemos implementar nuestro propio servidor/broker. Existen brokers MQTT de código libre
como “Mosquitto” que podemos instalar en diferentes sistemas operativos de forma sencilla. Un
ejemplo típico es configurar una Raspberry Pi como servidor MQTT en casa. Si queremos que el
sistema esté abierto a internet deberemos configurar nuestra conexión adecuadamente al igual que
obtener nuestra IP pública actual o contratar una IP pública fija.
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.
La comunicación entre los nodos de un sistema MQTT se realizan enviando mensajes. Los
nodos envían los mensajes al broker y éste se encarga de distribuirlos entre el resto de nodos. Cada
mensaje consta de un “topic” o tema y el cuerpo del mensaje en sí. Un nodo se puede suscribir a un
“topic” de forma que recibirá todos los mensajes que tengan ese “topic”. Cada nodo puede publicar
mensajes con el “topic” deseado.
Por ejemplo podemos utilizar el topic: “temp/comedor” para que un nodo envíe la temperatura
del comedor, por otro lado todos los nodos que deseen conocer la temperatura del comedor se
suscribirán al topic : “temp/comedor” y recibirán automáticamente los mensajes de este tipo.
159
ArduinoBlocks - Free Book
● Iniciar MQTT (Esp8266 WiFi): Utiliza un módulo ESP-01 serie para establecer la conexión
serie. Debemos especificar los pines donde se conectan los pines RX y TX del módulo. Si el
módulo está configurado (por defecto) para comunicar a una velocidad de 115200 bps
tendremos obligatoriamente que usar los pines 0,1. Si el módulo está configurado para
trabajar a una velocidad inferior podemos especificar otros pines. En caso de usar los pines
0,1 debemos desconectar el módulo durante la programación de la placa Arduino. Por otro
lado especificaremos el nombre de la red WiFi y la clave así como el broker y puerto a utilizar,
el usuario/clave si es necesario y el identificador del cliente MQTT. El router WiFi debe tener el
servicio DHCP activado para asignarnos una IP de forma automática.
160
ArduinoBlocks - Free Book
● Iniciar MQTT (NodeMCU o WeMos): En caso de las placas con WiFi integrado sólo debemos
especificar el nombre de la red WiFi y la clave, así como los datos de conexión del broker,
puerto, nombre identificativo del cliente y usuario/clave del broker si fuera necesario.
● 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.
● Suscribir MQTT: Este bloque realiza la suscripción a un “topic” o tema. ArduinoBlocks mapea
el valor recibido en el mensaje a una variable de forma que cuando se recibe un mensaje del
“topic” automáticamente el valor de la variable se actualizará.
Para variables numéricas (el valor recibido debe ser un número válido y se guardara en la
variable indicada)
161
ArduinoBlocks - Free Book
MyMQTT (Android)
162
ArduinoBlocks - Free Book
(recuerda que no debes utilizar bloqueos de tiempo para que el sistema MQTT funcione bien)
163
ArduinoBlocks - Free Book
164
ArduinoBlocks - Free Book
Desde la aplicación MQTT Dashboard (Android) podemos modificar los valores de los textos que se
visualizan en cada línea del LCD:
http://arduinoblocks.didactronica.com/tag/mqtt/
Los leds ws2812 o neopíxel son leds RGB inteligentes que incorporan su propio
microcontrolador dentro de cada led. Normalmente se encuentran en forma de tira de leds
conectados uno al siguiente , pudiendo realizar tiras de decenas o cientos de leds.
-VCC: alimentación 3 o 5v
-GND: 0v
165
ArduinoBlocks - Free Book
Las tiras de leds neopíxel necesitan normalmente una fuente de alimentación externa (si
conectamos muy pocos leds, 5 o menos, no hará falta alimentación externa). En la mayoría de casos
necesitaremos la fuente externa para suministrar suficiente corriente en caso de iluminar varios leds
de la tira de leds simultáneamente.
● Iniciar: Este bloque se debe definir dentro del “inicializar” o “setup” para indicar la
configuración los leds neopíxel conectados. Indicando varios parámetros:
-Frecuencia: 800Khz / 400Khz, es la velocidad del “bistream” con los datos que se
evían a través del pin DIN con los datos para cada neopíxel. (Una tasa de 400khz ya permitiría
controlar más de 1000 leds con un refresco de 30fps)
-Pin: Es el pin de control a través el cual Arduino controlará y enviará los datos a los
leds.
166
ArduinoBlocks - Free Book
● Mostrar: Actualizar los datos enviados a los leds neopíxel. Cualquier operación de las
siguientes no se reflejará hasta que se ejecute el bloque “mostrar”. Esto se realiza por una
cuestión de optimización, así podemos realizar varias operaciones internamente y mostrarla a
la vez en una sóla operación.
● Establecer píxel: Permite fijar un píxel (led) en concreto de toda la serie a un color, indicando
el número de led (el primero es el 0) y los valores R,G y B (0...255) o seleccionando el color.
● Establecer matriz: Funciona de forma similar al anterior, pero en caso de usar una matriz de
leds podemos indicar el píxel a modificar mediante sus coordenadas X,Y y los valores R,G,B
(0...255)
167
ArduinoBlocks - Free Book
● Establecer datos: Permite rellenar una matriz de leds a partir de un “bitmap” de datos. Con el
botón derecho y la opción “Ayuda” podemos abrir el editor para obtener los datos del “bitmap”
168
ArduinoBlocks - Free Book
+Información y ejemplos:
http://arduinoblocks.didactronica.com/tag/neopixel/
3.3.18 RFID
La identificación mediante radio frecuencia, permite leer tarjetas o etiquetas sin contacto
simplemente acercándolas. Al acercar una tarjeta o etiqueta RFID al lector podemos obtener el ID de
cada una de ellas (que será única). Este tipo de dispositivos es perfecto para controles de presencia,
controles de acceso, etc.
169
ArduinoBlocks - Free Book
● Iniciar: A parte de la conexión SPI (pines 11,12,13) se debe indicar los pines para las
conexiones CS (chip select) y RESET.
● ¿Se ha detectado una nueva tarjeta? : Este bloque devuelve verdadero en caso de detectar
una tarjeta cerca del lector pendiente de leer.
170
ArduinoBlocks - Free Book
● Leer y expulsar tarjeta: Obtiene el código identificativo de la tarjeta o etiqueta. El código será
una cadena de texto con representación hexadecimal de su identificador interno. Una vez
leído el código, se deberá alejar y volver a acercar otra tarjeta para volver a poder leer (se
expulsa virtualmente). Lo recomendable es almacenar este valor en una variable de texto para
luego procesar el valor.
Ejemplo: Leer identificación de las tarjetas o etiquetas y mostrar el ID por la consola serie
Las matrices de leds permiten controlas 64 leds monocromo (rojos normalmente) dispuestos
en forma de matriz de 8 filas y 8 columnas. Para controlar los leds la matriz tiene un chip controlador
(HT16K33) que gestiona los leds y se comunica con Arduino mediante bus I2C.
171
ArduinoBlocks - Free Book
Podemos conectar varias matrices de leds en el mismo bus I2C, para controlarlas
individualmente debemos cambiar la dirección de cada una de ellas.
Configuración de la dirección I2C Configuración de la dirección I2C Hub I2C para ramificar y conectar
mediante pines soldados mediante microswitchs varios dispositivos al mismo bus
I2C
172
ArduinoBlocks - Free Book
● Rotación: Permite ajustar la orientación de la matriz led para indicar en que posición se
encuentra y funcione correctamente.
● Bitmap: Permite establecer un mapa de bits para dibujar en la matriz led. Mediante la opción
“Ayuda” del bloque podemos acceder al editor de mapa de bits.
● Bitmap (predefinidos): Mediante este bloque podemos cargar bitmaps predefinidos de una
forma muy sencilla.
173
ArduinoBlocks - Free Book
● Línea: Permite dibujar una línea recta entre dos coordenadas en la matriz led.
Esquina 1: X1, Y1
Esquina 2: X2, Y2
● Círculo: Dibuja un círculo indicando las coordenadas del centro y el número de píxeles de
radio.
Centro: X, Y
Radio: R
174
ArduinoBlocks - Free Book
● Texto: Dibuja un texto en la matrix led. Usando coordenadas fuera de las visibles podemos
realizar textos con desplazamiento con una única matriz led.
Estos módulos también conocidos como “serial mp3” están basados en el chip YX5300.
175
ArduinoBlocks - Free Book
http://shop.innovadidactic.com/index.php?id_product=868&controller=product
https://wiki.keyestudio.com/KS0387_keyestudio_YX5200-24SS_MP3_Module
Y dentro cada canción o sonido debe empezar con 3 dígitos antes del nombre (001...255).
176
ArduinoBlocks - Free Book
177
ArduinoBlocks - Free Book
● Iniciar: Inicializa el módulo indicando los pines utilizados para la comunicación serie (RX/TX)
178
ArduinoBlocks - Free Book
179
ArduinoBlocks - Free Book
+Información y ejemplos:
http://arduinoblocks.didactronica.com/2019/12/modulo-reproductor-mp3-sd/
3.3.21 Domótica
● PZEM-004T: es un sensor que permite medir voltaje, corriente y potencia de una instalación
de corriente alterna. Los cables se deben atornillar para medir la tensión (V) y por otro lado
deben pasar por la bobina toroidal para medir la corriente que circula (A).
180
ArduinoBlocks - Free Book
○ Iniciar: Inicia el módulo indicando los pines de conexión para la comunicación serie
con el módulo (RX/TX):
181
ArduinoBlocks - Free Book
● INA219: Es un sensor para medir voltaje y corriente pero para corriente continua. Se conecta
a Arduino mediante bus I2C.
○ Iniciar: Inicializar el módulo INA219 indicando la dirección I2C utilizada, de forma que
permite utilizar varios módulos en el mismo bus con distintas direcciones.
Los bloques de teclado / ratón solo están disponibles para Arduino UNO y Micro.
Estos dos modelos de Arduino son detectados como un dispositivo HID (Human Interface
Device) , es decir, como un dispositivo de interfaz humana, lo que quiere decir que puede simular
comportarse como un teclado o ratón. Esta funcionalidad nos permite aplicaciones tan interesantes
como realizar un controlador de juegos con Arduino, enviar datos a una aplicación simulando la
pulsación de teclas, mover el cursor del ratón del sistema operativo a partir de datos de sensores
conectados a Arduino , etc.
● Teclado
○ Enviar: envía un texto a través del Arduino como si se hubiera tecleado desde un
teclado conectado por USB, de forma que el texto aparecerá en la aplicación activa.
Por ejemplo, si abrimos un procesador de texto irá apareciendo el texto enviado desde
el Arduino como si lo hubiéramos tecleado.
182
ArduinoBlocks - Free Book
Hay 3 modos:
183
ArduinoBlocks - Free Book
184
ArduinoBlocks - Free Book
● Ratón
Hay 3 modos:
○ Mover: simula el desplazamiento del curso del ratón. Indicamos el valor positivo o
negativo de incremento en píxeles. Siempre será un valor relativo a la posición actual.
Ejemplo: simular clicl del ratón al detectar presencia con un sensor PIR
185
ArduinoBlocks - Free Book
+Información y ejemplos:
http://arduinoblocks.didactronica.com/category/leonardo/
186
ArduinoBlocks - Free Book
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.
Los bloques GPS necesitan leer periódicamente los datos desde el módulo para
obtener la información actualizada. Si utilizamos bloqueos en nuestro programa los
datos GPS no serán válidos.
Los bloques MQTT gestionan la comunicación a través de la red Ethernet (TCP/IP) de
forma continua en segundo plano, si bloqueamos la ejecución del programa no se
realizará correctamente la comunicación.
Por lo tanto en estos casos es recomendable seguir siempre un método de programación por tareas
utilizando bloques del tipo “ejecutar cada” (ver apdo. 3.3.2)
187
ArduinoBlocks - Free Book
http://www.pighixxx.com/test/pinouts/boards/uno.pdf
188