├── images ├── led-light.jpeg ├── equity-analog-clock.jpeg ├── logitech-c920-on-arm.jpeg ├── 3d-printer-in-workshop.jpeg ├── 3d-printer-in-enclosure.jpeg ├── octoprint-control-preview.jpeg ├── printer-stand-rolling-cart.jpeg └── pi-rack-tray-3d-print-octolapse.gif ├── .github └── FUNDING.yml ├── LICENSE └── README.md /images/led-light.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/led-light.jpeg -------------------------------------------------------------------------------- /images/equity-analog-clock.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/equity-analog-clock.jpeg -------------------------------------------------------------------------------- /images/logitech-c920-on-arm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/logitech-c920-on-arm.jpeg -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | --- 3 | github: geerlingguy 4 | patreon: geerlingguy 5 | -------------------------------------------------------------------------------- /images/3d-printer-in-workshop.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/3d-printer-in-workshop.jpeg -------------------------------------------------------------------------------- /images/3d-printer-in-enclosure.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/3d-printer-in-enclosure.jpeg -------------------------------------------------------------------------------- /images/octoprint-control-preview.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/octoprint-control-preview.jpeg -------------------------------------------------------------------------------- /images/printer-stand-rolling-cart.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/printer-stand-rolling-cart.jpeg -------------------------------------------------------------------------------- /images/pi-rack-tray-3d-print-octolapse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geerlingguy/3d-printing/HEAD/images/pi-rack-tray-3d-print-octolapse.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Jeff Geerling 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Jeff Geerling's 3D Printing Setup 2 | 3 | After spending many, many hours configuring things and adjusting my 3D Printing mini-farm to my liking, I thought it would be a good idea to document everything here, not only for the benefit of others being able to learn from my setup, but also in case I need to replicate anything or a meteorite hits my city and I have to rebuild somewhere else. If I make it out alive, that is. 4 | 5 | I just really like being able to replicate things, not only in 3D space, but also in terms of setting something up exactly the same in case it explodes. 6 | 7 | ## 3D Printers 8 | 9 | _Click on the name of a 3D Printer for more details._ 10 | 11 | | Printer | Location | Date of First Deployment | 12 | | ------- | -------- | ------------------------ | 13 | | [Creality Ender 3 V2](#creality-ender-3-v2) | (Retired) | 2020-12 | 14 | | [Creality Ender 3 S1](#creality-ender-3-s1) | (Retired) | 2024-06 | 15 | | [Bambu Lab P1S](#bambu-lab-p1s) | Studio | 2024-06 | 16 | | [Prusa MK4](#prusa-mk4) | Studio | 2024-06 | 17 | | [Positron V3.2](#positron-v32) | Home | 2024-08 | 18 | 19 | ## Creality Ender 3 V2 (Retired) 20 | 21 |

