Kotite and Oztalay's Kinetic Sculpture Pairs a Raspberry Pi and 40 MCUs with 80 Steel Balls
Raising and lowering 80 individually-addressable steel balls in concert with 172 RGB LEDs provides a mesmerizing effect.
Maker and artist Andrew Kotite and colleague Ben Oztalay have created an unusual volumetric display in which each pixel takes the form of one of 80 solid steel balls — suspended on independently-adjustable cables.
"This is a kinetic sculpture inspired by ART+COM Studio's The Shape of Things to Come," Kotite explains of the pair's creation. "It's an 8 by 10 grid of solid steel balls suspended on cables that can move up and down independently to create patterns and shapes. There are some features we're thinking about adding to the sculpture, like some sort of interactivity, or a way to pull in and display weather or other data."
"The balls are 30mm [around 1.18"] in diameter, spaced 50mm [around 1.97"] apart, and can move through a five-foot vertical space with an effective resolution of about 0.5mm [around 0.02"]," Kotite continues. "The bottom of the enclosure has 172 RGB LEDs to provide lighting, along with a limit switch above each ball for automatic homing."
The impressive sculpture is made up of four-motor modules, each of which has two STMicroelectronics STM32L062 microcontrollers responsible for two motors. Seven-pin connectors daisy-chain each module to make the full 8×10 grid, powering the modules and providing communication back to a Raspberry Pi single-board computer (SBC) which sits in overall control of both the movement of the balls and the running of the LED lighting system.
The modules live in a 3D-printed housing which aligns everything in place, with the motors running cables through a geared pulley system with an integrated 48-count magnetic rotary encoder and a homing switch to ensure it knows exactly where each ball — dangling from the cable under the motor — is positioned.
"Once per frame, the Raspberry Pi sends new target positions for each motor to all of the microcontrollers," Kotite explains of how the mesmerizing animation effect is achieved through a Python program running on the Raspberry Pi, written by Oztalay. "The motors won't start moving to those new positions until the microcontrollers see a rising edge on their sync in pins, which is ultimately driven by the Raspberry Pi after it's done sending all positions.
"The animations and patterns are written in separate Python files, using a shader-like API to specify ball positions. The API boils down to answering the question: where should the balls be at this time in the animation? Then the animation manager in sculpy.py just asks that question 20 times per second and sends the answers to the motors."
Kotite and Oztalay's full write-up is available on the project's Hackaday.io page, while a Python-powered simulator, released on GitHub under the permissive MIT license. lets you play around with writing animations yourself — without the need to dangle 80 heavy steel balls from your ceiling.