4" ILI9486/9481 Screen, good £4 screen with few issues

I have bought a few of these 4" screens from amazon that are advertised as having the ILI9486 driver. Im not sure if the driver chip is hidden in the glass or the flex, but I can not see it, to check what it really is. The first were £4.79 delivered, the others £3.79 but now they are getting cheaper :o
www.amazon.co.uk/gp/product/B07PB27VQ5/ (my pictures in review)
www.amazon.co.uk/gp/product/B08KGGM1VZ/
www.amazon.co.uk/gp/product/B08KVYMWCF/

Ive started with the TFT_eSPI libarary set up as a ILI9486 connected to an esp32, using the suggested pins for the connections. The screen lights up full white, and the examples run with an extreme white balance - a hard to notice that its not just white.
I tried the ILI9481 driver and it works exactly like I would expect, good! but no idea if it is correct.

I have to remove power from the screen to allow programming, or it will time out. Any ideas why? I assume one of the pins is shared purpose but I dont know which. Connections are:

#define TFT_PARALLEL_8_BIT
#define ILI9481_DRIVER
#define TFT_CS   33 
#define TFT_DC   15 
#define TFT_RST  32 
#define TFT_WR    4 
#define TFT_RD    2
#define TFT_D0   12 
#define TFT_D1   13  
#define TFT_D2   26
#define TFT_D3   25
#define TFT_D4   17
#define TFT_D5   16
#define TFT_D6   27
#define TFT_D7   14

I have plenty of pins spare, I assume the touch or sd card need SPI, but the display is parallel. Will I be able to use them with TFT_eSPI?
If the TFT is only device on the parallel pins then I can omit the chip select pin?

Thanks

I don't have your 8-bit/16-bit Shield. But I bet that it came in an antistatic bag with a printed label.

If the label says ILI9486 it is an ILI9486
If the label says ST7796S it is an ST7796S

Never send ILI9481 initiallisation commands to ILI9486 (or ST7796S)
Nor vice versa.

The Power Registers are on different addresses for 9481 and 9486.
You risk serious damage.

David.

p.s. if there was no sealed bag then it is probably not new.
Would you trust an unwrapped condom ?

The antistatic bags were not opened. I have a beautiful wife and before I met her I did not put my dick in anything I didnt want to keep.

A second screen just turned up, looks exactly the same as the first ( this is from the second or third link, not sure which the other should be here tomorrow). This was labeled as a ST7796S driver, and they both work with that.

Any ideas about the programming time outs?

1 Like

What programming timeouts?

Yes, it should work with TFT_eSPI. Configure User_Setup.h
Or use with MCUFRIEND_kbv. Force tft.begin(0x7796);

Personally, I don’t think that a Parallel TFT is wise with ESP32.
SPI is more appropriate. SPI works with ESP8266 too.

David.

If the screen is connected I am not able to program by usb, it will not connect and times out. I have not had this with any other things, canbus, ssd1306 or i2c. Removing the 5v power from the screen allows it to program, I'd prefer not to do this.

No need for 8266's and with plenty of pins spare Im happy to use parallel.

m600c:
I have bought a few of these 4" screens from amazon that are advertised as having the ILI9486 driver. Im not sure if the driver chip is hidden in the glass or the flex, but I can not see it, to check what it really is. The first were £4.79 delivered, the others £3.79 but now they are getting cheaper :o
www.amazon.co.uk/gp/product/B07PB27VQ5/ (my pictures in review)
www.amazon.co.uk/gp/product/B08KGGM1VZ/
www.amazon.co.uk/gp/product/B08KVYMWCF/

Ive started with the TFT_eSPI libarary set up as a ILI9486 connected to an esp32, using the suggested pins for the connections. The screen lights up full white, and the examples run with an extreme white balance - a hard to notice that its not just white.
I tried the ILI9481 driver and it works exactly like I would expect, good! but no idea if it is correct.

I have to remove power from the screen to allow programming, or it will time out. Any ideas why? I assume one of the pins is shared purpose but I dont know which. Connections are:

#define TFT_PARALLEL_8_BIT

#define ILI9481_DRIVER
#define TFT_CS   33
#define TFT_DC   15
#define TFT_RST  32
#define TFT_WR    4
#define TFT_RD    2
#define TFT_D0   12
#define TFT_D1   13  
#define TFT_D2   26
#define TFT_D3   25
#define TFT_D4   17
#define TFT_D5   16
#define TFT_D6   27
#define TFT_D7   14





I have plenty of pins spare, I assume the touch or sd card need SPI, but the display is parallel. Will I be able to use them with TFT_eSPI? 
If the TFT is only device on the parallel pins then I can omit the chip select pin?

Thanks

