TOP

¿QUÉ ES UN LED WS2812B?


Definición

Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea).

Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB.

La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”.

Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad.

El WS2812B es el más moderno de esta familia de LED, que tambien se le denomina NeoPixel


PRECIO

Podemos encontrar conjuntos de WS2812B en una gran variedad de formaciones, incluidas tiras, paneles, y anillos.

Encontramos tiras de distintas longitudes, que van desde 1 a 5m. En cuanto a densidad, podemos encontrar tiras de 30, 60, y 144 LED por metro. Además, existen tiras no impermeables (IP30), y tiras impermeables (IP67), que envuelven un plástico protector el PCB. Los precios varían enormemente entre estos factores, desde unos 5€ por una tira LED de 1m IP30 de 30 LED/m, a 30€ por una tira de 5M IP67 de 60 LED/metro.

En cuanto a disposición en anillo, podemos encontrar anillos de 16 LED por 3€ y de 24 LED por 4€.

En paneles, encontraremos tanto paneles flexibles como no flexibles. Podemos encontrar paneles flexibles de 8x8 por 15€, 16x16 por 35€, de 8x32 por 50€.

¿CÓMO FUNCIONA UN WS2812B?

El funcionamiento de un WS2812b es realmente ingenioso. Cada LED dispone de un integrado que almacena 3 bytes (24 bits), que corresponden con los 3 colores del RGB. Cada pixel puede tener 256 niveles en 3 colores, lo que supone un total de 16.777.216 posibles colores.

Cuando un LED recibe un flujo de bytes, almacena los últimos bytes recibidos y trasmite los que contenía al siguiente LED. Finalmente, con una señal de “resetcode” cada LED muestra el último valor almacenado.

Esta genial idea permite hacer configuraciones de múltiples LED, en los que únicamente tenemos que comunicarnos con el primero de ellos y cada LED se actúa de transmisor de la secuencia a los LED posteriores. Además permite que podamos encadenar o dividir tiras de LED y cualquier fragmento seguirá funcionando porque todos los LED tienen exactamente el mismo comportamiento.

Cada vez que un punto trasmite al siguiente una señal, realiza una reconstrucción de forma que la distorsión y el ruido no se acumulan. Esto permite alimentar tiras de más de 5m sin necesidad de dispositivos adicionales.

