User Tools

Site Tools


raspberry-pi

Using a Raspberry Pi as a Host

Why?

Most 3D printers work a lot like regular printers, in the sense that you install some software on a computer and then plug the printer into the computer using a USB cable. But 3D printers have a special requirement: depending on the size and complexity of the object to be printed, it might take hours to do one print, and if the print job is interrupted for some reason, the print will likely be ruined and you will have to start over from scratch.

If you use your regular desktop or laptop computer to drive your 3D printer, and then use that computer to do other things at the same time, you run the risk of accidentally interrupting the printing software during the job. So it's best not to multitask with that computer while printing; just use a dedicated computer for that task and that task alone. With the costs of computers gradually approaching zero, it's not expensive to do this.

The Raspberry Pi is a very small computer. (It's about the same size as the Azteeg controller; in the photo above it's hiding in the background, between the printer and the monitor.) It's so small that it could be embedded into the printer itself, making the Bukobot completely free-standing (except for monitor, keyboard, and mouse). It can also connect to a network, perhaps allowing the user to run the printer from a web browser on another computer; in this case, the printer becomes a standalone appliance, and you wouldn't need to keep a monitor, keyboard, or mouse attached to it.

The cost to do all this is very small. Current US prices:

  • Raspberry Pi, $35
  • Power supply, $6 (adafruit has a nice one)
  • SD card, $8
  • cables, case, keyboard, mouse, hub, maybe $50 total
  • monitor, maybe $150 (but see below)

Of course you may already have some of the above, or may not need some of the above.