22 | 23 | I used to have a [Creality Ender 3 V2](https://amzn.to/3hBAbpE) at home. It was recommended as a beginner-friendly low-cost printer, and I bought mine on sale for $219 from Woot in late 2020. 24 | 25 | It took a couple hours from unsealing the box to beginning my first print with the included white PLA filament, and only took a little adjustment before it was reliably printing objects. 26 | 27 | ### Printer Stand 28 | 29 |

30 | 31 | I have my Ender 3 V2 set up in my workshop, where I often need to move around large material (plywood sheets, etc.), and where there can be a lot of dust. So I wanted the printer to be easily movable yet still have a stable platform. 32 | 33 | I decided to buy a rolling printer stand (specifically the [Safco Products Impromptu Mobile Print Stand 1857GR](https://amzn.to/341lOTb)) made for up to 200 lb of weight, since it would have good casters and be rigid enough to not affect 3D print quality. It also has shelves below for extra filament and 3D Printer supplies. 34 | 35 | I admit, I kinda splurged on the stand. But I figure it should be able to last a few decades—probably well past when my first 3D printer breaks down! 36 | 37 | ### Enclosure 38 | 39 |

40 | 41 | I bought Creality's official [Fireproof and Dustproof Enclosure](https://amzn.to/3eVEGJB), because I operate my Ender 3 V2 in my basement, where it can be drafty, and get down to 64°F (17.8°C) in the winter. The enclosure ensures more uniformity and helps with print bed adhesion. 42 | 43 | It is a bit annoying working on things inside the enclosure sometimes (e.g. filament changes), but I can live with it. 44 | 45 | ### Analog clock 46 | 47 |

48 | 49 | I placed an analog clock—specifically the [Equity by La Crosse](https://amzn.to/3frzxs3)—inside the enclosure in a place where cameras can see it in the background. 50 | 51 | This makes timelapses and Octolapses (see later sections) look more interesting, because it gives a clear visual indication of the passage of time. 52 | 53 | Plus it reminds me that it's 2 a.m. and I need to go to bed instead of observe a 20-hour-long 3D print! 54 | 55 | ### LED Light 56 | 57 |

58 | 59 | I bought a [Gulfcoast Robotics White LED kit](https://amzn.to/3eVXdpm), as I wanted something low-profile but bright enough to make both photography and visibility easier. 60 | 61 | If anything, I'd like the LED light to be even larger (more surface area) and stick out further to the front of the printer, just to give more even lighting... but I'm happy enough with the value and sleekness of this light—it looks like part of the printer. 62 | 63 | One caveat: if you print to the maximum build volume height, the light may get in the way. 64 | 65 | ### Webcam Camera Arm 66 | 67 |

68 | 69 | After discovering OctoPrint, I decided I wanted to permanently mount my Logitech C920 webcam _inside_ the enclosure (instead of having it on a tripod outside the enclosure, looking through an open flap). 70 | 71 | Looking through hundreds of options on Thingiverse, I settled on Stewpercharged's [Ultimate Sturdy Octoprint Camera Mount](https://www.thingiverse.com/thing:3374914), but instead of mounting a Pi Camera to it, I designed a custom [Camera Tripod Mount Adapter](https://www.thingiverse.com/thing:4859975) for it, so I could screw my Logitech C920 on permanently. 72 | 73 | I affixed the Tripod mount adapter to the arm using a #8 machine screw and nut, and then used a 1/4" Tripod screw (I had one in my [SmallRig Camera Screw set](https://amzn.to/33UOkGe)) to mount the Webcam to the adapter. 74 | 75 | ### OctoPrint 76 | 77 |

78 | 79 | I found out about OctoPrint around the same time I decided to buy my first 3D Printer. I met [Gina Häußge](https://foosel.net) through the 'GitHub Stars' program, and discovered the wonderful open source ecosystem around OctoPrint. It adds a Web UI to any 3D printer, and really expands your printer's capability through through plugins. 80 | 81 | I loved the app, the community, and especially the ability to run everything through Raspberry Pis. 82 | 83 | So I have a Raspberry Pi 4 model B inside an Argon One M.2 case (see [my review of that case](https://www.jeffgeerling.com/blog/2021/argon-one-m2-raspberry-pi-ssd-case-review)), and am using an M.2 SATA SSD for the boot drive, and WiFi to connect back to my home network. 84 | 85 | I flashed the [OctoPi image](https://octoprint.org/download/) to the SSD, booted it up, and have been printing exclusively through OctoPrint since that day. 86 | 87 | I live-streamed my [initial setup of OctoPrint](https://www.youtube.com/watch?v=Xx4s02w4kgA) over my Starlink Internet connection, but have learned a _lot_ about OctoPrint and 3D Printing since then! 88 | 89 | #### OctoPrint Webcam preview 90 | 91 | OctoPrint comes with built-in support for streaming a plugged in webcam or Pi Camera Module's output straight to your web browser, and it's really neat. 92 | 93 | But to take it a step further, you'll want to customize at least the following: 94 | 95 | ##### Webcam options 96 | 97 | If you're using a webcam like me (a Logitech C920), you should customize the streaming options inside `/boot/octopi.txt`: 98 | 99 | ``` 100 | camera_usb_options="-r 1280x720 -f 10" 101 | ``` 102 | 103 | You could use a higher resolution or framerate, but there are diminishing returns and it can bog down the Pi if you try to pump through too much data. 104 | 105 | If you use an older Pi for OctoPrint, you may want to lower the resolution to 480p. And technically you could drop the framerate much lower if you just want to see what the printer's doing (and not sit mesmerized watching the print from afar, like I do). 106 | 107 | ##### Webcam manual focus and exposure 108 | 109 | One thing that bothered me a lot until I found [this blog post](https://blog.ktz.me/disable-autofocus-in-octoprint-with-a-logitech-c920-webcam/) was the Logitech C920's inability to lock focus on the print. 110 | 111 | To use manual autofocus and exposure, you can use `v4l2-ctl`. To make these changes automated so they apply every time you reboot the Pi running OctoPrint, add the following configuration to the file `~/.octoprint/config.yaml`: 112 | 113 | ```yaml 114 | events: 115 | subscriptions: 116 | - command: 117 | # Disable autofocus. 118 | - v4l2-ctl --set-ctrl=focus_auto=0 119 | # Set focus value to range 1-255 (255 being extreme closeup). 120 | - v4l2-ctl --set-ctrl=focus_absolute=22 121 | # Disable autoexposure. 122 | - v4l2-ctl --set-ctrl=exposure_auto=1 123 | # Set an absolute value for exposure (10000 = 1 second). 124 | - v4l2-ctl --set-ctrl=exposure_absolute=170 125 | event: Startup 126 | type: system 127 | ``` 128 | 129 | After you reboot, these four commands should be run, and OctoPrint will reformat the `config.yaml` file, likely removing the inline comments. 130 | 131 | If you require a password to be entered for `sudo` use as the `pi` user, you will also need to add a file named `/etc/sudoers.d/octoprint-v4l2`, and put the following inside: 132 | 133 | ``` 134 | pi ALL=NOPASSWD: /usr/bin/v4l2-ctl 135 | ``` 136 | 137 | #### Octolapse and Nikon D700 138 | 139 |

140 | 141 | I have an old Nikon D700 (one of my favorite cameras of all time), with a Nikon 60mm AF-D Macro lens, and it is perfect for a time-lapse camera, as it can be remote controlled over USB, and works with the [Octolapse plugin](https://plugins.octoprint.org/plugins/octolapse/). 142 | 143 | I set the camera in full manual (including manual focus), and here's a blog post discussing how I set it up to work with Octolapse to create beautiful time-lapses of my prints: [Beautiful 3D Print time-lapses with my Nikon D700 and Octolapse](https://www.jeffgeerling.com/blog/2021/beautiful-3d-print-time-lapses-my-nikon-d700-and-octolapse). 144 | 145 | #### OctoText 146 | 147 | I wanted to know when my prints finished, and didn't want to download an entire app to my phone or use any sort of cloud service. 148 | 149 | Luckily, there's a plugin called [OctoText](https://plugins.octoprint.org/plugins/OctoText/) that uses SMTP to an email to an [email-to-SMS gateway](https://www.liquisearch.com/list_of_sms_gateways) address so you can get texts from OctoPrint! 150 | 151 | I set it up with an app-specific SMTP credential from FastMail, and then configured OctoText to send me a text when the print completes. 152 | 153 | ## Creality Ender 3 S1 (Retired) 154 | 155 | TODO: Image of the printer goes here. 156 | 157 | I bought my Ender 3 S1 from Micro Center on sale for $199 in April of 2023. It was sitting in a box for over a year, until I started [3D Printing 10 Raspberry Pi 'PIZ' Dispensers](https://www.youtube.com/watch?v=n5d0hzgA9BI) for Open Sauce 2024. 158 | 159 | ### LED Light 160 | 161 | Creality makes an official light kit for this printer, the aptly-named [Ender-3 S1 LED Light Bar Kit](https://amzn.to/4cA7R0b). I bought one at Micro Center and it only took a _little_ bit of blood while I was installing it. 162 | 163 | It provides a good amount of 3000K-ish light over the print bed, and the light bar is extended out a little further than my light on the Ender 3 V2 at home, which I like. What I _don't_ like is the plastic mounting brackets and the inability to dim the light. It just has an on-off switch, and the plastic arms don't retain the switch cable very well. But it works, and it's okay for the price. 164 | 165 | ### Webcam Camera Arm 166 | 167 | I'm still considering how to set up a Pi Camera Module 3 with a Pi 5 more permanently on this printer. I'll update this section once I get further along on that task. 168 | 169 | ## Bambu Lab P1S 170 | 171 | TODO: Image of the printer goes here. 172 | 173 | This printer was the result of procrastination. I had delayed working on my [Raspberry Pi 'PIZ' Dispenser](https://www.youtube.com/watch?v=n5d0hzgA9BI) project for Open Sauce 2024 until two weeks before the event. 174 | 175 | Realizing each PIZ dispenser would take 20-30 hours to print on my two Ender 3's, and only having one completed build (I needed 10) with less than 3 days until leaving, I ran to Micro Center, and bought the fastest 3D printer they had in stock. Which was the P1S, in my case the [Bambu Lab P1S AMS Combo](https://us.store.bambulab.com/products/p1s?skr=yes). They had it on sale for $849, and by the end of the night, I had already printed one full PIZ Dispenser set. 176 | 177 | I didn't realize how fast 3D printers had become, and this was my first introduction to CoreXY printing. 178 | 179 | ### Current Mods 180 | 181 | - [Bigq Panda Touch](https://github.com/geerlingguy/3d-printing/issues/12) 182 | - [Bigq Panda Lux](https://github.com/geerlingguy/3d-printing/issues/12) 183 | - [Poop chute with removable basket](https://www.printables.com/model/540242-poop-chute-with-removable-basket-3-sizes-for-bambu) 184 | 185 | ## Prusa MK4 186 | 187 | TODO: Image of the printer goes here. 188 | 189 | Procrastination turned out to be the gateway drug to 3D printing addiction. While I was _at_ Open Sauce—the event for which I procrastinated printing parts, resulting in the late night purchase of a Bambu Lab P1S—I met Josef Prusa. 190 | 191 | He actually reached out earlier on Twitter, after I posted about my 3D printing procrastination, and said he'd love for me to try out one of his 3D printers. I heard great things about the MK4, and I have no room (well... not right now at least) for a Prusa XL, so a week or so after Open Sauce, an MK4 showed up on my doorstep—along with a sampling of Prusament (Prusa filament). 192 | 193 | TODO: Describe my setup more in detail, and include mods I installed. See [#13](https://github.com/geerlingguy/3d-printing/issues/13). 194 | 195 | ## Positron V3.2 196 | 197 | TODO: Image of the printer goes here. 198 | 199 | Having never built a Voron before, I was in for an experience putting together a Positron V3.2 kit generously provided by LDO Motors. 200 | 201 | See [#14](https://github.com/geerlingguy/3d-printing/issues/14) for current status. 202 | 203 | ## 3D Printing Safety 204 | 205 | I think I should point out that I mostly print PLA, and have very little concern about the small amount of plastic fumes put off while printing that material. I have the printers in an open area with very good ventilation. 206 | 207 | But if you are in a cramped space without good ventilation... maybe consider not doing that! 208 | 209 | I'm not an expert on 3D printing safety, but I do know it's a good idea to have good ventilation at a minimum. And if you print in resin or use more exotic materials, _please_ read the safety warnings that come with all the equipment you're using, and set them up in a safe way. 210 | 211 | ## 3D Printing Models and CAD 212 | 213 | When I need a random part/bin/doodad, I typically see if one exists for cheap pre-manufactured on Amazon or some other supplier. 214 | 215 | If not, I may look on [Printables](https://www.printables.com) for a 3D model I can print. Sometimes one exists that's perfect for my needs, other times I see something that's useful but not quite what I need. 216 | 217 | If I need to design my own 3D printable design, I usually use AutoDesk Fusion. 218 | 219 | There are a number of good options for 3D CAD, though, depending on your needs and budget: 220 | 221 | - [AutoDesk TinkerCad](https://www.tinkercad.com) - Free, browser based, and relatively easy to pick up and use 222 | - [OpenSCAD](https://openscad.org) - Use code to generate 3D models. Extremely useful for simpler models. Harder for more creative stuff 223 | - [FreeCAD](https://www.freecad.org) - A free CAD application, works well almost anywhere, but is not as featureful or intuitive as other options 224 | - [AutoDesk Fusion](https://www.autodesk.com/campaigns/fusion-360/download) - Free option but gets expensive fast (The CAD app I use most often) 225 | - [OnShape](https://www.onshape.com/en/pricing) - Free option but gets expensive fast 226 | 227 | In the end, I try to get an STL file with as little work required as possible to get a good print. 228 | 229 | That means keeping in mind: 230 | 231 | - Gravity exists 232 | - You can't print things in thin air (either plan for supports, or design overhanging features wisely) 233 | - Print materials affect design features sometimes 234 | 235 | Trying to teach CAD for 3D Printing is difficult. You kinda have to just 'do it', then figure out all the pitfalls as you mess up model after model. 236 | 237 | ## Slicers and Preparing for a Print 238 | 239 | I originally used [Cura](https://ultimaker.com/software/ultimaker-cura/) with my Ender 3s, but once I got a Positron, a Prusa MK4, and a Bambu Labs P1S, I decided to switch over to a slicer that has a little more universal support and modern feature set: [OrcaSlicer](https://www.orcaslicer.com). 240 | 241 | Slicing is also somewhat of an art; some printers, some beds, some filaments, even some _models_ on some printers, beds, and filaments all vary quite a bit in 'printability'. 242 | 243 | Will it remain stuck to the build plate, or will it peel off during the print? Will supports be required? And if so, can you print supports in a way they are easily removed, or will they get stuck in the print? 244 | 245 | Do you need more strength, or more flexibility? What pattern should you use for infill. 246 | 247 | Again, I can't imagine giving a full treatment to these topics—and dozens more—in this simple README. 248 | 249 | I've learned a lot from YouTube channels on 3D printing, like [Maker's Muse](https://www.youtube.com/c/MakersMuse/videos), [CNC Kitchen](https://www.youtube.com/@CNCKitchen), [3D Printing Nerd](https://www.youtube.com/@3DPrintingNerd), and [Lost in Tech](https://www.youtube.com/@LostInTech3D). 250 | 251 | But just like CAD for 3D Printing, slicing is somewhat an art—and it's an art you can only perfect on your _own_ printers, filaments, and environment, as there are no universals (e.g. humidity affects print quality quite dramatically...). 252 | 253 | ## Author 254 | 255 | This repository is maintained by [Jeff Geerling](https://www.jeffgeerling.com). 256 | --------------------------------------------------------------------------------