Archivo del Autor: jecrespom

Acerca de jecrespom

Twitter: @jecrespom

Node-Red y Edge Computing

El Edge Computing permite que los datos producidos por los dispositivos de la internet de las cosas se procesen más cerca de donde se crearon en lugar de enviarlos a través de largas recorridos para que lleguen a centros de datos y nubes de computación.

Eso tiene una ventaja fundamental, ya que permite a las organizaciones analizar los datos importantes casi en tiempo real, algo que es una necesidad patente en muchas industrias tales como la fabricación, la salud, las telecomunicaciones o la industria financiera.

Wikipedia: https://en.wikipedia.org/wiki/Edge_computing

Hay otro término muy relacionado con Edge Computing que está usándose cada vez más en este ámbito, y es el de la llamada Fog Computing. Esta plataforma permite extender la nube para que esté más cerca de las cosas que producen y se accionan mediante datos de dispositivos IoT. Cualquier dispositivo con conectividad de red, capacidad de computación y almacenamiento puede ser un nodo de esa “niebla”.

Esta filosofía podría decirse que permite que los grandes centros de datos de la nube “deleguen” parte de sus responsabilidades a dispositivos Edge Computing, y lo hagan a través de esa Fog Computing que define requisitos o necesidades en ese extremo de todo este ecosistema que como decimos tiene aplicaciones industriales claras.

El Edge Computing se refiere de forma específica a cómo los procesos computacionales se realizan en los “dispositivos edge”, los dispositivos IoT con capacidad de análisis. A diferencia de ese concepto, la Fog Computing se refiere a las conexiones de red entre los dispositivos edge y la nube.

Wikipedia: https://en.wikipedia.org/wiki/Fog_computing

Más información: https://www.xataka.com/internet-of-things/edge-computing-que-es-y-por-que-hay-gente-que-piensa-que-es-el-futuro

Low-code programming for event-driven applications“: Así es cómo Node-RED se autodescribe en su página web https://nodered.org, y no creo que exista mejor forma de definir esta versátil y poderosa herramienta en base la experiencia de uso en diferentes áreas de aplicación: dispositivos “edge computing” en proyectos de IoT, aceleración de escenarios de Integración y tratamiento de eventos de negocio (‘Business Events’), o la automatización de la captura, estructuración y refinamiento de datos en sus fuentes de origen en proyectos de Big-Data, por mencionar solo algunos.

Node-RED es uno de las componentes en una arquitectura de edge computing. Como herramienta visual, facilita extraordinariamente la captura de eventos del mundo real, permite agregar cierto grado de inteligencia en nodos de tratamiento/transformación de datos y utilizar nodos especializados para integrar eventos con todo tipo de sistemas de mensajería, como por ejemplo MQTT, AMQP o Apache Kafka. También es posible en plataformas sociales como Twitter o Facebook y sistemas de persistencia de datos como Bases de Datos Relacionales y NoSQL, como MongoDB y Redis. Todo ello se lleva a cabo con la finalidad de crear aplicaciones que puedan reaccionar de forma ágil y precisa ante el  complejo mundo existente a su alrededor.

Más información: https://www.techedgegroup.com/es/blog/fundamenos-node-red

IIoT y Node-RED

Industrial Internet of Things (IIoT) es el uso de las tecnologías de Internet of Things (IoT) en la fabricación. IoT es una red de ordenadores, dispositivos y objetos inteligentes que recopilan y comparten enormes cantidades de datos. Los datos recopilados se envían a un servicio basado en la nube en el que se comparten con los usuarios de manera muy útil.

IIoT no sólo funciona en el nivel de la máquina o el proceso, sino también del propio dispositivo, para que esté perfectamente conectado a los sistemas empresariales y a los niveles de datos de Internet. Es un modelo de aplicación paralelo, que conecta la tecnología de edge computing con la de cloud computing: recopila datos de dispositivos periféricos habilitados mediante agentes conectados a dispositivos de campo, y mejora el rendimiento de las operaciones y los equipos con aplicaciones en la nube.

IIoT ejecuta análisis en los agentes, preferiblemente el propio dispositivo de campo, o un dispositivo periférico conectado a los dispositivos de campo, con interconexión con la aplicación de automatización. Los análisis se generan y se despliegan a lo largo del tiempo sin necesidad de cambiar ni incluso de apagar el sistema de control existente.

Node-RED aprovecha la convergencia de TI/TO. Es la nueva tecnología de software para conectar las “cosas” desde el nivel de campo al de TI de Internet y las aplicaciones en la nube sin necesidad de modificar sistemas existentes. Es la vía rápida a IIoT. Node-RED es una tecnología ligera, de código abierto y fácil de usar. Con Node-RED se utiliza una red Ethernet TCP/IP transparente existente.

