Update:
OctoPrint
Although OctoPrint & OctoDash will be hosted on the same hardware, a Raspberry Pi 4 (4GB version), I wanted to keep my ramblings of each app and related hardware separate.
IMO, the one negative shared by all versions of the Raspberry PI, R-Pi for short, is the microSD card form factor they use for the OS and mass storage . SD cards are not, and never have been, designed to withstand the rigors of constant read/write operations that all OS's need to perform in order to function.
Thankfully, most versions of the R-Pi can boot and operate solely on a HDD or SSD. That is, until the R-Pi 4 hit the market. For some reason the Raspberry Pi Foundation decided to release the R-Pi 4 without the ability to boot from anything other than a microSD card. Admittedly, that feature was on the development roadmap for the R-Pi 4 but, the foundation sorely underestimated the market demand for alternate boot mediums. And it took the foundation over a year to release a firmware update with alternate boot sources enabled.
Anyhoot, booting from an SSD is a now a thing and I will be employing that feature in this project.
I will be using an old 120GB Samsung 840 Pro SSD as my boot device. To make use of the 840 Pro, I had originally planned on using the
Geekworm X832 SATA adapter. It's a pricey option considering the other items needed to complete the setup, like the
Geekworm X735 and a 12V 3A power supply, but it works well.
The X832 (click image to enlarge)
View attachment 469332
Fortunately for me and other R-Pi 4 owners, 52Pi recently released the
DeskPi Pro enclosure. The DeskPi Pro gives the R-Pi 4 a form factor that is truly suitable for use as a desktop PC. And, the $60 asking price of the DeskPi Pro includes an elegant USB to SATA solution, active CPU cooler, two full size HDMI ports, two extra USB 2.0 ports on the front panel, safe shutdown and reset via the front panel power switch and a QC 3.0 power supply.
The DeskPi Pro (click image to enlarge)
View attachment 469333
I will be placing an order for a DeskPi Pro as soon as complete this post....
As much as I really like the DeskPi Pro, I never ordered it. I did a bit more research and discovered the first run of DeskPi's had a serious bug in the USB to SATA adapter. 52Pi responded promptly with a revision, using a different USB to SATA bridge. That bridge however is markedly slower then the original chip, so I decided against clicking the yellow "Buy Now" button.
Digging around the Net turned up many positive reviews of the Argon One M.2 addon kit. As it is specifically designed for use with an R-Pi 4, compatibility is a non-issue. And at $20, it is a really good deal. Since I do not own an Argon One case, I decided to design my own case that will house all the nerdy bits I'd like to have in a rad R-Pi box.
If I remember correctly, the 2st draft of the case design measures 137mm x 99mm x 42mm (5.393in x 3.897in x 1.653in).
The top and bottom will be printed in Black PETG and the middle section in Silver PLA.
List of parts:
> R-Pi 4 (4GB)
> GeeekPi R-Pi 4 Aluminum Armor Lite Heatsink w/ PWM Fan (
Link)
> Argon One M.2 addon board (
Link)
> Samsung 860 EVO SATA M.2 (250GB) (
Link)
> M.2 2280mm Heatsink (
Link)
> GeekPi 0.96 Inch OLED 128x64 White Display Module (
Link)
> Noctua NF-A4x10 (40x40x10) 5V case fan (
Link)
> Bulgin Cloned 16mm Momentary Black Push Button Switch w/ Blue LED (
Link)
> Female HDMI Type A to Male Micro-HDMI adapter (4K rated) (
Link)
I already have the R-Pi and I purchased the M.2 SSD yesterday at Micro Center. The rest of the parts are arriving tomorrow. Then I can take final measurements and adjust the case design accordingly.
This is going to be a lot of fun...
Update: 07.10.21
The parts arrived Friday afternoon.
I started printing the case pieces this evening. Using 0.20 (Quality) settings for both PETG and PLA. Prints are going to take awhile...
And here is an animation of my case design.
View attachment OctoCase.mp4
Update: 07.06.21
Making progress but I've sorta hit a wall. And that wall is called Python, as in the programming language. I am NOT a coder.... but I will muddle through
Anyhoot, some pics of the current state of things.
Another Update: 07.28.21
In order to address all the extra power that will be required to operate the additions/mods to this project, I recently pulled the trigger on this little beauty...
EVGA 550-GM SFX PSU (
Link)
And yes, it's a PC PSU. 1st pic demonstrates the small size of the SFX form factor compared to a standard size ATX12 PSU.
The reasons for going this route are many, but the primary reason is highly stable power and lots of it. And that power comes in three voltages, +3.3V @ 20A, +5V @ 20A, +12V @ 45.8A. Along with all that power, a quality PSU like the 550 GM employs many forms of protection including OTP, PFC, UVP, OVP, OCP OPP & SCP.
Although it is more expensive then a Meanwell power supply that I've seen many 3D printer owners use, it is much more versatile and robust.
Hopefully I make time to post more info soon, but that's all for now.
Update: 08.05.21
Well, I still have not finalized anything in the way of a power distribution layout. But it is coming.
In regards to coding in Python, well... it still sucks. In a nutshell, programming is the art of rearranging all your neural pathways in order to think like a computer.
Here is an example:
The python script for the OLED status display would run fine in the
Thonny IDE but would throw an error when the R-Pi OS would launch the script.
The error looks like this;
Python:
[email protected]:~ $ /usr/bin/python3 /home/pi/pyscripts/Stats_Display/OLED_stats.py
Traceback (most recent call last):
File "/home/pi/pyscripts/Stats_Display/OLED_stats.py", line 103, in <module>
font = ImageFont.truetype("./PixelOperator.ttf", 16)
File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 280, in truetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 145, in __init__
layout_engine=layout_engine)
OSError: cannot open resource
[email protected]:~ $
I spent half the day trying to track down the meaning of all that "stuff" on Reddit, StackOverflow,GitHub, etc... When I was about to give up for the day, a thought floated to surface of my consciousness stating that I need to be
explicit.
And the thought was right! Basically, that mumbo jumbo statement above, when translated into human form means:
"Hey, what the heck? I cannot find anything that matches your PixelOperator.ttf font, so fix it!"
Python, as setup in OctoPi, cannot make sense of
./ (Look in the place where I am stored) in the line "font = ImageFont.truetype("./PixelOperator.ttf", 16)"
So, after changing that line in the Python script to read "font = ImageFont.truetype("/home/pi/pyscripts/Stats_Display/PixelOperator.ttf", 16)", my display came to life, finally.
Now I just need to get the other two Python scripts that I am working on to run.... Later, much later......
In other news, today I did manage to finish wiring up the Noctua fan and getting that installed. Pics will happen after I work out power routing from the EVGA PSU. And speaking of PSU's, I completed drawing up it's mounting bracket in Fusion 360. It will be printed in HatchBox Red PETG.
Till next time.