Dancing Robot with Bracelet Control

Chonghui Chen

Project Description

The wearable bracelet will have an Arduino Nano 33 BLE Sense to detect arm movement and some LED lights. The lights are decorative and will also light up according to the movement. It will send these detections as bluetooth signals to another Arduino that controls a dancing robot and a music player.

Movements and reactions:

Timeline

Nov 1: Settle on the design and schematics of the bracelet and the robot arm

Nov 6: Decide on the parameter readings and make bluetooth working

Nov 14: Make the circuit for the music player, the robot arm, and the LEDs on the bracelet

Nov 26: Assemble the parts

Dec 5: Program the responses according to the readings

Dec 10: Final adjustments

Progress Log

LED Bracelet

It consists of an Arduino Nano 33 BLE Sense, an Arduino Nano Every and a LED strip.

The Nano 33 BLE Sense functions as the sensor that detects the hand movement of the user and their gesture control of the music player. It does calculations over the accelerometer values to determine how intensely the user is moving and then pass the movement level as a parameter to other components. For gesture recognition, I use the gesture sensor embedded on the board. The LED strip is driven by the neopixel library, which doens't compile on Nano 33 BLE Sense, so I decided to use a Nano board to drive it. BLE Sense communicates to the Nano board with 6 connected digital pins. The two boards have common 5v input and ground connections, so when BLE Sense writes high to one of its digital pins, Nano will read high from the corresponding digital pin.Because I need the gesture control sensor, I can't conver the BLE Sense board with the black felt covering other parts.

The default pattern on the LED strip is a rainbow chase pattern that moves. Its speed relates to the movement of the user, although it is hard to notice since the user is moving. The user can use gestures to control the music: left/right for play/pause, up for next song and down for previous song. The LED strip flashes different colors after detecting the gestures: red for play/pause, yellow for next song, and blue for previous song.

Dancing Robot

The robot is inspired by this design:

The robot consists of laser cut pieces as the body, 4 motors for the legs and a 8x8 LED matrix as its face.

The laser cut design is as follows, which took several iterations to get the sizes right:

The robot responds to the user's movement. If the bracelet is stationary, it stays still. If the bracelet moves a little bit, it moves slowly, and it moves fast when the bracelet moves fast too. Its facial expression corresponds to the three different movement levels.

The full setup of the robot consists of an Arduino Nano 33 BLE as the BLE receiver from the BLE Sense on the bracelet, which then passes the information to an Arduino Uno that controls the robot because the servo motor library doesn't compile on Nano BLE.

Music Player

The music uses an SD card to store the music and TMRpcm library to play the music, which output the music through speaker pin 9 on Arduino Uno. The Arduino takes its input from the BLE board as well. However, because the LED matrix and the SD card both use SPI protocol and the SD card module I use disable other SPI devices on the same Arduino, I would need two BLE receivers for both of them. So I got them working separately.

Video Demo