Node-RED consta de una herramienta de edición y un motor para crear y ejecutar fácilmente las conexiones entre las aplicaciones de IIoT. Cualquier “cosa” se puede conectar con Node-RED a través de IIoT, incluidos todos los dispositivos de automatización con capacidades de procesamiento y las conexiones Ethernet TCP/ IP. Hasta los dispositivos de campo más pequeños sin estas capacidades se pueden conectar con Node-RED gracias a dispositivos periféricos intermediarios que recopilan datos.

Node-Red en la Industria

Recientemente se está incorporando Node-RED en diversos PLCs para su programación.

Curso IoT simatic (Siemens con Node red); http://www.infoplc.net/descargas/109-siemens/comunicaciones/2847-manual-simatic-iot2040-node-red 

OpenOPC UA: http://www.openopcua.org/ 

Nodo para interactuar con PLCs S7: https://flows.nodered.org/node/node-red-contrib-s7

Industrial Shields: https://www.industrialshields.com/es_ES/blog/nuestro-blog-1/post/an-introduction-to-node-red-39

Encuesta 2019 Node-RED: https://nodered.org/about/community/survey/2019/

Dispositivo PLC, entre otro muchos, que usa Node-RED: https://nube-io.com/

Node-RED y PLCs

Node Red se puede comunicar con PLCs usando Modbus o con los Scadas usando OPC u OPC-UA.

Pero existen nodos específicos:

PLCs con Node-RED integrado:

Montar un servidor OPC-UA con Node-RED: 

ModBus y Nodered

Usado el nodo https://flows.nodered.org/node/node-red-contrib-modbus

Github: https://github.com/BiancoRoyal/node-red-contrib-modbus 

Wiki: https://github.com/BiancoRoyal/node-red-contrib-modbus/wiki 

Ejemplo: https://flows.nodered.org/flow/bf06a87e84395e4bce276714c6f5f884

SNMP y Nodered

SNMP: https://flows.nodered.org/node/node-red-node-snmp

Trap listener: https://flows.nodered.org/node/node-red-contrib-snmp-trap-listener

Código: https://github.com/node-red/node-red-nodes/tree/master/io/snmp

Node-RED y Fiware

Uso el Node-RED de desarrollo: http://infraestructuras-desarrollo.arsyslan.es:1880/

Existen varios nodos de Fiware para Node-RED:

El nodo principal es https://flows.nodered.org/node/node-red-contrib-fiware_official y el repositorio es: https://github.com/FIWARE/node-red-contrib-FIWARE_official. Lo que hace es trabajar con el Orion context broker, realizando varias operaciones.

Fiware + Node-RED: https://m.riunet.upv.es/bitstream/handle/10251/114982/memoria_4632841.pdf

Simulador Fiware: https://www.fiware.org/wp-content/uploads/2017/01/Hands-on-FIWARE-Context-provider-Simulator.pdf

Interesante presentación de Telefónica: https://www.uma.es/smart-campus/navegador_de_ficheros/SmartUMA/descargar/Material%20Curso%20de%20formaci%C3%B3n%20para%20la%20red%20IoT%20Smart%20Cities/FORMACION%20SMART%20CITY%20UMA%20-%20FIWARE%20y%20Plataforma%20Thinking%20Cities.pdf

Node-RED y Domótica

En HA (Home Assistant) se usa Node-RED.

Nodos de HA:

Tutorial de HA y Node-RED: https://www.juanmtech.com/get-started-with-node-red-and-home-assistant/

Addon de Node-RED en HA: https://community.home-assistant.io/t/home-assistant-community-add-on-node-red/55023

Más información: https://www.domoticaeconomica.com/node-red-en-hassio-o-home-assistant

Robótica con M5StickC, JoyC, RoverC y BugC

Control RoverC HAT con JoyC HAT

Vídeo completo del taller de 1 hora:

Veamos los pasos para programar el control de BugC HAT con JoyC HAT.

Antes de empezar con este tutorial, deberías leer los siguientes artículos:

Hardware necesario:

Cada módulo M5StickC programable se conecta a los HATs del Rover y el JoyStick. Lo que vamos a programar con los M5StickC.

RoverC es una base de robot móvil omnidireccional programable compatible con M5stickC, y puede iniciarse insertando el M5stickC. El controlador principal de la base es el microcontrolador stm32f030f4. La base viene con motores de engranaje helicoidal N20 que son accionados directamente por un controlador de motor de cuatro canales. Estos motores están conectados a ruedas mecanum que pueden moverse en todas las direcciones. Además, se proporcionan dos puertos I2C compatibles con grove para facilitar la expansión de otros módulos. La base también es compatible con los bloques de LEGO y puede expandirse en su estructura. Se instala una batería 16340 en la parte posterior de la base para cumplir con los requisitos de potencia y resistencia del automóvil y se puede controlar mediante un interruptor independiente.

