-
Notifications
You must be signed in to change notification settings - Fork 127
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
T5-4.7 Plus S3 hardware issues & partial clear corruption #93
Comments
@AdriVerhoef Thank you very much for sharing! Could you please provide more close-up photos, what exactly did you solder to silence the board? |
@AdriVerhoef Thanks!
Noise. Especially when updating the screen. Gone only after I did some modifications already, before your answer. Here they are:
By the way, your images show connection between 3 and 5, is this intentional? Or did I mix things up? I connected all these without any idea what I'm doing (except maybe that I'm filtering some pulsations). No idea about opamps as well. Noise gone. Are my modifications safe for the screen? I don't own an oscilloscope, but I measured a couple of voltages, here they are: |
I see I've connected pin 2 in my example of the schematics and pin 3 on my board. It doesn't really matter, the second opamp is now in series with the first, whereas on my board both opamp inputs are connected to the potentiometer. Just ensure that the leads of your capacitors do not make contact with the rest of the circuit and you should be fine. The 22pF don't do much, but won't harm either. The 47uF is 47000000pF so that adds the missing capacitance the +15V regulator requires, as it is oscillating when the screen is updating. |
@AdriVerhoef Thanks! Yep, I double-checked that there are no solder traces left, and the capacitors remain isolated.
Is VCOM a voltage between 3 and GND? Sorry for the dumb question |
@AdriVerhoef And one more question - did you find any issues with RTC? Mine resets to zeros every time I reboot the board. Is it intended? Does your work the same? |
I have not tested the RTC, since I'm not using it. Sounds like the back-up battery does not hold any charge or your code might reset the device on initialization. Have you measured if the battery voltage is ok? |
@AdriVerhoef The battery shows 2.66V between its PCB pins. As far as I know, I don't reset the RTC intentionally. I've skimmed through https://github.com/lewisxhe/PCF8563_Library/tree/master/src , but did not find any code that resets it during initialization. |
I've just bought this board with the display and EVERYTHING you describe is completely true in my case as well (S3 version): the noise, the partial grayout etc. btw when you power this board using the BAT connector, when. you enter epd_poweroff_all() it still draws about 270uA that is way too much - if I am going to use this board I would add some circuit to disconnect the power completely and only turn ON periodically (i.e. every 3min or so) on top of that, the library provided by Lilygo is full of errors - I am wondering if other libraries would work, i.e. TFT_eSPI - that would be amazing |
Some comments after using the board for a bit (under micropython):
definitely feels like a friday afternoon design... |
update:
|
Forking Screen ghosting with partial refreshes appears to be indeed a big issue. I am slightly confused by timing partial refreshes. It comes a way more than 400 ms, no matter how small the refresh area is. Could it mean that partial refresh implementation is broken? Stepping away from this board, M5Paper seems to be using exactly the same EPD. I cannot spot much use of partial refresh on the reference code. The interesting bit is L21 onwards which describes various modes of drawing on EPD. Now, the code could be detached from the reality, if no example is using a partial refresh mode. The most exciting piece is on page 3 of this paper with the original file name 800-1101 REV01 AF 16 TONE GRAYSCALE 5-BIT WAVEFORM FLASH FILE PRODUCT SPECIFICATION. A particular unidentifiable epaper assumes partial refreshes follow up in a peculiar order. Am I right, the current driver is in a total denial of the intended refresh sequence? Aren't we mis-using Well, I must have bet on the wrong horse (T5-4.7 Plus S3). On the other hand, M5Paper comes twice as expensive, even without an S3 designator. |
I have managed to get it working with latest version of the EPDiy library by removing the shift register from board and connecting some unused but populated gpios directly to the EDP display control pins to utilize onboard LCD prepherial correctly. I have also tied touch interrupt pin to another rtc capable gpio and did not used gpio 0 for anything else within the mod which was connected to the shift register previously. Now, I can wake up the board using touch and pressing top middle button does not affect screen refreshing anymore. Here is how you do it; Please note that printed pin names on the board are different from the schematic and documentation but I am using printed names on the PCB as reference below.
I really think this is how the board should be designed in the first place. Some related issues about this; You also need modified version of the Also default waveform for this display is not correct in the library and you should be using ED047TC2 waveform since it is the one used with the factory firmware and the board has shipped with also provided by Lilygo to EPDiy project.
Partial update is also works extremely well with using this waveform instead of the default And here are the files you need to overwrite if you still want to use the official arduino library after this hardware modification. After all of this along with the modifications from @AdriVerhoef now I can get the performance similar to a M5Paper board with the exact same e-paper display but please note that M5Paper has a dedicaded epd driver onboard (IT8951E) which has a lot of proprietary stuff happening inside it to make the magic of driving these displays happen so you will never get it's performance using an ESP32 or ESP32-S3. Thanks... |
@Tasshack Thank you for your contribution. I will test it according to your method. If it works well, I may update it according to this hardware connection later. |
@lewisxhe If you will do a new revision of the board, could you please also look into #98 as well?
|
Looks very nice... |
@lewisxhe looks really nice! Does it mean that it can be used with any magsafe charger? Some more items for wishlist:
|
@random-0110-dude Thank you for your suggestion. Please refer to the official website for the design of this model, because it has been designed and I cannot influence it. I can only improve it according to your feedback in the subsequent design. |
@lewisxhe well, my suggestions are also valid for the current (V2.4) model. Are you going to sell it alongside the new 'MagSafe' one? |
@random-0110-dude Currently V2.4 and T5-Epapaer-Pro are of the same design. We will listen to relevant opinions and then summarize and make changes. |
High-speed wireless charging cannot be used. Long-term use will cause severe heat and damage. Only standard wireless charging can be used.
The above is the reply of Design T5-Epaper-Pro Design Yes. |
Thank you very much @Tasshack for your perseverance! By reading @martinberlin's refusal to invest into supporting Lilygo T5 Epaper version 2.3, I gave up and finalised my setup in a case, made of sustainable materials. The case design wouldn't let me de-solder 74HCT4094D by now to validate the very promising fixes :o(. I might have an emerging use case for the touch screen, but it will definitely require much more responsive refresh rates. Out of curiosity, what's your partial refresh's timings, please? Lilygo claims full screen refresh to be below 500 ms. In my experience, with an ESPHome overhead, it's about 1.6 seconds. A countdown kitchen timer is still okay-ish, even when updated once every three seconds, but it has to be a reliable partial refresh, not damaging the screen permanently. |
Pin-wise V2.4 is closer to V2.3 than T5-Epapaer-Pro. Stating V2.4 and T5-Epapaer-Pro are of the same design is misleading 8o|. Not every housewife would happen to have a soldering kit in the kitchen, and not every one will be brave enough to use it to conserve battery power by desoldering the green LED. To continue on the future design improvements, would it be wise to make the green LED easily disconnectable by cutting off a shunt? |
I’m sorry about voting down to support Lilygo S3 efforts into epdiy. In fact they did got the S3 working first. But the fact that they still use kind of epdiy v2 without really making the efforts to use S3 LCD full signals to drive the whole hardware really put me down. REMARKS: Lilygo updated this situation now and their new S3 board should be fully compatible with epdiy v7! |
Hello everyone, we have discussed and decided to directly use the epdiy v7 hardware design, the same driver method and GPIO. What do you think about this? |
@lewisxhe I think this is a great idea that will allow maximum compatibility and will probably boost your sales :) A reliable and inexpensive board will definitely be a hit. In the same time, I personally would not like to see CH340, and would prefer having direct USB access to ESP32-S3, so the board would not lose functionality (USB-MSC, USB-HID etc) that would happen if you would expose only UART over USB. Other boards have two USB-C ports; I'm not sure if I want two, maybe one is enough, but it should be the one with direct ESP access. RTC is a must. microSD card slot - also very much so. Please add more buttons! Five (including RST & BOOT). Also, all these buttons should be able to wake ESP from deep sleep. Please expose both I2C lines available on the ESP. One line (probably the one with RTC+touch) should always be powered, while the second line should be controlled like in v7. Both I2C lines should have pin headers available (or at least holes for them). Probably you could keep 'your' sockets (to keep compatibility) but please expose the same lines via 2.54" pin headers as well. |
|
This is a great idea! I would like to see this board as a good starting point for both your own DIY project and ready-to-use inexpensive e-ink display for ESPhome etc. For this (DiY), I would also like to see a larger case/shell option so that one will be able to put a few I2C modules inside alongside the battery. Ideally, you can sell this shell as an option/bundle on amazon/aliexpress/whatever, but even having just files for 3D printing will be great :) |
There are no dedicated I2C pins on the ESP32 every pin below 33 can be programmed as an I2C and the whole idea is it's a bus, so no need for a separate port... |
Ladies and Gentlemen, this is the schematic diagram of the modified version according to the design of EPDIY V7, retaining the original GPIO, please check it out. Comments are welcome. |
This looks so much better @lewisxhe I will find sometime to review it in the next days but so far I see all control lines there in the S3 MCU: static lcd_bus_config_t lcd_config = {
.clock = CKH,
.ckv = CKV,
.leh = LEH,
.start_pulse = STH,
.stv = STV,
.data[0] = D0,
.data[1] = D1,
.data[2] = D2,
.data[3] = D3,
.data[4] = D4,
.data[5] = D5,
.data[6] = D6,
.data[7] = D7,
} I guess it will be fairly easy to create a new board in epdiy and add support to this one. I can do it will send you an email later. Thanks for the update |
@martinberlin Well, any suggestions you may have, we are listening. |
You can try it already. Since it's very similar to v7 but with just 8 data channels it should work out of the box (Unless I miss something) And there I left an example:
So far the PCB looks very nice and the fact that has LoRa and should be LVGL capable if using touch, can make it a very nice fun toy for a slow chat :P UPDATE: Take care with the Layout design around TPS65185 because it's a bit picky. That's why I try not to touch it and I copy Vroland layout even if I do sometimes different versions of the PCB. The fabricant Texas Instruments has a forum where you can submit your design and get it analyzed by their tech team (For free as far as I know) 2 nd advice: In my humble opinion if you use a 16 Channel IO expander like PCA9535 then it would be cool to at least expose that pins in the PCB (Or at least some). If you are not going to do that makes little sense to use such a hardware just to control the slow signals and leave 8 nice additional IOs disconnected. |
@martinberlin Thank you. We are just discussing it now, and there is no hardware to test it. Thank you for your reminder. I will forward it to the hardware engineer and let him see your proposal. We will send you samples after we have preliminary samples. |
Hello all, I got my T5-4.7" S3 a week ago and it's a bit of a let down. Straight out of the box I notice a few lines of vertical dead pixels, ghosting on writing text and each time the screen refreshed the PCB made a high pitched noise. The repair demo did not fix the dead pixels. For the noise I expected to swap some capacitors to fix the issue, but it was not that easy.
I probed the +22V and -22V outputs and noticed high ripple (~3.5Vpp) on the +22V each time the screen updated:
Changing the output capacitors for X7R 50V 1uF reduced this a bit, but not much. Adding additional capacitance wasn't helping either. On further probing I discovered that the +15V output of the LM7815 was oscillating. Adding more capacitance (2x22uF 25V X5R) made things better, but the output still had high ripple.
In the schematic I found that the second op-amp in the dual op-amp package was not terminated properly. The second opamp's inputs where left floating and most likely oscillating:
I soldered the opamp inverting input and the output together and added a wire to the first op-amp's non-inverting input, so the op-amp was in unity gain configuration, just like the first opamp. I did not connect both op-amp outputs as this is not a good idea, since both op-amps can have a different offset.
With the op-amp properly terminated and additional capacitance on the +15V output the display was now silent on each update and text printing on wrong locations was eliminated.
I also resoldered the pins of the ESP32S3, as I had to use a microscope to confirm that there was at least some solder on some pads. This did not improve functionality, so the pads where properly connected before resoldering even though it was discouraging how little solder was on some pads:
On the diy-epd support I also found a comment that the VCOM should be buffered with an additional capacitor for improved performance, so I added a 22uF capacitor with a 10 Ohm series resistance in the output trace of the opamp output. I first scraped the soldermask from the output trace, then cut it, so the 10 Ohm is in series to the display VCOM input and soldered the 22uF capacitor to the resistor and soldered it to the ground plane. Most op-amps do not like driving a high capacitance on the output, so the resistor is used to isolate the capacitance from the output and keep the output stable. Though this modification seems to have the least impact on the functionality of the display.
All modifications:
The 47uF elco is not necessary, but is a left-over from testing if additional capacitance solved the issues left.
I still have the issue that the display shows a block around the parameter which is updated due to the rest of the display slowly getting corrupted/darkening when doing a partial clear:
I've changed my VCOM voltage by adjusting the potentiometer to ~-1.1V which reduced the corruption significantly, but still with each area clear the previously displayed data corrupts more and more over time, while the refreshed data is clear.
The epd_push_pixels function does not seem to write a complete block of pixels. The last row being cleared does not seem to write a 1 or 0 to the screen, but most likely something random in a buffer.
This causes some residue to remain after clearing:
So I hope someone has a solution for the partial clears corrupting the full screen as I suspect it's a software problem. Erasing and rewriting the full screen using the framebuffer is a solution, but I hope it's not required doing so after a single parameter changes.
Here is a code snippet for a printf like function in order to make the examples a bit more clean:
Usage:
The text was updated successfully, but these errors were encountered: