He was inspired to create the project by two prominent YouTubers. “Michael Reeves made a video using a Bop It as an alternative interface to Hawaii’s nuclear alert system. This inspired me to use a Bop It, or similar device, as an input for something it was not designed for,” he says.
“Another creator, Technoblade, has an old video where he beat Minecraft hardcore, the most challenging difficulty, with a steering wheel. I was watching this a while back and then the idea of playing Minecraft with a Bop It just came to me.”
Buttons to Pico to USB
To turn his Bop It XT into a controller, Seth first took the case apart and removed the existing PCB, replacing it with a Raspberry Pi Pico. All of the Bop It’s controls link to simple momentary push-buttons, which meant he could simply wire these to digital GPIO inputs on Pico.
When an internal push-button is pressed, it triggers Pico to send the corresponding keyboard command over USB. “Pico can act as a USB device, meaning, as far as the computer running Minecraft knows, it is a normal keyboard,” he tells us.
In addition to the button inputs, he installed an accelerometer in the Bop It. This connects to Pico over I2C. “[Pico] reads the acceleration vector, does some simple vector math, and uses that to send mouse commands over USB,” explains Seth. “The fact that Pico can so easily be programmed to act as a keyboard and mouse at the same time made this project possible.”
Develop and debounce
The project took Seth two days to develop. “The first day I opened the Bop It, analysed how the inputs interface with the control board, wired the circuit, and wrote a basic program to make sure my wiring was correct,” he recalls.
“The next day, I wrote the main control program. I then played Minecraft with it and made minor changes over the next few days when I had a few hours free.”
The most challenging element for Seth was the programming as, although an accomplished Python coder, he was using CircuitPython for the first time. “That said, it made the USB functionality surprisingly easy.”
The trickiest part of the program was the debounce timers he had to code for each button, to ensure they only trigger once each time they’re pressed. “This was especially important for the buttons that moved in the hotbar and the right-click button that is used for eating and placing blocks,” he notes. “The Bop It made this difficult as some of the buttons are challenging to quickly press, meaning the code would toggle them multiple times as though they were being held down. If I increased the timer too much, it would limit the frequency I could press them. I was able to get all the timers to work, but it did take some fiddling.”
The end result works surprisingly well for playing Minecraft, as demonstrated in his YouTube video – particularly the tilt control for movement, Wii Remote style. Not bad for a project he describes as being “made as a joke from the start.”