I2C Address 0x38

Para moverlo:

Antes de usar, asegúrese de que el RoverC está completamente cargado. Método de carga: inserte m5stickc en el roverc y conecte el cable USB para cargar.

JoyC es un módulo basculante diseñado para el M5StickC. Admite la operación con las dos manos. Chip de control principal STM32F030F4 integrado, que utiliza el protocolo de comunicación I2C y el host M5StickC para la transmisión de datos. El rango del joystick es 0 ~ 200, hay 12 LED RGB debajo de los joysticks izquierdo y derecho, y la parte inferior del joystick está equipada con una base de batería 16340 para una vida útil continua de la batería.

I2C Address 0x38

Como vamos a programar con UIFLow, lo primero es cargar el firmware de UIFlow con el M5Burner, que puede descargarse en: https://m5stack.com/pages/download. Cargar en ambos M5StickC.

Ejemplo básico control RoverC:

Código: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20RoverC%20y%20JoyC/Basic_RoverC.m5f

Vídeo:

Ejemplo básico control JoyC:

Código: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20RoverC%20y%20JoyC/Basic_JoyC.m5f

Código con todos los datos del JoyC: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20RoverC%20y%20JoyC/M5StickC_JoyStick_Control.m5f

Vídeo:

Para comunicar ambos módulos voy a usar el protocolo ESP-NOW: https://docs.m5stack.com/#/en/uiflow/advanced?id=esp-now

ESP-NOW es un protocolo de comunicación de corto alcance y baja potencia que permite que múltiples dispositivos se comuniquen sin Wi-Fi. Este protocolo es similar a la conexión inalámbrica de 2,4 GHz de baja potencia que se encuentra en los ratones inalámbricos: los dispositivos se emparejan antes de comunicarse. Después del emparejamiento, las conexiones entre dispositivos son continuas, de igual a igual, y no requieren un protocolo de protocolo de enlace.

Para emparejar ambos dispositivos necesito saber su dirección.

Ejemplo básico receptor:

Ejemplo básico emisor:

En un M5Stack lo uso de receptor de ESP-NOW para ver lo que llega: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/M5/M5Stack_Receptor.m5f

Código:

Vídeo:

Los códigos finales con comunicación ESP-NOW:

Comentarios del código:

  • La conexión es uno a uno y cifrada con contraseña
  • Uso un M5Stack que recibe los datos y los muestra por pantalla
  • Los datos que mando son: Velocidad, Dirección y Ángulo, añadiendo el caracter V, D o A delante del valor.
  • Solo mando el valor si cambia más de 5 unidades sobre el valor anteriormente enviado. Ahorrando el envío de datos y mejorando la experiencia con el Joystick
  • Si el valor del Joystick es menor de 30 lo dejo en 0, porque sino los motores apenas se mueven y hace ruido.
  • Uso en cada receptor un contador para saber cuantos mensajes llegan
  • El M5Stick del rover lee el dato recibido, analiza si es Velocidad, Dirección y Ángulo y aplica el valor a los motores del rover.

Vídeo:

Control BugC HAT

Vamos a hacer andar el BugC.

Material:

BugC es una base de robot programable compatible con el M5StickC. Esto tiene cuatro motores de CC, controlador de motor, dos LED RGB, soporte de batería y un interruptor. La base Bugc debe usarse junto con el controlador M5StickC. La base viene con un microcontrolador STM32F030F4 que controla todos los motores y LED y esto es controlado a través del protocolo I2C (0x38) por el M5StickC que se encuentra en la parte superior de la base.

Ejemplo básico de uso:

Código: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20BugC/Basic_BugC.m5f

Vídeo:

Una vez hecho el ejemplo básico, para aprender cómo se mueve hacemos tres movimientos que cambian al pulsar el botón A.

Código: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20BugC/M5StickC_BugC_Demo.m5f

Vídeo:

Por último vamos a hacerlo andar, moviendo de un lado a otro.

Código: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/Proyecto%20BugC/M5StickC_BugC_Anda.m5f

Vídeo:

Programación Dispositivos M5Stack con UIFLOW

UIFlow es una plataforma Web de programación usando Blockly y Python

Web: http://flow.m5stack.com/

UIFlow: https://m5stack.com/pages/uiflow

Foro UIFlow: http://forum.m5stack.com/category/5/uiflow

UIFlow Doc: https://m5stack.github.io/UIFlow_doc/en/

Tutorial: https://docs.m5stack.com/#/en/uiflow/uiflow_home_page

