Falaa pessoal! Olhem só, to viajando numa coisa já faz um tempo e queria a ajuda de vcs para elaborar uma solução para meu problema.

Desenvolvi um scanner de QR code com wifi usando ESP32, funciona muito bem, mas oque acontece é que eu usei apenas o chipset do ESP32 na minha placa, e coloquei dois push buttons para entrar no boot mode do ESP32. Quanto preciso fazer um upload, simplesmente entro no boot mode com botões e faço o upload usando um FTDI comunzinho. 

O grande problema é o seguinte, toda hora tenho que abrir a caixa para ter acesso aos botões ou trabalhar com caixa aberta quando estou desenvolvendo para ele. Oque não é nada prático. 

E como até hoje não descobri uma maneira de entrar no boot mode via software, fiquei viajando numa maneira de fazer isso via hardware porém de forma automatizada. Por exemplo, envio um comando via terminal serial e o equipamento via hardware entra no boot mode.

Primeiramente pensei o seguinte, um GPIO aciona um mosfet que puxa o pino IO0 pro ground, com um capacitor grande o suficiente para segurá-lo para baixo pelo tempo necessário, em seguida outro GPIO aciona outro mosfet que puxa o RST pro ground, entrando assim em boot mode. Na minha cabeça, assim que o capacitor perdesse força o mosfet do pino IO0 voltaria para HIGHpro ESP voltar a funcionar normalmente.Fiz alguns testes assim mas sem sucesso.

Depois pensei em fazer um circuito latch com um NPN e um PNP, que acionaria o mosfet do pino IO0 segurando-o para baixo, em seguida o mosfet do RST finalizaria o serviço. O problema desse método que só lembrei depois, é que o latch precisa ser resetado rsrsrsrs. E como meu processador já vai estar em boot mode eu não consigo fazer isso via software. Precisaria bolar um jeito do latch se auto resetar depois do tempo necessário, voltando assim meu pino IO0 zero para HIGH e permitindo a operação normal do ESP.

Esse é meu problema, gostaria de saber se alguém já pensou ou até implementou algo do tipo na pratica ou pode me ajudar a pensar numa solução viável. 

P.S. Com certeza muitos podem sugerir o uso de OTA. Mas eu sinceramente não queria mexer com isso, já estou tão habituado a fazer upload do jeito normal e minhas experiências com OTA não foram das mais agradáveis.

Exibições: 56

Responder esta

Respostas a este tópico

Só complementando, o aparelho tem uma conexão USB, por onde faço o upload e comunico com o terminal. 

Outra solução que me ocorreu foi implementar o mesmo circuito que o próprio ESP utiliza nos kits de desenvolvimento com dois transistores BJTs acionados pelo DRT e RTS do FTDI, porém o USB só tem 5 pinos, já uso 4, só me resta um, rsrs. Precisaria de 2 para fazer isso. 

Se desse pra fazer com um pino seria o ideal.

Não sei se entendi seu problema...

Mas aqui quando o ESP fica querendo que algum botão seja apertado para trocar a programação uso essa dica:

https://github.com/espressif/esptool/issues/136

Coloco um capacitor de 1uF em paralelo com o botão EN. Isso alarga o tempo de reset e faz funcionar.

Basta dar "Play" e seu programa novo entra sem precisar apertar nada.

Segue a foto da minha versão:

Tenho modelos de ESP32 que necessitam e outros que não necessitam de pressionar o botão BOOT/EN  para entrar me modo flash para recepção do novo código. Mas nunca parei pra analisar a diferença entre eles.

De fato essa solução é bem simples e prática ! Quando possível, darei uma analisada melhor no link e farei alguns testes também.

João, qual modelo é este? Gostaria de analisar o hardware pra ver se surge alguma ideia.


Mas provavelmente os que não precisam usam as saídas DTR e RTS do FTDI para digamos "apertar os botões".

É uma saída bem inteligente que encontraram para automatizar a entrada no boot mode. 

Eis o problema. Identificar o "modelo". São os mesmos ESP32 WROOM porém em plataformas NodeMCU com algumas diferenças no circuito. Eu vou separar pra você depois o link das compras. Devo ter no histórico ainda do AliExpress e mando caso queira comparar pelas imagens.

Fala Eduardo! Não sei se entendi direito. 

Beleza, colocar o capacitor pra manter ele no nível alto por mais tempo, até aí tranquilo. Mas qual a vantagem disso?

Na verdade não deveria ser preciso apertar botão algum. O DTR faz o reset. É que para alguns o tempo de DTR está curto. Alargando ele resolve. Pelo menos pra mim resolveu.

O modelo da foto é da china, dificil falar o modelo mas é um ESP32 OLED Wemos (ou Wemos Lolin 32 OLED)

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço