Archivo por meses: abril 2017

¡Conecta tu Arduino al Internet de las cosas! (IoT)

Ya podemos conectar nuestros proyectos de ArduinoBlocks a Internet y controlar y monitorizar remotamente cualquier sensor / actuador que conectemos. Únete al Internet de las Cosas (IoT) con ArduinoBlocks gracias a los bloques que implementan la comunicación MQTT.

Sólo necesitamos una Shield Ethernet (muy económicas) y conectarla a un router para darle conexión a Internet a nuestra placa Arduino.

La red donde conectemos Arduino debe tener un servidor DHCP para asignar automáticamente la dirección IP

IMPORTANTE: La shield Ethernet utiliza los pines: 10, 11,12,13 y el pin 4 si utilizamos la SD que lleva también incorporada la shield.

  • ¿Qué es 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.

Ejemplo de esquema MQTT con un dispositivo publicando un mensaje y el “broker” los difunde a todos los dispositivos suscritos a ese “topic”:

  • Bloques MQTT en ArduinoBlocks

Iniciar: permite configurar los datos de conexión con el “broker” a utilizar. Por defecto se utiliza el “broker” público y gratuito “iot.eclipse.org“. En caso de utilizar otro “broker” con seguridad debemos indicar el usuario / clave.

La dirección MAC debe ser única en nuestra red local, si no tenemos una facilitada en la EthernetShield podemos dejar la de ejemplo (generada aleatoriamente). El ID de cliente también se genera al azar.

Publicar: Permite enviar un mensaje con un “topic” (Tema) y un valor al “broker” para que difunda el mensaje a todos los suscriptores.

Suscribir: Permite suscribirse a un “Topic” (Tema) para recibirlo. ArduinoBlocks lo asocia a una variable, de forma que cuando se reciba el valor desde la conexión para ese “topic” se actualizará automáticamente el valor de la variable dentro del programa Arduino (sólo funciona con la suscripción a “topics” con valores numéricos)

Estado de la conexión: Permite obtener el estado de la conexión, si está conectado al “broker” o no.

  • ¿Qué “broker” MQTT utilizo para mis proyectos?

iot.eclipse.org (puerto: 1883, sin usuario ni clave)

Es un broker público. Tenemos que tener en cuenta que no es una opción segura pues nuestro mensajes son compartido con todos los dispositivos que utilicen este “broker“. Se utiliza para prueba o fines docentes. Los “topics” deben ser lo más personalizados posibles para evitar entrar en conflicto con otros dispositivos que pudieran utilizar el mismo “topic“:

Ejemplo de "topic": "AB/juanjo/p1/led"

Otro “broker” público muy utilizado para pruebas es:

broker.hivemq.com (puerto: 1883, sin usuario ni clave)

Podemos ver en tiempo real el funcionamiento de éste último:

http://www.mqtt-dashboard.com/

Por otro lado tenemos algunos “brokers” con acceso por usuario/clave que nos permiten un uso limitado con cuentas gratuitas y un uso más intensivo con cuentas de pago, como por ejemplo:

www.cloudmqtt.com

Después de registrarse se facilitan los datos de conexión (servidor, puerto, usuario, clave). Con la modalidad "Cute Cat" tenemos un límite de 10 dispositivos conectados y 10Kb/s de datos que será suficiente para nuestros proyectos.
  • EJEMPLOS

Ejemplo 1 – Envío de la temperatura y humedad cada 5 segundos

Arduino lee la temperatura y humedad del sensor DHT11 y la publica cada 5 segundos con el topic: “AB/temperatura” y “AB/humedad

Desde un dispositivo móvil (por ejemplo Android con la aplicación MQTT Dashboard) conectándonos al mismo “broker” y suscribiéndonos a los mismos  topics “AB/temperatura” y “AB/humedad” recibimos la información… ¡desde cualquier lugar del mundo!

Montaje y programación:

http://www.arduinoblocks.com/web/project/3504

Visualización en aplicación móvil “MQTT Dashboard” y “MQTT Dash” (Android)

 

Ejemplo 2 – Control de led RGB

Montaje y programación:

http://www.arduinoblocks.com/web/project/3505

Control desde aplicación móvil “MQTT Dashboard” (Android):

En funcionamiento:

Ejemplo 3 – Control de relé + monitorización del nivel de luz con LDR

Montaje y programación:

http://www.arduinoblocks.com/web/project/3506

Control y monitorización con aplicación móvil “MQTT Dashboard” (Android):

Video del último ejemplo en funcionamiento:

  • Clientes MQTT para dispositivos móviles:

MQTT Dashboard (Android)

MyMQTT (Android)

MQTT Dash (IoT, SmartHome)

MQTT Tester (iPhone)

  • Enlaces de interés:

https://github.com/mqtt/mqtt.github.io/wiki/public_brokers

https://geekytheory.com/que-es-mqtt

https://en.wikipedia.org/wiki/MQTT