Manual de UIFlow: http://flow.m5stack.com/download/M5GO_User_Manual_en.pdf

Vídeos:

Quick Start UIFlow:

UIFlow-Desktop-IDE: https://m5stack.com/pages/download (UIFlow en local sin acceso a Internet)

Cargar Firmware UIFlow

Lo primero es cargar el firmware de UIFlow en M5Stack para poder programarlo con UIFlow, para ello debemos usar el programa M5Burner: https://docs.m5stack.com/#/en/quick_start/m5stickc/m5stickc_quick_start_with_uiflow que se puede descargar desde https://m5stack.com/pages/download

En caso que no nos reconozca el puerto serie M5Burner, habrá que instalar el driver como hemos hablado anteriormente desde: https://m5stack.com/pages/download 

El Driver Oficial para la interfaz serie CP210X se puede descargar en: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

A la hora de cargar el firmware, seleccionar la versión de UIFlow que se va a usar en http://flow.m5stack.com/ y en caso que no aparezca resaltada, descargarla.

Luego seleccionar el puerto serie y el modelo de M5Stack que vamos a usar y por último configurar la wifi a la que se va a conectar para programar on-line.

Y pulsar el botón burn, si da fallo probar a reducir el baudrate por defecto o borrar la flash con el botón erase.

En caso que no se haya configurado la wifi o no esté disponible la wifi, el M5Stack se configura como un AP Hotspot donde abre una red wifi a la que me puedo conectar y entrar a la web para configurar la wifi.

Modo Programación en Red

El modo de programación de red es un modo de acoplamiento entre el dispositivo M5Stack y la plataforma de programación web UIFlow. La pantalla mostrará el estado actual de la conexión de red del dispositivo. Cuando el indicador está en verde, significa que puede recibir un programa push en cualquier momento. Después de la primera configuración exitosa de la red WiFi, el dispositivo se reiniciará automáticamente e ingresará al modo de programación de red. 

Una vez que el M5Stack tiene cargado el firmware y se inicia, se conectará a la wifi configurada y nos mostrará en pantalla el API KEY:

Una vez conectado y con el icono en verde, ya puedo entrar en http://flow.m5stack.com/ y emparejar el dispositivo M5 para programarlo. Para ello debo indicar el APIKEY y el dispositivo.

Una vez hecho esto ya se puede comenzar a programar con UIFlow. Lo siguiente le mostrará un programa simple para manejar M5StickC.

Para encender el indicador LED:

  • Arrastre el LED para iluminar el bloque de programa.
  • Empalme con el programa de inicialización de configuración.
  • Haga clic en el botón Ejecutar en la esquina superior derecha

Modo Programación USB

UIFlow Desktop IDE es una versión offline del programador UIFlow que no requiere conexión de red y puede ser una alternativa en caso de no tener acceso a Internet o una conexión lenta . Haga clic en la versión correspondiente de UIFlow-Desktop-IDE para descargar de acuerdo con su sistema operativo en https://m5stack.com/pages/download

Una vez instalado, detectará automáticamente si su ordenador tiene un controlador USB (CP210X), haga clic en Instalar y siga las instrucciones para finalizar la instalación. M5StickC no requiere un controlador CP210X, por lo que los usuarios pueden elegir instalar u omitir.

Cuando se inicie la aplicación, ya podemos conectar nuestro dispositivo M5

Para poder programar como USB, debemos entrar en modo USB, para ello: Haga clic en el botón de encendido en el lado izquierdo del dispositivo para reiniciar. Seleccione rápidamente Configuración después de ingresar al menú, ingrese a la página de configuración y seleccione el modo USB.

Y por último seleccionar el puerto serie y el dispositivo en el programa para empezar a usarlo.

Más información:

Entorno de Programación

Independientemente si usamos la versión online o la versión offline, la programación es igual.