Parts Required

  • Raspberry Pi, Model B, with 512MB of RAM
  • High quality power supply for same, 5V, at least 1A, plus micro USB cable to connect it to the Pi
  • SD card, at least 8GB, preferably class 10 or better (but many people say class 4 works fine)
  • Powered USB hub
  • Keyboard, USB (must be a wired keyboard, don't try this with a wireless one, at least not at first)
  • Mouse, USB (wired, at least at first)
  • Monitor, HDMI, with HDMI cable (or see below)
  • Ethernet cable, with Internet on the other end (do not try to use wireless, at least at first)
  • Mini USB cable to connect Pi to printer (should be included with printer)
  • Printer (the Bukobot is highly recommended)

Power Supply

One of the primary reasons for having problems with a Raspberry Pi is the power supply. There are many different allegedly compatible power supplies on the market (most smartphones and similar small devices that recharge through a micro USB port use this type) and a lot of these power supplies are of poor quality. The Pi needs a high-quality power supply, and it must be rated at one amp or more. The adafruit unit (their #501) is recommended by Lady Ada, so it's a good one (and the price is good too).

Powered USB Hub

If you intend to connect the Azteeg, a keyboard, and a mouse to the Pi then you'll need a USB hub for sure (the Pi only has two USB ports). Might as well make that a powered hub and be sure you won't overwhelm the Pi's power supply. (For not much more, you could instead get a powered hub that also has card slots, if you think you might want to connect memory cards to the Pi for some reason. The Pi does have a built-in SD card slot, but you boot from that and can't remove the card while the Pi is running).

Video Options

For best picture quality, use a monitor (or high-def television) with an HDMI connection. The Pi can do 1080p resolution.

A DVI monitor can also deliver equivalent picture quality. (Requires DVI-D or DVI-I; DVI-A won't work.) For this you need an HDMI-DVI adapter cable, or a regular DVI monitor cable plus an HDMI-DVI adapter (this adapter needs to have a male HDMI connector on one end, and female DVI on the other, as shown below). These adapters are passive, and quite inexpensive.

hdmi-to-dvi.jpg

If you have a monitor sitting around that has VGA input but not HDMI or DVI, you can use a Pi-View adapter. (The system shown above is using one of these.) You can get these from any Farnell/element14 affiliate (Newark in the U.S. currently has these for about $33). Also now available from Adafruit: HDMI to VGA Video + Audio Adapter, which also has audio output, and costs even less. Also: this one. (But be warned, it can be a little tricky to get the VGA configured properly, and mis-configured VGA can result in no video output at all; see here for more information.)

Of course the Pi also has a standard-definition TV output (“composite”) through its RCA jack, that can be connected to an old-fashioned television. It's low resolution, but perhaps sufficient to get the Pi set up and running headless. (Anyone try this?)

You will need a monitor to get the Pi set up, and perhaps to administer and maintain it later. (Unless you know how to use SSH and want to do everything from the command line.) But if you set up the Pi to run headless (using a web interface, for example), you wouldn't need to keep a monitor connected all the time, so you could temporarily borrow a monitor from somewhere else and not have to buy one just for your Bukobot.

Also, many monitors and TVs have multiple inputs, and can be connected to more than one computer at a time. Just press the input button on the display to switch between computers.

Finally, if you already have a KVM switch that can support DVI monitors, you can connect your Pi to the KVM switch through the HDMI-DVI adapter mentioned above, and then use the keyboard, video monitor and mouse that are already attached to your KVM switch to talk to your Pi. And since many such KVM switches use a single USB connector for the keyboard and mouse connections, effectively putting a USB hub inside the KVM switch, you might not need a separate USB hub for the Pi; plug the KVM switch into one of the Pi's USB ports, and the Azteeg into the other (don't connect the Azteeg through the KVM switch!). In this case your total cost to add the Pi to your printer might be not much more than $50.

Getting Started

(In all of the following, it is assumed that you are using the default username, pi. If you use a different user name, you may have to change some of the things below, replacing pi with your username. You can wait to set up a different user name until you have gotten the Pi running and tested it for a while.)

First go here and click the diagram to download the pdf file. Read it.

Download the latest version of Raspbian Wheezy (but not the soft-float version). Follow the directions on that page to put the image on the SD card. Note the default user name and password.

Follow the directions on that page to sync the filesystem so that the card can be safely removed from the computer. Insert the card into the Pi.

Alternatively, you can download the new NOOBS installer shown on that page, and follow the directions there to put that on your 8GB card. Or, for $40 you can buy the new package that contains one Raspberry Pi and one NOOBS card (but be warned, the card that comes with that package only holds 4GB and the directions below would have to be modified so that the card doesn't get too full, and nobody has documented that yet). If you use NOOBS, select Raspbian Wheezy when it asks you.

Connect the powered USB hub to one of the two USB ports on one end of the Pi. Connect an Ethernet cable to the Pi's Ethernet jack (next to the USB ports). Connect the other end of the Ethernet cable to a working Internet connection.

Connect the wired keyboard and the wired mouse to the powered USB hub. Apply power to the hub. Don't connect the Azteeg controller to the hub yet.

Connect the monitor to the Pi's HDMI jack with the HDMI cable. Turn the monitor on.

Connect the Pi to its power supply using the micro USB cable, and plug the power supply in. (This is the closest thing you have to an on/off switch on the Pi; always remember to power down the Pi through its menu before removing power.)

Watch the monitor. Watch the text scroll by as the Pi boots up.

Eventually, a menu resembling the one shown below should appear. If it doesn't, troubleshoot. (You can ask for help in the Linux Specific Software section of the forum. Don't be intimidated by this software; millions of people have successfully gotten Pis running, including a lot of nine-year-old kids.)

raspi-config-2013-10.jpg

This menu is navigated with the up and down arrows, <Tab>, and <Enter>. In a few places you have to put check marks in boxes, indicated by square brackets like these [ ]; highlight the box, and hit the space bar to toggle the checkbox.

First, go into Advanced Options and try to update this menu program. If an update is available, the computer will be rebooted before you continue.

Also on the Advanced Options menu, set the graphics memory to 32MB.

Tell the Pi to boot into the graphical user interface ('Desktop') on next boot:

rasp-config-bootopt-2013-10.jpg

Tell the Pi to expand its file system to maximum size on next boot. (It will tell you if you don't need to do this.)

If you intend to SSH into your Pi, enable that on the Advanced Options menu. If you don't know what this means, don't.

Select your keyboard, locale, and time zone. (Remember that the Raspberry Pi comes from England, and the defaults are set for that place, and you should change those values if you live somewhere else in the world.) The locale is specified like this: language-COUNTRY.encoding, where 'language' is a two-or-three letter lowercase code, 'COUNTRY' is a two character uppercase country code, and encoding is (for most areas) UTF-8. (Warning: If you tell it to install ALL locales, it will take a long time for the menu to return, as locales are time-consuming to set up.) (Note that the west coast of the U.S. is specified as 'Pacific Ocean'.)

Finally, change the user password. Make note of the new one.

Use the menu to reboot (tab over to <Finish>).

Watch it boot again. It should boot into the LXDE desktop environment. If it doesn't, troubleshoot.

Find the icon for the Midori web browser on the Desktop, launch it, and verify that the Pi can see the Internet.

Browse to this page. Follow the rest of these directions.

At this point, it's probably safe to switch to a wireless keyboard and/or mouse if you prefer those. It's probably safe to switch to a wireless Internet connection too (but some wi-fi units may not work with the Pi, so do the research and do the testing).

(If you want to run that configuration menu again at a later date, open a terminal and type:

sudo raspi-config

However, it may not work properly if you have heavily reconfigured the system in the meantime, so try to get all of the configuration choices set properly the first time you run it.)

Install more software

Start a terminal. (There's an icon for LXTerminal on the Desktop. Remember that for this terminal program, and for many other common ones, the keyboard shortcut for pasting text is Shift-Ctrl-V instead of Ctrl-V.)

In all the following, if it asks questions, say yes. (Hitting <Enter> generally will work.)

In the terminal window, use the following command to update the software:

sudo apt-get update && sudo apt-get upgrade

If it finds updated packages to install, and asks if it should do so, hit <Enter> to say yes. This may run for a while. (You should do this periodically to get the latest software.)

When that's done,

sudo apt-get install arduino git libgtk2.0-dev synaptic pistore python-serial python-wxgtk2.8 \
     python-pyglet python-tk build-essential libwxgtk2.8-dev libwx-perl libmodule-build-perl \
     libnet-dbus-perl curl cpanminus gcc libsdl1.2-dev

(That's all one command, copy and paste the whole thing.)

Next, this command will install lots of potentially useful things:

sudo apt-get install task-lxde-desktop

That command (which may run for a good long while) will install a variety of utilities that are handy for maintaining and managing this machine, and also a collection of common applications.

This includes the complete LibreOffice suite, and a web browser called IceWeasel (a version of Firefox). But, be warned: Both of these are heavy users of memory, which is in short supply on the Pi. They will probably run, but may run slowly. They may run very slowly on a 256MB Pi.

Next...

At this point, your Raspberry Pi is set up as a modern general-purpose desktop computer. Test it for a while; become accustomed to its quirks. It's roughly equivalent in power to a high-end desktop system from the 1990's, so don't expect it to be fast. Startup times may annoy you, but you won't be starting programs very often; you will be starting your host software and letting it run for minutes or hours as it tells your printer how to make things.

There are currently more than 37,000 free software packages available for this system; any of them can be installed with a few clicks. Many of them are installed now. Click the LXDE icon at the left side of the bottom panel to see some of them. Use the Synaptic package manager (under Other) to see what is installed, or visit the Pi Store. You can also use Synaptic to install updates. But remember, the Pi is rather slow and low on memory, and it's probably best if you don't try to run any other programs while the Pi is driving your printer.

You should definitely change the default system password. You may also want to create a new user (other than 'pi') and disable the pi account; these are all standard security measures to protect your system from evil. See here for how.

At this point, you can connect the Azteeg controller. Plug it into your powered USB hub.

Install software to run the Bukobot

The only software you really need to run on the Pi is your host software. This is the software that talks to the Azteeg controller and transfers the contents of your G-code file to it, and may also monitor the printer's operations.

Many people also run other kinds of software on their host machine, such as slicing software. It's best not to do this on the Pi, as it may not have enough memory and may slow down tremendously.

If you have another computer to do slicing on (highly recommended), you can make a G-code file on that computer and transfer it to the Pi, and then you don't need slicing software like skeinforge or Slic3r on the Pi. The Pi is network connected, and can also talk to USB drives, so there are lots of ways of getting files across. If you have the Azteeg X3, you can also put files on a microSD card and plug the card into the X3, or use your host software to copy gcode files onto the microSD card through the USB cable (but be warned, this is very slow).

pronterface

Pronterface is a host control program. It's a good idea to install pronterface, even if you intend to use a different host control program; it's light on resource requirements, and gives you something to switch to if you suspect that your other host control program might be causing problems. (If you switch to a different host program and the problem doesn't go away, then the problem is probably being caused by something other than the host program.)

Install pronterface (Printrun directory) into your home directory:

cd ~
git clone git://github.com/kliment/Printrun.git

You can put an icon on the Desktop for launching Pronterface. On the Desktop, create a new file (right-click in an empty area of the Desktop, select Create new… Blank file), name it pronterface.desktop, right-click on the file and select LeafPad, then paste the following text into it:

[Desktop Entry]
Name=Pronterface
Comment=3D Printer
Exec=/usr/bin/python /home/pi/Printrun/pronterface.py
Icon=/home/pi/Printrun/pronsole.ico
Terminal=false
Type=Application
Categories=Application;Development;

and save the file. (If you are using a different username than pi, change that in two places above.)

slicers

Slic3r and skeinforge are programs for slicing (turning shapes into G-code files so they can be printed). It's best to do this on a machine other than the Pi, but if you want to try them on the Pi here's how to install them.

How to run the programs

Getting files onto the Pi

Many people use the Pi only for controlling the printer, using a host program like Pronterface, and do all their slicing on a different machine that has a lot more memory and speed. G-code files (.gcode extension) are generated on the other machine and transferred to the Pi through the network or by other means (USB thumb drive, etc.). It's trivial to access shared network folders from the Pi: start the File Manager, and do Go » Network Drives.

Arduino

To run Arduino (for example, if you want to put a different firmware on the Azteeg controller), find Arduino in the main menu (click the start icon at lower left): Start » Programming » Arduino.

(Connect Pi to Azteeg first, if you haven't already. Use the powered hub.)

You have to select the board type (Arduino Mega 2560), the COM port (probably only one listed there), and the baud rate (250000). For more details see here. (You don't have to install any drivers.)

pronterface

Create a desktop icon as described above and use that to launch pronterface, or go to ~/Printrun and run pronterface.py:

cd ~/Printrun
./pronterface.py

The first time you run it, you have to tell it the board type and COM port.

There is also a command-line interface (pronsole.py) and a web browser interface for pronterface. See here for more information.

There are also other host softwares available for running your printer. Those ought to be described by someone who has actually used them on a Pi.

256MB Raspberry Pi

(This section is here for completeness, but remember that the 256MB model has been out of production for months, and you can get a new 512MB model for only $35. Time and effort expended on getting things working on the obsolete model is not of great value – how much is your time worth, anyway? In any case, some of the things described below may be useful to you no matter which model you use.)

The original 256MB Raspberry Pi is capable of running Pronterface as well, following the instructions above (might be a good idea to use 16MB graphics memory instead of 32MB). It is possible, at least in some cases, to directly connect the Azteeg X3 to the Raspberry Pi without a powered hub (but this is risky – if your print suddenly goes all pear-shaped and gets ruined, it's time to get a powered hub, they're not expensive).

By installing tightvnc via:

sudo apt-get install tightvncserver xfonts-base

It is possible to connect to the Raspberry Pi running Pronterface from any computer on the network, providing a 'print over ethernet' type of capability.

Additionally, it is possible to install usb-redirector, which can convert the Raspberry Pi into an ethernet-to-USB bridge, allowing any machine on the network to directly control the printer. This has been demonstrated to work with Pronterface, but efforts are still ongoing to use Repetier-Host in a similar manner.


More experiments to come.

The contents of this page may be re-used under any of the following licenses: The Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0), or the GNU Free Documentation License (GFDL, version 1.2 or later).

raspberry-pi.txt · Last modified: 2013/10/20 17:41 by jit