Poseidon 1 banner

Poseidon 1

27 devlogs
42h 47m 35s

A screen upgrade for the Neptune 4 class printers. Uses WiFi to connect to the printer

This project uses AI

Used Gemini for debugging

Demo Repository

Loading README...

Ginobeano

Shipped this project!

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.

Ginobeano

Video Finished

  • Finish Editing the Video
  • Uploaded to YouTube
  • Updated Flavortown project
  • Updated README
    Guys, we did it. As of writing this devlog, Poseidon 1 is finished.

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.

Changelog

Attachment
0
Ginobeano

Demo Video

  • Recorded videos for the demo video
  • Cinematic shots
  • Pan shots
  • Demonstration Shots
  • This is gonna be a great video
    Well, you know what is crazy? Poseidon 1 is done! Crazy right?

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

  • Pan
  • Blur
  • Cinematic
  • Normal
  • Time Lapse
    I ended up doing a mixture of all for the final videos.
    I also recorded/planned many shots
  • Demonstration
  • Cinematic B-roll
  • Showcase
  • Explanation
  • and more
    So yeah, that is how my day went. Now the part I am most scared for editing and voice over, if I have any voice over.

Changelog

Attachment
0
Ginobeano

Building

  • Assembled Device
  • fix hardware issues
  • reflash RPi OS
  • Reinstall everything
  • Set up for final version

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.

Changelog

Attachment
0
Ginobeano

More Pages

  • Macros Page
  • List all macros
  • easy to tap macro
  • Light Page
  • Expressive Segmented design
  • Easy to understand design
  • Settings Page

Yay!!!! More Pages. Love to see it.
This is a bit of better news from my last devlog.

There are 3 new pages:

  • Light
  • Macros
  • Settings

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.

Changelog

Attachment
Attachment
0
Ginobeano

A broken pi

  • Tried to fix a pi
  • Tried to slim it down
    As you can see from the image. The pi is dead. RIP.

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.

Attachment
0
Ginobeano

Bug Fixes

  • Fix stale print jobs
  • Add a dialog to the cancel button
    Quick devlog before I start building and assembling Poseidon 1.

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.

Changelog

Attachment
0
Ginobeano

Finish CAD & README

  • add a stand to CAD to help stand up at a good angle
  • Guide Cutouts
  • Other Various CAD improvements
  • Enhance README
  • Table of contents
  • Why this exists
  • Features
  • Showcase
  • Description
  • Hardware Specifications
  • Added lots of images

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.

Changelog

Attachment
Attachment
Attachment
0
Ginobeano

Auto Discover

  • Auto-discover printers on your local network
  • Uses mDNS
  • Stores connection details
  • Easy setup
  • Windows is actually garbage, and for some reason, mDNS doesn’t work on it.
  • Convenient page to list all discovered printers
  • Easy to use/understand

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.

Changelog

Attachment
0
Ginobeano

Top CAD

  • modeled pi standoffs
  • modeled pi ports
  • fixed HDMI and etc sides
  • modeled top CAD
  • branding on bezel
  • and more

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.

Attachment
Attachment
0
Ginobeano

CAD

  • modeled display
  • modeled pi
  • modeled bottom/display side
  • HDMI cut out
  • USB cut out
  • USB & HDMI Labeling
  • Pwr & Up & Down labeling

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.

Attachment
0
Ginobeano

Printing Page

  • Printing Page
  • Material 3 Expressive design
  • Easy Stats for Extruder Bed and Fan
  • Pause/Resume button
  • Cancel button
  • accurate time remaining
  • accurate percentage
  • layers info

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.

Changelog

Attachment
1

Comments

Trey
Trey 11 days ago

This looks great!

Ginobeano

Tune Page

  • Added tune page
  • Tabs
  • Modular Widget
  • Move Widget
  • Temp Widget
  • Presets
  • Emergency Stop
  • Homing
  • Step Amount

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

Changelog

Attachment
Attachment
0
Ginobeano

Files Page

  • Added Files Page
  • Print History
  • Easy reprint
  • Easy file deletion
  • Glancable stats
  • Thumbnails
  • Printer storage
  • Filters

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.

What I did today


  • Add files page
  • Modify backend stuff
  • Rough sketches in Figma

Changelog

Attachment
0
Ginobeano

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.

  • Nozzle Temp
  • Bed Temp
  • Printing State
  • Working with Moonraker

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.

What I did today


  • Code UI into Flutter
  • Make UI functional
  • Make Navrail Widget
  • Make UI responsive to Moonraker

Changelog

Attachment
0
Ginobeano

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.

  • Borders on the Quick stats
  • selection pill on the home page
  • tonal buttons
  • Font
  • Filled Icons
  • Increased size of Nav rail
  • and more
    Like a said I did a lot but those are the most notable changes.

What I did today

  • Improve home page UI
Attachment
0
Ginobeano

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 …

What I did today


  • UI design
Attachment
0
Ginobeano

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.

What I did today


  • Put Moonraker Demo on pi
0
Ginobeano

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.

What I Did Today


  • Current Print Job

Changelog

Attachment
0
Ginobeano

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!

What I did today


  • Print Jobs

Changelog

Attachment
0
Ginobeano

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.

What I did today


  • Identify connection
  • Re-do fans and macros
  • added misc functions
  • improved subscriptions
  • and more (read the devlog)

Changelog

Attachment
0
Ginobeano

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 RAMsob-ios

What I did today


  • Add Subscriptions
  • Add Change Notifier
  • Organize, clean up, etc code

Changelog

0
Ginobeano

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.

What I did today

  • Fleshed out Moonraker implementation

Changelog

Attachment
0
Ginobeano

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.

What I did today


  • Set up WS and JSON RPC connection
  • Test function

Changelog

Attachment
0
Ginobeano

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

  • fan
  • heater
  • macro
  • print job
  • toolhead
  • printer

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.

What I did today


  • Setup moonraker

Changelog

Attachment
0
Ginobeano

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.

What I did today

  • Get flutter-pi working on my pi
0
Ginobeano

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.

What I did today


  • Set up pi
  • Set up flutter-pi
Attachment
0
Ginobeano

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.

What I did today


  • Brainstorm the project (this is not time tracked)
  • Set up the Flutter project
  • Demo the M3E components

Changelog

0