With the PCB manufactured and delivered, components were quickly soldered in. To program the ESP-12F, the TX and RX jumpers are removed, and a jumper moved from 'run' to 'prog'. I used a handy nodeMCU (plugged into to 3v3, Ground, RX and TX, and reset) as a usb interface and flashed the ESP-12F using the Arduino IDE.
Then wired it up to the remote...
It worked! But two (related) issues.
- The ESP wouldn't boot with the TX jumper plugged in. (The serial TX pin - GPIO1 - is used to switch one of the solid state relays, as we have no use for Serial TX). If GPIO 1 is held low during boot (for example, through a 180ohm resistor and an opto...) the ESP will not boot.
- The DS18B20 wouldn't read. Turns out GPIO16 is crap as an input...
The solution was to cut the two tracks, and a simple couple of wires added so that GPIO1 was now connected to the DS18B20 (thus held high) and GPIO16 now drives the solid state relay (and is now only an output). These changes have been made on the PCB designs, but no need for new ones to be manufactured for my purposes.
The system now works perfectly! In the future, I intend to have the module also drive CH and DHW demands, replacing the existing programmer/thermostat (This thermostat implements TPI, which switches the CH demand on and off in order to eliminate room temp hysteresis. Fine for a gas or oil boiler, but almost exactly what you don't want on a heat pump, where long, low temperature, runs are more efficient. And yes, it was installed as part of the heat pump installation...)