TiltyBot is a tabletop robot built using an ESP32 (TinyPICO), Dynamixel XL330 motors, and an Anker power bank. This project enables simple two-motor driving and tilting behavior, with optional extensions of camera and voice command features.
This repository provides a step-by-step guide for running TiltyBot: a compact tabletop robot designed for human-robot interaction (HRI) research, prototyping, and creative exploration. Whether you're a researcher, student, or hobbyist, this repo is designed to be reproducible and easy to build on.
- Hardware Requirements
- Software Requirements
- Getting Started
- Flashing the Code
- Running the Robot
- Wi-Fi Instructions
- Powering the Robot
- Optional Extensions
- ESP32 TinyPICO
- 2× Dynamixel XL330 servo motors
- USB breakout cable
- Anker USB power bank
- Breadboard + jumper wires
- Laptop for development
- PlatformIO (installed via VSCode extension)
- Arduino framework for ESP32
- Serial monitor (built into PlatformIO)
- Git
-
Clone the repository
git clone https://github.com/your-username/tiltybot.git cd tiltybot -
Open in VSCode
- Launch Visual Studio Code
- Open the tiltybot folder
- Install PlatformIO
- Install the PlatformIO extension for VSCode
- Connect Your TinyPICO
- Use a USB-C to connect your TinyPICO board to your computer
- Select the .cpp File to Run
In platformio.ini, locate the build_src_filter section.
- Uncomment the file you want to run by removing the ; at the beginning of the line
- Comment out the others by adding a ; at the beginning
Only one .cpp test file should be active at a time.
- Build the LittleFS Filesystem
- In the PlatformIO sidebar:
- Click “PlatformIO: Build Filesystem Image”
- Upload Filesystem
- Click “PlatformIO: Upload Filesystem Image”
- Upload Code to the Board
- Click “PlatformIO: Upload” to flash the code
- Open Serial Monitor
- Use the built-in PlatformIO serial monitor
- Set the baud rate to 115200
Each .cpp file demonstrates different functionality:
- 2motor.cpp: Controls either wheel using a button-based web interface.
- tilty.cpp: Controls the robot in a tilting motion using your phone's GPS.
- drive.cpp: Controls motion control with button-based web interface.
⸻
- Edit network.h
Select the "YOUGROUPNAME" wifi on your phone.
- Upload and Monitor
- After uploading, check the Serial Monitor for:
- The SSID name
- The IP address (usually something like 192.168.4.1)
- Connect via Phone
- On your phone, connect to the robot’s Wi-Fi SSID
- Enter the IP address in your mobile browser to open the control interface
- A warning will show up asking if you would like to proceed, click on Advanced options and proceed anyway.
⸻
Once you’ve tested via USB: 1. Disconnect the TinyPICO from your laptop 2. Plug it into a USB power bank (such as an Anker portable charger) 3. The robot will boot and run on power, and you can still control it from your phone.
Notes
- Only one source file (*.cpp) should be active at a time
- If you plan to extend this with camera and microphone functionality (e.g. Whisper / Browser Speech Recognition for speech), integrate it after the base mobility works!
TiltyBot is designed to be modular and extensible. Once the core mobility is working, you can build on top of it with additional features.
Control the robot using spoken commands directly from a web browser.
This feature uses the Web Speech API for browser-based voice recognition. It’s lightweight, compatible with most devices, and does not require a backend or cloud setup.
For full setup instructions and implementation details, see the Voice Control Extension.