Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


Introdução à Programação do ESP32




Introdução à Programação do ESP32 utilizando o Arduino IDE. Vou te mostrar aqui como programar um ESP32, de 19 pinos de cada lado, como um Arduino, mas mostrando justamente as diferenças entre este tipo de microcontrolador e o Arduino propriamente dito. Sendo assim, além de introduzir o ESP32 usando a IDE do Arduino, vou te apresentar um exemplo prático para realizar uma leitura digital e atuação digital.



Demonstração




Recursos usados

1 ESP WROOM  32
1 interruptor do tipo push-button
1 resistor 10k ohm
1 módulo de relés
Protoboard




O que é o ESP32?

O ESP32 é uma série de Soc’s (System on Chip), desenvolvido pela Espressif Systems, contendo um microprocessador Tensilica Xtensa LX6, WiFi e Bluetooth integrado.
Foi desenvolvido para que tivesse baixo consumo e baixo custo, sendo uma opção muito interessante para makers ou desenvolvedores de produtos.
Pode ser encontrado em algumas variações, desde o chip passando por módulos e placas de desenvolvimento.


Para iniciar, a utilização de placas de desenvolvimento tende a ser a melhor opção, uma vez que a eletrônica mínima para manutenção do ESP32, que apesar de muito pequena, já está disponível.
Há também a facilidade na utilização de conversores USB-Serial nessas placas de desenvolvimento que facilitam muito o processo de comunicação com ESP32.
As placas de desenvolvimento podem ser encontradas, também, em uma vasta gama de modelos, algumas muito parecidas e outras com facilidades bem específicas.




A placa de desenvolvimento com ESP WROOM 32

Para esta aula, vamos utilizar a placa de desenvolvimento ESP WROOM 32 da NodeMCU.
É importante que ao usar uma placa de desenvolvimento, fiquemos atentos para a forma como esta placa disponibiliza os pinos do módulo para uso externo, em seus cabeçalhos de pinos.




Circuito

Neste circuito vamos detectar o acionamento de um botão, através do GPIO18 (pino 36 da placa) e acionaremos os relés do módulo através dos GPIO32 e 33 (pinos 7 e 8) respectivamente.




Código-Fonte: Declarações

Defino o pino 18 como ligado ao botão. Já aos módulos de relés ficam ligados os pinos 32 e 33. Tenho ainda aqui a variável para guardar o estado do segundo relé.

//Pinos ligado no botão
int btn1 = 18;

//Pinos que são ligados no módulo de relés
int rele1 = 33;
int rele2 = 32;

//variável para guardar o estado do segundo relé
boolean rele2_Ativo = false;

Código-Fonte: Setup()

A função setup() é executada uma vez antes do Loop. Setamos os pinos dos botões como entrada e os pinos de relés como saída. Abrimos, então, a porta serial, definindo a taxa de dados para 9600 bps.

//A função setup() é executada uma vez antes do loop
void setup()
{
  //Seta os pinos dos botões como entrada
  pinMode(btn1, INPUT);

  //Seta os pinos dos relés como saída
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);

  //Abre a porta serial, definindo a taxa de dados para 9600 bps
  Serial.begin(9600);
}


Código-Fonte: Loop()

Aqui, a função loop() é executada após o setup e é repetida continuamente.  Caso o botão 1 seja pressionado, exibiremos no monitor serial a mensagem entre aspas: "Botão pressionado". Ligamos o relé 1, invertemos o estado da variável rele2_Ativo. Mudamos o estado do relé 2, aguardamos 1 segundo (1000 ms) e desligamos o relé 1.

//A função loop() é executada após o setup e é repetida continuamente
void loop()
{
  if (digitalRead(btn1) == HIGH) //Caso o botão 1 foi pressionado
  {
    //Exibe no monitor serial a mensagem entre aspas
    Serial.println("Botão pressionado");

    //Ligamos o relé 1
    digitalWrite(rele1, HIGH);

    //Invertemos o estado da variável rele2_Ativo
    rele2_Ativo = !rele2_Ativo;

    //Mudamos o estado do relé 2
    digitalWrite(rele2, rele2_Ativo );

    //Aguardamos 1 segundo (1000 ms)
    delay(1000);

    //Desligamos o relé 1
    digitalWrite(rele1, LOW);
  }
}


Fazendo o UpLoad do código

Com a IDE aberta, abra o arquivo com o código fonte, clicando duas vezes sobre o arquivo .ino ou através do menu Arquivo



Com o ESP32 conectado a USB, selecione o menu Ferramentas => Placa: “ESP32 Dev Module”



Ainda no menu Ferramentas, selecione a porta COM na qual o ESP32 está conectado



Clique no botão UPLOAD. A IDE irá compilar o código e tentará iniciar a conexão com o ESP32



Quando a mensagem de “Connecting....._____.....___” aparecer, pressione o botão IO0 no ESP32, para habilitá-lo para gravação.



Após a gravação, vamos agora verificar a execução, clique no botão para abrir o Monitor Serial e em seguida, ajuste a velocidade da comunicação (baud rate) para 9600.



Aperte o botão, além do acionamento dos relés, a seguinte mensagem deverá aparecer no Monitor Serial





Faça o download dos arquivos:



Postar um comentário

10 Comentários

  1. Boas noites.
    Atenção ás coneções do sw está a curto-circuitar o (+) com o (-) !

    ResponderExcluir
    Respostas
    1. Também estou percebendo.Como seria o correto?

      Excluir
    2. O correto é ligar Vcc no terminal 1 do botão, e o terminal 2 do botão no resistor e o resistor no GND. A derivação para o GPIO é feita no no terminal 2 do botão.

      Excluir
    3. O correto é ligar Vcc no terminal 1 do botão, e o terminal 2 do botão no resistor e o resistor no GND. A derivação para o GPIO é feita no no terminal 2 do botão.

      Excluir
  2. Já tenho experiência em programação em várias linguagens, tenho experiência em vários equipamentos de automação também e quero entrar no mercado de automação residencial de alto nível. Tem algum "kit ESP32" que você possa indicar para eu adquirir ou montar?
    Obrigado.
    Luiz Guaraci
    sdv.automacoes@gmail.com

    ResponderExcluir
  3. Estou tendo muitas dificuldades com o tal push button, não tem muita coisa, parece muito simples para quem conhece, mas para quem está começando, é difícil.
    Como funciona o de 4 pinos como saber quais o pinos são ligados após o contato?
    Explica o uso do resistor, mesmo com a voltagem em 3,3v.

    ResponderExcluir
    Respostas
    1. A chave TAC de 4 posições possui 2 terminais em curto. Assim se você medir com um multimetro irá encontrar as posições que são curto circuitadas.
      Quanto ao resistor não há necessidade de trocar por um valor mais baixo, pois nesse caso a corrente é apenas de referência para o pino, e a corrente é suficiente para aciona-lo.

      Excluir
  4. Bom dia,
    posso usar blocos de relés serial com o esp32?

    ResponderExcluir
  5. TD BEM FERNANDO ONDE VC COMPROU SEU STM32F746G ?

    ResponderExcluir
  6. Fernando blz, tem um erro no desenho esquemático que você fez, a configuração do resistor de pull-down está errado, quando clicar no push button vai fechar curto. Fora isso, excelente aula.

    ResponderExcluir