Back to Project Index


Development Process | Materials + Templates | Brainstorming

Brainstorming of Possible Features

Electronic juggling balls that:

  • Detect catches and 🆕 peaks
  • Light-up, supporting: (1) a variety of colors and (2) color patterns (flashing, solid) that respond to catches and peaks
  • (Stretch) 🆕 Piezo buzzer that responds to catches and peaks
  • (Stretch) Detect siteswap pattern changes 🆕 on-board
  • (Stretch) 🆕 Speaker w/ pre-recorded effects (e.g. say "Juggle Me!" when idle, play music while pattern going)
  • (Stretch) Can be re-programmed via Bluetooth
  • (Stretch) Can transmit throws/catches via Bluetooth, for easy prototyping of interactions
  • (Stretch) 🆕 Can be thrown between participants
  • (Stretch) 🆕 Detect when they are held next to each other (as in when starting, two held in one hand)
  • (Stretch) 🆕 Light up which ball should be thrown next
  • (Stretch) 🆕 Can be used as an interface for VR or AR juggling
  • (Stretch) Intelligently count throws/catches, some effect when a new high score (personal best) is reached

Notes from Talking with Jiri

  • Radio - wifi, BT / BTLE (pros - phone connection), 2.4ghz (e.g. NRF24l01) - maybe easier - open spaces (can reach 1km)
  • Arduino vs. others? Arduino bootloader
  • Processor - better to pick something more powerful ATMEGA (e.g. ATMEGA328P-AU-ND), more memory might help
  • RGB-LEDs
  • Power - lithium polymer batteries (over-charging can explode - discharge too much, destroys it). Re-chargable
  • Charger - plug in USB to charge
  • Accelerometer - acceleration - linear motion
  • Gyroscope - velocity - rotational
  • Accelerometer + gyro - fusion with Kalman filter
  • IMUs - do the combination
  • LSM6DS33TR is an option, or there might be a sensor that does the fusion on-board
  • AltIMU-10 v5 produces absolute rotation https://www.pololu.com/product/2739
  • Probably start with accelerometer, catches
  • Take absolute value of the vector (ignore orientation) - 9-10 when holding, throw it (small peak), 0, catch (some peak), then 9
  • Gyro - twist to force some change

Notes from Talking with Neil During Class Review

  • https://www.smooth-on.com/product-line/sorta-clear/
  • https://www.adafruit.com/product/414
  • Hall effect sensor - Magnetometer - could be useful for distance (up/down), touch or not
  • 5 hall sensors - VG joystick
  • Round Fabduino: http://fab.cba.mit.edu/classes/863.10/people/shelby.doyle/13-1.html
  • 3D accelerometer - i2C protocol
  • ADXL343 - reflow
  • solder paste or tin board
  • 6DOF: https://www.robotshop.com/en/6-dof-gyro-accelerometer-imu-mpu6050.html

Power Management

Battery Capacity and Type

I started out by calculating the power requirements of the board and components I would be using.

According to this site, the ESP32-WROOM consumes about 50 mA in the mode I would be using it in.

It's possible the LEDs and accelerometers would increase the consumption past this, but I assumed the processor would be the bulk of power consumption.

By that calculation, a 100MaH battery will give us 2 hours of runtime, and a 400mAh would give 8 hours.

In testing with a single color LED and capacitive touch listening, I found that estimate to be roughly true -- 2000mAh battery resulted in around 18-20 hours of runtime.

I'm starting development with a 2000mAh battery, and hopefully the JST connectors will make it easy to play with different sizes.

Jiri warned me that lithium polymer batteries can explode when over-charged, and if discharging too much, they can be destroyed.

Handling Recharging

Since the board and battery will be inside balls, ideally we could recharge the battery through a single cable entry point.

At Micro Center I came across the Adafruit PowerBoost 500 Charger that takes a USB Type-B cable and provides consistent 5 volt power to a board: