Octoprint Printing Monitor
Hello!
I think this project will be useful for people, who uses Octoprint.
It's a screen with colorful backlight that shows you some information about printing progress. It works with Octoprint API to get all the information about current process. Python script connects to Arduino Leonardo (you can use any with usb port. I used Leo, because I had had it before) and gives it some info. Also you can control your printer through this device.
You need:
- Raspberry pi (I used raspberry pi 3 B+)
- Arduino Leonardo (On photos you can see Iskra Neo, It's an analogue of original Leonardo)
- Micro usb cable
- 20x4 LCD screen (I used without I2C controller, but it's not difficult to edit code to use the I2C one)
- Four buttons (I used a module)
- Mini breadboard
- Some wires
- RGB LED strip (How long? It's up to you)
- Power supply, I used 12v 3a. It's ok to supply LED strip and Arduino
- 3D printer to control and you also need to print a case for the screen
- Some connectors: barrel jack(male and female)
- Double sided tape and insulating tape
- Buzzer
- DHT21 temperature and humidity sensor
Optional. You can simply connect all without soldering.
- Soldering iron
- Solder
To some extent it's a difficult project. I've spent 2 full days to finish it.
Getting Octoprint API Key
You need to have API key.
Save it.
Setting Up Your Raspberry to Run Python Script
At first you need to connect to your raspberry through ssh.
Then login and type this command
sudo apt-get install python3-pip
Then you need to install some python packages
sudo pip3 install pyserial
After all installations download python script from Github page
Type in ssh terminal sudo nano port.py, then copy all from octoprint-monitor.py and paste in terminal. In variable API you need to paste your Octoprint API key. You can paste through clicking on the right button of your mouse. After that press Ctrl + X, type "y" and press Enter.
Then make logMaster.py file through sudo nano logMaster.py, then copy all from octoprint-monitor.py and paste in terminal. You can paste through clicking on the right button of your mouse. After that pres Ctrl + X, type "y" and press Enter.
Then make command sudo python3 port.py
If you have an error, check previous steps.
If you see "
Connecting...
Connected.
" in your terminal all is ok. Press Ctrl+C.
Printing Case for LCD Screen
Connect All to Arduino
On this picture you can see wiring diagram. Connect lcd display to arduino.
- Then connect buzzer to 9th pin
- Button 1 to 7th pin
- Button 2 - 8th
- Button 3 - 10
- Button 4 - 13
- Temperature sensor - pin 0
- LED strip - pin 6
After that fix it all on printers side, glue lcd and buttons to the printed case. Fix the case with double sided tape.
Connect arduino to raspberry pi with usb cable.
Connect power supply to arduino and LED strip as on the picture.
Uploading Sketch to Arduino
You need to download file octoprint-monitor.ino from github and upload it to arduino.
You'll need some libraries.
- Adafruit NeoPixel
- Liquid Crystal (It's already installed to Arduino IDE)
- Troyka DHT library
Then connect arduino to raspberry pi.
Checking That All Is Ok
UPDATE:
Auto port detection added! Now you don't need to find arduino's port.
Launch python code. If you see text "Connected serial", all is ok.
Setting Up Script to Auto Start Up
How to add script to autoload on raspberry pi?
It's easy. You need to type
sudo crontab -e
And add at the end of the file only one line.
@reboot /usr/bin/python3 /home/pi/port.py
That's all. Now reboot your raspberry and verify all.
Finishing
Now the last step.
Check all and if something isn't well, write a comment with your problem.
Thank you for your attention!