Archivo de la etiqueta: RoverC

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:

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