La transmisión de 0 y 1 y resetcode se realiza mediante señales pulsadas temporizadas.

  • Un 0 se realiza por un pulso HIGH de 0,35 us, seguido de un periodo LOW de 0,9.
  • Un 1 se realiza por un pulso HIGH de 0,9us y LOW 0,35us.
  • El “resetcode” se manda como una señal LOW de 50us.
  • arduino-ws2812b-funcionamiento

    La frecuencia de funcionamiento es superior a 400Hz/s. Esto permite que se puedan animar más de 1024 puntos a una tasa refresco de 30fps.

    Para más información y detalles sobre su funcionamiento, os aconsejamos consultar el Datasheet del WS2182B.

    ESQUEMA MONTAJE

    El esquema eléctrico para conectar LED WS2812b es sencillo. Cada LED alimenta al siguiente, por lo cual solo tendremos que conectar con el primer elemento de la formación.

    Disponemos de 3 pines, 2 de alimentación (5V y GND) y entrada de datos (Din) para recibir los datos desde Arduino.

    arduino-ws2812b-esquema

    La alimentación de la tira LED tiene que realizarse desde una fuente de alimentación externa de 5V, dado que Arduino no dispone de potencia suficiente. La referencia GND será común.

    Cada LED WS2182b consume unos 60mA (0,3W), dando color blanco intenso (20mA por cada componente de color) Esto supone un consumo de 9W para 30 LED, y 18W para 60 LED, lo que es mucha potencia en una fuente de 5V.

    Afortundamante, no siempre vamos a iluminar todos los LED de forma simultánea con blanco a máxima intensidad. Dependiendo del programa y efectos que hagamos la potencia requerida será mucho menor.

    En casos de mucho consumo y gran número de LED también puede ser necesario alimentar por más de un punto a la vez (por ejemplo, cabeza y cola de la tira). De lo contrario, la caida de tensión hará que los últimos LED viren a rojo.

    Podéis emplear la fuente de 5V para alimentar el propio Arduino. Lo que no podéis es alimentar la tira desde la salida de 5V de Arduino.
    Recordar, la referencia GND siempre debe ser común. Podéis dañar un componente de no hacerlo.

    En cuanto al pin de señal, podemos emplear cualquiera de las salidas digitales de Arduino. Es necesario emplear una resistencia de 470 ohmios entre el pin digital y el pin de señal del WS2818b, o podéis dañar los primeros LED.

    También se aconseja instalar un condensador de al menos 1000 uF entre GND y 5V (aunque en los montajes que yo he probado nunca la he puesto y ha funcionado correctamente).

     

      EJEMPLOS DE CÓDIGO

      Podemos mandar la señal directamente controlando adecuadamente los timings necesarios. Sin embargo, lo normal es que empleemos una librería existente que se encargue de esta tarea por nosotros. Tenemos varias librerías disponibles para manejar WS2812b desde Arduino.

      Por un lado tenemos la librería NeoPixel de Adafruit que es sencilla de usar pero relativamente lenta, lo que la hace inadecuada para efectos complejos.

      Por otro lado, tenemos la librería FastLED, algo más difícil pero a cambio permite patrones mucho más complejos.

      Bajaros ambas bibliotecas y probar los ejemplos que vienen incluidas, para que decidáis que tipos de efectos necesitáis y con librería estáis más agusto.

      A partir de aquí, depende de vuestra imaginación y del efecto que queráis conseguir. No hay límites, y la cantidad de combinaciones es infinita. Animaros a programar vuestros propios efectos y animaciones.

      RESULTADO

      Aquí tenéis un vídeo mostrando el resultado de ejecutar alguno de los ejemplos.


 

-- Fin --

TOP

¿QUÉ ES MQTT?

 

 SU IMPORTANCIA COMO PROTOCOLO IOT



 

En esta entrada vamos a ver MQTT, el protocolo de comunicación Machine to Machine (M2M) que tanta popularidad está alcanzando para la comunicación entre dispositivos de IoT.

En la entrada anterior sobre IoT vimos los principales protocolos de comunicación para IoT. Ahí vimos los conceptos de pub-sub, message queue, y message service. Usaremos estos conceptos así que, si tenéis dudas, deberías pasaros y echarle un vistazo.

El protocolo MQTT se ha convertido en uno de los principales pilares del IoT por su sencillez y ligereza. Ambos son condicionantes importantes dado que los dispositivos de IoT, a menudo, tienen limitaciones de potencia, consumo, y ancho de banda.

En esta entrada veremos este interesante protocolo, y en las próximas entradas profundizaremos en la creación de sistemas IoT con dispositivos como el ESP8266 o Raspberry Pi.

 

¿QUÉ ES MQTT?

MQTT son las siglas MQ Telemetry Transport, aunque en primer lugar fue conocido como Message Queing Telemetry Transport. Es un protocolo de comunicación M2M (machine-to-machine) de tipo message queue.

Está basado en la pila TCP/IP como base para la comunicación. En el caso de MQTT cada conexión se mantiene abierta y se "reutiliza" en cada comunicación. Es una diferencia, por ejemplo, a una petición HTTP 1.0 donde cada transmisión se realiza a través de conexión.

MQTT fue creado por el Dr. Andy Stanford-Clark de IBM y Arlen Nipper de Arcom (ahora Eurotech) en 1999 como un mecanismo para conectar dispositivos empleados en la industria petrolera.

Aunque inicialmente era un formato propietario, en 2010 fue liberado y pasó a ser un estándar en 2014 según la OASIS (Organization for the Advancement of Structured Information Standards).

 

¿CÓMO FUNCIONA EL MQTT?

