Jump to content
Ultimaker Community of 3D Printing Experts
Render

Custom firmware - Demo

Recommended Posts

I'm working on a custom firmware for Ultimaker 2 and so far I have focused on the UI of the main menu. I have restructured the original menu options into something that I personally find more intuitive. Unlike the original, it is structured according to the different parts of the machine, as well as all submenus are based on a single main menu (a dock with icons), it reduces the number of keystrokes required for most options.

For the development of the start menu I have tried to keep the minimalism of the original interface and the feeling of deceleration (easing) on the scroll.

You can see a demo running on the Marlin Simulator here:

 

The video gives the feeling of lack of smoothness in the movements, but because of the capture. I'm using a Windows virtual machine on OSX which in turn makes a Marlin simulation, as in Rick & Morty, a simulation inside a simulation... ;)

Running on the printer looks really great.

I have only implemented some extra functionality for now, and I'm working on the preheat menu, but the list of changes and updates that I have in mind is quite extensive.

I want to know your opinion on the overall appearance and structure of menu options. And of course, in a later time I will open the source.

Edited by Guest
  • Like 8

Share this post


Link to post
Share on other sites

Ultiarjan, yes I know the tinkergnome firmware and I plan to add many of its options as well as print info / tune options. I wanted to start with the UI to arrange the structure and the main appearance, but I've already worked in a custom firmware for my Prusa i3 Steel with this kind of features. In fact, some of the options we are talking about are already present in reprap Marlin firmwares. My intention is to create a hybrid that keeps the simplicity of UM2 and the advanced options of reprap versions / tinkergnome firmware.

On the other hand, part of my effort also goes to allow an easy implementation of UM2 Marlin updates without re-coding and digging too much so I need to adopt the way Daid works and his nomenclature pattern.

I appreciate your feedback and I'm open to any suggestion.

Thanks guys!

Share this post


Link to post
Share on other sites

What I am sometimes missing now, is status info during printing, such as: nozzle temp, bed temp, fan %, speed (actual mm/s, and in flow %), flow %, layer nr. of total layers. This comes in handy when playing around with settings, so that I don't have to open all submenus to find out.

Would it be possible to add this, if it would fit on the screen? Probably some parts need to be alternating.

For example (I limited each line to 20 characters, like it is now. I don't know if you can put more text per line?):

--------------------

file_being_printed

time to go 9999 min

nozzle 222° bed 100°

fan 100% flow 100%

layer xxxxxx/yyyyyy

material flow 100%

material PLA

--------------------

(Anything I forgot, or that other people would find useful?)

Also during warming up and cooling down, more status info would be nice, such as both nozzle and bed temp.

For the buildplate, a function to manually move the plate up and down step by step, by turning the wheel, would also be nice. This when not printing. (I don't know if it would be a good idea while printing, maybe too risky?)

  • Like 1

Share this post


Link to post
Share on other sites

For the buildplate, a function to manually move the plate up and down step by step, by turning the wheel, would also be nice. This when not printing. (I don't know if it would be a good idea while printing, maybe too risky?)

 

'while printing' is where the fun starts :)

...and very useful to tune the distance between nozzle and buildplate while it prints the skirt/brim.

 

  • Like 1

Share this post


Link to post
Share on other sites

I have only implemented some extra functionality for now, and I'm working on the preheat menu, but the list of changes and updates that I have in mind is quite extensive.

 

well, you want to make it public later - ask yourself how much time you can invest, and how many years you are able to maintain it...

...and after that: have fun making it!

 

I want to know your opinion on the overall appearance and structure of menu options. And of course, in a later time I will open the source.

 

If you're interested in my opinion...

I like the icons, but i would prefer a main menu, where i can see all possible option without scrolling.

The structure of menu options is always a matter of personal taste, and how the printer is used.

E.g.: If someone prints only via USB, he don't needs the 'Print' menu, but instead more control options during printing.

If someone don't uses Cura or UltiGcode, he never uses 'Material Settings'...

If someone often changes nozzles, he would prefer a simpler way to adjust the distance to the buildplate...

...and so on...

I would recommend: just use a structure that fits your own needs (or find a way to make it configurable at runtime...)

  • Like 1

Share this post


Link to post
Share on other sites

I've been out of town a few days and I could not write until today. I'm on vacation this month and will not be able to work in the firmware.

geert_2, I don't think that all the information you mentioned fit on one screen at once, at least not with this font size, but basically these are all things that I intended to draw on the print screen. In my other printer firmware (also with a 128x64 display) I have less data on the screen and fill almost whole, but on the other hand, use margins, spaces, icons and boxes to make a more aesthetic design. Of course some parts can alternate, or to use a different font for certain data. Anyway, I need to work on it and to make test to know what can I do.

As tinkergnome told you, babystepping is what you are looking for. Since this is already coded in Marlin, it can be adapted to UM2. The thing is, as tinkergnome also mentioned wisely: the time. The priorities in my to-do list, the fact that every feature I can add to the firmware takes a lot of research, code digging... and then, start doing the job. But yes, this is something I know I'm going to need and something I would like to add.

Tinkergnome, you nailed the point. My main concern about going open source is how long can I maintain the project, I mean a project with version control. Maybe I will only publish the files periodically and I won't use git.

I already have designed the menu without scroll, with two rows of 5 icons + bottom text and also another design with 2x4 + bottom text + extruder and buildplate temperature info. This was my first version (and also the design of my current P3Steel firmware). I like it but, the truth is that I really liked the scroll easing and the minimalism of Daid's design when I saw it, It's basically the opposite of what I was used to: lot of information and functionality over aesthetics. I guess it was one of the priorities of Ultimaker when they designed their whole machine, something like "what Apple would do if they make a printer", but fortunately open source ;)

This machine is beautiful as no other, It works well enough to not have to be so aware of more technical aspects that are crucial in many reprap printers. So, after I tried my old menu system here (5x2 icons) I felt like that was not the thing I was looking for, I want to keep that sense of minimalism not filling the whole screen and to try to be closer to Ultimaker style, but also adding many of the things that I use to need... and graphics, I love displays with graphics :D

On the other hand, what would be the point of doing a geek style firmware if you are already done an awesome one? This is something I wanted to talk with you, I'm not going to create another expert version of Ultimaker 2 firmware, my intention is to focus on a intermediate level interaction. I already have a machine that meets my geeky needs! This one has to be beautiful and elegant or my girlfriend is going to throw me out of home!

But also, if I'm working on something that I like to have, why not share and ask the people what they think. If there's anyone looking for something like me, I will be proud to share my work.

You know exactly what involves making the menu editable at runtime, handling the types and the callbacks is a pain in the ass. Letting some kind of configuration/reordering is a possibility that I have in mind, even to allow selecting between Scroll / 2 rows and stuff like that, but trying to convert the system to structs or arrays to get a fully customizable menu is hell!

Thanks for your feedback, of course I'm interested in your opinion ;)

  • Like 2

Share this post


Link to post
Share on other sites

That looks amazing! I love the icons in the top, really nice to have that information while you're working on other settings.

I'm assuming this was just a simulation, but if it wasn't you should probably take a look at the PID  values of your bed, that temperature oscillates way too much :p

Edited by Guest
grammar

Share this post


Link to post
Share on other sites

And the simulator must have a 100W heater for the hotend... ;)

