Freezing D1 mini OLED Display Issue (DIY Basic v4)

Heya!

I was wondering if anyone had similar experiences to some that I am having and could weigh in on the cause.

I got my I-9PSL and decided to build a few DIY Basic v4s to add some additional data.
However, when running these long term, I noticed the display would freeze and stop updating.

Some technical details:
I am using the D1 Mini v4 and the OLED shield listed in the build components.
I did some troubleshooting. This involved adding a counter to the firmware that displays on the screen so I can clearly tell that the display is frozen.
For the sensors, I tried using a SPG-30 and an SPG-41. For temp sensors I am using a SHT-4X with the two pull up resistors removed.
The issue persisted when I removed all sensors and just tried to run the D1 and Oled so I suspect sensors are not directly related.
I also added a I2C scan and print function and left that running for a few hours. As expected, the OLED still displayed as being found however it stopped updating.

I have found that no matter what when using the shield as intended, it would eventually freeze.
This behavior was more or less consistent across 4 units and 6 screens. I didn’t have the time to do super detailed testing on all the possible combinations.

Now the interesting part:
I removed the OLED shield and replaced it with a .98 oled with 4 pins in the slot I was using for the SGP sensor. No freezing.

This got me curious, so I took the shield and wired it to the same header slot that I was using for the SGP sensor and so far, (12 hours in) no freezing.

When looking at these displays online, it appears similar behavior pops up from these shields.
If the issue goes away from directly wiring the screen, I have a way forward with these units.

However, I am wondering if anyone specifically knows why this issue is happening.
I have so far concluded that it has to do with directly connecting the shield to the D1 mini.
The solder joints look fine, so I am left to conclude that there is some i2c weirdness happening.

I ordered some different D1 mini board as well to test. I realized that the D1 mini v4 units that I bought were not the recommended ones.
Additionally, maybe the display shields are bad?

This does seem like something that should be resolved with the DIY instructions since all of the parts that I ordered are from the guide and I followed all of the steps accordingly.

EDIT: This is using the Release 3.1.7 which I uploaded via VSCode and PlatformIO.
I confirmed that the D1 Mini unit itself was not freezing as it was still sending updated sensor values to the dashboard and outputting serial logs that I was monitoring.

EDIT2: Or maybe the contacts are just bad when connecting as a shield? I haven’t had a chance to yet but maybe I might try to soldering the OLED shield directly onto the D1 mini to see if the issue keeps occurring.

I have spoken too soon!

The board with the .98inch OLED still has the OLED working.
The on with the shield plugged in directly is frozen though!

I have a new theory, however. I took at look at the D1 boards I bought and realized I bought D1 mini v4 boards.

From the seller linked on the DIY page, specifically I bought: D1 MINI V4 TYPE-C.
I likely should have bought these: D1 MINI CH340 TYPE-C.

My D1 MINI CH340 TYPE-C have just arrived, and I’ve discovered the 3.3V voltage regulators are different!
This led me to a large thread where folks were discussing a few years ago how the D1 Mini clones had voltage regulators that were only 150mA.
I looked up the marking on my D1 MINI V4 TYPE-C and they were LLVB.
Looking this up, this is a LP5907MFX-3.3/NOPB which is a 250mA 3.3 regulator.

The D1 minis should have a 500mA 3.3V regulator.
Also found a post about the D1 mini that explains they can spike to 350mA when connecting to wifi. Adding in the additional OLED screen…

The D1 MINI CH340 TYPE-C have a DE=A1D which is a 400mA .
I am going to attempt to run the D1 MINI CH340 TYPE-C and verify that it does not have the issue.

I’m left curious as to why my .98inch display does not freeze up.
I wonder if it’ a difference in current draw.
I have a cheap logic analyzer I might use to verify that there are current spikes happening…

Also might replace the 3.3V regulators on my D1 mini boards… just out of spite at this point. :laughing:

Thanks for sharing your observations.

We have had quite a number of issues with the D1 mini boards (clones AND Wemos originals) due to non consistency of the components that these module manufacturers use.

As much as we love the BASIC kit, and sold it for quite some time, we stopped restocking it for now basically due to the reasons you mentioned above.

I will make a note on the build instructions to highlight these issues.

@Achim_AirGradient Wondering if you had any thoughts about adding a specific regulator to the DIY PCB and routing the 5v rail directly to the regulator instead of relying on the D1 mini board’s regualtor?

Something like a LD1117V33 is a through hole component so it would be easy to install and has similar specs to the AMS1117-3.3 while not generating heat and being easily available (in my region at least).
That said might be a lot of effort to validate the additional component and I imagine sourcing might be hit or miss.

This would likely “derisk” a lot of the issues that may come from 3d party boards in regard to power management and improve stability.

I haven’t had a chance to get any detailed stats on but will post when I have some free time to run experiments on current draw. Mainly just in case someone else is curious in the future.