We decided to start work on the Halloween costumes early this year because we have an ambitious goal. We’ll need the extra time if we’re going to get there! We plan to do a Halloween video, so that’ll be up when the work is done. But, I’m doing a few little side projects to make things more efficient, so I thought it’d be worth sharing as we go.
First, there’s lots of 3D printing involved. With only my little Monoprice Select Mini V1 to do the work, I anticipate 300+ hrs of print time. Even with months to get it done, that’s more than I can accomplish casually.
For my first attempt to improve the process I thought I’d stack parts into the print volume to get lots of pieces done in longer sessions that I could set and forget. For example, with the part below, I’ll need 32 of these! However, it quickly became apparent that the increased complexity of the print increased the likelihood of a failure, and that print failures would make this strategy inefficient.
A better strategy is to establish a reliable build and repeat that.
However, the problem here is that it’ll take much more attention. I don’t want to pop into the garage every 15 minutes or bother with timers on my phone. I also want to be able to spot a build failure when away, and kill the printer if the print has turned into a big blob of goo. While nice printers have such capabilities built in, this is a no-frills introductory model for hobby printers like me.
I can tell I’m getting old, because I’ve started looking for existing solutions to my problems instead of reinventing the wheel. Indeed, I put together a few tools I had at hand and got to work.
- Raspberry Pi Zero – Tesla’s updates rendered my TeslaUSB implementation essentially obsolete, so I flashed Raspberry Pi OS to the flash disc and started fresh.
- Webcam – My Lan’s not in school anymore, so she doesn’t need hers at the moment!
- Smart Outlet – I have half a dozen lying around.
I connected the printer’s power supply to the smart outlet so that I can kill a print from my phone even when away.
I followed one of many available tutorials for configuring a Raspberry Pi to stream a webcam via HTML using Motion. A little port forwarding on my router, and voila! I can now spy on my printer over the internet, and so can you.
It worked great, and I churned out 7 of these parts in one day. It would have been 8, but I accidentally killed a part midway when trying to customize the smart outlet.
While configuring Motion, I noticed it had a multitude of configurable features, including a few that queued off motion. So, I perused the configuration options to see if I could further improve my situation. Sure enough, its default behavior includes the concept of events. When it detects motion, it starts an event and records video. When an absence of motion occurs, it closes that event. The application can be configured to execute scripts at either end, and this was exactly what I wanted.
Next, I checked IFTTT, and they had a simple webhook feature that would push a notification to the app on my phone. I configured the IFTTT routine and returned to the Motion configuration to make the appropriate change.
I plopped in a script to execute at the end of an event. The script is very simple. All it does is use the curl tool to send a POST request to a website. You only have to insert your key and action name from IFTTT:
#!/bin/bash IFTTT_KEY="YOUR_KEY" ACTION_NAME="YOUR_ACTION_NAME" HOOK="https://maker.ifttt.com/trigger/$ACTION_NAME/with/key/$IFTTT_KEY" curl -X POST $HOOK
Now, when the camera detects no motion for 60 seconds, I get a push notification on my phone, and I know it’s time to go start the next print. This means not only less downtime, but less time cooling and rewarming the plate and extruder.
I’ll be playing with a few new toys for this project, so I hope to update this at least once or twice more before the big day.