The rise of the ESP8266 WiFi chip was almost overnight with Espressif’s open approach and pushing from Hackaday. While no ground-breaking product has yet emerged, the development on the chip are phenomenon. However due to an unknown reason the ESP8266 modules manufacture seems to prefer non-standard 2.0mm pitch connector, which gives a lot of headache to breadboarding lovers like me. This forced me to make a breadboard friendly ESP8266 breakout board.

The modules I’m targeting are ESP-07 and ESP-12, both having identical pinout but only differ in antenna type. I choose these two because they have all the I/O available, and using same edge castellation (half vias) connectors which is easy to work with.

ESP-07 and ESP-12
ESP-07 and ESP-12

The modules are 16mm tall, easily occupies 4 rows (2 rows on each side) on a breadboard. Therefore my first design requirement is to minimize real estate on the breadboard. To do this I made some custom pin headers by modifying from SMT pin header.

Custom pin headers
Custom pin headers

I removed pair of pins from both ends and replace with through hole pins. This little touch strengthens the bounding between pin header and the board. If otherwise on my first version I can easily pull up all the pads when lifting the board up from breadboard. With this design, I maintain 4 rows occupation on the breadboard, that leaves another 6 rows for wiring.

Breadboard occupation
Breadboard occupation

The boot mode of ESP-8266 is often another source of confusion. The table below summarizes different boot modes during power on or reset:

Boot Mode CH_PD GPIO15 GPIO0
Run firmware High Low HiZ (Internal P-UP)
Flash firmware High Low Low

In firmware flashing mode, user is able to update new firmware from UART0 using FLASH_DOWNLOAD_TOOLS or esptool.py.

The board is designed for ESP8266 developers so reset and flash must be made easily accessible. I designed a simple circuit that only uses one button to perform these two tasks:

Boot mode selection schematic
Boot mode selection schematic

During idle state, internal pull-up in the ESP8266 RESET pin turns on Q1. Q2 cut off so GPIO0 remains high due to GPIO0 internal pull-up. At the same time, C1 discharges from R2 and Q1. When user presses SW1, RESET goes low immediately. Meanwhile, Q1 turns off and 3.3V power charges C1 through R1 and R2. If user releases SW1 quickly and the voltage across C1 has not reached Q2’s threshold voltage, Q2 remains off and ESP8266 enters normal running mode. However if user holds SW1 long enough before releasing, Q2 will turn on, pull GPIO0 low. At the moment user releases SW1, RESET goes high but GPIO0 will be held low for a while due to C1 have to discharge through R2 and Q1. The choice of C1 and R2 are such that it keeps GPIO0 low long enough for ESP8266 to enter program mode.

The board also includes a 3.3V LDO (AMS-1117 3.3) and a UART header using FTDI Basic pin out. Below is my programming hardware. (Yes I’m writing OLED driver, which will be release right after).

ESP8266 breakout board in action
ESP8266 breakout board in action

The schematic and board are designed using KiCad BZR 5312. Windows binary is available at http://kicad.nosoftware.cz/. I have uploaded the schematic and PCB onto my GitHub page at

https://github.com/baoshi/ESP-Breakout

At the moment I’m trying to sell extra boards on Tindie. Please visit my store

I sell on Tindie

 

Product link -> https://www.tindie.com/products/Ba0sh1/esp8266-esp-0712-full-io-breadboard-adapter/

This is my first attempt to generate some income via hobbyist project. Please support if you also want to join the ESP8266 fun!

Thanks

 

 

26 thoughts on “ESP8266 breadboard adapter and I’m on Tindie

  1. Pingback: ESP8266 breadboard adapter | Tehnik Service

  2. Hi Baoshi,
    Nice write up 😉
    Just one question about autoreset/flash you made (very nice trick by the way) do you think it could work if we connect DTR from FTDI adapter to reset line ? Technically it should works not ? May be C and R values need to be adjusted for correct timing depending on how DTR is pulled low.
    Worth it testing 😉

    Reply
    • Hi Charly,
      I’m think it can work. But looks like we need to modify esptool.py to toggle DTR with correct timing, and this breaks other flash programs that we do not have source code. I’m currently making another board which fully automates the programming. Will release once its ready.
      Cheers 🙂

      Reply
  3. Pingback: Maker Faire, Yearly Review, and Rant - Digital Me

  4. Pingback: A whole year. – Electronic Playground

Leave a Reply