Projects

3D Print Server: Easy As Pi!

Oliver Higgins

Issue 4, October 2017

Make 3D printing easy and autonomous with this ultra small Raspberry Pi based print server.

3D printing is one of the most empowering elements in the maker space, and gives us the ability to rapidly develop our ideas. However, sometimes printing slows down the research and development process. So, we are going to use some basic hardware to reshape and redesign, in order to speed up this process.

THE BROAD OVERVIEW

Here at DIYODE Magazine, we use 3D printers a lot, as I am sure a lot of our readers and makers do too. In this situation, one thing that becomes apparent very quickly is the volume of resources consumed by computers and control units when running the printer. Some printers will allow you to run prints by SD card or inbuilt storage, but it can often be slower.

The next issue that we face is checking on the print. We must admit that since we have been using the Lulzbot printers we have been much less paranoid, but I think we all like to keep an eye on our print; just to make sure it’s progressing as planned. But what do you do if the printer is in a different room or part of the workshop, or if you have a print that may take several hours?

The Solution

We have two issues, and we can solve them in many ways. The first issue is that of the required resources to control the printing. The actual printing process itself does not require any significant overhead; instead, it is the slicing process that will bog down a machine. However, you don’t want to tie up a machine. You could easily shut down your printing software by accident, or overlay the machine with another process that you or someone else may be undertaking. Considering many printers can be run using an Arduino Mega, we can easily delegate this task to a Raspberry Pi. As a bonus, the Pi includes additional storage, network connectivity and of course Linux, which means we can run web server software.

Our second issue is that of needing to physically go and view the print. Placing a webcam near the printer and having a live stream can easily overcome this. There are many different webcams available, but in this instance, we will be using the Raspberry Pi Camera module.

Parts Required: Jaycar Altronics
1 x Raspberry Pi 3 XC9000 Z6302B
1 x Raspberry Pi Camera Module XC9020 Z6305
1 x 300mm (or longer) RPi Camera Cable--

This assumes you have a working 3D printer too! You will also need an LCD screen and a keyboard in order to complete this setup on the Raspberry Pi.

THE CODE / SETUP / OTHER

Most workflows in this space go model, slice, GCODE then print. If you are using Cura and your printer is connected to the server or PC then the slice, GCODE, the print is done in ine step. Both are then followed by walking and looking at the print, and then walking back a few minutes later.

To address the above problems, we plan to use the Raspberry Pi and set up a print server, which will allow us to set and forget. Of course, we are not the first to have these issues, and as such one group have already built a specific operating system for the RPi, and that is OctoPi.

Here at the DIYODE workshop, we use the Lulzbot TAZ 6 and Mini. As such this article uses some resources that are specific to these printers; however, there are many cases for RPi use in Thingiverse that may exactly fit your printer.

OctoPi is an open source RPi-based implementation of the Octoprint 3D print server environment. It offers full and remote monitoring of every aspect of 3D printing, and considerable extensibility well beyond this article through its plugin system. Best of all though, it’s 100% open source, the degree of detail that it offers is unparalleled, and it is setup in just a matter of minutes.

Setting up is quite straight forward, although, if you have not installed or set up a RPi before we would recommend you explore and install NOOBS. To make the system run as efficiently as possible the operating system is installed without a desktop environment. You’ll need to be comfortable executing some commands at the command line, and you’ll also need to edit one text file.

Print the following from the digital resources (and yes, it is ironic that you have to print parts to make your life easier for printing).

Raspberry Pi 3 Case / Mount: RPi_case.stl

Raspberry Pi Camera Case Mount: PPi_camera_case_stl

Download the latest version of Octopi: https://octopi.octoprint.org/

Prepare the SD and upload the Octopi image.

For Windows users: Win32 Disk Imager: https://sourceforge.net/projects/win32diskimager/

For Mac user’s we would recommend using Etcher: https://etcher.io/

If you are using WiFi to connect, you will need to setup the SSID and passwords (skip this if you plan to use ethernet). Once you have imaged your SD card, navigate to the card in your operating system and locate the octopi-network.txt file located in the SD card’s root directory.

##WPA/WPA2 secured 
#iface wlan0 inte manual 
#    wpa-ssid "put said here" 
#    spa-psk  "put password here"

and change this to:

##WPA/WPA2 secured 
iface wlan0 inte manual 
    wpa-ssid "AWESOME_NETWORK" 
    spa-psk  "1231456123456"

Note: make sure you are using text editing software, not a word processor or rich text editor. In Windows, we recommend Notepad++ or notepad. On Mac, use Atom or TextWrangler (TextEdit on Mac is known to put strange characters in for the “ character, and as such is not recommended in this case). Secondly, please note that by default most routers will have the 2.4GHz channel set to auto, with 1-13 being available for use. There are documented issues with the RPi not working with 12 and 13, so if you have manually changed the channel on your router, you will need to make sure it is not 12 or 13.

Boot it.

Eject the SD card from your computer and insert into the RPi. Connect a keyboard and screen, connect the power supply and boot.

Once the system has booted, log into your RPI using the default User : pi, Password: raspberry. Run the following command:

pi@octopi:~ $ sudo raspi-config

If you are using the Raspberry Pi camera, select option 5 and the option P1, then enable. On a personal note, we also like to enable SSH here (option P2), to enable remote access via the terminal. When finished, select “Finish” then reboot. The RPi will reboot and will display the RPi.

Connect to RPi via browser and connect to octopi.local or the IP address that is listed on boot.

Once you are connected to the RPi you will be greeted by the “Configure Access Control” page. Enter a username and password and then select the “Keep Access Control Enabled” button on the bottom right.

Access Control

Next is the printer setup screen. If you are familiar with Cura, then the setup question will be familiar to you, as the Cura engine comes with OctoPi. If not you will need to know as a minimum:

  • Name
  • Model
  • Bed shape (rectangular or circular)
  • Origin point
  • Volume (print bed dimensions)
  • Is the bed heated?
  • Nozzle diameter
  • Number of extruders
octopi.local

Finally, elect “auto” to connect at login, and you have a wireless print server for your 3D printer! If you have not connected your RPi camera module or USB webcam, connect and you will then have a live stream on the control tab. The default RPi camera cable is quite short, so we would recommend getting a longer one (100, 200 and 300mm are available).

NEW WORKFLOW

This implementation has now become our permanent workflow and is currently being implemented on other machines in our workshop. Personally, we find that it speeds up the research and development phase considerably. For instance, we were developing a small part to work with an Arduino sensor. We designed a small bracket using our 3D software (TinkerCAD, Fusion 360, etc.). From here we exported our .stl file and opened it using Cura. With Cura we set up our print for slicing (or your slicing software). Once complete we export the GCODE file. If you have been using an SD card with your printer then nothing will have changed up to this point.

WORKING WITH OCTOPRINT

Once we have the GCODE file, you will need to navigate to http://octopi.local with your favourite browser. When you first go to the page you will be able to view the current status of the printer. To start the printer (assuming it is connected and turned on) you must log in using your previously set log in details, and connect to the printer (assuming you did not click select “auto print”).

The upper left corner contains the printer control area. When logged in you will be able to connect to your printer. It usually takes a few moments to establish a connection and communicate with your printer. While this happens, go to “files”, which is located at the bottom right of the screen. Click on “upload” and locate the GCODE file that you have generated. Once uploaded it will appear on your list.

Click the “print” button and provided your printer is connected the system will start. Go to the temperature window and set your desired filament temperature.

Temperature Window

From here you are done, but that is not where the fun ends! If you have connected and enabled the RPi camera then click on the “control” tab and you will get a live stream of your print.

Live stream of print

Clicking on the GCODE tab will show you the current GCODE output and a visual representation of where the print is.

GCODE

The “terminal” tab will give the current GCODE code that is being executed.

terminal

Finally the “time-lapse” tab – now this is fun! You can set up the system to record your prints and create a video file, which can be used to access your print process or show it off on YouTube.

time lapse

Finally, you can see the current status at any time, on the left side. This shows the current percentage printed, elapsed time and remaining time to finish. We can now design, print and view the entire process without ever leaving our desks, enabling us only to have to get up when the job is done. For some of us, that means saving precious time, every day!

WHERE TO FROM HERE?

This has just given a taster of what the Octopi system is capable of. Dive into the plugins, set up a live stream to the internet, install a desktop environment and connect with VNC. There is a lot more fun to be had!