I’ve been after a ‘large’ touchscreen for my Arduino. These seem significantly cheaper than anything else on the market and from the pictures are the same model I’ve seen elsewhere for more. I’ve just paid £3.49 for one. £3.49!
I’m not sure how good it can be at that price, but it’s £3.49 so worth a shot.
Is this where I ask the “How do i connect this to a Nano 33 BLE” question?.......

It is a good price! It is not all good as Ive ordered four. The second arrived smashed due to bad packaging. Third was ok, fourth, well they sent me a gas solenoid valve instead, so 2 out of four!

Ok, you got two good screens out of four ordered.

Not much good if you wanted to use all four screens immediately.
You complain. The shop refunds you. But you have to wait another 2+ weeks for taking a similar punt with another shop.

Personally, I would prefer a shop that mailed the correct items and charged a sensible price.
Happy customer and a profitable shop.

Regarding ESP32 upload. This depends on certain pins having pullup or pulldown.
The choice of default ESP32 pins for TFT_eSPI or MCUFRIEND_kbv is down to the TTGO_R32 board.

By the time you have allocated 12 GPIO pins for TFT, SD_CS, TP_CS and SPI pins the ESP32 is not so easy.

David.

Personally, I would prefer a shop that mailed the correct items and charged a sensible price.
Happy customer and a profitable shop.

Could you recommend one? ..I am also after a reliable , proven 3.5-5inch touch screen...

@m600c, this webpage is useful to indicate which pins have dual functionality.

In your case note that if GPIO 12 is high the ESP32 will fail to boot. I expect the problem is that the RD line is low due to leakage effects which puts the data bus (D0-7) in read mode which then puts logic 1 on pin 12.

Options are:

  1. Avoid pin 12
  2. Add pullup to TFT RD pin so the display is not in read mode (probably already a pull down on pin 12)

@Watcher, the low cost Chinese vendors often do not know much about their products and may even get important details wrong. You will need to pay more for displays from a supplier that provides a consistent supply. BuyDisplay offer to make screens available for at least 10 years into the future, but contact them first to make sure the display you select is likely to be available in future for repeat orders:

https://www.buydisplay.com/

@m600c,
@bodmer,

The Red Surenoo display has a "LCD_RD" pin but it does not do anything.
The pcb is designed wrong. The TFT is write-only.

So the obvious thing is to leave LCD_RD disconnected. Or assigned to a non-existent pin.

@Watcher,

BuyDisplay have pretty good hardware and pretty good documentation.
BuyDisplay software might not be so good but Bodmer has excellent libraries for their TFTs that should work out of the box.

Nowadays, BuyDisplay sell specific Arduino Adapter Shields for their Displays. Buy the package i.e. screen + shield.
In the Old Days they would offer multiple hardware options. Punters would not always know what to ask for.
You can still select bespoke hardware. DON'T unless you know exactly what you are doing.

David.

@m600cThe ESP32 chip has the following strapping pins:

GPIO 0 - internal chip pull up
GPIO 2 - internal chip pull down
GPIO 5 (must be HIGH during boot) - internal chip pull up
GPIO 12 (MTDI, must be LOW during boot) - internal chip pull down
GPIO 15 (MTDO, must be HIGH during boot) - internal chip pull up

In most cases these are correctly biased during boot by internal pull-up pull-down resistors. Since you have to power down the TFT to get it to boot, then this implies that the TFT is pulling a line high when it is powered.

Since you have not indicated anything is connected to GPIO 0 or GPIO 5, then the cause of the boot problem is probably GPIO 2 or GPIO12 being pulled high by the display when it is powered.

Try disconnecting those pins for test purposes and see if the processor can be programmed and boots with the TFT powered. Then try connecting one at a time and repeat the test. This will identify the pin that is causing the problem. Either avoid using that pin or add a pull down (4K7 should do).

You should tie the TFT_RD pin high if you decide not to connect it since it is routed to the TFT driver chip even if it does not reverse the buffer direction as David has said...

@david_prentice thanks!

Disconnecting tft_rd works, thanks.
I had a look at the pcb, the direction pin is tied to Vcc on U3, U2 and U4 while U5 is low. TFT_RD, TP_IRQ and MISO are connected to U5, so I assume the touch and SD card work ok. I have not tried yet.

My dupoint wires were getting twisted and pulled out, so I have required as follows, it is better for esp32's that use the devkit or lolin32 layout.

#define TFT_PARALLEL_8_BIT
#define ST7796_DRIVER

#define TFT_CS   33  // Chip select control pin
#define TFT_RST  32  // Reset pin
#define TFT_RD    21 // not connected

// Must use a pin in the range 0-31
#define TFT_DC   19	//RS
#define TFT_WR   18  
#define TFT_D0   17
#define TFT_D1   25 
#define TFT_D2   16
#define TFT_D3   26
#define TFT_D4   4
#define TFT_D5   27
#define TFT_D6   15
#define TFT_D7   14

@david_prentice The first two screens were amazon prime, so next day. I had the first refund instantly when taking it to post office. The 3rd was a couple days by hermes so still excellent, a better experince than I would expect form most shops.

You received shields for £4 and got next day delivery !! i.e. UK warehouse + UK carrier.

There is something fishy somewhere.
Were the items in sealed bags ?

Normally "cheap prices" imply a LONG WAIT from China.

Anyway, I am pleased that you have selected the correct Driver to match the label on your screen package.
And have followed Bodmer's advice.

David.

I was intrigued by the cheap and QUICK delivery. So I ordered the from Amazon for £3.42 on Monday 15th.

Arrived today (Wednesday 17th). (No, I have no intention of falling for Amazon Prime)

It worked immediately with MCUFRIEND_kbv and USE_MEGA_8BIT_PORTC_SHIELD as a SPECIAL
The label said ST7796S

I have just added support for USE_MEGA_8BIT_PORTC_SHIELD on the Due. It is on GitHub.

The Touch Controller works fine on the MEGA2560 but the D50-D53 pins require Software SPI on the Due.
Likewise the microSD works fine on MEGA2560 but requires Software SPI on the Due.

I do not understand how this Shield can be sold for £3.42 and be delivered in 48 hours.

David.

david_prentice:
I was intrigued by the cheap and QUICK delivery. So I ordered the from Amazon for £3.42 on Monday 15th.

Arrived today (Wednesday 17th). (No, I have no intention of falling for Amazon Prime)

It worked immediately with MCUFRIEND_kbv and USE_MEGA_8BIT_PORTC_SHIELD as a SPECIAL
The label said ST7796S

I have just added support for USE_MEGA_8BIT_PORTC_SHIELD on the Due. It is on GitHub.

The Touch Controller works fine on the MEGA2560 but the D50-D53 pins require Software SPI on the Due.
Likewise the microSD works fine on MEGA2560 but requires Software SPI on the Due.

I do not understand how this Shield can be sold for £3.42 and be delivered in 48 hours.

David.

Hey David,
Yes i find this screen to be a great value!

Something to note about this display that i see has not been mentioned yet in this thread is that it also works and identifies as a 0x9488 id. I bought one of these boards from aliexpress and was pointed to this wiki and library (library at this link does not compile or run for due or mega arduinos without some modifications to library)

What library do you use for the touch function for this board? I have this exact screen and have been trying with Bodmer's "TFT_Touch.h" library, its works but i have had very poor touch precicion with it, the touch readings are up to ~20% wrong at time, and seems to pattern in a grid like manor for touch coord readings... Have you had good results with the touch function?

Cheers,
E

Something to note about this display that i see has not been mentioned yet in this thread is that it also works and identifies as a 0x9488 id.

The display is write-only. It can NOT identify as anything.

My Display label says:

3.95" Arduino Module

Driver:ST7796S
SKU:MAR3953

ST7796S has different Manufacturer registers and different behaviour to ILI9488.
It is unwise to use the wrong driver.

Your link is clearly documented as SKU MAR3953
But the ZIP says 3.95inch_Arduino_Mega2560_8BIT_Module_ILI9488_MAR3953_V1.1.zip
And the examples all say ILI9488.

Personally I would not trust LCDWIKI with anything.
They have some nicely designed HTML pages on the Internet.
They have links to documents and examples

It may look very professional but the hardware is not designed correctly.
Their software is pretty horrible.

LCDWIKI does not maintain a proper Repository on GitHub.
There is no way to correct any of the "features"

David.

I use XPT2046_Touchscreen.h library installed via IDE Library Manager.

BuyDisplay have pretty good hardware and pretty good documentation.
BuyDisplay software might not be so good but Bodmer has excellent libraries for their TFTs that should work out of the box.

Nowadays, BuyDisplay sell specific Arduino Adapter Shields for their Displays. Buy the package i.e. screen + shield.
In the Old Days they would offer multiple hardware options. Punters would not always know what to ask for.
You can still select bespoke hardware. DON'T unless you know exactly what you are doing.

I design my own boards based on the 1284p chip and therefore i cannot use their Arduino shields. I have to interface on their bare display module. This seems to pose a number if challenges including voltage level shifting for all i/o pins.

Buy their Adapters. They contain the level shifters. Design your 1284 pcb to receive the headers.

You don't need any level shifters if you use civilised 3.3V GPIO.
Your ATmega1284P will work fine at 16MHz and 3.3V (for your hobbyist use)

Obviously you get vastly improved performance with an Xmega, ARM or ESP32

David.