This is one topic in a series of what I’m calling “money pit” projects. To be fair, it’ll be money and time pit topics, and nothing that you’d really have to get a second mortgage on your house to do… but things always get a bit out of hand.
This project is the 3D Printing project. Expect it to be an ongoing series, and I’m hoping to have some friends join the effort and offer their feedback as well. Links and prices are accurate as of November 2020, and may get updated in the future… but don’t count on it.
See the previous parts for the lead-in to this project. From here we’ll get into the enhancements and early printing.
- The back story, the rationale, and the assembly
- First round of enhancements
- A quick sidebar on my 3D printing (mis-)adventure
Octopi / OctoPrint
The first day or two, I was running out to the garage to check on prints, and shuttling the included 8GB MicroSD card back and forth to load print files onto it. Since the only storage the printer has is this MicroSD card, I couldn’t add files during a print run, and it got somewhat tiring.
OctoPrint is an open-source management program and web front-end for many/most 3D printers. It communicates with the printer over a USB cable. It can be installed on a Linux, Windows, or MacOS computer. However, you might not want to dedicate a full-sized computer to this task.
OctoPi is a Raspbian (Raspberry Pi Debian image) based distribution with Octoprint and the video streamer software included. you just need a Pi 3B or later board (and case and power supply) and an SD card with OctoPi installed. Older boards will work, but with the camera option or other intense plugins (like gcode viewers) you won’t like it according to the folks behind OctoPrint and OctoPi.
When you’ve installed OctoPrint / OctoPi and connected it to your printer, you’ll be able to see the status of the printer, the active print, environmental details, and (with a camera like the PiCam or any supported USB camera) the actual motion of the printer.
You can also upload gcode files to the OctoPi instance, storing them on the internal storage of the Pi. Note that you lose some of the progress details on the Ender LCD display (and the power outage recovery feature) but
There is a thriving plugin ecosystem as well, so if you want to run multiple cameras, have a fancier gcode previewer, or add all sorts of other features, the options are there.
Building your OctoPi
We’ll look at options here for your Raspberry Pi board, flash card, cable, camera, and case.
You can buy pre-collected kits from various worldwide sources on the Octoprint website, but you may be better off just building your own.
Amazon of course has a number of starter kits from CanaKit and Vilros that would be good choices, from a $60 CanaKit Pi3B+ kit with case and power supply or a Vilros Pi 4 kit from $64.
If you’re planning to mount your OctoPi to the printer (see below), you will probably just want the Pi, maybe a fan, and a power supply. CanaKit still sells the 3B with a 2.5A power supply and two heatsinks for $48. There’s a 3B+ board only for $41.90, but for a buck more you can get the 2GB Pi 4B or go to $55 for the 4GB Pi 4B.
I have not felt limited by my 3B non-plus Pi, but it probably doesn’t hurt to go with a newer board if you’re going to be buying it new anyway.
You will want at least a 16GB MicroSD card (U1 Class 10 or better). I had a 64GB Samsung Evo card ($12.45) handy so I put it in there, so I probably won’t run out of space anytime soon. And OctoPrint contains a web-based backup option to save your entire image, or you can access your files via ssh/scp/rsync however you like.
You will need a mini-USB cable (yes, mini, not micro) to connect to the controller on the Ender 3 Pro printer. The AmazonBasics USB 2.0 A-Male to Mini-B cable is fine for this, or anything you may have from ancient cameras or other devices. A 3-foot cable should be enough, unless you’re mounting your OctoPi pretty far away.
Caveat with the Mini-USB cable: The printer’s motherboard and display will remain powered by your Raspberry Pi over this cable, even if you turn off the power supply to the printer. You can tape over pin 4 in the USB-A connector if you prefer, or you can use a buck converter to power it from the printer’s power supply to have it turn off when you shut off the printer. You can also script USB power control on the Pi itself if you prefer. This will probably be more of an annoyance than an actual problem, unless your printer is anywhere that you might want darkness.
You will probably also want a camera. I went with the official Raspberry Pi Camera v2 with case/stand ($32.99). If you know you’ll be using a 3d-printed camera mount, you can go with a camera without the case for more like $24. You can probably use most modern USB webcams as well; I connected one of the old Cisco-branded Logitech ball cameras during a period of quirkiness from my PiCam. The tiny ribbon cable on the front of the Pi camera had come loose, so the camera wasn’t being recognized by the Pi. Easy mistake to make.
Mounting your OctoPi to the Printer
As far as mounting the OctoPi to your printer is concerned, there are a couple of options. You don’t have to mount it on the printer; I had mine sitting on a nearby computer case originally, and it worked. But with the rails of the printer having convenient slots for things to be attached, why not attach them?
Single rail – mount on one of the upright rails (i.e. over the power supply – don’t block the Z rail though)
- robstall on Thingiverse has an Ender 3 Pro Z Axis Raspberry 3 B Case and Camera Mount that I’m halfway using and will probably migrate to. The camera mount attaches to the frame without removing any pieces, snapping over one of the rails. The case easily mounts above the power supply keeping your Picam cable out of the way.
- Tested3D on Thingiverse has a Raspberry pi 2/3 base with 2020 Slot, a compact single rail model that has the Ethernet and USB ports sticking out above the level of the case.
- lainchy has an Ender 3 OctoPi 3B+ case that uses screws/bolts and bits to attach to the rails, good for placing under the LCD display control panel. .
Double rail – mount on the right rail to the left of the LCD panel (or the left rail facing the other way if you prefer)
- Right now I am using the Ender 3 Raspberry Pi 3 mount 2 rails – LM2596 remix
dual rail case by SoBaldrick ( https://www.thingiverse.com/thing:3191174/ ) which has room for a fan and a buck converter for stepping down power from the Ender power supply (i.e. to drive your Raspberry Pi itself). - There’s an Ender 3 Dual Rail Raspberry Pi 4 case remixed from SoBaldrick’s version by iiianydayiii if you go with a newer board.
- If you don’t need the extra space, consider platonal’s Raspberry Pi 3B+ case for Ender 3 dual rail Octoprint.
Of course you can use any other type of case and mount it separately from the printer if you prefer. In that case, pick any of the thousands of Pi cases to fit your needs.
Setting up Octoprint
For the most part, OctoPrint is plug and play. You’ll choose a printer profile to match your printer, check the Features settings to fit your preferences, make sure undervoltage detection is enabled under Pi Support, and enable the webcam if it isn’t pre-enabled. See the Octoprint site for more details.
You may also want a mobile app for the OctoPrint system. I use OctoPod for iPhone and OctoRemote for Android myself, but there are other options out there. In the settings menu you’ll go to Application Keys and set up a key for each client, using the app to scan the QR code in OctoPrint’s menus to enable access.
Note that you must have network access to the OctoPi to use these clients (or the web interface for that matter; if you leave the house you won’t be able to control the printer over the Internet unless you have the printer exposed (BAD IDEA DON’T DO THIS) or unless you have a VPN into the network your OctoPi is on (beyond the scope of this post series of course).
What’s next?
At this point you’ve set up your printer, made or purchased a couple of essential upgrades, and configured your OctoPi for web-based (or app-based) control of your printer.
You’ll probably want to install a slicer (a program that turns STL model files into GCODE which your printer uses to actually print the objects). Creality Slicer is included on the microSD card that came with the printer, but you may find Cura or other products to be more useful when you outgrow it.
For the first spool or two, just use Creality Slicer to prep your prints, and see how it goes. You can resize objects, combine items into one print batch (as long as they fit the bed), and change temperature and layer settings as needed as you get used to the printer.
Some common starting prints that can be fun include:
- MatterHackers’ Mascot Phil A Ment – you may want to resize this, and it can be a good test for new filaments or beds.
- #3DBenchy – called the “jolly 3D printing torture-test.” It has a dozen or more interesting characteristics for testing your printer setup.
- You might consider printing 2010’s Pi Zero rack, designed to hold six of MJW’s Raspberry Pi Zero W cases and then print a case for each filament color/style you have. Good use for the intriguing $10 Pi board, in case you can accumulate a few of them.
If you’ve found a test print that you like, feel free to link to it in the comments. And watch for the cluster series, which is why I ended up buying a 3D printer in the first place.