Como usar as GPIO 9 e 10 do ESP8266 - Pedro Minatel - Sistemas Embarcados
Como usar as GPIO 9 e 10 do ESP8266
Pedro Minatel - Sistemas Embarcados > ESP8266 > Como usar as GPIO 9 e 10 do ESP8266
Pedro Minatel 30 de abril de 2017 4 Comments
ESP8266, GPIO, SPI
Para muitos, quanto mais melhor. Isso pode ser aplicado também no mundo embarcado, onde quanto mais GPIO melhor, em alguns casos!
Todos sabemos que o ESP8266 poderia ter mais periféricos e GPIOs disponíveis para uso, mas o que poucos sabem é que podemos liberar mais duas GPIOs sem nenhum "prejuízo", apenas com uma certa dose de paciência e habilidade em solda para não estragar um ESP.
Mas antes, para entender como podemos obter mais duas GPIOs no ESP, devemos entende primeiro como funciona, bem basicamente, a memoria SPI flash do ESP.
Veja também: http://pedrominatel.com.br/pt/esp8266/utilizando-rx-e-tx-como-gpio-no-esp01/
Memoria SPI Flash
O ESP8266, utiliza uma memoria externa para o armazenamento do programa e dados do usuário, essa memoria pode variar de 512kB até 4MB de capacidade, e utiliza o barramento SPI para a comunicação. A memoria utilizada no ESP, geralmente a AT25SF041, tem suporte para dois modos de operação na comunicação, o modo DSPI (dual) e QSPI (quad).
Em uma SPI convencional, são utilizados 4 fios, já no modo quad, são utilizados 6 fios. A diferença entre os modos, além do numero de fios utilizados, é basicamente o tamanho a banda de dados, assim aumentando a velocidade em 2 ou 4 vezes, dependendo do modo.
A imagem abaixo mostra a diferença entre os modos.
Por padrão, o ESP utiliza o modo quad, mas funciona perfeitamente em modo dual, assim liberando duas GPIOs para serem utilizadas em outras aplicações.
Modificando o ESP
Antes de continuar, devo alertar que essa modificação pode danificar o ESP caso seja feita de forma errada e sem cuidados. Não me responsabilizo por erros caso faça algo de errado.
Para modificar o modo de operação da SPI, devemos dessoldar apenas os pinos, 3 e 7, descontando os mesmos dos pad's da placa. É importante assegurar que eles não tenham conexão elétrica com a placa.
Tome muito cuidado para não quebrar o terminal da memoria ou remover o pad da PCB. Eles são bem delicados.
Para levantar o pad, use um ferro de solda para dessoldar o pad, e utilize alguma pinça bem fina, agulha ou cureta (a mesma usada por dentista), para levantar, cuidadosamente o terminal da memoria.
Uma outra opção é remover completamente a memoria e fazer as modificações com ela fora da PCB.
Em seguida, solde um fio bem fino (wireup) entre os pinos da memoria 3, 7 e 8. Isso significa que os pinos estarão conectados em VCC, conforme as figuras abaixo.
Para ajudar na solda, se disponível, utilize um microscópio ou lupa, assim facilitando a solda.
Para poder usar as GPIOs, solde dois fios nos pads dos terminais que foram levantados, lembrando para sempre verificar se não há curto circuito entre os terminais. Para criar um reforço, use super cola para colar os fios na placa, já que é fácil remover os pad's caso puxar o fio.
Feito isso, você tem duas novas GPIOs para utilizar, a GPIO9 e a GPIO10.
Configurando a IDE Arduino
Para poder gravar o firmware no ESP, é importante mudar o modo de gravação, passando de QIO para DIO, conforme a figura abaixo, pois não irá gravar da forma correta sem essa alteração.
Essa modificação, mesmo que de alto risco, vale a pena em casos de extrema urgência ou se for fazer o próprio design utilizando o ESP diretamente e não por módulos. O ideal é utilizar essa modificação apenas para fins didáticos ou de curiosidade, já que dá trabalho fazer isso em mais ESPs.
Se estiver utilizando o ESP12-E e souber retirar o shield, essa alteração será bem mais fácil, já que ele tem o acesso da GPIO9 e 10 na parte inferior dos PADs.