https://github.com/mqtt/mqtt.github.io/wiki

https://es.wikipedia.org/wiki/Internet_de_las_cosas

https://es.aliexpress.com/store/product/1pcs-Arduino-Shield-Ethernet-Shield-W5100-R3-UNO-Mega-2560-1280-328-UNR-R3-W5100-Development/428351_32709442003.html

+Info, ejemplos y proyectos resueltos en el libro oficial:

Compartir

ArduinoBlocks Academy – Prácticas de iniciación

¿No sabes por donde empezar?  ¿Eres profesor y quieres empezar con tus alumnos?

Prácticas resueltas para iniciarse progresivamente. En cada práctica se aplican conceptos nuevos y se reutilizan los anteriores para mejorar los proyectos planteados... ¡A qué esperas!

ArduinoBlocks es un sistema libre orientado a la docencia e ideal para iniciarse con Arduino. En el repositorio de GitHub puedes descargar todas las prácticas de iniciación en formato abierto odt  “Open Document” (recomendado Libre Office ) o en formato PDF listo para imprimir.

Personaliza, reutiliza, comparte, mejora, crea… ¡eres libre!

https://github.com/arduinoblocks/academy

Recomendado utilizar LibreOffice 5

+Info y proyectos:

 

Compartir

Memoria EEPROM en ArduinoBlocks

La memoria EEPROM nos permite almacenar información de forma persistente (no volátil) aunque desconectemos la fuente de alimentación de la placa Arduino. Es el sistema para guardar información importante como valores de configuración, histórico de valores, etc…

La memoria EEPROM de Arduino es de 1024 bytes, pero ArduinoBlocks trabaja internamente con variables que utilizan 4 bytes (valor decimal “double” de 32 bits) por lo que en la práctica  en ArduinoBlocks podemos guardar 256 variables en la EEPROM (1024 bytes / 4 bytes por variable  = 256 variables)

Para guardar un valor en la memoria EEPROM simplemente indicamos la posición (dirección) donde guardar y el valor a almacenar:

Para recuperar un valor especificamos la posición (dirección) y obtendremos el valor almacenado:

IMPORTANTE: La memoria EEPROM de Arduino suele venir pregrabada a 255 (0xFF) en cada uno de sus bytes. En la mayoría de ocasiones es recomendable hacer un pequeño programa inicial para fijar toda la memoria a valor 0:

Ejemplo 1: Guardar el valor máximo, mínimo de temperatura registrado en la memoria EEPROM.

Programa para iniciar la EEPROM con valores máximo y mínimo correctos:

Programa para el funcionamiento normal:

Ejemplo 2: Obtener la configuración desde la memoria EEPROM.

Movemos un servo poco a poco (de 5 en 5 grados cada medio segundo). Después de cada movimiento se guarda la posición actual. Si apagamos y encendemos continuará por donde se había quedado.

Ejemplo 3: Almacenar lista de valores de una secuencia numérica en la memoria EEPROM.

Iniciamos la memoria EEPROM con este programa (valores de las frecuencias de las primeras 12 notas musicales)

Y este el programa que “toca” la escala musical recuperando los valores de cada nota desde la memoria EEPROM (guardada en el programa anterior)

 

+Info:

http://www.arduinoblocks.com

http://blog.arduinoblocks.com

http://blog.arduinoblocks.com

Libros:

Compartir

Encendido automático con sensor de movimiento y nivel de luz

Cada vez necesitamos ahorrar más en la factura de la luz, para ello podemos automatizar nuestros sistemas de iluminación sobre todo de zonas de paso como pasillos, escaleras o aseos.

Con este sencillo sistema vamos a automatizar el encendido para que se produzca sólo cuando se detecta movimiento de una persona.

Además podemos añadir un sensor de luz ambiente para actuar sólo en caso de nivel de luz bajo.

Sensores/actuadores utilizados:

Módulo de sensor PIR: sensor de movimiento por infrarrojos

El sensor PIR tiene una salida digital y en la mayoría de casos permite ajustar la sensibilidad de distancia y retardo de la detección.

Módulo LDR: nos permite obtener el nivel de luz ambiente conectado a una entrada analógica. (En caso de no tener el módulo de LDR podemos usar una resistencia de 10k y una resistencia LDR conforme en el esquema de montaje):

Módulo de relé: permite controlar el encendido de la luz. El relé hace la función de interruptor:

Montaje:

Programa:

Más fácil imposible!

+Info:

http://www.arduinoblocks.com

https://www.facebook.com/arduinoblocks

https://www.youtube.com/channel/UCoJwWGyd8a2pxzJHFdftXYw

Más información y proyectos resueltos:

http://www.arduinoblocks.com/shop/libros/5-libro-arduinoblocks.html

https://www.amazon.es/ArduinoBlocks-Programaci%C3%B3n-visual-bloques-Arduino/dp/1535513284/

Compartir