I ran some preliminary tests on the energy harvesting and ESP8266 functions with the two soldered boards yesterday.
The energy harvesting part, especially TI BQ25570 power management IC circuitry (though proven in several previous projects), works pretty much as expected. Solar power generation with either the onboard KXOB22 solar cell (this addition to the PCB was initially inspired by the TSEM project, and I found out that this is the cheapest option on Digi-Key for a similar form factor) or an external 0.5 W solar panel appears to be working.
I will do more testing on the power generation later. It has been raining in Hong Kong for several days, and my halogen lamp burned out...
I believed that the ESP8266 would be the most straightforward part in this project. But the strangest thing so far happened on it.
I have created at least five ESP8266 custom boards using the ESP-12F module in the past few years, all programmed using the Arduino core. They worked flawlessly most of the time. However, this is my first attempt on the ESP-WROOM-02 module (note that it has a different pin-out and only a 2 MB flash). I picked this newer variant this time because of its slightly "shorter" dimension, and the absence of an onboard LED which is a bad thing for low-power applications.
After powering the board to external 3.3 V supply, I tried to program it with Arduino as usual: The uploading works, but the application code does not run. The module keeps spamming the UART console with the error messages below. I tried to add extra decoupling capacitors, to use literally every combination of board configurations in Arduino IDE, but the problem persists on both boards.
ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x4010f000, len 1384, room 16 tail 8 chksum 0x2d csum 0x2d v614f7c32 ~ld
Then I flashed a MicroPython image, and it worked on both boards. Testing on the MicroPython REPL did not indicate any significant problem with the microcontroller. Weird.
Before thinking about abandoning the design and reverting to ESP-12F, I hand-soldered a third board to give it a last shot.
This time it works with the Arduino core! Perhaps the reflow soldering somewhat damaged the ESP-WROOM-02 module, in particular the flash chip (given the checksum error messages), or I just had luck and got two faulty modules in a row? Anyway, I will avoid reflow soldering these kind of chips.