Archivo de la categoría: Nivel avanzado

Arduino + MQTT + WiFi con módulo ESP8266

¡Por fin, ya podemos conectar nuestro Arduino via conexión WiFi y programarlo con bloques desde ArduinoBlocks!

Para la conexión WiFi utilizaremos el módulo ESP8266 serie como periférico para dotar a nuestro Arduino de una comunicación WiFi

Tenemos varias opciones para conectar el módulo WiFi a nuestra placa Arduino, voy a explicar las principales:

Opción 1: WiFi Shield basada en ESP8266  (by wangTongze)

Es la opción más sencilla y rápida, pero la conexión del módulo ESP es fija en los pines 0 y 1, por lo que hay que quitarla o desactivar la conexión moviendo los microswitchs para poder programar la placa Arduino (si no dará un error al subir el programa) y no podremos utilizar el puerto serie para comunicarnos con el PC.

Para programar Arduino: micro-switches 0 y 1 -> Off

Funcionamiento autónomo de Arduino: micro-switches 0 y 1 -> On

Normalmente viene preconfigurada con velocidad de conexión serie de 115200 baudios.

Ejemplo Arduino UNO + Shield WiFi:

 

Opción 2: Módulo ESP8266 listo para conectar!

Este módulo nos permite conectarlo fácilmente a Arduino, sólo necesitamos 4 cables: VCC, GND, RX, TX

Problema:  este módulo viene normalmente también preconfigurado a una velocidad de comunicación de 115200 baudios:

-Si lo conectamos a los pines 0,1 Arduino utilizará el puerto serie por hardware y no dará problemas, pero como en la opción 1 deberemos desconectarlo para poder subir el progama a la placa Arduino y tampoco podremos usar el puerto serie para comunicarnos con el PC

-Si lo conectamos a otros pines, se simulará una conexión serie por software y este tipo de conexión serie simulada no permite velocidades de 115200 baudios por lo que tendríamos que reconfigurar el módulo para trabajar a velocidades más bajas (9600 – 57600)

(en Arduino Mega podemos utilizar los puertos hardware 1,2 y 3 y evitamos el problema),

Ejemplo Arduino MEGA  + Módulo:

 

Opción 3: ESP-01 + Adaptador

Si ya tienes algún ESP8266 en formato ESP-01 por ahí puedes comprar este adaptador y estaríamos en un caso idéntico a la opción 2.

Ejemplo: Arduino UNO + ESP01 con adaptador

 

Opción 4: (DESACONSEJADA)

Si tienes un ESP-01 se puede adaptar manualmente para conectarlo a Arduino siguiendo este esquema:

 

Reconfiguración de la velocidad de conexión del módulo ESP8266:

Si compramos un módulo ESP8266 y queremos utilizarlo en pines distintos al 0 y 1 de Arduino UNO o Nano , podemos reconfigurar la velocidad de conexión del módulo para así evitar el problema de la comunicación de 115200  baudios.

Podemos hacerlo conectandolo con un adaptador USB-TTL al ordenador,  por ejemplo:

Desde una aplicación de consola (por ejemplo la de Arduino IDE) conectar a la velocidad actual (115200) y enviar el comando AT siguiente:

AT+UART_DEF=9600,8,1,0,0

Aparecerá la respuesta “ok” y a partir de ese momento el módulo ya funcionará siempre a 9600 baudios

 

Bueno… y una vez conectado el módulo o la shield ¿cómo funciona?

ArduinoBlocks implementa el protocolo MQTT para conectar nuestro Arduino al Internet de las cosas (IoT) de la forma más sencilla. Podemos utilizar la conexión Ethernet (con shield Ethernet standard) o la conexión WiFi

Si necesitas más información sobre MQTT consulta las siguientes entradas del blog:

http://blog.arduinoblocks.com/2018/04/30/arduino-e-internet-mediante-cable-ethernet-y-protocolo-mqtt-con-videotutorial/

http://blog.arduinoblocks.com/2017/04/28/conecta-tu-arduino-al-internet-de-las-cosas-iot/

EJEMPLO: Estación meteorológica vía WiFi

Visualización de los datos en una aplicación móvil MQTT (MQTT Dashboard):

Próximamente más ejemplos e información sobre la conectividad WiFi con ArduinoBlocks!

Compartir

Robot evita obstáculos 2WD

Un robot evita obstáculos es un tipo de robot autónomo que automáticamente detecta obstáculos delante de él y los intenta esquivar. El robot se mueve continuamente girando al detectar un obstáculo e intentando elegir el mejor camino para evitar nuevos obstáculos.

Las aspiradoras domésticas son un claro ejemplo de robots evita osbtáculos…

Para la detección de obstáculos utilizamos el sensor HC-SR04 utilizado en otros proyectos:

Este sensor es direccional, por lo que se montará sobre un servo de forma que podemos girar para “mirar” hacia los lados y  poder así medir la distancia a la que se encuentran los obstáculos a cada lado para elegir el mejor camino.

Por otro lado el control de los motores de cada una de las dos ruedas se realizará con un módulo que implementa un “Puente en H” para suministrar la suficiente corriente a los motores y poder controlar la dirección y velocidad de giro.

Hemos probado con dos montajes diferentes:

  • El kit “Turtle Robot” del fabricante keyestudio:

  • Kit genérico con carcasa para coche 2wd:

El esquema de conexiones sería el mismo en ambos casos:

El programa de control:

Movimientos, servo, medición… :

Proyecto compartido:

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

Video en funcionamiento:

 

+Info y novedades

https://www.facebook.com/arduinoblocks

https://es.linkedin.com/in/arduinoblocks-programaci%C3%B3n-visual-5169a9133

https://twitter.com/arduinoblocks?lang=es

https://www.amazon.com/ArduinoBlocks-Programaci%C3%B3n-bloques-Arduino-Spanish/dp/1535513284/ref=sr_1_1?ie=UTF8&qid=1508320071&sr=8-1&keywords=arduinoblocks

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

 

Compartir

¡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

Proyecto: Chaqueta inteligente para ciclismo

Aníbal y Mark, dos alumnos de Formación Profesional Básica de Informática y comunicaciones de  Salesianos Juan XXIII de Alcoy (Alicante – España) nos presentan su proyecto “chaqueta inteligente para ciclismo

Un proyecto programado íntegramente con ArduinoBlocks y AppInventor.

  • Encendido automático de intermitentes por reconocimiento de gestos (con la ayuda de dos acelerómetros ADXL335 en el brazo y antebrazo para detectar el ángulo de inclinación).

  • Sensor GPS para monitorizar velocidad y detectar automáticamente la frenada.

  • Sensor DHT-11 para monitorizar temperatura y humedad ambiente

  • Módulo Bluetooth para conectar con aplicación móvil Android donde monitorizar los parámetros: intermitente actual, estado de freno, velocidad, temperatura y humedad.

  • Detector de caídas automático con aviso de llamada a servicio de emergencia.

Esquema de montaje completo:

Montaje en una proto-shield

Aplicación móvil Android:

Programación de Arduino con ArduinoBlocks:

Fotos del proceso de programación, montaje y puesta en marcha del proyecto:

Video del proyecto en funcionamiento:

Programa compartido en ArduinoBlocks:

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

¡Enhorabuena a estos jóvenes por su proyecto!

 

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

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

Compartir