La familia M5Stick está compuesta por dispositivos ‘listos para usar’ que integran una potente CPU con una gran cantidad de periféricos, lo que los transforma en herramientas geniales para desarrollar distintos tipos de proyectos. En esta serie de artículos, te mostraré las características principales del M5StickC Plus2, cómo programarlo de manera sencilla en UIFlow y cómo aprovechar su potencial para que desarrolles tus propias aplicaciones.
Introducción
Como te conté en un artículo anterior, M5Stack nos ofrece una amplísima variedad de controladores y módulos periféricos que nos permiten desarrollar distintos tipos de aplicaciones de una forma rápida y sencilla.
Si eres un hobbysta o estudiante que quiere aprender a programar sin complicarse con el hardware, o si eres un profesor que quiere interesar a tus alumnos en las aplicaciones prácticas del Internet de las cosas, la robótica o incluso la inteligencia artificial, estos dispositivos son ideales, porque resuelven en gran medida y de una manera simple el hardware necesario y nos brindan muchas herramientas que nos permiten enfocarnos en el nivel del software y la aplicación.
En este tutorial, dividido en partes, te voy a dar los detalles de un miembro destacado de la familia M5Stack, el M5Stick C Plus2, un módulo que integra una gran cantidad de periféricos que lo hacen sumamente versátil. Te contaré cuales son sus características, cómo puedes programarlo y te mostraré paso a paso como prepararlo para desarrollar aplicaciones de una forma super simple empleando el lenguaje gráfico UIFlow. Finalmente, te mostraré un ejemplo que demuestra que sencillo es tener funcionando una aplicación en muy poco tiempo.
Características
El M5Stick C Plus2 es la última versión (por ahora) del M5Stick, un módulo listo para usar o autocontenido que integra una CPU ESP32 con una multitud de chips especializados en distintas funciones.
Veamos cuales son sus caracteristicas:
CPU: ESP32 (ESP32-PICO-V3-02-Base)
- Dual Core, 240 MHz
- Conectividad: Wifi (2,4 GHz), Bluetooth V4.2, BLE
- RAM: 2MB PSRAM
- Flash: 8MB
Periféricos incluidos:
- IMU -acelerómetro mas giróscopo- de 6 ejes (MPU6886)
- Transmisor infrarrojo
- Microfono (SPM1423)
- RTC -reloj de tiempo real- (BM8563)
- Tres botones de uso múltiple
- LCD TFT (1.14 pulgadas, 135*240 pixeles, ST7789v2)
- Bateria LiPo de 3,7V y 200mAh
- Buzzer pasivo
Conexiones al exterior:
- Conector de expansión: Pines G0, G25/G36, G26 del ESP32
- Conector Grove: Pines G32, G33 del ESP32
- USB-C para alimentación (5V) y programación
Montaje:
- Wearable y sobre pared con soportes o imanes.
Ampliación:
- A través de HATs (módulos específicos para M5Stick) en el conector de expansión.
- Usando el conector tipo Grove (I2C+GPIO+UART)
El conector Grove
Si bien los distintos controladores de M5Stack tienen distintas formas de conectar con sus módulos de ampliación y periféricos, un elemento en común a todos ellos es el conector Grove, así que me parece que se merece un apartado para explicarlo con mas detalle.
El conector Grove no es un estandar en el sentido en que no está definido por una norma, pero se ha hecho popular y son varias las marcas que lo incluyen en algunas de sus placas, como Adafruit, Seeed, Arduino, Raspberry y M5Stack, claro.
Fué introducido por la empresa Seeed Studio en el año 2010 con la idea de facilitar la conexión de distintos módulos que pueden contener sensores o actuadores de distinto tipo a una placa base o CPU.
El siguiente video hace un breve introducción a este sistema:
El conector Grove tiene un paso de 2mm y cuenta con 4 pines, de los cuales dos se reservan para la alimentación (VCC y GND) y los otros sirven para entradas y salidas, tanto digitales como analógicas o como pines de un protocolo de comunicaciones tal como UART o I2C.
Si bien la asignación de los pines de alimentación está claramente definida, el uso de los otros dos pines puede variar considerablemente entre distintos fabricantes.
En el caso particular de M5Stack, el conector Grove se asocia con un puerto (Port) de conexiones que puede ser de uno de estos tres tipos:
- A (rojo) para conectar módulos que usen el protocolo I2C.
- B (negro) es del tipo GPIO, para conectar entradas o salidas digitales o analógicas.
- C (azul) para módulos o placas que se comuniquen empleando el protocolo UART.
De todos modos, en algunos casos (como en el M5Stick), el puerto es “multiuso” y puede funcionar en cualquiera de los tres modos descriptos mas arriba.
Programación
El M5Stick C Plus2, como los otros integrantes de la familia M5Stack pueden ser programados de distintas maneras:
- Arduino
- Micropython
- UIFlow
- .NET nano framework
Antes de poder programarlo en cualquier de esos lenguajes, debes instalar un firmware específico. En la segunda parte de este tutorial te explicaré paso a paso como instalar el firmware de UIFlow.
Conclusiones
Los dispositivos de M5Stack y particularmente el M5Stick son excelentes para encarar proyectos en distintas áreas, aunque se destacan en especial en aplicaciones de IOT (Internet de las cosas). El M5Stick incluye una rica variedad de chips especializados que permiten realizar muchos proyectos útiles y divertidos sin conectar absolutamente nada mas, aunque tiene la posibilidad de ampliar su funcionalidad conectandole HATs y módulos adicionales.
En esta primera parte de este tutorial desarrollé las características principales del M5Stick y sus posibilidades de interconexión. En la parte 2 te mostraré con detalle como instalar y comenzar a usar el lenguaje gráfico UIFlow para que empieces a escribir tus propios programas.