Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] Adding Nextion HMI Display support #7754

Closed
DaeMonSx opened this issue Sep 26, 2017 · 46 comments
Closed

[FR] Adding Nextion HMI Display support #7754

DaeMonSx opened this issue Sep 26, 2017 · 46 comments
Labels
C: LCD & Controllers T: Feature Request Features requested by users.

Comments

@DaeMonSx
Copy link

How about to add the Nextion display support as a standard lcd feature?
I do know, there is the marlinkimbra with that feature, but would be good to have it in the main line.

@fiveangle
Copy link
Contributor

fiveangle commented Sep 27, 2017

@apballard has done an absolutely gorgeous implementation:

https://www.youtube.com/watch?v=4NnOwrkCkYk
http://support.iteadstudio.com/support/discussions/topics/11000008599
https://github.com/apballard/Marlin

-=dave

@Tannoo
Copy link
Contributor

Tannoo commented Sep 28, 2017

I was working on that also for a little while and ran into the snag of adding screens. It snowballed into something I gave up on for the time being.

@Deneteus
Copy link

And my axe! Actually, I would like to see some sort of external serial display functionality so I can do stuff like add an Android display as an external monitor for multiple printers.

@apballard
Copy link

@fiveangle i want to re-do my implementation for version 2. Want the development to stabilize a bit and maybe have v2 released.

#7790 could also be addressed at the same time. We should look at doing a serial lcd framework that has a default protocol defined. That would mean a second serial port, with the ability to receive gcode and pass it over to normal handlers. And some more specific lower level functions for setting temperature and so forth much like the current lcd implementation.

Would have to re-write the nextion library into a more generic library/driver so it can be used by other serial displays.

@fiveangle
Copy link
Contributor

@Deneteus — Oh, all we need to do is submit a feature request ? Oh wow, where do I begin ! ;)

@apballard — your implementation has quite remarkable polish for a first pass proof of concept. Nice job. I'm sure if you ever find time to get it to v0.82 status you'll have more people willing to test out stuff for you that you would know what to do with.

Let us know ahead of time so we can each get one ordered and put on the slow boat to us for when you're ready :)

@Deneteus
Copy link

@fiveangle MagoKimbra solved this in 2015. It's a little beyond a feature request at this point.

image

@lkvapil
Copy link

lkvapil commented Dec 6, 2017

Any news @Deneteus @fiveangle ?

@thinkyhead thinkyhead added T: Feature Request Features requested by users. C: LCD & Controllers labels Feb 10, 2018
@Spawn32
Copy link
Contributor

Spawn32 commented Feb 15, 2018

Any news on this ? 😄

@lkvapil
Copy link

lkvapil commented Feb 15, 2018 via email

@weeelfi
Copy link

weeelfi commented Feb 20, 2018

Hi!

I tested the @apballard solution with Mega+Ramps, and works perfect. (only need to fix a some parentheses missing, nothing more)

I think that another kind of LCD is a good feature for Marlin. Nextion is more expensive than RepRapDiscount Full Graphic (for example) but is easier to use and more intuitive (tactile > knob)

Waiting the 2.0 update from @apballard

@alexxy
Copy link
Contributor

alexxy commented Jun 20, 2018

Any news on this type of displays?

@thinkyhead
Copy link
Member

Nothing to report at this time.

@BigDi
Copy link

BigDi commented Aug 30, 2018

Tried to merge the HMI part of apballard to Marlin 2.0. I have a LPC1768 Board and compiling stops in ITEADLIB Arduino library at a function that will set a timeout on the serial. I also made some update in the Arduino code. But here ends my knowledge...

@aenertia
Copy link

aenertia commented Sep 3, 2018

FYI - a lot of the STM32 based Printers are using Nextion HMI displays I have one sitting in front of me right now from my Mooz2.

I can't say I am a huge fan of them, the nextion editor is pretty closed up; there are some python libraries that can sorta update the firmware over serial - but I couldn't get them to work (probably due to the current firmwares often locking them out).

It will likely mean defining a standard 'Marlin' UI and shipping a compiled tft blob to load on them for the various size variants AFAIK there doesn't appear to be a Opensource build chain. So I would guess it will mean defining standard elements for the generic case and then having someone implement them on the various screen sizes /feature touch/non touch.

TBH the cheap knockoff waveshare xpt2046 - sitting next to it which whilst limited to extremely slow framebuffer support is actually much more useful.

However given the prevalence of the nextion screens appearing in printer kits - it's probably worthwhile to have a plan around how to manage this.

@BigDi
Copy link

BigDi commented Sep 4, 2018