@ultiarjan: I agree with you if one has an advanced user in mind who controls the parameters through the print. However, I think the OP had in mind to make the paths shorter. And this design is much less language based.

Edited by Guest

Share this post


Link to post
Share on other sites

And the simulator must have a 100W heater for the hotend... ;)

 

Yeah! I've attached a rocket engine to the printer to make things faster :D

Yes, everything is related to the simulator, Daid already talked about this weird behavior, nothing to care about.

And yes, I agree with both statements: info density is not a priority but I try to make the paths shorter (and related hierarchically).

I'm focusing on aesthetics and intuitiveness, but the thing is, this way brings faster access to some parts of the firmware than going throw the current menu structure, it's not about a beauty but useless screen. On the other hand, the print info screen is where info density becomes crucial (or not, depending on the user needs), I haven't worked on it yet, It's a pending task.

I'm also turning an idea since I started this project, something that I already discussed with tinkergnome: the possibility of allowing the user to configure the menu options.

The concept is very clear to me, I would create another icon in the main menu, a quick-launch submenu where the user selects icons as shortcuts to any other node. Then it should be possible to choose to start at main menu or quick-launch menu, both also accesible from the other one. The problem is the way it has to be coded, this is a modular approach, the one I'm used to work with OOP, but currently the menu system is very hardcoded and I should rewrite a lot.

For now I'm still working on the main UI, the ToDo list is huge!

Thanks for your feedback ;)

  • Like 2

Share this post


Link to post
Share on other sites

I love this firmware!!!

Could you please add the extruder motor step setting on menu?  I am using a third-party extruder set,  gear ratio is 1:3, It need to set the extruder moto step to 3x for ultimaker 2,They provide a custom firmware to do it.  but it is in chinese and I don't know the version, so please add this function, thank you very much.

WechatIMG7.jpg

Edited by Guest

Share this post


Link to post
Share on other sites

Another demo. Print menu already implemented.

Most of my time is going to refactor and optimize code, otherwise the flash allocation size exceeded 128K, and this has forced me to study and solve other problems. It's being a looooong way.

BTW changing motor steps/mm is already implemented, it was one of the first things I did ;)

  • Like 8

Share this post


Link to post
Share on other sites

Another demo. Print menu already implemented.

 

Most of my time is going to refactor and optimize code, otherwise the flash allocation size exceeded 128K, and this has forced me to study and solve other problems. It's being a looooong way.

BTW changing motor steps/mm is already implemented, it was one of the first things I did ;)

 

Awesome work man, I'm impressed!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!