UPDATE: The schematic used in the original post could not flash the ESP-12F firmware. I have updated the schematic in this log with a corrected version that includes the necessary pull-up/pull-down resistors, however the photos for the log still show an incorrect version of the schematic.
My first run in with the ESP-12-F module wasn't pretty. I bricked the first one with a 5v goof and couldn't get the other to work because I rushed the soldier job and created an intermittent short across some of the pins. After a few days I was so frazzed I surrendered to the IC, let Chris sort things out and set out to find a better way by milling our own breakout board.
My goal with this mini-project was to get familiar with two-sided PCB design and assembly and to create a simpler way to flash and rapidly test code on our ESP-12-F module. In essence, I wanted to recreate Chris' flash circuit with integrated switches and buttons.
he circuit is relatively simple. I managed to cut down the resistor count to a whopping one 10k ohm pull-up resistor on the reset pin and integrate some push buttons and a line selector switch. The line selector switch is essentially a power switch, while the buttons are used to reset and flash the ESP8266.
The actual circuit design was a bit trickier, due mostly to the compact design of the ESP-12-F module. The good news is that you can pick up footprints for almost every ESP8266 module on GitHub, however. The repository only had an ESP-12-E, so I added my own modified footprint for the ESP-12-F with some renamed pins. (I have a plan to submit a pull request, I promise!)
Because the layout of the pins on the ESP-12-F is a little wonky, one of my main goals with this design was to group the various pins according to what they do. All the GPIOs are bunched together on the left in the order they wrap around the board. The primary UART pins are on the top right, with their own grounding pin, the I2C/TWI pins are in the middle right, and main power and ground pins are on the bottom left.
Milling the board was pretty straight forward, even though I forgot to measure the thickness of the material and tape the first time around. By the time I milled the second board (shown here) I got a much cleaner job out of the machine.
The final product was a bit of a pain to solder together because of all the vias in the design. To make them bridge from the front to the back I used some spare breadboard resistors, fed the leads through, soldered each side and cut them down to size. Finally, I went over everything with a micrometer and verified the connections were solid.
Once the entire board was assembled I plugged it into a USB/TTL module and fired it up. I'm not sure if my USB port can handle the power requirement to run this sucker, but I'm sure I'll find out soon enough when I start flashing it for real.
Making sure my serial monitor was set to 74880 (the ESP8266 boot loader baud rate) I turned her on and tested the reset and flash buttons.
That first message ("waiting for host") was a naked reset, the second stream of information is from the ESP8266 booting into flash mode and that last line of gibberish is just the device standing by on a different baud rate.
So what does all that mean?
She works! Now it's time to start flashing some custom software onto her beautiful 4MB of flash memory.