Interact with Your 3D Printer Using an NES Controller

Check out MechaNickW’s guide on how to connect an NES controller to a Raspberry Pi for use with OctoPrint.

The whole point of a 3D printer is that it fabricates parts automatically, with no manual control from the user necessary. Except, that isn’t quite true. The printing process may be automatic, but the user still needs manual control for several tasks, such as changing filament or leveling the build plate. For that reason, most 3D printers include at least a small LCD screen and buttons for a control interface. But MechaNickW built his own printer and never added those. Instead, he chose to have fun with it and set up an NES controller for manual interaction.

MechaNickW built a custom delta 3D printer himself and it relies on OctoPrint, which is open-source software for managing 3D printers. OctoPrint includes a web interface that users can take advantage of when performing most necessary manual tasks, but it feels a little bit clumsy to work with a printer through software buttons on a smartphone. Physical controls just feel more natural and an NES controller can provide those.

Modern video game console controllers are sophisticated devices. They contain microcontrollers that register button presses, then communicate button states to the console. The NES controller, like its brethren from the era, was much simpler. The console reads buttons directly through a shift register, which means the hardware inside the controller is very easy to hack.

In this case, MechaNickW wanted a Raspberry Pi (which runs OctoPrint) to read the control button presses through its GPIO pins. A Raspberry Pi can interface with an NES controller’s shift register, but MechaNickW wanted a direct connection between each button and a GPIO pin order to use the OctoBuddy plugin.

For that reason, MechaNickW removed the NES controller’s shift register and connected a wire to each button pin. He first connected those to an Arduino UNO R3 to for testing. Then, after verifying that they worked as expected, he connected them to his Raspberry Pi through a Adafruit Raspberry Pi Cobbler (a GPIO breakout). From there, he configured OctoBuddy with the buttons on each GPIO and tied them to printer control actions, like jogging the axes. Finally, after confirming everything worked, he connected his cable directly from the NES controller to the Raspberry Pi.

Vintage controllers like this are good, affordable options for interacting with microcontrollers and single-board computers. Give them a try!

Cameron Coward
Writer for Hackster News. Proud husband and dog dad. Maker and serial hobbyist. Check out my YouTube channel: Serial Hobbyism
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles