O ESP8266 possui 3 pinos problemáticos na inicialização do chip. São os pinos GPIO0, GPIO1 e GPIO2.
Se estivermos utilizando o ESP01, é um problema, porque estão apenas disponíveis o GPIO0, GPIO1, GPIO2 e GPIO3.
Devemos ter cuidado com o que ligamos nos GPIO0, GPIO1 e GPIO2 porque dependendo da aplicação corremos os risco do chip
não iniciar ou "gerar" um pulso de curta duração, o que pode ser um problema dependendo da carga que estamos alimentando.
Em geral, os demais GPIOs quando ligados vão para nível lógio "1" com exeção do GPIO15 que tem que permanecer em "0"
durante a inicialização.
Para iniciar o chip tempos que respeitar a tabela:
| GPIO15 | GPIO0 | GPIO2 | Modo | Descrição |
| 0V | 0V | 3,3V | UART | Boot pela UART (Gravação do dispositivo) |
| 0V | 3,3V | 3,3V | FLASH | Boot pela FLASH (Funcionamento normal) |
| 3,3V | x | x | SDIO | Boot pelo SD-Card |
Para que o ESP8266 carregue o programa gravado na FLASH, o GPIO0 deverá estar em "3,3V", o GPIO2 deverá estar em "3,3V"
e o GPIO15 deverá estar em "0". Se desrespeitamos essa "regra" podemos "cair" em qualquer outra condição de acordo com
a tabela anterior. Logo nosso dispositivo não funcionará corretamente.
Posso utilizar esses pinos como entrada ou saída, para isso, teremos que possuir um circuito capaz de respeitar a regra
para que o dispositivo funcione corretamente ou seja, carregue o BOOT pela FLASH.
- Para ler uma chave, podemos utilizar o circuito a seguir:
O capacitor C1 e o resistor R2 "atrasam" a leitura da chave por alguns mili-segundos permitindo que o resistor R1 mantenha
um dos pinos em nível lógico "alto" para que o chip inicialise pela FLASH.
- Para acionar um relé, podemos utilizar o circuito da figura a seguir:
O resistores R5, R6 e o capacitor C2 "atrasam" o acionamento do relé evitando um "pulso" de curta duração durante a inicialização
do chip. O resistor R3 mantem um dos pinos "alto" na inicialização para que o programa seja carregado pela FLASH.
Próximo passo agora é testar, montei um circuito no protoboard:
Acionando em alto:
Acionando em baixo, o circuito RC espera um tempo: