Conhecendo o ESP32
Vamos conhecer mais a respeito do incrível “irmão mais novo” do nosso querido ESP8266, o ESP32. Este novo microcontrolador da Espressif é uma melhoria do seu antecessor, com mais poder de processamento (Triple core), memória e novos recursos, incluindo Bluetooth e sensores de touch capacitivo. Veja abaixo uma lista de características do ESP32.
Características do ESP-WROOM32
- Processador principal: LX6 32-bit Dual-core, operando 2-240 MHz.
- Processador secundário: ULP (Ultra Low Power coprocessor) 8MHz e consome 150uA.
- FLASH: 4MB.
- RAM: 520kB.
- GPIO: 34, com 3.3V e 12mA.
- ADC: 18, com resolução de 12-bit.
- DAC: 2, com resolução 8-bit.
- WiFi: 2,4 GHz, 802.11 b/g/n.
- Bluetooth: Bluetooth Low Energy v4.2 (BLE).
- Acelerador via hardware para encriptações, hash e afins. (AES, RSA, SHA e ECC).
- True Random Number Generator (TRGN).
- 4 Timers de 64-bit.
- 4 Watchdogs.
- 10 Sensores de Touch Capacitivo.
- 1 Sensor de temperatura interno.
- 1 Sensor de efeito Hall.
O ULP é um processador de baixo consumo que pode ser usado até em Deep Sleep, e com isso, conseguimos acordar o micro controlador das mais diversas formas, como por exemplo dados na Serial, informação de algum sensor ou os próprios sensores de toque capacitivo. Vários erros que aconteciam com o ESP8266 foram corrigidos e/ou melhorados, por exemplo, as tarefas de background, interrupções, yield() e watchdogs. Ainda é cedo para dizer (no momento) se foram corrigidos totalmente ou apenas melhorados para que gerem menos inconvenientes.
Podemos programa-lo de diversas formas, inclusive na Arduino IDE. Porem, a inclusão das funções do ESP32 ainda está atrasada em relação a esp-IDF, há varias funções que ainda não foram portadas para o Core do Arduino, a principal até o momento, é o Bluetooth, que ainda não é possível usufruir corretamente. Se você precisa usar o Bluetooth ou alguma função que ainda não foi incluída à Arduino IDE, sugerimos que use a esp-IDF.
Chega de papo e vamos programar esta belezinha, o nosso novo brinquedo. Iremos usar a Arduino IDE por já estarmos familiarizado com os comandos e funções.
Instalando o ESP32 na Arduino IDE
Instalando o Python no seu computador
Talvez seja necessário a instalação do Python em sua maquina caso ainda não tenha instalado. Se você já programou o ESP8266, provavelmente já tem o Python instalado e não precisara instalar novamente.
– Baixando o instalador do Python
Entre em ( https://www.python.org/downloads/ ) e Baixe o Python 2.7.XX
– Instalando o Python
Abra o instalador e siga até a terceira tela. Na terceira tela ative a opção “Add Python.exe to Path” clicando em “Will be installed on local hard drive” e termine a instalação.
Instalando o Driver (Core) do ESP32 na IDE Arduino
1 – Baixe o ZIP do ESP32, disponível no site do GitHub. ( https://github.com/espressif/arduino-esp32 )
2- Extraia os arquivos dentro da pasta Arduino/hardware/espressif/esp32/ , que se encontra em seu HD. Ficara igual o nosso:
3- Vá em esp32/tools e execute o arquivo GET.exe . Irá começar o download de novos arquivos e isso pode demorar um pouco. Ao fim, a janela se fechara automaticamente.
4- Abra a Arduino IDE, e veja se as placas do ESP32 estão disponíveis para seleção.
5- Plugue seu ESP32 no computador e espere a instalação automática do driver CP2102. Alguns usuários relatam que não foi possível a instalação automática, sendo necessário a instalação manualmente do driver CP2102. Após a instalação do driver, selecione a porta COM respectiva do seu ESP32, se estiver em duvida qual seja, desconecte o ESP32 do computador e veja quais portas estão ativas, agora conecte novamente e veja a porta que apareceu.
Mãos à obra
Componentes necessários
- 1x ESP32 (Usaremos o NodeMCU32).
Programando
Iremos fazer o primeiro upload para nossa placa com o clássico Blink. O Blink é um código para piscar LEDs de forma bem simples. Na placa NodeMCU há um LED OnBoard que iremos piscar, então não é preciso usar um LED externo. Caso você queira usar um LED externo, não se esqueça de alterar os pinos no código.
Código do projeto
void setup() { pinMode(LED_BUILTIN, OUTPUT);//Habilita o LED onboard como saída. } void loop() { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//Faz o LED piscar (inverte o estado). delay(250);//espera 250mS para inverter o estado do LED. }
Colocando para funcionar
Após o upload do código, nosso micro controlador começara a piscar, veja o nosso:
Entendendo a fundo
Software
– Função Setup
void setup() { pinMode(LED_BUILTIN, OUTPUT);//Habilita o LED onboard como saída. }
A função de Setup do Arduino é feita da mesma forma, ao ligar/resetar o micro controlador, esta função é executada uma unica vez, por isso o nome “setup”, referenciando uma função que configure nosso micro controlador. Normalmente as configurações iniciais, como por exemplo definição de pino (Input/Output) só é necessária ser feita uma vez, logo, adicionamos ela ao setup. Diferentemente do Loop, que é aonde nosso código é executado infinitamente.
– Função pinMode
pinMode(LED_BUILTIN, OUTPUT);//Habilita o LED onboard como saída.
A função pinMode(pino, estado) é usada para definir qual o estado de um pino do micro controlador, no caso, iremos controlar um LED, então foi declarado OUTPUT, para que possamos alterar o nivel lógico do pino (LOW ou HIGH).
– Função digitalWrite
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//Faz o LED piscar (inverte o estado).
A função digitalWrite(pino, estado) é usada para “escrever” um valor no pino do micro controlador. Você pode usar LOW e HIGH, para acender ou apagar um LED, ligar ou desligar motores e etc. Também foi usado a função digitalRead(pino) que faz a leitura do atual estado do pino, e após pegar este valor, nós invertemos com a exclamação ” ! “, que se encontra antes da função digitalRead(). Fazendo isto, nós sempre iremos alternar o estado do LED, ou seja, se esta ligado, desligamos; e se esta desligado, ligamos.
– Função Delay
delay(250);//espera 250mS para inverter o estado do LED.
A função delay(mS) é usada para adicionar um tempo entre as tarefas. Se ela não for usada, o LED irá piscar muito rapidamente, impossibilitando a visualização. Logo, usamos 250mS para que possamos ver o LED piscando lentamente.
Fechamento
Então chegamos ao fim de mais um tutorial, aprendemos a instalar e dar o primeiro upload neste incrivel micro controlador. Nos proximos tutoriais, iremos ensinar sobre como dividir tarefas entre os 2 processadores, permitindo assim, que você rode 2 códigos ao mesmo tempo.
Você também pode optar por instalar a ESP-IDF, um ambiente completo de desenvolvimento pro ESP32 que suporta todas configurações e features do microcontrolador: https://portal.vidadesilicio.com.br/instalando-esp-idf-no-windows-esp32/
Se houver dúvidas ou sugestões, fique à vontade para comentar!
Estudante de Engenharia da Computação pela USC, pretende se aprimorar e fazer a diferença nesta imensa área da tecnologia. Apaixonado por IoT, sistemas embarcados, microcontroladores e integração da computação nos mais diversos fins práticos e didáticos.
17 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
HTTPClient.h
Boa tarde ! , estou com um problema creio que possam me ajudar , quando o esp32 não consegue conectar- se ao servidor local todo o programa trava !. , para de executar todas as funções. Quando o servidor volta ele volta a funcionar normalmente .
Estou enviando dados por http a um dever local MySQL por GET.
Esqueci de mencionar estou usando a biblioteca #include .
Olá amigo! Sabe dizer se existe uma LIB do ESP32 para simulação no PROTEUS?
Parabéns pelo artigo!
Você diz uma lib para simulação ou apenas o package? Para o package, fiz na mão mesmo…
Ótimo artigo, parabéns! Estou começando no ESP32 e me ajudou muito, uma dúvida, ao carregar o programa para o microcontrolador foi necessário manter pressionado o botão de “BOOT” até que o carregamento completasse, isso é normal? levei tempo para descobrir isso.
O botão de boot aterra o pino 0, fazendo com que o esp entre em modo download quando reiniciado. Todo upload novo, o esp precisa estar no modo download, mas como o conversor serial já faz automáticamente, entra em esquecimento por alguns usuários…
E sim, pode ser normal precisar apertar o botão, principalmente quando utilizar circuitos externos ou até mesmo o esp em uma protoboard.
Essa parte de pressionar o botão BOOT durante o dowload é o famoso “Pulo do Gato”. Em seguida, presisonar o botão (EN).
Boa noite, gostei do tutorial. Posso usar o windows 7 (64 bits) para trabalhar com o Arduino e o Esp32. Uso normal windows, Arduíno e o esp8266. No caso do esp32 não está sendo reconhecido pelo Arduíno. Tem alguma ideá do que pode está acontecendo ou onde eu estou errando. Agradeço qualquer ajuda.
boa noite José, quando tentei compilar o exemplo blink aparece essa mensagem de erro:
exec: “C:\\Users\\Master\\Documents\\Arduino\\hardware\\espressif\\esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++”: file does not exist
Erro compilando para a placa NodeMCU-32S
teria idéia qual foi o meu erro?. obrigado
Oi José,
Vc já acabou seu curso de engenharia? Gostaria conhecer o programa de mestrado em eng. elétrica da Unicamp?
atenciosamente
Fabiano
Olá Fabiano, ainda não. Embaixo da minha foto, no fim do post, há um icone do Facebook, me chame lá!
Ainda não terminei*.
Esmerilhou o módulo , parabéns José , sou comerciante de Arduino sensores e qdo quiser testar as últimas novidades e lançamentos desse segmento é só entrar em contato ,tenho a alguns meses esse esp32 + display OLED embarcado ..parabéns
Obrigado luis! Qualquer coisa entro em contato sim, é sempre bom ter ajuda..
Muito bom artigo você está de parabéns José Morais
Obrigado pelo apoio, Giorgio.