Placa de gravação e comunicação UART para módulos da Espressif

Desenvolvimento de uma placa de gravação/comunicação com o programador de ESP-01, (conversor serial/UBS CH340) para gravar e comunicar dos módulos de microcontroladores Espressif; ESP01, ESP12F e ESP-WROOM-32D em placas de nossos projetos.

Sim, 2020 foi muito desafiador, isso não é novidade para ninguém, entre tantos desafios como, por exemplo a pandemia de COVID-19 e seus efeitos colaterais, neste ano pude prestar meu primeiro serviço como pessoa jurídica após me formar engenheiro em 2019.

Meu primeiro projeto de sistema embarcado de maneira profissional trazia uma aplicação Indoor de Internet das coisas, com proposta Ultra Low Power, utilizando o tão conhecido Espressif ESP32 e protocolos de comunicação sem fio. O andamento do projeto nas fases iniciais de firmware ocorreu muito bem, mesmo eu não tendo uma ferramenta como JTAG que me ajudaria nas depurações mais específicas, mesmo por estar utilizando o Arduino IDE ao invés do ESP-IDF, e essa escolha foi talvez pela quantidade de bibliotecas que a comunidade e os fabricantes de hardware periférico já implementaram e compartilharam para este IDE, juntamente com o nível de abstração que é oferecido.

Durante o projeto fui percebendo que o domínio de sistemas embarcados que eu imaginava possuir com os conteúdos que a faculdade me proporcionara, eram insuficientes, e um grande desafio foi estudar muito além do que estudara em meus anos de faculdade, posso dizer que em 2020 eu absorvi mais conhecimento sobre sistemas embarcados do que as relativas matérias de dois cursos universitários fizeram, não pela deficiência das ementas ou professores, mas sim porque os projetos de casos práticos somados com prazos e requisitos, possuem um poder de tirar qualquer um de sua zona de conforto e evidenciar campos do conhecimento que ainda é preciso expandir. Os conteúdos; webinars e artigos do Portal Embarcados me ajudaram muito nessa expansão de conhecimento, junto com obras literárias de autores da comunidade, cursos e outros materiais disponíveis na web.

Mas, voltando a falar do projeto, eu possuía algumas limitações quando se tratava de depuração, pois todo meu debug ao longo da fase de firmware acontecia na externalização de informações através de comunicação UART, pelo terminal serial da IDE e interface com LEDs, o que não deixa de ser um modo de debug, porém não é o modo mais completo profissionalmente falando, devido não conseguirmos acompanhar com precisão e simultaneidade o estado do processador, registradores e endereços de memórias dentro do nosso MCU em ciclo de execução desejado. Mesmo assim como eu disse, o andamento do firmware foi bem-sucedido atendendo aos requisitos iniciais do projeto, então a parte de testes e prototipação do projeto enquanto estávamos trabalhando com a placa de desenvolvimento ESP32-DOIT-DevKitC-V1 ocorreu de maneira satisfatória.

A partir de então, eu voltei a atenção para o hardware do projeto, saindo de uma placa de desenvolvimento (DevKit), onde temos um hardware estável para prototipação e testes, para trabalhar no projeto da placa própria, foi então onde algumas características conflitaram com o atendimento dos requisitos, como; fonte de alimentação já que a proposta era Low Power, tipo e formato de baterias considerando o case mecânico, química de baterias e suas respectivas autonomias, tipos de conversores de tensão como boost-buck, LDOs, circuitos de selo com transistores MOSFETs, CI’s supervisórios de tensão, esses são apenas alguns questionamentos e conflitos que um iniciante pode se deparar.

Entre tantos desafios, o que mais quero chamar atenção, é a gravação de firmware e comunicação da placa própria com a IDE, pois como um dos requisitos de todo projeto é o baixo custo financeiro, no meu caso foi retirado da placa, o CI de conversão Serial-USB, logo esse conflito sem dúvida impactaria muito no andamento e depuração do projeto e como gravar o firmware na placa própria. Parecia um desafio muito grande, pois minha principal forma de depuração estava comprometida. Foi então que surgiu a ideia da placa de programação e comunicação. Durante aqueles dias que convivi com esse desafio, eu estava fazendo outras experiencias com o módulo ESP01 e utilizava um programador como o da figura 1 que possui um conversor Serial/USB CH340.

1
Figura 1 – Conversor USB para TTL RS232 CH340

Passei a observar que outras placas de desenvolvimento também traziam o mesmo conversor serial/UBS CH340 para gravação e comunicação dos módulos Espressif, então pensei em fazer algumas experiências de gravação e comunicação com outros módulos Espressif com o conversor serial/UBS CH340 do gravador, essas experiencias deram certo, pesquisei cada pino no programador, e sua função na utilização na programação do ESP01, principalmente como portar esses pinos para programar e comunicar considerando as particularidades dos outros módulos.

2
Figura 2 – PinOut do gravador

Fiz os testes no ESP01, ESP12F e ESP-WROOM-32D, e foi aí que eu resolvi o meu conflito de hardware; fazendo uma placa de programação genérica para todos os módulos citados, permitindo comunicação e gravação. E a solução para o conflito no meu projeto veio colocando na placa própria alguns terminais para gravar, comunicar e depurar pelo terminal serial.

