A 3D printer of the RepRap
variety is essentially a fixed robot that moves two "arms" (extruder and platform) under numerical control to build up a shape out of fused thermoplastic filament. The vast majority of domestic 3D printers employ an Arduino for low-level realtime control, connected by USB to a powerful PC-type host which performs the 3D modeling and slicing and conversion of the model into the low-level G-code data format that is downloaded to the Arduino printer controller. This image
gives some idea of the process.
Times are a-changing in the RepRap world though, and this is where the Pi can come to the party.
First of all, a 3D printer that isn't networked barely belongs in 2012 --- all of my 2D printers have been networked for over a decade. The same reasons why 2D printers are commonly networked are valid for 3D printing as well, the main ones being so that you can print from all of your networked devices, and so that printing is not dependent on one particular computer being up. Networking an Arduino is not particularly satisfactory though, because even though the Ethernet Shield and Arduino Ethernet exist, the 8-bit AVR is not a very suitable device for running a high quality TCP/IP stack. In any case, the AVR is already busy doing the realtime tasks required for high precision 3D printing, so asking it to do networking as well is not a particularly good idea.
Enter the Raspberry Pi !!
(Or to avoid excessive fanboyism, at least enter low-cost ARM Linux boards with full-featured networking.)
There are numerous ways to apply a board like the Pi in a 3D printer. The simplest is to give the Linux board nothing but TCP/IP communication and high-level monitoring duties. This can be a lot of fun, giving your printer a face on the public web if you are so inclined, for example showing the design model and a webcam view of the action as it prints. (The modelling and slicing would still be performed on a separate PC host.)
It's also possible to perform the modelling and slicing directly on the Pi and to feed the Arduino from it, but there is a slight hitch here in that modelling and especially slicing can be rather CPU-intensive activities. Some reprappers are working on an approach in which the embedded Linux board stays in control of this process, but it sends out the intermediate STL file to an external server for slicing, which can be an effective approach.
It's worth noting that in terms of mechanical and software operation, a CNC machine is very similar to a 3D printer, despite using the exact opposite kind of manufacturing process -- subtractive rather than additive. There is a huge community of LinuxCNC
enthusiasts whose approach is quite different to that used until now in RepRap, in that Linux is run in realtime mode and controls the hardware directly without assistance from a low-level microcontroller. This too is possible with the Pi, although perhaps not recommended on grounds of performance.
I'm currently assembling a 3D printer of the RepRap kind, albeit with a few mechanical differences in the interest of greater rigidity --- see the ShaperCube
. Although I haven't yet planned how I intend my ShaperCube to evolve into the ARM and networking world, a Pi or other ARM Linux board is certain to be added somewhere into the design in due course.
I'd be most interested to hear from others with similar intentions!
PS. Here are some piccies of my 3D printer project so far: http://www.flickr.com/photos/morgaines/ ... 604533547/