I recently created a project which I called the 3D Printer Host. This complex project allows users to monitor their 3d printer from anywhere in their house through a gadget equipped with LED lights or a custom Alexa Skill.
As you can see by my various 3D print timelapses, I own a 3D Printer. When I start a 3D print I don’t sit around waiting for it to finish so I can start another one, I get up and do something more productive. This though, can sometimes lead to problems like me forgetting whether or not my printer is currently printing or wondering how much time it will be until I can start another print. The desire to be able to remotely monitor my print led me to OctoPrint, a program which when loaded onto a raspberry pi microcomputer and connected to the 3D printer lets lets me control and monitor my printer from a website. Though this helped, I wasn't a fan of having to pull out my phone every time I was curious about how my printer was doing. So, I made it even easier for myself to check on my printer by creating what I call 3D Printer Host.
3D Printer Host is a do it yourself electronic device created with a wifi enabled Adafruit Feather(Arduino compatable), a Neopixel ring, and a 3D printed enclosure. The device connects to OctoPrint via its API and the wonderful OctoPrint API library for Arduino. It displays the print’s progress as well as state on the Neopixel ring. The 3D Printer Host also connects to Alexa via Thingspeak and a custom skill which allows a user to ask Alexa about many aspects of their printer and find details about any current print.
All of the services that had to be connected for this thing to work are illustrated in the diagram below.
To make the 3D Printer Host a reality, I had to learn how make an Amazon Alexa Skill and Lambda Function; how to communicate with Thingspeak through both Lambda and Arduino; control a Neopixel Ring; and get data from OctoPrint.
Through building this project I learned and strengthened many skills. I strengthened my Arduino / C coding by interacting with a neopixel LED ring and bringing together multiple APIs. I learned about how HTTP GET and POST request work and how to implement them into Arduino and Lambda code. I also had my first encounter with both AWS (Amazon Web Services) and Node JS when I built the Lambda function. Thingspeak, which acted as an in between for printer data, was unknown to me before this project. I had never coded anything in javascript, so I learned the basics of it when coding the Lambda function. I enhanced my 3d design skills by designing and 3d printing a 4 part enclosure for the project. I created and published my first skill using the Amazon Skills Kit. Overall this project was a great learning experience and even though it was challenging at times, offered hands on learning that I could have gotten from nowhere else.
The hardware components of the 3D Printer Host.
I documented the entire process of designing and building the 3D Printer Host on a Hackster page. The page contains detailed instructions on how to build your own and can be found here : https://www.hackster.io/Milesnash_/3d-printer-monitoring-with-alexa-and-arduino-024292 .
Creating the Alexa skill offered me my first chance to work on a voice User Interface (VUI) This VUI is very simple but allows users to ask Alexa about many aspects of their 3D Printer. The VUI is diagrammed below.
The basic Idea of this project was to allow users to monitor their 3d printer from anywhere in the house with ease. Users can ask Alexa about their printer though the skill outlined above, or they can look at the Printer Host Gadget which displays a prints progress on a ring of LED lights.
This gadget indicates that the print is roughly 20% complete. different colors also indicate the printers state: green = printing, yellow = paused, blue = standing by, and red = disconnected.
The case is printed in 3 parts and was designed in Autodesk Fusion 360. I created multiple case variants so that if anyone wishes to adopt a different setup for their gadget they may. All of the models can be found on my thiniverse page which can be located under the about me page (T).
I entered this project into the Alexa Smart Home Gadget competition to win prizes up to $27,000. It would have been great to win but I am more excited by what I was able to learn by building this project. I have received certification for and published an Alexa skill to the Alexa Skill Store which is proved to be a great experience and has provided lots of good feedback. So far my Hackster.io Project tutorial has received over 1,100 views which is way more than I had ever anticipated.
THINGS USED IN THIS PROJECT
Hardware components:
Knockoff Neopixels
Software apps and online services:
OctoPrint
Fusion 360
Hand tools and fabrication machines:
3D Printer (generic)
Comments