A screen upgrade for the Neptune 4 class printers. Uses WiFi to connect to the printer
Used Gemini for debugging
A screen upgrade for the Neptune 4 class printers. Uses WiFi to connect to the printer
Used Gemini for debugging
I built Poseidon 1. A display upgrade for the Neptune 4 series class printers.
There is so much I like about this Project. I love the UI mostly because I am kinda a sucker for Material 3. It is just so good. But honestly, this is 1000x better than the stock display on the Neptune 4s. I like how it is compact, and this is kinda the first-ish hardware project I have ever fully finished and used daily.
There were a lot of things that were challenging. I am not great at UI design, so that part was pretty hard. The CAD isn’t hard, but I just haven’t done it in a while, so it took me a little bit. The building was also a little challenging with all the obstacles I faced.
I really like this project, and I am looking forward to a Poseidon 2 that fixes some issues I have with it.
I downloaded Capcut for my video editing needs. I mean, I guess it is fine. I didn’t love it, but nothing bad nor good.
I already had the flow of my video pretty much figured out. So I didn’t have to spend much time on that. Most of the time was spent on voice-over and script.
First Time doing this, so it wasn’t great. But it turned out better than I thought. I had a notepad open as my sort of teleprompter while doing the voiceover. I would just write what came to mind so I could say it smoothly while recording.
The quality isn’t the best. I don’t have many resources, so considering that it is good.
Anyway, after I edited it all, I uploaded it to YouTube. That part was pretty easy and straightforward.
After that, I updated my Flavortown Project and README.
And that is the end. Thanks for walking along with me on this journey, and hey, maybe at the next event, there will be Poseidon 2.
Log in to leave a comment
Anyway, back to the topic of today’s devlog. I recorded all the content and took all the pictures to fill in the rest of the README.
It was somewhat challenging. After all my first time really doing this. So starting out, it was pretty difficult, y’know, positioning, vibe, etc. Of course, I forgot to start the lapse, so I didn’t get that part, but whatever.
I experimented with a few shot types
Log in to leave a comment
Guys, we did it!!!!! We have officially made it to building. And actually, I am done building it.
This has been a great project, but I am acting like we are done. We are not.
First off, and most obvious, I assembled the device. This took the most amount of time. I had glued it together, then something wouldn’t work, and the cycle continued. But eventually I got it all enclosed, and it works perfectly.
I had some issues with the touchscreen. I kept trying to figure out what it was. I spent maybe 15 mins trying to figure this out. Turns out I had the Data - and Data + swapped. So once I fixed that, the touchscreen worked amazingly.
Software was also a pretty sore spot. So I had kept the SD card from the old Pi Zero 2W, but I guess something went wrong, and the OS just didn’t work on it anymore. Anyway, so I had to reinstall RPi OS, not a big deal, just a little inconvenience. But then, for the life of me, the customization on RPi Imager would not work, so I couldn’t connect it to RPi Connect (my primary way of accessing the pi’s terminal). So I had to downgrade a good amount until it finally worked, and then pretty much everything was smooth.
So I still have to make the hardware demo video. I want it to look like a really good video, half for the votes and half for the votes, so really all for the votes. That is going to be a struggle, though, because I have never done content creation sooooooo.
Log in to leave a comment
Yay!!!! More Pages. Love to see it.
This is a bit of better news from my last devlog.
There are 3 new pages:
The light page is simple by design; there is absolutely no need for an overly complicated page. There are two expanded buttons, one for the part light and one for the frame light. Keep in mind, this is a feature exclusive to the Neptune class of printers with OpenNeptune and will probably not work on other printers.
The Macros page is also simple by design. It is a lot like Fluidd’s section for macros. It is simple but easy to read and compact. Just tap on a macro to execute it. It uses nice M3E buttons, so it looks good too. Very simple but good.
The Settings Page is quite barren at the moment. There really are no settings. This page is meant to be there for the future and to clear the stored connection so you can connect to a new printer, or if your printer changes IP.
All of these pages, while simple, add to the feel and usefulness of Poseidon 1 dramatically. We really just have to build this. I am so excited.
Log in to leave a comment
I had a little daughter board connected to it, and I need to remove it, and well, we didn’t do it the best way.
I got my dad to help, so we got the board off, but chiseled a bit of the edge of the board, and that was really our doom.
Chiseling the board connected GND and 5V together, which I fixed, but then it also severed a few connections, and now the board won’t turn on.
I had to buy a Pi Zero 2W off of Amazon, which is super expensive, but it gets here quickly. I also ordered one from FT, but that won’t get here in time.
I will probably return the PI from Amazon when I get my FT one and get my money back. Yeah, pretty sad though. But it should be good. Hopefully.
Log in to leave a comment
So I fixed a bug that caused the print jobs objects to be stale. It would only update at startup. Now it updates every time you open the files page and when you start a print.
I also added a dialog to the cancel button to confirm with the user if they really want to cancel the print.
So quick, little one, just waiting for the parts to print.
Log in to leave a comment
Phew, that is a whole lot, and I have typed so much today because of the README.
Let’s start with the CAD. I added a nice little stand so Poseidon 1 can stand up at a near 45-degree angle, an angle I found is pretty ergonomic for this. I also added some cutouts and protrusions to help guide the casing when being assembled, so you can get it just right.
Next, the README, I want to keep this short and sweet because I wrote so much stuff in the README. I took a lot of images of each component of Poseidon 1, and I looked at other Flavortown projects that got a good storytelling score to see what they did and how I can too get a good storytelling score. And then I just went into detail about my project, which you can read on GitHub.
Log in to leave a comment
We did it, finally we did it. We got auto-discovery working. This was a bit of a doozy. Get working, so let’s go through everything.
First of all, I got basic mDNS going using multicast DNS, and it actually would’ve kinda worked, but Windows being Windows, even though my implementation was completely right, it wouldn’t work and kept giving me error 10042, which was super annoying, and I kept trying to fix it, looking it up using AI everything. None of that fixed it, so I booted into Fedora, and guess what, it works. I honestly hate Windows so much it is complete and utter garbage.
Then, while it was searching, it wasn’t finding anything, so it turns out Open Neptune doesn’t have mDNS enabled by default, so I turned that on, and it started working.
After I got all of that sorted out, the rest was relatively easy. I saved it to storage to not have to select your printer every time and just fleshed it out.
I made a quick little screen, kinda like a setup screen, where you select your Printer to connect to. simple but good.
With that, another big item is off the list, also btw the case I printed, and it actually fits really good first try.
Log in to leave a comment
So the first version of the CAD is done!!!! ish. I finally modeled the top piece of the case.
I printed the bottom case and noticed a few issues. I switched the sides for the HDMI port, etc., so I had to switch that. I didn’t know how to mirror it, so I ended up recreating it.
I sketched out the standoffs on the pi and display that I will use to connect them both. I also made a cutout bar for the ports for the Pi.
Now, as I said before, I will have to route the HDMI cables and USB cables externally because I don’t have a DSI display, and it is too small.
I also added Poseidon 1 on the bezel just to y’know make it look cool.
Speaking of looking cool, after I print this out, I might add some more cosmetic features to the CAD.
Until then can’t really do a lot until I get the piece printed. I might work on the app a bit more, but idk.
Log in to leave a comment
We finally got to CAD. We are approaching the final stretch. One thing about CAD, though … I hate it. idk what about it, just not my cup of tea.
However, I still have to push through. I started off by making the basic shapes of the main components, the pi and the display. This was pretty easy, just taking some measurements off their website.
Then I started modeling the Bottom case. This is the side that the screen goes on, so maybe the top part idk. On here, I added a bezel labeling for the ports and buttons, etc. I also sketched out the port cutouts, but obviously, you can’t see them.
All of this really led me to think, “ Wow, my display is really inadequate for this.” It is too small, and HDMI is not the way to go with this at all. It should be maybe 5-6in and be DSI, so I don’t have to deal with bulky USB and HDMI cables. The worst part is that, for some reason, the data USB doesn’t supply power or not enough power, so i have to solder to the underside of the board. If there was more time for it to arrive, I would, but it just won’t get here in time.
Log in to leave a comment
This is really starting to feel like a real thing coming to fruition.
This is the Printing Page. You get transported here when your printer starts printing.
This is definitely a big achievement and milestone for Poseidon 1. I mean, before it felt like something, but definitely not anything you could actually use. But with this, I am starting to think you could actually do stuff with this now.
With the completion of this, the software is almost done. I might add a few more things to flesh it out, optimization, etc., but I do kinda gotta hurry this up, seeing that Flavortown ends in 11-ish days. After this, I think I will work on the hardware, so pretty much just CAD. I have everything else working. I might, if given enough time, make an image that has this preloaded and everything needed, and boots it up automatically; that would be cool.
This is still definitely not yet a replacement for Fluidd. Given enough time, and if I had a bigger screen, I could fit more info on here and have time to implement it, so maybe for Poseidon 2?????? Anyway, I am super happy how this turned out and can’t wait to continue this.
Wow, am I burnt out. I need a break after all this. At least it is done. Looking back now, I have done a bunch of stuff.
So the tune page is more like a container for the move and temp Widgets. How I built it was that the Temp and Move pages are actually widgets, so I can use them in other places, such as a printing page, and embed them into the UI. The Move page took the most time by far. I just couldn’t get the UI right at all. It was a pain. Once I finally got it all, then for some reason it wouldn’t scale right at all. I got really mad at this, I mean, really mad. So I scraped the whole thing and rebuilt the entire Page with a slightly new design. And this one scales correctly.
I never knew you were able to attach more than one file, so that is great. You can see both. But otherwise, the actual implementation of the backend stuff wasn’t hard at all. The hardest part about it was that before I was going to have a field for z offset, I probably could add it, but I think there is a better way, and I just scraped it for now.
Then, the Temp page I made it more colorful, indicating the place for the extruder and bed. Still on the edge if I should remove the colors idk but I think maybe I will keep it. I also added presets because it is quite hard to manually press +5 like 42 times just to get to 210, so yeah. I also need to add a filament page, but idk where to put that now
Log in to leave a comment
Phew, quite a lot done. But let’s talk about the elephant in the room. The Files Page
I am really liking how this looks. I know there is only one item, but I really don’t keep many stored files on my printer. But you can see it still.
First and most prominent, you have the thumbnail preview so you can easily and visually search for the file you wish to print.
Then it tells you the filament weight, good for gauging if you have enough filament for the print.
Then the layer height tbh this one just kinda looks cool and fills in empty space but still helpful ig.
Then, finally, the estimated time. Do I really need to explain why this is helpful?
So this is a scrollable view when eventually you have more than 4 files, which most people do.
You can also sort newest first or oldest first also very helpful.
Right now, if you hold a print, then it selects it and shows a delete button on the top right. I am thinking about either adding more actions to the top right or making a context menu; both would be good.
That is pretty much all for the files page. I had to adjust some stuff in the backend, but boring to talk about.
I also had a little bit of time in Figma, just very roughly sketching out the designs.
Log in to leave a comment
Hooray, I got the home screen on my screen/pi!
So I finally coded the Home Page into the Flutter App. It was definitely more challenging than I expected, but I got there soon enough.
I haven’t completely finalized it; there were some oddities going from Figma to Flutter, as in it might look different in Figma than it does in Flutter, mainly because of resolution/ screen size.
I got most everything functional, though.
Some of the icons are temprary mostly because I didn’t feel like adding them to my assets, but I will fix that soon enough.
So far, this project is going great. I can’t wait for it to be finished.
Log in to leave a comment
And tada!!!!
The home page design is now done.
This took a while, and I mean a while. Hopefully, it doesn’t take this long for all the other screens. It mainly took this long because I was experimenting with color stuff diffrent designs and establishing a base. Now that all of that is done it should take me significantly less time to make each screen.
I have changed a lot and I think it looks so much better. I am still a little skeptical of the two big buttons since their function is kinda duplicated on the nav rail but I think it looks fine enough.
I have changed alot and here are a few notable ones.
Log in to leave a comment
This has been a while.
This was mostly spent on Figma. I did a few things on VS Code, but very minor readability things that deserve no mention.
I made, after a lot of tinkering, a home page for Poseidon 1. I am really not good at UI at all, and I am trying my best. I have scraped many ideas after working on them, but honestly, that is just how UI goes.
Of course, this was built on material 3 because why would it not be? I think the dark mode looks better in this context. giving a more atmospheric oceany vibe like what I am going for with Poseidon 1.
There are still definitely some things I could improve with this design. I plan on tinkering more with it to make it look better. The thing I am most skeptical about is the two big buttons; they kinda look out of place, and maybe there is a better thing to put there, but idk. They are what I spent the most time contemplating on. The status doesn’t necessarily look bad, but ehh could be improved.
The nav bar should stay simple, but looks a bit generic and rushed in the state it is rn. I will play around with the icons and effects, maybe I can spice things up more.
Also, I really need to find a better font, the default one isn’t cutting it
Welp, that is it for me. Ig I should get back to work tbh I am kinda in the flow. Oh, also sorry for the 5-day break …
Log in to leave a comment
We did it.
Quick devlog here. I decided I wanted to put this on my Pi to test it, and guess what…
IT WORKS!!!! It is so good to see that it works. And another good thing, Flutter Pi ran a whole lot smoother this time, running and building. Even with all the logic added.
Well, that is it super quick one to show it off.
Log in to leave a comment
This concludes another part. Sad to see it go.
Well, I added current print jobs. I can now track a currently active print for something like a print screen.
At first, I was just trying to do it with my print job objects, but it turns out that for actively printing things, you use the print_stats object.
I now have to move on to actually making the UI and stuff instead of just the backend. Sad, I know. It is weird because I feel like I am almost done, but I am not at all. Weird. Anyway, that is all for today. Next up, UI and other stuff.
Log in to leave a comment
Another quite big milestone.
I finally got Print Jobs to work. I can now get my print history and even print out another model.
As you can see from the image, there is a new print job section, and there is a new button to reprint the most recent print. The reason there was no filament used and no print duration is that I cancelled the print, not that it is broken.
This is another huge milestone for Poseidon. I will focus now on current prints. And then I will probably have to do UI. yuck.
But in better news. We reached 10 HOURS!
Log in to leave a comment
I did a lot today.
A lot in a short-ish amount of time. Today I did many, many things.
First off, I removed the old classes for the fans and print jobs. Then I changed the fan class. So, turns out the fan object is only one; it is just the part fan, so actually that simplifies things a bit, so I changed the fan class to reflect that. Macros, I changed a bit, only requiring the name and no G-code variable.
I added the objects variable to the Printer object alongside all the other changes. I added/ changed some of the functions for getting items based on statuses and subscribed to the new objects.
I also just realized that I haven’t devlogged since I got subscriptions to work, so I also did other things, such as identifying the connection with Moonraker and other things like that.
I finally added a bunch of misc functions, such as starting a print, executing a Macro etc.
I did more, but there is too much to put in this devlog. You can check the commit details.
Log in to leave a comment
Another big item off the list.
Today I finally got subscriptions to work! So any time an update comes through, it automatically updates the ui and the printer object.
It was pretty tough at first to get it working. So it turns out that when subscribing to these things moonraker only gives a partial update, so my function wasn’t setting the right values.
Updating the UI was also a bit of a hurdle. I never really had to do something like this before, well, at least in this way. I only used the SetState function; it is easy, and that is all I really needed to do. But this way with the ChangeNotifier **should ** be more efficient too. Oh, also, the ui only updates when the value changes, isn’t that cool?
Also, some minor things I rearranged, organized, etc the app a bit so it is easier to read and hopefully more efficient. I am really trying to do stuff efficiently because I am running this on a pi with 512 mb of RAM
Log in to leave a comment
Super quick one today, I just wanted to get this in as it kinda marks an ending spot.
So, as you know, last time we got Moonraker to respond and all that. But it was just a test implementation.
But now we have a real implementation with full reconnect and error handling setup and all that.
When it detects a disconect it will schedule a timer, and it will get longer and longer as time goes on. So it starts with 1 sec, then 5, 10, etc. Pretty cool.
I might research what I would have to do for auto detect, and we’ll pick up there next time.
Log in to leave a comment
Let’s go, I got Moonraker working.
While it might seem like a small victory, it is still a victory.
So all I did was set up a test function to test my WebSocket and JSON RPC 2 implementation, and as you can see from the image, it works!
This is my first experience with WebSockets and JSON RPC in general, but honestly, it was kinda easy to set up, and I also kinda cheated because I used a package that helps with some of these things, but hey, that doesn’t matter.
I am now going to figure out what to do for reconnecting and maybe even auto-discovery :0. After that, I will start setting up the classes with the actual functions and really get to work with it.
Honestly, kinda scared for the UI I am awful at UI, so we’ll see how it goes. I really want this to look good. First time using M3E Expressive.
Log in to leave a comment
Quite a boring devlog today.
I just looked through the docs of Moonraker and made some data classes.
Right now I have 6 data classes
The fan is well obviously for the fan and same for the rest. Printer is a class to hold the state and all other objects.
Sorry about the picture, I know I am not supposed to upload a picture of my code editor, but there is really no output difference.
Log in to leave a comment
I take that back flutter-pi isn’t so much of a pain if you just work on Linux.
So I got it working on my screen, as you can see from the video. So turns out it needed linux but also it needed a slightly older version of Flutter 3.38.0. After I downgraded it worked well.
I am actually kinda surprised how well it works, like it gets a smooth 60fps on a Raspberry Pi Zero 2 W, I am surprised. Well, since I got that working, I guess it is time to actually work on the app and hardware.
I am deciding right now whether to work on hardware or software first. idk if I want to do hardware because I don’t like CAD.
Log in to leave a comment
Flutter Pi is such a pain.
I no joke spent this entire time setting up the pi and flutter pi.
The whole setting up the pi and Flutter Pi on the pi was easy, quite straightforward, but building the app is the problem. It would never work, from cryptic, undocumented errors to stupid windows, it just never would work.
There is a method for building apps that seems easier, but it is Linux only. Annoying, but you know, sure, and then that wouldn’t work, I think, because of a version mismatch, but by that time, I was done. I am just going to worry about this another day. It basically works, just I can’t get an app on there, not the pi’s fault.
Log in to leave a comment
Welcome to Poseidon 1!
Poseidon 1 is a display upgrade to the Neptune 4 class printers. I only have a Neptune 4 Pro, so it will be mostly tailored to that printer. Oh, also, I have OpenNeptune sooooooo yeah if you care about that.
The current display is just quite bad. I mean, it works for super basic stuff, but not very well. This will be a replacement screen that still fits into the same holder for the display.
I am using Flutter for the UI mostly because I know it quite well, and it’s so easy to make good looking UI. Speaking of UI, I love Material 3 Expressive, and I found a package that includes the M3E components. And it looks so good!!!!. I can’t wait for this.
I have most of the parts already, so I don’t need a grant or anything. I am debating whether to use the same display connector. I could use it for power and maybe even serial, so you don’t need to be connected to the internet.
I plan on using Moonraker for communication with the printer, but like I said before, maybe even serial (It depends).
I can’t get over how good the M3E components look.
Log in to leave a comment