I am very much a newbie still.
Set up on the right outputs the time and some other info. The one on the left obviously does not. Quite frustrating, I have tried everything I know including switching the hardware around.
The setup is basically 1602 LCD and I2C board with D1 mini.
A line of rectangles indicates that the LCD display is powered up, but is not receiving intelligible commands. Triple check the wiring for continuity, bad solder joints, short circuits between pins, etc.
As mentioned you may need to add or adjust a contrast pot.
Please use the flag button to ask that your post be moved to a more appropriate forum section.
So you now know the problem is in the display. Next step is to swap the "I2C boards" between the two LCD's to see if it is the I2C Board or the LCD that is faulty.
I can't be the potentiometer.
If the contrast setting was way off, either all pixels would be on or all would be off.
In this case there is one line of blocks, indicating that the LCD powered up but has not been initialized.
You don't appear to using a level shifter on the i2c signal pins.
The ESP parts are 3v and the LCD is 5v with 5v pullups on the i2c signals.
If you directly connect them without a level shifter you will be putting 5v signals on the ESP pins which can damage the ESP part.
I would not recommend doing this.
I always use a level shifter when connecting ESP parts to 5v LCD i2c backpacks..
You could install the hd44780 library and then run the included diagnostic sketch, I2CexpDiag, from the hd44780_I2Cexp i/o class and see what it reports.
It will test the i2c signals, and then run a memory test on the display.
I may not report much other than a general failure if the connection between the LCD and the PCF8574 chip has issues.
My guess is the solder connections are causing issues.
They look particularly bad on one of the LCDs.
But again, I would first resolve the 3v / 5v issue.
4 bit mode will always be used when using a PCF8574 based backpack.
The hd44780 chips are designed such that the DB0 to DB3 pins can be left unconnected.
They will be pulled down internally.
This is part of what makes the hd44780 initialization command sequence work by allowing a host that is only connected to DB4 to DB7 (with DB0 to DB3 unconnected) to reliably initialize the LCD into 4 bit mode.