I have no knowledge about connection between display to Marlin. I was looking for a color touch display for my DYI printer. I changed last weeks from RAMPS to SBASE. I ordered a TFT28 but I'm not satisfied. After some search I found this post.
Before I order a new Nextion I want to try the code from apballard. But without sucess. I search for other possibilties and found also display from AMP. They used same methods like Nextion. But they discribe the binary [protocol](http://www.ampdisplay.com/documents/pdf/DGUS%20v2.0%20(08-09-12.pdf).
I don't know if a frame buffer is the right way. From my point of view it is too time consuming to render a picture and then transfer it to the display. Next problem could be the required number of IO pins.

@aenertia
Copy link

aenertia commented Sep 4, 2018

Well the easiest path is simply move that to something which does have a reasonable framebuffer/X11/wayland/whathave you. The dujour is octopi; but you can use a cheap tablet with a browser mounted with a USB port/old laptop etc etc.

These screens are basically doing the above - and making that setup opaque and proprietary; nextion has more resources than the MCU running the printer - none of which however are open designs.

Basically my mantra is if I can't reasonably work with a completely open tool chain - the product is a trash fire.

@alexxy
Copy link
Contributor

alexxy commented Sep 4, 2018

There is opensource displays like PanelDue with open schematics and firmware also see

@aenertia
Copy link

aenertia commented Sep 4, 2018 via email

@BigDi
Copy link

BigDi commented Sep 4, 2018

I got news of a new miniPC. They also sell a combination of screen and PC. This could be option for an open source implementation of a display.
http://vocore.io/screen.html

@thinkyhead
Copy link
Member

For the curious, take a look at MarlinKimbra and/or MK4Duo, which supports the Nexion display.

@BigDi
Copy link

BigDi commented Sep 5, 2018

I already took a look at MK and MK4Duo. Both projects uses Marlin 1.1.x Arduino libs which can't be used without any adaption with PlatformIO on my LPC1768 board.

@AnHardt
Copy link
Contributor

AnHardt commented Sep 5, 2018

@BigDi
https://www.youtube.com/watch?v=2-eclUz-RYI ;-)

@boelle
Copy link
Contributor

boelle commented Feb 19, 2019

@apballard could you submit a PR, of course its needs to pass inspection but it might good enough tht it can be added

@guestisp
Copy link
Contributor

So, Nextion support (or any other LCD) was abandoned ?

@boelle
Copy link
Contributor

boelle commented Jun 22, 2019

@apballard ??

@fiveangle
Copy link
Contributor

His repo is therefor anyone to incorporate (also posted this at top of this thread): https://github.com/apballard/Marlin

@weeelfi
Copy link

weeelfi commented Sep 29, 2019

Apballard made a great implementation. I tested in a MegaRamps, and works very well. But Apballard didn't make any update.

What is needed to make for support Nextion display in marlin by default?

@studiodyne
Copy link
Contributor

studiodyne commented Aug 14, 2020

Idea: Make a donation group , and ask @thinkyhead to make the module + a github for the Nextion marlin OEM firmware
Not infinite time wasted / not expensive if we are a big group,

Marlin really need , to have a DISPLAY , not 1000 differents displays with differents screen not complete ! , impossible to use a without the old lcd, because there is always something that missing , and that need to learn LINUX/PYTHON/JAVA and more to just add a screen with ' linear advance '!

Nextion is the solution and , once the sources will be started here , we will work on it with a functionnal starting point , and make many improvements each time it's needed

ps: May be Nextion will want to donate 😄

@EvilGremlin
Copy link
Contributor

You surely meant TJC displays?

@thisiskeithb
Copy link
Member

You surely meant TJC displays?

TJC might make the panels, but they are commonly referred to/sold as "Nextion".

@EvilGremlin
Copy link
Contributor

EvilGremlin commented Aug 15, 2020

I'm well aware :) He's fangirling over nextion tad bit too much and have no clue about real state of things.

@Skorpi08
Copy link
Contributor

Skorpi08 commented Aug 15, 2020

@EvilGremlin
Copy link
Contributor

Do you have it published somewhere?

@Skorpi08
Copy link
Contributor

Link in Description

@Drakelive
Copy link
Contributor

Link in Description

Wow !!!!
So, can we now integrate support into Marlin ?

@Skorpi08
Copy link
Contributor

there is nothing to integrate.
changes in M117.cpp is not must have.

@futuretech208
Copy link

@Skorpi08 Nice work. What are the changes required to be made? I can see in your configuration file, there is no mention of Nextion display as a controller. Also, in actual Marlin folder, there is no header file included from Nextion. Is it not required?
I hope you built using PIO and not Arduino framework. It is getting compiled successfully in PlatformIO with your current settings.

@Skorpi08
Copy link
Contributor

@futuretech208
Copy link

@Skorpi08 Thanks. Actually I went through your HMI file and understood by some reverse engineering. 😄
Basically Nextion display just acts as a serial command sender for Arduino. Technically anyone can modify the UI as per the firmware need after enabling certain functions. and each button after pressing should send the Gcode of the command.
Am I right in this?

@Skorpi08
Copy link
Contributor

yes

@futuretech208
Copy link

@Skorpi08 Actually thanks a lot for giving that HMI file too. it was really of so much help. I am making my own screen UI now for 32 bit DUE. If anyone wants to make, there are few changes needed to be done.
I followed this resource for the same.

https://nextion.ca/portfolio-items/nextion-iteadlib-and-due-step-by-step/

Thank you.

@Skorpi08
Copy link
Contributor

if possible, don't use Nextion Library.

@futuretech208
Copy link

Ok, so you mean to say use "prints" function in Nextion Editor and write the code for each button. and then upload the code/.tft file to the touchscreen. Also, for SD print, where is SD card connected? Is it onboard SD card on the TFT or any other SD card? like on printer controller board?

@Skorpi08
Copy link
Contributor

Skorpi08 commented Aug 28, 2020

I mean something like this:
https://github.com/itead/ITEADLIB_Arduino_Nextion

Only onboard SD (on printer) works.

@thisiskeithb
Copy link
Member

Added in #21324

@github-actions
Copy link

github-actions bot commented Sep 3, 2021

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Sep 3, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
C: LCD & Controllers T: Feature Request Features requested by users.
Projects
None yet
Development

No branches or pull requests