El entorno de programación se compone de 5 partes principales:

  • Coding Area:  Arrastre los bloques de código de la lista de bloques al área de codificación y conéctelos para crear un programa
  • Barra de menús: La barra de menú contiene la mayoría de las funciones importantes de la interfaz, como (Ejemplo,Deshacer y rehacer, cargar, ejecutar código, descargar código, guardar código, etc.
  • Blockly/Python: Todo el código que creamos en bloques se puede convertir a Python presionando este interruptor
  • Diseñador de UI: Arrastre los elementos de la interfaz de usuario (título, etiqueta, etc.) hacia la pantalla de para diseñar un avatar o interfaz de interfaz de usuario.
  • Unidades: Las unidades son sensores y actuadores que se pueden conectar y aquí es donde los configuramos.

Funciones de los botones:

Programación con Blockly:

Programación Básica

Para la programación vamos a usar estas tres documentaciones oficiales:

Setup: Cuando abra UIFlow, encontrará que ya hay un bloque de Configuración al principio. Cada programa debe tener un bloque de configuración. El programa se ejecuta desde el bloque de Configuración y solo se ejecutará una vez. Puedes considerarlo como un bloque de inicialización del programa

Loop: Loop es un bloque de bucle infinito. Cuando se ejecuta, ejecutará el programa contenido en el bloque indefinidamente hasta que ocurra algún evento que lo detenga, por ejemplo un reset o apagado. No tiene que existir en el programa, pero para que el programa ejecute funciones cíclicas debe usarse.

Los ficheros generados tienen la extensión .m5f, aquí puedes descargar un ejemplo de test: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Test.m5f

Primero hagamos un “Hola Mundo” con M5Stack. Que muestre por pantalla Hola mundo y haga blink el led.

Puedes descargar el código en: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Hola%20Mundo.m5f

Otros ejemplos:

¿Cuál es la diferencia entre ejecutar y descargar un programa? El botón de reproducción coloca nuestro código en la memoria volátil de su M5stack. Lo que significa que se perderá una vez que apague el M5stack. Sin embargo, la función de descarga almacenará su programa en la memoria flash de su dispositivo que no se borrará al reiniciar. Cada vez que enciende el M5stack después de descargar un programa, ese programa se ejecutará automáticamente, y también puede seleccionarlo de la lista de aplicaciones a la que se accede presionando el botón central al iniciar.

Ejecutar un programa: Una vez que haya terminado de programar, presione el botón de reproducción en la esquina superior derecha para ejecutar su código.

Descargar un programa: almacenará su programa en la memoria flash de su dispositivo que no se borrará al reiniciar.

La aplicación grabada se podrá seleccionar desde el menú de aplicaciones del dispositivo M5 y se ejecutará en el inicio cada vez que se resetee. Para volver al entorno de programación y cambiar el programa, si tengo una aplicacion en modo permanente, reiniciar y pulsar el botón mientras arranca para entrar en modo programación cloud o USB.

Unidades y HATs

La unidad o HAT es un módulo hardware de expansión de funciones proporcionado por el sistema M5. Estas deben conectarse al módulo M5 antes de programarlas.

Los módulos y faces de M5Stack ya aparecen automáticamente al seleccionar el HW Core.

Las unidades deben se añadidas en UIFlow para que aparezcan sus bloques de programación. Haga clic en la opción Units debajo del Simulador de UI, marque el módulo de Unidad que desea agregar y haga clic en Aceptar. Algunas unidades tienen configuraciones iniciales de parámetros.

Programación de Units: https://docs.m5stack.com/#/en/uiflow/Units

Programación de los módulos: https://docs.m5stack.com/#/en/uiflow/Modules

Programación de las faces: https://docs.m5stack.com/#/en/uiflow/FACES

Programación Hardware

Ver: https://docs.m5stack.com/#/en/uiflow/hardware

Boton: https://m5stack.github.io/UIFlow_doc/en/en/Start_programming/Button.html

Speaker:

IMU:

Power:

Ejemplo power en M5StickC: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/M5/M5StickC_Power_Control.m5f

Display UI

Elementos del display: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=ui-elements

Display UI: https://m5stack.github.io/UIFlow_doc/en/en/Display/UI.html

Emoji: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=emoji

Pantalla: https://docs.m5stack.com/#/en/uiflow/ui_simulator?id=screen

Imágenes:

Gráficos:

Ejemplo que muestra un logo: https://raw.githubusercontent.com/jecrespo/M5StickC-UIFlow/master/M5/Logo%20M5Stack.m5f

Lógica

If:

Loop Condicional:

Iteración de datos:

Variables

Variables:

Operaciones básicas: https://docs.m5stack.com/#/en/uiflow/data_structure?id=basic-operation

Función map (diccionario en Python): https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-a-map

Listas o arrays: https://m5stack.github.io/UIFlow_doc/en/en/Operation/List.html

JSON: https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-json

Strings/Text: https://docs.m5stack.com/#/en/uiflow/data_structure?id=introducing-text

Funciones

Las funciones son una herramienta que nos ayuda a envolver nuestro código en un paquete ordenado al que podemos asignarle un nombre, y luego llamarlo en cualquier parte de nuestro programa y ejecutará el código que contiene. Las funciones pueden ayudar a mantener nuestro código ordenado y conciso y evitar repetir las mismas cosas una y otra vez.

Funciones:

Control Remoto

Control remoto de los dispositivos M5 mediante una web:

Página de control: https://docs.m5stack.com/#/en/uiflow/advanced?id=control-page

Dashboard: https://docs.m5stack.com/#/en/uiflow/advanced?id=dashboard

Lo carga en http://flow-remote.m5stack.com/

Bloques Personalizados

Es posible crear bloques personalizados.

Para crear un nuevo bloque, debemos proporcionar:

  • nombre del grupo: el nombre del grupo en el que se coloca el bloque personalizado
  • color del bloque: color de apariencia del bloque
  • Etiqueta de bloque: solo se permiten letras, números, guiones bajos
  • Tipo de bloque: defina el tipo de bloque como Valor (valor) o Ejecutar (ejecutar)
  • Número de bloques: posibilidad de agregar múltiples bloques al mismo tiempo y guardarlos en un archivo .m5b al mismo tiempo

Block Maker: http://block-maker.m5stack.com/

Haga clic en la opción Agregar en Parámetro, agregue una propiedad del programa, ingrese el nombre que se muestra en el bloque y seleccione el tipo de propiedad. Ingrese el código contenido en el bloque personalizado en el cuadro de opción Código de bloque.

Program API: https://github.com/m5stack/UIFlow-Code/wiki

Una vez programado descargar el .m5b

Para usar los bloques creados hacer open .m5b en UIFlow

Más información:

Comunicaciones

ESP-NOW: https://docs.m5stack.com/#/en/uiflow/advanced?id=esp-now

MQTT: https://docs.m5stack.com/#/en/uiflow/advanced?id=mqtt-communication

Wifi: https://docs.m5stack.com/#/en/uiflow/advanced?id=wifi 

P2P: https://docs.m5stack.com/#/en/uiflow/advanced?id=p2p

HTTP Request: https://docs.m5stack.com/#/en/uiflow/advanced?id=http 

Control Avanzado de Pines

Easy IO: https://docs.m5stack.com/#/en/uiflow/advanced?id=easy-io

PIN: https://docs.m5stack.com/#/en/uiflow/advanced?id=pin

PWM: https://docs.m5stack.com/#/en/uiflow/advanced?id=pwm

ADC: https://docs.m5stack.com/#/en/uiflow/advanced?id=adc

DAC: https://docs.m5stack.com/#/en/uiflow/advanced?id=dac

UART: https://docs.m5stack.com/#/en/uiflow/advanced?id=uart

I2C: https://docs.m5stack.com/#/en/uiflow/advanced?id=i2c

SD Card: https://docs.m5stack.com/#/en/uiflow/advanced?id=sdcard

Execute: https://docs.m5stack.com/#/en/uiflow/advanced?id=execute

Dispositivos M5Stack

El M5Stack ofrece una serie de dispositivos para hacer desarrollos sobre la plataforma ESP32 (compatible con Arduino).

El M5Stack es un dispositivo de tamaño mínimo, que cuenta con una carcasa, un display a color de dos pulgadas, conectividad usb-c para su programación y alimentación (también cuenta con una conexión de batería), conectividad I2C y un montón de puertos GPIO para conectarle todo tipo de dispositivos. Dispone de numerosas opciones de conectividad y posibilidades de desarrollo.

También cuenta con tres botones programables, un altavoz de 1W, la pantalla LED a color y con resolución 320 x 240, un zócalo para agregar una tarjeta de memoria, conector para baterías LiPo de hasta 2A y muchas otras opciones, como una base con imanes para poder dejarlo colgado de la nevera o en la pared o contar con un acelerómetro y giroscopio. Para mayor compatibilidad con todo tipo de sensores y actuadores M5Stack tiene conectividad a 3,3 y 5 V. El diseño es modular, de forma que en su parte inferior podremos conectarle distintos elementos como placas de desarrollo, sensores, baterías, etc. 

Otros aspecto importante, es la interfaz de desarrollo de aplicaciones gráfica al estilo de Scratch en http://flow.m5stack.com/ que más adelante trataremos.

Web: https://m5stack.com/

Github: https://github.com/m5stack/M5Stack

Docs: https://docs.m5stack.com/#/

Tienda: https://m5stack.com/collections/all

Tienda oficial en AliExpress: https://m5stack.es.aliexpress.com/store/3226069

Proyectos: https://m5stack.hackster.io/

Comunidad: http://community.m5stack.com/

Buena web con mucha información: https://docs.makerfactory.io/m5stack/overview/

Más información: https://www.prometec.net/m5stack/arduino/introduccion/

Hardware M5Core

M5Stack no solo es el hardware inicial que apareció, sino que hay muchos dispositivos, hats y módulos de la familia M5Stack. A estos módulos se les denomina M5Core.

Core:

Módulos M5Stack: https://docs.m5stack.com/#/

  • Módulos de comunicación
  • Módulos de expansión
  • Módulos de driver motores
  • Módulos de faces

Bases: https://docs.m5stack.com/#/

  • Bases para los M5Stack
  • Bases para los Atom

Sensores: https://docs.m5stack.com/#/

  • Diverso tipos de módulos de cámara
  • Sensores I2C de todo tipo con conector grove
  • Extensiones de I/O
  • Comunicaciones
  • LEDs

C-HATs para M5Stick: https://docs.m5stack.com/#/

Application: https://docs.m5stack.com/#/

  • Diversos complementos y aplicaciones

Lista de productos: https://docs.m5stack.com/#/

Comparativa de productos: https://m5stack.oss-cn-shenzhen.aliyuncs.com/image/m5-docs_table/Product_compared.pdf

Tabla de I2C addresses: https://m5stack.oss-cn-shenzhen.aliyuncs.com/image/m5-docs_table/I2C_Address.pdf

Getting Started

Para empezar con los dispositivos de la familia M5Stack lo primero conectar al ordenador. Todos ellos tienen interfaz USB-C y es necesario instalar el driver 

Antes de grabar el programa, los usuarios de M5Core (incluidos BASIC / GREY / M5GO / FIRE / FACES) deben descargar el driver CP210X correspondiente según el sistema operativo que estén utilizando.

El soporte de la serie M5StickC/V/T/ATOM se puede utilizar sin driver, los usuarios pueden omitir este paso de instalación del controlador.

Drivers:

Establecer conexión serie:

EasyLoader es un programador simple y rápido, que tiene un programa de demo incorporado relacionado con el producto a programar. Se puede grabar para realizar una serie de verificación de funciones del módulo.

Easyloader:

La programación de la familia M5Core se puede hacer de las siguientes formas y trataremos cada una de ellas más adelante:

  • UIFlow – Para usuarios novatos
  • MicroPython – Para quien ya tiene conocimientos de programación general
  • IDE Arduino – Para usuarios avanzados o conocimientos de Arduino
  • Free RTOS – Para usarios avanzados

Documentación para programación:

Quick Start: https://docs.m5stack.com/#/en/quick_start/m5stickc/m5stickc_quick_start

M5 Education

Web http://m5edu.com/ 

M5 Understanding: http://m5edu.com/kb/1-m5-stack-understanding/

Manual básico de operación: http://m5edu.com/kb/2-basic-operation-manual/

Uso de Hardware: http://m5edu.com/kb/3-hardware-operation/

Operaciones: http://m5edu.com/kb/4-units-operation/

Operaciones Avanzadas: http://m5edu.com/kb/5-advanced-operation/

Video Tutorial: http://m5edu.com/doc/documentation-m5-video-tutorial/

M5Stack

Descripción del HW https://docs.m5stack.com/#/en/core/basic

Primera version del M5Core: https://www.youtube.com/watch?v=l-PnOi3tM1w

Es un dispositivo modular, apilable, escalable y portátil que funciona con un núcleo ESP-32, lo que lo hace de código abierto, de bajo costo, con todas las funciones y fácil para que los desarrolladores manejen el desarrollo de nuevos productos en todas las etapas.

M5Stack Basic consta de dos partes separables. La parte positiva tiene todo tipo de procesadores, chips y algunos otros componentes de ranura. La parte inferior tiene una batería de litio, toma M-BUS y clavijas extensibles en ambos lados.

M5Stack BASIC:

Características:

  • ESP32-based: 240MHz dual core, 600 DMIPS, 520KB SRAM, Wi-Fi, dual mode Bluetooth
  • 4MB Flash of SPI Flash
  • Built-in Speaker  1W, 3x Buttons,Color LCD, Power/Reset button
  • IPS Screen: 2 inch, 320×240 Colorful TFT LCD, ILI9342C, max brightness 853nit
  • TF card slot (16G Maximum size)
  • Magnetic suction at back
  • Extendable Pins & Holes
  • M-Bus Socket & Pins
  • Battery 110mAh @3.7V

Pinout:

Esquemático: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/schematic/Core/M5-Core-Schematic(20171206).pdf

Además de la versión Basic hay otras versiones con alguna característica adicional.

M5Stack GRAY: 

M5Stack Fire:

M5GO:

Faces Kit:

Vídeo: https://www.youtube.com/watch?v=l-PnOi3tM1w

Más información:

Módulos M5Stack

Algunos ejemplos de uso de módulos de M5Stack:

GPS:

Battery:

M5 Camera:

Más módulos: https://docs.m5stack.com/#/

M5StickC

El M5Stick-C es un mini M5Stack, basado en el microcontrolador ESP32. Es una placa de desarrollo de IoT portátil, fácil de usar y de código abierto. Además es muy económica costando menos de 10$.

M5StickC es una tarjeta de desarrollo ESP32 con una pantalla a color de 0.96 pulgadas TFT (resolución 80×160), LED rojo, 2x botones, Micrófono, transmisor IR, IMU de 6-ejes (SH200Q) y una batería de 80 mAh. El módulo ESP32 ESP32-Pico en el M5StickC tiene incluído 4MB de memoria flash. EL M5StickC también está equipado con una base y una correa para reloj, para que lo puedas usar en tu muñeca como un wearable.

Dispositivo:

Librería: https://github.com/m5stack/M5StickC 

Este pequeño bloque es capaz de realizar tu idea, iluminar tu creatividad, y ayudar con tu prototipo de IoT en muy poco tiempo. Eliminará muchos de los problemas del proceso de desarrollo.

M5stickC es uno de los dispositivos principales de la serie de productos M5Stack, que se construye en un ecosistema de hardware y software en continuo crecimiento. Tiene una gran cantidad de módulos y unidades compatibles, así como la comunidad de código abierto y de ingeniería que le ayudará a maximizar su beneficio en cada paso del proceso de desarrollo.

M5StickC Book: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/UIFlow-StickC-Book-English.pdf

M5StickC usa un chip USB FTDI por lo que no hace falta instalar driver en Windows, Linux y MAC. En caso de necesitarlo, el driver es: https://www.ftdichip.com/Drivers/VCP.htm.

Características:

  • 5V DC power supply
  • LCD screen – 0.96 inch, 80*160 Colorful TFT LCD, ST7735S
  • USB Type-C
  • ESP32-based (Wifi + Bluetooth)
  • 4 MByte Flash + 520K RAM
  • 6-Axis IMU MPU6886
  • Red LED
  • IR transmitter
  • Microphone – SPM1423
  • RTC – BM8563
  • PMU (Power Management Unit) – AXP192
  • 2 Buttons, LCD(0.96 inch), 1 Reset Button
  • 2.4G Antenna: Proant 440
  • 95 mAh @ 3.7V Lipo Battery
  • Extendable Socket
  • Grove Port
  • Wearable & Wall mounted
  • Development Platform UIFlow, MicroPython, Arduino

Esquemático: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/schematic/Core/M5StickC/20191118__StickC_A04_3110_Schematic_Rebuild_PinMap.pdf

Datasheets:

Un buen resumen sobre M5StickC: http://tinkerfarm.net/projects/the-m5stickc/

Cuidado con usar 5V en M5StickC: http://tinkerfarm.net/projects/the-m5stickc/the-5-volt-danger-with-the-m5stickc/

Accesorios M5StickC: http://tinkerfarm.net/projects/the-m5stickc/m5stickc-hardware-accessories/

Direcciones I2C en M5StickC: https://m5stack.oss-cn-shenzhen.aliyuncs.com/image/m5-docs_table/I2C_Address.pdf

  • 0x34 AXP192
  • 0x6C SH200Q
  • 0x51 BM8563
  • 0x68 MPU6886

M5StickC Pinout

Pinout:

Módulo AXP192 (Gestor de Energía)

Este dispositivo gestiona la batería interna del M5stick y se puede ver la carga y temperatura.

Datasheet: https://github.com/m5stack/M5-Schematic/blob/master/Core/AXP192%20Datasheet%20v1.13_cn.pdf

Datasheet: http://www.x-powers.com/en.php/Info/down1/id/29 

Librería: https://github.com/m5stack/M5StickC/blob/master/src/AXP192.h

Interesante: https://github.com/m5stack/M5StickC/blob/master/examples/Advanced/AXP192/PowerWake/PowerWake.ino, lee los valores y muestra por pantalla: voltaje batería, aps (el voltaje de carga) y el nivel de carga. También en caso de WarningLevel, avisa de baja batería por el display y al tercer aviso lo pone en modo sleep desde el módulo AXP192

Más interesante: https://github.com/m5stack/M5StickC/blob/master/examples/Basics/AXP192/AXP192.ino da toda la información de alimentación.

Esquema de bloques del módulo:

También gestiona la carga de otros dispositivos y se puede regular la corriente de carga.
Ver ejemplo hecho con UIFlow: https://github.com/jecrespo/M5StickC-UIFlow/blob/master/M5/M5StickC_Power_Control.m5f

Hats M5StickC

SPK Hat (Speaker): https://docs.m5stack.com/#/en/hat/hat-spk

ENV Hat (sensores ambientales): https://docs.m5stack.com/#/en/hat/hat-env

BugC HAT: https://docs.m5stack.com/#/en/hat/hat-bugc

RoverC HAT: https://docs.m5stack.com/#/en/hat/hat-roverc

JoyC HAT: https://docs.m5stack.com/#/en/hat/hat-joyc

18650C HAT: https://docs.m5stack.com/#/en/hat/hat-18650