BALA ESP32 Development Mini Self-balancing Car

via M5Stack
$173.75
SKU M5-K014-B
Description

BALA is short for 'Balance', like its namesake, BALA is a Self Balancing Robot consist of a M5 FIRE and two wheels(DC motors).

This Application product comes with preloaded software, a self-balance robot application. While there are lots of open source code on Arduino as well, We especially encourage you to modify and enhance the code yourself.

This Self Balancing Robot is a Two-wheeled Robot that balances vertically using a closed-loop algorithm. This Self Balancing Robot Features various modes like Position Hold, Simple Mode, Rise Mode and Joystick Control. This Robot is controllable by a Smartphone device or a Transmitter. Self Balancing robot uses data from the Accelerometer and Gyroscope to correct its orientation and position.

The 2 DC driver module communicates with M5Stack FIRE through I2C bus. It's default I2C address is 0x56.

Product Features

  • Programming Support
    • Python
    • UIFlow (Blockly)
    • Arduino
  • Compatible LEGO
  • POGO Pin
  • TF Card Support

M5Fire PARAMETER

Model M5Stack FIRE
ESP32 240MHz dual core, 600 DMIPS, 520KB SRAM, Wi-Fi, dual mode Bluetooth
Flash 16MB Flash + 4MB PSRAM
Input 5V @ 500mA
Interface TypeC x 1, GROVE(I2C+I/0+UART), Pogo Pin x 1
LCD 2 inch, 320x240 Colorful TFT LCD, ILI9341
Speaker 1W-0928
Microphone MEMS Analog BSE3729 Microphone
LED SK6812 3535 RGB LED x 10
MEMS MPU9250 (MPU6500 + AK8963)
Battery 550mAh @ 3.7V, inside
Op.Temp. 32°F to 104°F ( 0°C to 40°C )
Size 54 x 54 x 21 mm
C.A.S.E Plastic ( PC )

Kit includes

  • 1x M5Stack BALA
  • 1x Motor Driver
  • 2x N20(Encoder included)
  • Type-C USB Cable

Learn

Prepare

Development Environment

  1. UIFlow
  2. Arduino IDE

UIFlow

  1. Download UIFlow firmware - How to dowmload Firmware
  2. WiFi Configuration - How to Connect wifi on M5Core
  3. Find the POGO Pin, and stack M5Core over M5Bala wheel.

  1. Click the Red button on the side of M5Core (double click for shutdown).

  1. Click the button on the side of M5Bala bottom to power on (double click for shutdown).

  1. Open UIFlow website, and switch programming language from Blockly to Python.

  1. Copy the following code to UIFlow and then click Download.
from m5stack import *
from m5ui import *
from m5bala import M5Bala
import i2c_bus
clear_bg(0x111111)

m5bala = M5Bala(i2c_bus.get(i2c_bus.M_BUS))
btnA = M5Button(name="ButtonA", text="ButtonA", visibility=False)
btnB = M5Button(name="ButtonB", text="ButtonB", visibility=False)
btnC = M5Button(name="ButtonC", text="ButtonC", visibility=False)
title0 = M5Title(title="Title", fgcolor=0xFFFFFF, bgcolor=0x0000FF)

title0.setTitle('calirate start')
wait(2)
sampleCount = 2000
gyroXSum = 0
gyroYSum = 0
gyroZSum = 0

for _ in range(sampleCount):
    gyroXYZ = m5bala.imu.gyro
    gyroXSum += gyroXYZ[0] # X
    gyroYSum += gyroXYZ[1] # Y
    gyroZSum += gyroXYZ[2] # Z

gyroXMean = gyroXSum / sampleCount
gyroYMean = gyroYSum / sampleCount
gyroZMean = gyroZSum / sampleCount

m5bala.imu.setGyroOffsets(gyroXMean, gyroYMean, gyroZMean)

title0.setTitle('balance start')
while True:
    m5bala.balance()
    wait(0.001)

Arduino IDE

  1. Setting Arduino development environment - Establish Serail Connection - Get Started with Ardino IDE

  1. Install m5stack library in Library Manager.

  1. Install RGB LED Bus library in Library Manager.

  1. Install MPU6050_tockn library in Library Manager.

  1. Make sure that M5Core has connected to PC, then click Tools -> Port for selecting the corresponding serial port on Arduino IDE.

  2. click Tools -> Board: to select M5Stack-Core-ESP32 or M5Stack-Fire.

  1. Clone M5Bala by shell command. If you dont't have Git installed yet, click here and install it.
git clone --recursive https://github.com/m5stack/M5Bala.git
  1. Click Sketch -> Include Library -> Add .ZIP Library... . select M5Bala you just cloned from github.

  1. Open a bala example: Click File -> Examples -> M5Bala -> Basic.

  1. Compile and upload.