At the beginning
As a juggler, I first used commercial programmable glowing club. But I encountered some limits : no multi platform, no radio communication, no flexibility, no 9-Axis, but above all no possible communication with developers to improve clubs.Also I realized that it would be more fun and effective to make my own hardware : the clubs of my dreams ! or almost :),
I called them Rastello Club ( a glance at the famous Enrico Rastelli ).
- It should be open source, multi platform and easy to contribute.
- It should meet the requirement of a professional juggler. and at least mine :).
- it could be used by a community of users (all level of programmers), by flashing the adapted firmware.
To begin I will focus on 4 firmwares ( maybe the 1 & 2 can be merged) :
- You can select pre programmed sequences.
- The use of a simple grammar to allow you make your own program.
- Implement micro python, and let the user be free to deal with Python power.
- It is not really a firmware but a C-Api with drivers already implemented. Demanding developers would feel totally free to use them or bare metal program.
Communication overview
You maybe wonder :
Why did I choose a RFM75 2.4GHz radio module and not Bluetooth ?
Because most of the time Bluetooth is used in a piconet and a master can communicate with a maximum of seven devices. The other solution ( scatternets) is less documented for a juggler who doesn't know very well Bluetooth. Also the data rate of Bluetooth low energy is 1 Mbit/s ( according to wikipedia ) while my little, low-cost radio module is supposed to go up to 2 Mbit/s.
So why not Zigbee solution ?
I like XBee module and I often use it when I need to implement quickly a wireless communication. But finding a very small module that could hold on my thin pcb was difficult, and all the more as I looking for a cheap one ! So quickly, I abandoned this idea.
And a WiFi module ?
I think this could be a good idea, mainly because of the famous ESP8266. It's really cheap and exists in versions that were small enough. Moreover, it seemed that the community had done a remarkable job. In terms of data rate, I couldn't find any information. According to a guy on IRC, it would be better than radio modules he used. The wrong side for our application is that it uses much more current. Finally, I preferred keeping the RFM75, but kept the ESP8266 in the back of my mind, in case there would be no more solution. It would be also possible to replace the ARM cortex M by the ESP8266, but for this project, I prefer a mature, well documented, and comfortable microcontroller.
A note on the Raspberry pi bridge and softwares
This page focuses on the hardware, so I'll not go into details, but I must talk a little about the bridge and soft. As we use a radio module in the club, we can't communicate directly with a smartphone, a tablet or a computer without adding a radio transceiver too. But smartphones, tablets and computers can easily use WIFI or Ethernet. For this task, I used a Raspberry Pi, with Ethernet and a USB WIFI dongle ( for now it suits me), who acts as a bridge between WIFI / Ethernet and 2.4GHz Radio. Thanks to freakone, I could quickly have communications with a smartphone, and have a minimal web app in Node.js ( also a little of python for the UDP/TCP server) to change club's colors.
Nodes.js, HTML5... allows having easily a multi platform solution accessible in a simple browser. I think this is a perfect solution to make an app with configuration tools, survival tools and daily tools.
However, I don't intend to make "the big one" app ( with GUI, multitrack, audio... ) as a web app, for 2 reasons :
- I was not very much experienced in HTML5 and would be more efficient with QT / C++.
- the aim of the application is not to be used on a smartphone.
I have already started a preparatory work with QT5 and C++, but I remain open in case a HTML5 ninja would join the project. But it would be also cool, to have other applications dedicated to new tasks.
Early link to Rastello bridge : https://hackaday.io/project/11053-rastello-bridge
About the hardware
21 WS2812 RGB/RGBW LEDs( 3X6 led strip for the body and 3 on a custom pcb for the handle ).
MPU 9250, Nine-Axis( Gyro + Accelerometer + Compass).
STM32F411CE a 32-bit ARM CORTEX M4 with FPU running up to 100 MHz with 512 Kbytes of Flash and all we need...
USB Connector used to charge the 3.7 Volt Lithium Ion 14650 Battery,
but also used as a USB CDC ACM ( a serial port emulation) essential to set wireless. and also as USB DFU ( USB Device Firmware Upgrade ) used in the microcontroller bootloader to easily upgrade firmware.
32Mb to 128Mb Serial NOR FLASH Memory to store user program.
A 2.4 GHz Radio module Transceiver.
There is an SWD ( Serial Wire Debug) footprint on the pcb, that allow you to debug, and flash a new firmware ( significant if you break your bootloader).
A voltage supervisor ( thanks to Yann Guidon ), shut the the buck boost in case of voltage drops below the threshold voltage to protect battery.
A simple Battery monitoring.
Low-power consumption in mind.
you could take a look at the schematic...
About mechanics and plastic
Made very quickly to show inside body, ( I must order white heat shrink to the proper diameter ) :
PCB Rastello Ring V0.0 with 3 LEDs :
Inside overview:
For the inside of the proto, I used 12mm PVC rod for the handle and 20mm PVC tubing for the body. The central part and fixation are expanded PVC sheet. milled for now.
3d printing of the top with nylon :
This is not the right material, we need something which can absorb shocks, certainly an elastomer. A professional way would be injection molding, but price is professional too. So I would like to try to make a 3D printed mold, or a silicone mold of my part first.
For knob, body and handle we can find it easily as spare part in a juggling store.
Another way I would like to explore using recycled materials ( more info here ) :
The tools
I use as much as possible open source tools.
I apologize for missing software, I list mostly those who are significant for hardware collaborative work.
Design :
- PCB - KiCad
- 3D - FreeCAD
- 2D - LibreCAD
Code :
Development can be done on GNU/Linux, Window and OS X.
Later, propose a pre-configured GNU/Linux virtual machine, with all the tools and more... Could be pretty cool. Yes, like Crazyflie !
Where you'll find all about this project
For now here.
And soon on GitHub.
Later, I could set up a mailing list, if needed.
Some things to think about
being edited...
Early planning overview
It'll be adapted when needed.
- Send the new PCB ( version 0.1 alias Bob ) and the little round PCB with 3 WS2812 LEDs
- Begin to clean up the code for a collaborative work, also check that there was no license compatibility problem with the GPLv3.
- Soldering the new PCB and check each part.
- Publish the code on github and improve/finish writing drivers.
- Make the first video, and propose the first PCBs, to the developer who wish.
- Work on the configuration/emergency app ( #Rastello Bridge and USB CDC ACM ).
- Start of work on the first firmware.
- Start of work on the first Grammar.
- Implement micro python and start of work on this new firmware.
- Write "protocol adapters" for the most requested protocols ( Midi, OSC, DMX...).
- Publish Qt5 starting point, and start thinking and coding the "big app".
In parallel, improve the housing ( Club, and RPI bridge). And start a search works ( artistic, music , computer science, mathematics, pedagogical...) with other interested people.
About license
For Software I like GPL ( GNU General Public License ).
For Hardware, open source but I still need to read about existing possibilities.
Pending, I put a Creative Commons Attribution-ShareAlike. See below.
Resources, reference and interesting links
Juggling
- Beautiful juggling act with glowing club - Gandini
- Lightpainting Trailer - Jonglissimo
- Amazing passing with many clubs Juggling
By :
Manuel Mitasch, Christoph Mitasch, Daniel Ledel, Dominik Harant, Florian Canaval, Michael Canaval, Fabio Zimmermann and Valentin Helml - Smart Juggling Balls - Arkadi
- SmartProps - Unigamer
- LED Juggling Balls with Pattern Detection - Checkla
- Cyballs - Greg Warrington
- Augmented Juggling with IR multicamera - Damien Clergeaud
- Dels Dos Principis - ircam
- Juggling Ball Tracking with OpenCV in Python - Stephen Meschke
Electronic
- Li-Ion Battery Charger and Load Sharing - Microchip
- A Lithium Battery Charger with Load Sharing - Zak Kemble
- High Speed USB Platform Design Guidelines
LEDS
IMU
Code
- libopencm3 examples
- locm3-stm32-ws2812 - Piotr Esden-Tempski
- RFM73 for STM32F303 & Raspberry PI - Kamil Górski
- ( In French ) Le microcontrôleur STM32 - G Goavec-Mérou, J-M Friedt
- Projects based on libopencm3, ( Already a link to Rastello Club ! Thanks to the community).
- USB DFU exemple on the STM32F1
Mechanics
Rastello Club by BARATTERO Laurent is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.