Archivo del Autor: jecrespom

Acerca de jecrespom

Twitter: @jecrespom

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

Taller de Programación de Arduino por Bloques con mBlock

En este vídeo hago una introducción a la programación visual de Arduino con mBlock, que está basado en scratch 3.

Material necesario:

  • un ordenador o portátil
  • instalar mBlock 5 desde https://mblock.cc/en-us/download 
  • un Arduino UNO con su cable USB para programarlo
  • una protoboard
  • un LED y una resistencia de 220ohms
  • un pulsador y una resistencia de 10k ohms
  • un sensor de luz o LDR y una resistencia de 10k ohms

Kit iniciación usado: https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-2895.html 

mBlock

mBlock es un entorno gráfico de programación basado en el editor Scratch 3.0 para introducir de forma sencilla la programación y robótica en el aula.

Web de mblock: http://www.mblock.cc/ 

mBlock se compone de 5 partes principalmente:

  • Grupo de instrucciones clasificadas por colores en las siguientes categorías:
    • Movimiento: Conjunto de instrucciones relacionadas con el control de los pines de la tarjeta de Arduino, así como el control del movimiento de cualquier personaje del escenario.
    • Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza.
    • Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales.
    • Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria.
    • Control: Las instrucciones incluídas en esta sección son impresindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos.
    • Sensores: Instrucciones de iteración con el ratón, el teclado, sonidos y los personajes.
    • Operadores: operaciones matemáticas, lógicas y con cadenas de texto.
    • Variables: Instrucciones para el almacenamiento y gestión de datos.
  • Instrucciones de programación: Las instrucciones de cada grupo corresponden a instrucciones de programación.
  • Editor: Es la parte principal donde estructuramos y programamos nuestro programa.
    • Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos.
    • Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa.
    • Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos.
  • Escenario o ventana principal: Es el resultado de nuestro programa.
  • Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites.
    • Los objetos de tipo arduino son aquellos que interactúan con Arduino.
    • Los sprites son similares al entorno de scratch y no interactúan con Arduino.

Proyectos mBlock

mBlock Community https://planet.mblock.cc/ es la web donde se publican los proyectos de mBlock y donde podemos aprender mucho viendo otros proyectos o publicar los nuestros.

Mi usuario en mBlock donde publico los proyectos: https://planet.mblock.cc/u/1004089 

Proyectos del vídeo:

Más información de mBlock:

Iniciación a Arduino en 3 Directos de YouTube

En estos tres directos hechos en marzo de 2020 hago una iniciación a Arduino.

Primer Directo

Hablo de:

Enlaces del vídeo:

Segundo Directo

Hablo de:

  • Uso de una pantalla LCD con Arduino
  • Instalar una librería
  • Funciones Arduino
  • Debug de un Sketch de Arduino

Enlaces del vídeo:

Tercer Directo

Hablo de:

Enlaces del Vídeo: