At one of my co-op work terms, the company had a 3D printer that was used for printing various fixtures as well as faster prototypes. The printer was stationed in a supply closet, so they asked me to use an old ethernet camera so the print’s progress could be monitored remotely. After looking into it, I became a self-made victim of scope creep and decided to add in remote access to the printer interface through an open-source tool called Octoprint.
Features of the final build:
- Octoprint on a Raspberry Pi which provides the following (as seen in Figure 1):
- Webserver file upload for remote printing (as opposed to moving around a physical SD card)
- Remote control of the gantry, temperature of the bed and nozzle, and ability to start/stop prints remotely.
- Two pan-tilt-zoom cameras that have their live feeds embedded into Octoprint’s web interface:
- The buttons were created by editing Octoprint’s config.yaml file under the “controls” section. The buttons then sends a dummy gcode command, which the printer ignores. A plugin for Octoprint called GCODE System Commands reads the dummy gcode and the parameters attached to it, then calls a bash script on the Raspberry Pi linux system. This script makes API requests to the specified camera to tilt, pan, or zoom, and by how much.
- This system allows embedded control of both IP cameras without the user having to leave Octoprint’s interface.
- A Telegram plugin for Octoprint that allows text notifications and commands.
- Seriously, this plugin is amazing. Being able to request a GIF of the live print feed to your phone is pretty amazing! You get a notification when the print is done, and you can even abort the print if you notice that it has started creating spaghetti.
- Thorough documentation of all the custom scripts and the process required to update the server, and backups of the essential files
Have you set up remote access to your 3D printer? I highly recommend it!