3
Figura 3 – Vista superior da placa e programador
4
Figura 4 – Gravação/Comunicação de uma placa própria com ESP12F

Para quem tiver interesse, coloquei o vídeo de apresentação e descrição da placa no Youtube onde pode ser visto através do link:

5
Figura 5 – Esquemático da placa

Embora eu tenha feito muitas pesquisas quando estava produzindo a placa de programação e fazendo os testes com o gravador citado, acabei não lendo na época e só recentemente encontrei o excelente artigo Análise do circuito gravador para ESP8266 do articulista Giovanni Bauermeister. Com este artigo consegui esclarecer tecnicamente o método de gravação “Circuito com push button e conversor USB-serial” que eu utilizei, como também os demais métodos existentes. E com esse artigo, pude compreender melhor o circuito de ligação e funcionamento do conversor Serial/USB, que no meu caso foi abstraído por eu estar utilizando um programador já pronto, mas recomendo a leitura do artigo.

Ligações e demonstrações

Abaixo coloquei as ligações e o circuito utilizado para gravação/comunicação em cada um dos módulos, o procedimento de gravação é demonstrado nos vídeos dos links. O esquemático e ligações para gravação dos módulos também estão disponíveis em formato PDF, no Github através do link:

https://github.com/Pabllolins/My_Flashing_board_for_Espressif_Modules/tree/master/Schematic

É importante relembrar a necessidade da instalação do driver do conversor Serial/USB CH340, como também a necessidade da instalação das placas/módulos Espressif dentro da IDE utilizada (Arduino IDE). Aqui no Portal Embarcados há diversos artigos ensinando como fazer.Cerifique-se de ter instalado em seu computador o driver do conversor serial como visto na Figura 6 (SO Windows 10).

6
Figura 6 – Driver instalado.

Gravando o ESP-01

7
Figura 7- Ligação entre placa e módulo ESP01
8
Figura 8 – Conexões entre a placa e o módulo ESP01

Vídeo demonstrativo:  

Conexões dos terminais: https://github.com/Pabllolins/My_Flashing_board_for_Espressif_Modules/blob/master/Schematic/Wiring_ESP01.pdf

Gravando o ESP12F

9
Figura 9 – Ligação entre placa e módulo ESP12F
10
Figura 10 – Conexões entre a placa e o módulo ESP12F

Vídeo demonstrativo:

Conexões dos terminais: https://github.com/Pabllolins/My_Flashing_board_for_Espressif_Modules/blob/master/Schematic/Wiring_ESP-12F-12E.pdf

Gravando o ESP WROOM 32D(ESP32)

11
Figura 11 – Ligação entre placa e módulo ESP-WROOM-32D
12
Figura 12 – Conexões entre a placa e o módulo ESP-WROOM-32D

Vídeo demonstrativo:

Conexões dos terminais: https://github.com/Pabllolins/My_Flashing_board_for_Espressif_Modules/blob/master/Schematic/Wiring_ESP-WROOM-32D.pdf

Conclusão

É possível retirar o CI conversor USB/Serial de nossas placas de projetos amadores ou profissional com esses módulos, sem que precisemos nos preocupar com gravação de firmware e comunicação serial, colocando pinos específicos em nossas placas para ligar com uma placa de gravação/comunicação. Também pode-se obter um rácio de hardware com a retirada do conversor.

Mesmo o dispositivo estando alimentado em uma fonte externa é possível fazer a comunicação como visto neste vídeo:

Informações adicionais

Mesmo trabalhando com o programador de ESP-01 que abstrai o circuito em torno do CI CH340, é importante nos atentar-se em obedecer aos parâmetros de trabalho recomendados pelo fabricante do CI. Busquei pelo datasheet ou o esquemático do programador utilizado, mas não encontrei com exatidão para nos basearmos. Entretanto no datasheet do conversor Serial/USB CH340 há diversas recomendações de aplicação, em uma das aplicações o fabricante chega a afirmar que podemos obter uma corrente elétrica de 500mA da porta USB. Logo, caso você queira além de gravar, comunicar e utilizar a placa de programação como forma de alimentação do seu projeto, recomendo que antes atente-se ao valor de corrente elétrica que o seu projeto drena durante o funcionamento para evitar possíveis danos ao chip conversor serial/USB CH340, seu módulo Espressif ou sua porta USB do PC.

13
Figura 13 – Informações do datasheet

Uma forma que eu consegui utilizar a placa para fazer depuração no terminal serial sem me preocupar com a potência dissipada pela minha aplicação, e o quanto ela drenava de corrente ao ser alimentada pela porta USB, foi alimentando meu projeto com uma fonte externa e conectando os pinos RX, TX e GND da placa com o GND da fonte externa. Nota-se no canto superior esquerdo da Figura 14 que o terminal VCC não está conectado a placa.

14
Figura 14 – Ligação com fonte externa

Referencias

https://www.embarcados.com.br/analise-do-circuito-gravador-para-esp8266/

CH340G Datasheet – https://www.mpja.com/download/35227cpdata.pdf

Notificações
Notificar
guest
3 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rubens Junior
14/07/2021 08:03

Ótimo, parabéns!

André Feliciano
André Feliciano
03/05/2021 21:03

Ótimo artigo e bem interessante a placa. Uma curiosidade. Você pensou em colocar o conversos CH340 na mesma placa?

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H