If you need just a few more pins on your design, one option is multiplexing. Some chip manufacturers add multiplexing into their microcontrollers to add versatility. Often however you have to choose between pin functions that you will use in your design. For Instance the SPI Pins are shared with the I2C interface. This can be hard to set up to use both. If I have a target system that is programmed over I2C, I can use the buffers to isolate the I2c devices from the SPI bus when accessing memory.
I need to be able to pull GPIO0 low for reprogramming the ESP8266 module. I have already assigned GPIO0 as an output to control the signal direction of the voltage buffers. During boot it is an input to switch into boot loader mode. I can pull it low to reprogram the module and let it float the rest of the time. I have attached a resistor to GPIO0 and a switch to ground to pull it low when I want to reprogram the module. The resistor needs to be small enough to reliably pull the pin low during boot, but not small enough to cause damage when the pin is driving a high output. As a rule of thumb a 10K resistor should work well. I will have to experiment with it when I have an actual module to work with.
A 10K resistor will limit current drawn off the pin to 330µA. 3.3V / 10,000Ω = 330µA
I am almost out of pins and may have to do some more multiplexing.
I have ordered some ESP-12E modules and hope to be testing/playing with them soon. I will probably temporarily stop working on the design and do a couple of Hello World projects.
A developer will make a simple project to test key steps of the design. In programming this is usually an attempt to put the words “Hello World” somewhere he can see it. This is called a “Hello World” project. For hardware, this can be as simple as flashing a LED. In this design flashing an LED would prove I could reprogram the device, and have a basic understanding of the build toolchain.