El funcionamiento del MQTT es un servicio de mensajería push con patrón publicador/suscriptor (pub-sub). Como vimos en la entrada anterior, en este tipo de infraestructuras los clientes se conectan con un servidor central denominado broker.

Para filtrar los mensajes que son enviados a cada cliente los mensajes se disponen en topics organizados jerárquicamente. Un cliente puede publicar un mensaje en un determinado topic. Otros clientes pueden suscribirse a este topic, y el broker le hará llegar los mensajes suscritos.

Los clientes inician una conexión TCP/IP con el broker, el cual mantiene un registro de los clientes conectados. Esta conexión se mantiene abierta hasta que el cliente la finaliza. Por defecto, MQTT emplea el puerto 1883 y el 8883 cuando funciona sobre TLS.

Para ello el cliente envía un mensaje CONNECT que contiene información necesaria (nombre de usuario, contraseña, client-id…). El broker responde con un mensaje CONNACK, que contiene el resultado de la conexión (aceptada, rechazada, etc).

Para enviar los mensajes el cliente emplea mensajes PUBLISH, que contienen el topic y el payload.

Para suscribirse y desuscribirse se emplean mensajes SUBSCRIBE y UNSUSCRIBE, que el servidor responde con SUBACK y UNSUBACK.

Por otro lado, para asegurar que la conexión está activa los clientes mandan periódicamente un mensaje PINGREQ que es respondido por el servidor con un PINGRESP. Finalmente, el cliente se desconecta enviando un mensaje de DISCONNECT.

 

CALIDAD DEL SERVICIO (QOS)

MQTT dispone de un mecanismo de calidad del servicio o QoS, entendido como la forma de gestionar la robustez del envío de mensajes al cliente ante fallos (por ejemplo, de conectividad).

MQTT tiene tres niveles QoS posibles.

  • QoS 0 unacknowledged (at most one): El mensaje se envía una única vez. En caso de fallo por lo que puede que alguno no se entregue.
  • QoS 1 acknowledged (at least one): El mensaje se envía hasta que se garantiza la entrega. En caso de fallo, el suscriptor puede recibir algún mensaje duplicados.
  • QoS 2 assured (exactly one). Se garantiza que cada mensaje se entrega al suscriptor, y únicamente una vez.

Usar un nivel u otro depende de las características y necesidades de fiabilidad de nuestro sistema. Lógicamente, un nivel de QoS superior requiere un mayor intercambio mayor de mensajes de verificación con el cliente y, por tanto, mayor carga al sistema.

SEGURIDAD EN MQTT

La seguridad siempre debe ser un factor importante a considerar en cualquier sistema de comunicación M2M. El protocolo MQTT dispone de distintas medidas de seguridad que podemos adoptar para proteger las comunicaciones.

Esto incluye transporte SSL/TLS y autentificación por usuario y contraseña o mediante certificado. Sin embargo, hay que tener en cuenta que muchos de los dispositivos IoT disponen de escasa capacidad, por lo que el SLL/TLS puede suponer una carga de proceso importante.

En muchos casos, la autentificación consiste en una contraseña y usuario que son enviados como texto plano. Por último, también es posible configurar el broker para aceptar conexiones anónimas.

Todo esto debe ser tenido en cuenta a la hora de configurar un sistema MQTT, y entender los riesgos de cada uno de ellos, así como su impacto en la eficiencia del sistema.

VENTAJAS DEL MQTT

Son varias las ventajas del protocolo MQTT como sistema de comunicación M2M. Por un lado, tenemos todas las ventajas del patrón pub/sub que vimos en la entrada anterior, como son escalabilidad, asincronismo, desacomplamiento entre clientes.

Además, MQTT aporta una serie de características que le han hecho sobre salir sobre otros competidores. La principal, como hemos mencionado, es su sencillez y ligereza. Esto lo hace adecuado para aplicaciones IoT, donde frecuentemente se emplean dispositivos de escasa potencia.

Además, esto menor necesidad de recursos se traduce en un menor consumo de energía, lo cual es interesante en dispositivos que funcionan 24/7 y muy especialmente en dispositivos alimentados por batería.

