Nextion broken?

dear friends,

I bought a nextion intelligent display to use as a GUI for my arduino project. When I received the screen, I immediately started using it. I noticed that the screen has blurry spots on a white background only, not on other color backgrounds.

I sent the display back to the store. The store investigated the device and said that all their screens with a white background have these spots. I accepted the problem and continued with the same device. After reading the manual, following all the directions that can be found online, I have not yet succeeded in turning on the internal LED on the arduino uno by means of a button on the nextion. Every time I click on the graphic button, I see the TX light on the arduino only blinking minimally. It is barely visible in the video, but it certainly responds.

On the ten projects I've imitated over the internet, I get this result every time. a minimal flashing TX and no response from the internal LED. I'm working with these displays for the first time, so it's very difficult for me to figure out wether or not the display is broken or if I'm controlling it wrong. I will discuss the folowed procedure:

  • I connect the power wires on a lab power supply with 5V and 2.2 amps.
  • I reversed the RX and TX coupled to the arduino ports 0 and 1
  • I modified the NexConfig.h by turning off the debug mode and setting the serial2 to serial.
  • i exactly imitated / downloaded 10 projects via youtube for 3 days. Projects that work with the official library, but also with the easy nextion library AND projects that do not need to use a library.
  • I have played with the baud rate on every project: both on the nextion (by adding "bauds=" in a preinitialized event) and in arduino via Serial.begin, mynex.begin etc)

In all ten projects, the TX light on the arduino responds with minimal flicker. I see on youtube that this light should just light up briefly but brightly. Who wants to help me? Do I have to send the screen back again or am I doing something wrong?

Hi, welcome to the forum.

Those are strange blurry spots. Maybe something hit the display. I don't believe the store that all displays have those spots. If all the displays have those spots, then perhaps it was a wrong batch of displays that somehow ended up at your store.

Interfacing a Nextion display can be hard when changing the baudrate. Did you use the command to change the baudrate on the Nextion display ?
I should have a sketch somewhere that can reset the Nextion to 9600 when the baudrate is unknown.

Have you tried connecting the display to a computer ? You can use the Arduino Uno RX/TX for that. Upload a empty sketch into the Arduino.

A Arduino Uno powered via a USB connector can supply enough current for a small display.

To be able to help, we need to know a lot more. Which Arduino board, which Nextion display, the code (especially NexConfig.h), a photo of the wiring, and so on.

hi,

thank you for your ideas! I have connected the nextion to my computer.

I have downloaded a serial monitor. I have added a button to nextion with sending component id on release buttong. thats it, very easy

Here I press 4 or 5 times on this button:

[17/10/2021 12:44:18]	
1	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port	
            Errors           - 0	
            HoldReasons      - 0	
            AmountInInQueue  - 1	
            AmountInOutQueue - 0	
            EofReceived      - 0	
            WaitForImmediate - 0	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:18]	
3	IRP_MJ_READ - Transfers data from a COM port to a client (COM5) - 1 bytes of 1	
    STATUS_SUCCESS	
            ff                                                ÿ               	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:18]	
5	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request	
            Mask - 0x00000001 (EV_RXCHAR)	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:18]	
7	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port	
            Errors           - 0	
            HoldReasons      - 0	
            AmountInInQueue  - 1	
            AmountInOutQueue - 0	
            EofReceived      - 0	
            WaitForImmediate - 0	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:18]	
9	IRP_MJ_READ - Transfers data from a COM port to a client (COM5) - 1 bytes of 1	
    STATUS_SUCCESS	
            ff                                                ÿ               	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:22]	
11	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request	
            Mask - 0x00000001 (EV_RXCHAR)	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:22]	
13	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port	
            Errors           - 0	
            HoldReasons      - 0	
            AmountInInQueue  - 4	
            AmountInOutQueue - 0	
            EofReceived      - 0	
            WaitForImmediate - 0	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:22]	
15	IRP_MJ_READ - Transfers data from a COM port to a client (COM5) - 4 bytes of 4	
    STATUS_SUCCESS	
            65 00 01 ff                                       e..ÿ            	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:37]	
17	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request	
            Mask - 0x00000001 (EV_RXCHAR)	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:37]	
19	IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM5)	
    STATUS_SUCCESS	
        IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port	
            Errors           - 0	
            HoldReasons      - 0	
            AmountInInQueue  - 3	
            AmountInOutQueue - 0	
            EofReceived      - 0	
            WaitForImmediate - 0	
----------------------------------------------------------------------------------	
[17/10/2021 12:44:37]	
21	IRP_MJ_READ - Transfers data from a COM port to a client (COM5) - 3 bytes of 3	
    STATUS_SUCCESS	
            01 00 ff                                          ..ÿ             	
----------------------------------------------------------------------------------

Every time I press the (same) button I see another signal in the monitor. I see these signals:

"ff"
"65 00 01 ff"
"01 00 ff"

am i interpretting it correctly? This means that I am right: the output of the serial is not consistent?

I don't know what I'm looking at. If you mention something, can you give a link to it ?
You can use any serial terminal program or a Logic Analyzer to get data. Is that at 9600 baud ? I sometimes use moserial, but that's in linux :wink:

Nextion Instruction Set: https://nextion.tech/instruction-set/.
A "Touch Event" has: 0x65 0x00 0x01 0x01 0xFF 0xFF 0xFF

The 0x65 is okay, a few 0x00 and 0x01 are there as well but with a 0xFF in between, and there should be three 0xFF at the end.

Without knowing which Arduino board, how you have connected it, which Nextion display, which code, which serial monitor you have downloaded, I'm afraid I can not help.
If you want, then I can grab my crystal ball, and try to see what is wrong. A bad signal could create a pulse that is seen as a 0xFF which could be a missing GND. But my crystal ball is foggy today.

@PerryBebbington ?

First, know that the Nextion library is absolute cr@p, with MAJOR bugs that have never been corrected. So, do not be surprised if you find the communications is NOT what their documentation says it should be. I gave up on Nextion a long time ago for this reason. Their display is an appealing concept, but the implementation is so badly flawed it is really not worth the bother.

You can enable "Debug" in the library, so it will show you what is sent and received, and you can compare that to what SHOULD be getting sent and received. Without that information, all anyone here can do is guess.

@isi54
Try the code in my tutorial Using Nextion displays with Arduino

Which Arduino are you using? Ideally don't use a Uno, use one with at least 1 spare serial port such as the Mega or the Nano Every.

If you use my code and examples and can't get it to work I'll try to help you.

Hi Perry,

Thank you for your reaction. I will definitely try your code. Wednesday i have a mega in possession. I will let you know what my experience is :+1:t3:

1 Like

I have bought a second display and everything worked fine. So the display was broken!

Thanks for the update, always good to know what the problem was.

1 Like

Broken, but still doing something ? Those are nasty problems. I'm glad you have a working display now.

I'm using a Nextion display with an Arduino Uno with the AltSoftSerial library at 38400 baud.
The data returned by the display is checked for any mismatch of the data or with the three 0xFF at then end of a message. After a few years running there is no error yet. So it is possible to use an Arduino Uno.
I think the display is only half as bright after a few years running constantly, and the display is dimmed according to the ambient light.

1 Like