3D printing hands on: Adding a case and camera to Raspberry Pi and LulzBot Mini
David Gewirtz 3D-prints a case for his Raspberry Pi, and he adds a camera to his LulzBot Mini printer. Learn more about ABS filament. Plus, David uses a drill press. Yeah, it worries us, too. Did we mention the Spocktopus?
When I bought the Raspberry Pi kit from Amazon, I decided not to get one of the very inexpensive cases that came with some of the kits. My reasoning was that, since I have a 3D printer, I'd make my own. While it was a fun project, it was also probably more work than was necessary. Still, I got to experiment with how 3D-printed parts can be assembled using regular screws, which was cool.
There were a few other new elements in this project. One of the big reasons I wanted to get the LulzBot Mini was to start learning about filaments other than PLA.
PLA (polyactic acid) is a very capable and flexible filament. Since it's made out of organic materials, it's not nearly as toxic as some plastics. But PLA is not quite as strong, flexible, or suited to heat. I built a grill tool mount using PLA, and very shortly after putting it out in the sun, it started to sag.
ABS (acrylonitrile butadiene styrene), on the other hand, is a strong material that doesn't snap or crack as easily as PLA. If you've ever used Lego pieces, you've had a toy made from ABS. But ABS is a more toxic plastic.
When I used ABS filament to print the Raspberry Pi case, there was a nasty, unmistakably melting, plasticky stank in my garage. I wound up having to open the garage door to the 97°F Florida heat to dissipate the odor.
ABS is also a bit more challenging to print than PLA. It tends to curl and pull up off the build plate. I printed a test cube, which showed some deformation, but the two sides of the plastic case turned out fine.
The challenges of ABS printing are what make the LulzBot the machine of choice for ABS (rather than the MakerBot Replicator). The MakerBot does not have a heated build plate. The LulzBot Mini does. This is important, because the heated plate is a key part of the formula for keeping an ABS part attached during printing.
I also added a camera. To my very pleasant surprise, OctoPrint has support for webcams. It's a bit of a you-take-your-chances thing in terms of which webcams are supported, but there's a wiki page with some helpful details. I went digging around in my closet, because I was pretty sure I had an old camera or two buried in there.
I found an IPEVO Point 2 View document camera, which I had attempted to use back in the day to grab images of documents and smartphone screens. What I like most about the IPEVO is its stand, which allows you to adjust the camera to point at an almost unlimited number of angles. This is great for a 3D printer, because you can aim it just right.
After I completed the Raspberry Pi controller for the LulzBot Mini, I went to Thingiverse and looked for some case designs. The prevailing commentary on the form factor of the Raspberry Pi 2 and the Raspberry Pi 3 was that anything that fits a Raspberry Pi 2 will fit a Raspberry Pi 3.
Don't believe it. It's close, but not exact. The first case I downloaded was very cool, but the sound jack on the Raspberry Pi 3 was just a tiny bit too big. I would have had to bash the board into the case to make it fit, and that wasn't something I wanted to do. Bashing and computers don't really go well together.
Instead, I decided to get a two-part case so that the board would sit gently in the gap between the two sides. The next case I downloaded seemed to have all the goods, but the placement of one part was about a millimeter off. Again, I would either need to modify the case or jam the 'puter into it.
I finally found a case that was specifically for the Raspberry Pi 3 -- and for the LulzBot Mini. I downloaded this design and printed it three times. The first time, I printed it in PLA. I decided to see how it would work with a raft (a support for clean printing). I use rafts all the time on the MakerBot. The raft didn't work using the LulzBot and Cura, but that's probably because I was using a very, very cheap off-brand supply of PLA.
I printed it again without the raft, and it came out just fine, but I didn't like how it looked next to the LulzBot. My PLA was gold, and the LulzBot is fluorescent green and black. It just wasn't right.
That's when I decided to go with ABS. I had some black ABS in the 3mm-thick filament the LulzBot prefers. That print, as I mentioned above, came out just fine -- except that the screw holes were far too small for the spare screws I had sitting around the workshop.
That brings me to the topic of fasteners. I've been fascinated by the question of 3D printing and fasteners. Because 3D printing is an additive process, not everything can be built from the ground up. Sometimes, it's best to build multiple parts and assemble them. If you ever built plastic kits as a kid, you know what I mean.
I used pins and glue for my TV mount project, and it worked very well. But designing in the exact tolerances for the pins was a pain. In this case, I had a printed part. I just wanted to assemble it. So, I simply took the case to the drill press, then drilled four holes, and screwed the two sides together.
I was a bit concerned about the layers separating because of the forces of the screw threads, and I did get some separation. But I think it was because I didn't drill deep enough on that first hole. Once I re-drilled that hole, and the other three, I had no more splitting. The case came together well.
Sadly, as the video shows, I didn't like it attached to the LulzBot. After all the trouble of finding something that was specifically designed to attach to the LulzBot, I decided the way the wires stuck out the front was unsightly and impractical. However, the case still rocks, and it is controlling the LulzBot. I just moved it to the top of my Ethernet switch, along with the other cables in that part of the garage.
Finally, I added a camera.
As I mentioned, I decided to use the IPEVO I found. Initially, after plugging it in, it didn't work. But, in short order, it would. At first, I wasn't sure that the camera was compatible with Linux. I did some digging online and found a video showing the device at work as a security camera. So I knew it could work, even if it wasn't yet working for me.
Taking a complete wild shot out of the blue, I reached out to IPEVO tech support. Much to my great surprise, I got a detailed, technical answer about how to change the configuration in Linux. The fix actually worked. I'm not sharing it with you here, because Gina, the author of OctoPrint, told me the approach I used wasn't a best practice. Her fix is documented in the video that accompanies this article, and in the OctoPi issue discussion.
That was it. A quick reboot later, and not only did I have a video feed of my LulzBot mini, but I also had the ability to produce a time-lapse of the printing process. How cool is that?
So, let's tally it up
Since the camera was a found object in my closet, it didn't cost anything. The case (because I made five of them) probably cost a total of about two bucks. The Raspberry Pi, including the power supply, SD card, and heat sinks, cost $54.
For under $60, I now have a 3D printer control appliance that not only manages the printer but can send me video of it working -- and, as a bonus, also captures time-lapse videos of the entire print.
Pretty amazing. This is a great example of how 3D printing is coming down in price and will become so much more accessible. Yes, it did take some fiddling to make all this work. That's part of the fun. Even so, it's not a lot harder than setting up a drill press or learning how to cook a lasagna.