Otra consecuencia de la ligereza del protocolo MQTT es que requiere un ancho de banda mínimo, lo cual es importante en redes inalámbricas, o conexiones con posibles problemas de calidad.

Por último, MQTT dispone de medidas adicionales importantes, como la seguridad y calidad del servicio (QoS). Por último, es una solución largamente testada y consolidad, que aporta robustez y fiabilidad.

CONCLUSIÓN

En resumen, hemos visto algunas pinceladas de MQTT, un protocolo muy interesante para IoT (aunque ya vimos que no es el único). MQTT tiene las ventajas de un patrón pub/sub, y destacando por la sencillez de la comunicación.

El protocolo MQTT se ha alzado como uno de los estándares para aplicaciones IoT tanto comerciales como de ámbito maker. Por supuesto, hay muchos más aspectos de los que podríamos hablar mucho más sobre MQTT, como funciones avanzadas de seguridad, permanencia de los mensajes en el broker, configuración de varios brokers.

En próximas entradas seguiremos profundizando en MQTT, viendo cómo organizar correctamente los topics, los principales brokers, y lo emplearemos en casos prácticos en dispositivos como Raspberry Pi, ESP8266. ¡Hasta pronto!

 

Fuente de esta entrada:  https://www.luisllamas.es/que-es-mqtt-su-importancia-como-protocolo-iot/

TOP

IoT - Internet Of Things

IoT viene del inglés "Internet Of Things", es decir, "Internet de las cosas", pero ¿qué es exactamente? ¿por qué está tan de moda ahora? ¿qué aplicaciones tiene? ¿qué tecnologías hay disponibles?

Este artículo pretende ser una introducción a IoT para todas aquellas personas que a pesar de haber oído hablar de ello no tienen una idea clara de lo que es, para ello se intenta dar una respuesta a todas las preguntas planteadas y adicionalmente se introducen conceptos y siglas relacionadas con esta temática.

¿Qué es IoT?

La definición de IoT podría ser la agrupación e interconexión de dispositivos y objetos a través de una red (bien sea privada o Internet, la red de redes), dónde todos ellos podrían ser visibles e interaccionar. Respecto al tipo de objetos o dispositivos podrían ser cualquiera, desde sensores y dispositivos mecánicos hasta objetos cotidianos como pueden ser el frigorífico, el calzado o la ropa. Cualquier cosa que se pueda imaginar podría ser conectada a internet e interaccionar sin necesidad de la intervención humana, el objetivo por tanto es una interacción de máquina a máquina, o lo que se conoce como una interacción M2M (machine to machine) o dispositivos M2M.

¿Por qué está de moda el IoT? ¿Qué aplicaciones tiene?

Internet ha evolucionado rápidamente y esto ha permitido que IoT sea ya una realidad y no sólo una visión de futuro. La fama de esta tecnología radica principalmente en todas las aplicaciones y posibilidades que nos proporciona tanto para mejorar tanto la vida cotidiana de las personas como los entornos empresariales, dónde ya se está implantando desde hace algún tiempo.

Las aplicaciones son casi infinitas, pero se van a describir algunos ejemplos para dar visibilidad de alguna de ellas, tanto en la vida cotidiana como en el entorno empresarial:

  • Supongamos el frigorífico de una casa, dónde se conservan los alimentos que, a su vez, tienen una fecha de caducidad. En este escenario, se podría conectar el frigorífico a internet para que avisara al usuario a través de su teléfono móvil, por ejemplo, de cuando caducan los alimentos, si hay una bajada de temperatura por alguna avería, si algún alimento se ha está acabando o simplemente el consumo de electricidad en base al número de veces que se abre la puerta de la nevera.
  • Otro escenario podría ser el de la domótica, dónde ya hay numerosos dispositivos que se conectan a Internet para facilitar la vida de los seres humanos, véase por ejemplo los dispositivos controlados por voz a los que se les solicita que reproduzcan una canción desde un repositorio en internet, o los dispositivos y aplicaciones que permiten controlar todos los parámetros del agua de un acuario, o incluso los sistemas de alarmas de las casas que se conectan con las centrales. Los sistemas de seguridad que se conectan a la red para avisarte cuando alguien entra en tu casa o aquellos dispositivos que permiten encender la calefacción desde un teléfono móvil.
  • Si se piensa en aplicaciones industriales, IoT es usado ya en muchas plantas de producción dónde los dispositivos y sensores conectados a la red permiten analizar los datos y generar alarmas y mensajes que son enviados a los distintos usuarios para que tomen las acciones necesarias o incluso iniciar protocolos de actuación de forma automática, sin interacción humana, para corregir o tratar dichas alarmas.
  • Otro ejemplo de aplicación sería en el sector ganadero dónde la monitorización biométrica y la geolocalización es un factor que ayuda a los ganaderos a que sus animales estén siempre controlados.

Términos muy relacionados con IoT pueden ser "Smart Cities" y "Smart Buildings" dónde se utilizan dispositivos de IoT para mejorar el control del tráfico, el control de los suministros de agua y calefacción en un edificio, el control del transporte público, etc.

 

¿Qué tecnologías se utilizan?

Como se puede ver, IoT está ya aquí y es una realidad, su ámbito de aplicación es muy amplio y cada día surgen más y más dispositivos que hacen posible esta tecnología. Dicha tecnología asociada al IoT permite recoger datos y mandarlos a la red para su análisis o incluso realizar un análisis previo y después mandarlos a la red.

En este proceso de comunicación es dónde IoT está evolucionando ya que uno de los escollos a salvar es el tipo de protocolo con el que se comunican dichos dispositivos (es decir, "el idioma" que hablan entre ellos). Actualmente, existen dispositivos o sensores muy nuevos cuya comunicación y conexión a internet es fácil y directa, pero también existen muchos otros dispositivos más antiguos no estándar cuyo protocolo de comunicación y conexión no es trivial, es ahí dónde viene uno de estos escollos a salvar. Adicionalmente, cada fabricante o "vendor" tiene sus propios protocolos de comunicación que hace que no todos los dispositivos sean compatibles. Uno de los mecanismos que se ha intentado establecer es la creación un protocolo abierto y estándar (propuesto por IBM) denominado MQTT (Message Queuing Telemetry Transport), que permite que todos los fabricantes puedan participar y soportarlo, facilitando así la comunicación entre distintos dispositivos de diferentes fabricantes.

Por otro lado, si se buscan dispositivos para IoT se tienen considerar diversos aspectos como el bajo consumo y que sean de pequeño tamaño, de ahí que los SoCs (SoC, System on Chip) sean una parte importante de dichos dispositivos. Un SoC es un circuito integrado que contiene todos o gran parte de los módulos que tendría un ordenador (se pueden encontrar SoCs en los teléfonos móviles, por ejemplo). Como ejemplos de grandes fabricantes tenemos ARM e Intel, aunque no son los únicos, existen otros más recientes como MediaTek, Qualcomm o Samsung. Adicionalmente, existen alternativas muy asequibles para todos los usuarios como Arduino que permite que un usuario puede montarse sus propios dispositivos y circuitos de control para el hogar.

Otra parte importante de un dispositivo IoT son los sensores, el procesador y la plataforma se encargan de gestionar la información, pero ésta, debe provenir de los sensores. En este sentido, Arduino ha permitido que este tipo de tecnología esté al alcance de todos los usuarios. Adicionalmente, los vendors que de servicios en la nube también ofrecen kits preparados con diversos sensores y que permiten conectarse de forma sencilla con dichos servicios.

Finalmente, otro componente importante tecnológicamente para habilitar el IoT es la tecnología utilizada para la comunicación entre varios dispositivos cuya ubicación no sea próxima, es decir, las redes de comunicación. En este apartado se puede hablar por ejemplo de comunicación a través de una red "WiFi" que, aunque admite una tasa de transferencia alta, tiene un consumo alto y un bajo alcance. Otro ejemplo conocido sería una red móvil (3G, 4G o la futura 5G) dónde el alcance sería mayor y de menor consumo. Adicionalmente, existen otro tipo de redes específicas para IoT cómo puede ser Sigfox (con gran cobertura tanto en Estados Unidos como en Europa) o LoRa.

Para terminar, simplemente comentar que hablar de tecnología en IoT, significa hablar de una serie de soluciones propuestas por diferentes fabricantes y que están en continua evolución. No existe una única tecnología, sino muchas de ellas que hay que analizar para adaptarlas a la solución concreta que se quiera desarrollar.

Como se ha comentado, IoT es algo muy extenso con infinitas aplicaciones, sin embargo, que los dispositivos estén conectados o tengan algún grado de inteligencia, no es nuevo, la clave es como IoT propone hacerlo ahora. La idea es que estén conectados a Internet y, a ser posible, de forma directa, que sean capaces de recopilar datos e información y transmitirla a otros dispositivos, y que dicha información pueda ser guardada y analizarla para la mejora del propio funcionamiento del dispositivo o la mejora de otros dispositivos.

Personalmente, opino que IoT es una tendencia tecnológica que va a estar evolucionando continuamente y que va a ser imparable. Actualmente está siendo utilizado en múltiples campos como pueden ser plantas de producción para realizar mantenimiento preventivo y analizar datos, en el sector médico, dónde se puede monitorizar las constantes de un paciente y actuar antes de que la situación sea crítica, en casa, con las “SmartHomes”, dónde el microondas puede empezar a calentar la comida antes de que el usuario llegue a casa, en los llamados “wearables”, que son todos aquellos dispositivos que pueden ser incorporados a la ropa (por ejemplo, unas zapatillas que cuenten todos los kilómetros que corre una persona) o al cuerpo, como lo “Smartwaches”, y un largo etcétera.

 

Información capturada de:  https://www2.deloitte.com/es/es/pages/technology/articles/IoT-internet-of-things.html


TOP

10 PRIMEROS PASOS para PROGRAMAR ARDUINO desde 0


Excelente Profe
TOP

Arduino Shields

Las Vitaminas de Arduino


Simplificando mucho una placa Arduino es un conjunto de entradas y salidas con un microcontrolador entre ambas, el cual, en función de la información que recibe de las entradas y de la programación introducida en él, gestiona las salidas de forma predeterminada.
Una Shield Arduino lo que hace es dotar de funcionalidades adicionales a la placa Arduino, de forma que aumenta sus capacidades, ya sean de comunicación (con otras placas o con el entorno), de actuación (al poder gestionar mas sistemas),...etc.
Read more »
TOP

10 formas de destruir un arduino

Hoy os traigo la traducción de una entrada publicada en Rugged Circuits y que enumera 10 formas de destruir un Arduino, o dicho de otra forma, diez cosas con las que debemos andarnos con mucho ojo si no queremos que esta útil herramienta sufra daños irreparables.

Golpearla con un martillo, disparar, tirarla a la piscina… No es a lo que nos referimos, vamos a mostrar cómo destruir eléctricamente una placa de Arduino. Mucha gente lo descubre “por las malas”, un olor raro, un componente  con marcas de quemadura, o el temido mensaje de “programador no sincronizado” suelen ser señales de que hemos aprendido la lección de la peor forma posible.
Veamos las 10 formas más fatíricas de acabar con nuestro Arduino en la basura......


Read more »
TOP

Los módulos GSM / GPRS


Con este periférico podremos usar nuestro Arduino como si fuera un teléfono móvil, y nos servirá para comunicarnos con él esté donde esté (siempre que haya cobertura, claro).

Para comunicar el Arduino y la tarjeta GPRS utilizaremos los comandos AT, que ya os sonarán si sois lectores regulares de esta página. En esta primera sesión nos centraremos en presentar el módulo y ponerlo en marcha; y haremos dos programillas para enviar llamadas y SMS al exterior utilizando los susodichos comandos AT.
Así que sin más, os dejamos el enlace a la nueva sesión, que esperamos encontréis interesante.


Read more »