Você está na página 1de 15

PROGRAMAÇÃO E CONFIGURAÇÃO - ESP32 / VISUAL STUDIO

CODE.

Nome: Bianca Martins.


Prof°: Sérgio

São Paulo, SP

2023
Objetivos:

 Conhecer o ambiente de simulação WOKI.


 Implementação dos programas da apostila no simulador.
 Configurar o ambiente Visual Studio Code.

ESP32 - Visão geral.


ESP32 é um único chip combinado de Wi-Fi e Bluetooth de 2,4 GHz projetado com
tecnologia TSMC de baixa potência de 40 nm. Isto foi projetado para alcançar o melhor
desempenho de potência e RF, robustez, versatilidade e confiabilidade em uma ampla
variedade de aplicações e diferentes perfis de potência.
ESP32 é uma solução altamente integrada para aplicações Wi-Fi + Bluetooth na
indústria IoT com cerca de 20 dispositivos externos componentes. ESP32 integra o
interruptor de antena, balun RF, amplificador de potência, amplificador de recepção de
baixo ruído, filtros, e módulos de gerenciamento de energia. Como tal, toda a solução
ocupa o mínimo de placa de circuito impresso (PCB) área.
ESP32 usa CMOS para rádio e banda base totalmente integrados de chip único e
integra calibração avançada circuitos que permitem que a solução se ajuste
dinamicamente para remover imperfeições do circuito externo ou se ajustar a
mudanças nas condições externas. Como tal, a produção em massa de soluções ESP32
não requer custos elevados e equipamento especializado de teste de Wi-Fi.
A série de chips ESP32 inclui ESP32-D0WD-V3, ESP32-D0WDR2-V3, ESP32-U4WDH,
ESP32-S0WD (não recomendado para novos designs), ESP32-D0WD (não recomendado
para novos designs), ESP32-D0WDQ6 (não recomendado para novos designs) e ESP32-
D0WDQ6-V3 (não recomendado para novos designs), entre qual, ESP32-D0WD-V3,
ESP32-D0WDR2-V3, ESP32-U4WDH e ESP32-D0WDQ6-V3 (não recomendado para
novos designs), são baseados na revisão do chip v3.0 ou v3.1.

Verificação esquemática.
O circuito integrado do ESP32 requer apenas 20 resistores, capacitores e indutores, um
cristal e um flash SPI chip.
Para melhor garantir o desempenho do ESP32, detalha o design dos esquemáticos do
ESP32. O esquema ESP32 é mostrado na Figura 1.
Figura 1: Esquemático do ESP32.

Observação:
• A Figura 1 mostra a conexão para flash externo/PSRAM quádruplo de 3,3 V. PSRAM
CLK é de SCK/CLK ou GPIO17.
• Nos casos em que flash externo/PSRAM quádruplo de 1,8 V for usado, R9 deverá ser
preenchido.
• Nos casos em que PSRAM SiP quádrupla de 3,3 V (como ESP32-D0WDR2-V3) ou um
flash externo é usado, PSRAM CLK é
da SCK/CLK. Veja a Figura 1.
• Nos casos em que flash SiP quádruplo de 3,3 V (como ESP32-U4WDH) for usado,
consulte a Figura 2 para ver o esquema principal.
Figura 2: Esquematico do Flash SiP Quad 3,3 V.

Qualquer projeto básico de circuito ESP32 pode ser dividido em 10 seções principais:
• Fonte de energia
• Sequência de inicialização e reinicialização do sistema
• Flash (obrigatório) e SRAM (opcional)
• Fontes de relógio
• RF
• Capacitores externos
• CDA
•UART
• SDIO
• Sensor de toque
Fonte de alimentação digital:
O ESP32 possui o pino 37 VDD3P3_CPU que fornece energia para CPU IO, em uma faixa
de tensão de 1,8 V ~ 3,6 V. É recomendado adicionar um capacitor de desacoplamento
extra de 0,1 µF próximo a este pino da fonte de alimentação digital.
Pin26 VDD_SDIO pode servir como fonte de alimentação para o dispositivo externo em
1,8 V se o GPIO12 estiver alto durante a inicialização ou em 3,3 V se o GPIO12 for
reduzido durante a inicialização. Por padrão, o GPIO12 é reduzido.
• Quando o VDD_SDIO opera em 1,8 V, ele é alimentado pelo LDO interno do ESP32. A
corrente máxima deste LDO pode oferecer é de 40 mA e a faixa de tensão de saída é de
1,65 V ~ 2,0 V. Quando o VDD_SDIO produz 1,8 V, ele é recomendado que os usuários
adicionem um resistor de aterramento de 2 kΩ e um capacitor de aterramento de 4,7
µF próximo ao VDD_SDIO. Veja a Figura 3.
• Quando o VDD_SDIO opera em 3,3 V, ele é acionado diretamente pelo VDD3P3_RTC
através de um resistor de 6 Ω, portanto, haverá alguma queda de tensão de
VDD3P3_RTC. Quando o VDD_SDIO produz 3,3 V, é recomendado que os usuários
adicionem um capacitor de filtro de 1 µF próximo a VDD_SDIO. Veja a Figura 4.

Figura 3: Esquema do pino da fonte de alimentação VDD_SDIO de 1,8 V.

Figura 4: Esquema do pino da fonte de alimentação VDD_SDIO de 3,3.


Fonte de alimentação analógica:
Pin1 VDDA, pin3 VDD3P3, pin4 VDD3P3, pin43 VDDA e pin46 VDDA são os pinos da
fonte de alimentação analógica, funcionando em 2,3 V ~ 3,6 V.
Deve-se notar que o aumento repentino no consumo de corrente, quando o ESP32 está
no modo de transmissão, pode causar o colapso do barramento de energia. Portanto, é
altamente recomendável adicionar outro capacitor de 10 µF ao traço de potência, que
pode funcionar em conjunto com o capacitor de 0,1 µF. O circuito de filtro LC precisa
ser adicionado próximo aos pinos VDD3P3 para suprimir harmônicos de alta
frequência. A corrente nominal do indutor é preferencialmente 500 mA e superior.
Consulte a Figura 6 e coloque o capacitor de desacoplamento apropriado próximo aos
outros pinos de alimentação analógica.

Figura 6: Pinos da fonte de alimentação analógica ESP32.

ESP32 NO WOKWI:

ESP 32 Programação – Pisca led.


Explicação:
1. Início:
2. Definir PINO_LED como 2:
- Esta é uma diretiva de pré-processador que define uma constante chamada
PINO_LED com o valor 0.
3. Entrar na função setup():
- Esta função é chamada uma vez quando o ESP32 é inicializado.
- Dentro desta função, temos o seguinte comando:
1. pinMode(PINO_LED, OUTPUT);
- Esta função configura o pino especificado para se comportar como uma entrada
ou saída.
- Aqui, estamos configurando PINO_LED como OUTPUT, o que significa que
podemos escrever (saída) no pino.
4. Entrar na função loop():
- Esta função é chamada repetidamente pelo ESP32 após a conclusão da função
setup().
- Dentro desta função, temos o seguinte comando:
1. **digitalWrite(PINO_LED, HIGH);**
- Esta função escreve um valor HIGH ou LOW para um pino digital especificado.
- Aqui, estamos escrevendo HIGH para PINO_LED, o que configura a tensão do
pino para HIGH (3.3V no ESP32), ligando assim o LED.
5. Repetir a função loop():
- Após a conclusão da função loop(), ela é chamada novamente pelo ESP32, criando
assim um loop infinito.
ESP 32 Programação – Liga e desliga.

Explicação:
1. Início:
2. Definir PINO_LED como 4 e PINO_BOTAO como 14:
- Estas são diretivas de pré-processador que definem constantes chamadas
PINO_LED e PINO_BOTAO com os valores 4 e 14, respectivamente.
3. Entrar na função setup():
- Esta função é chamada uma vez quando o ESP32 é inicializado.
- Dentro desta função, temos os seguintes comandos:
1. pinMode(PINO_LED, OUTPUT);
- Esta função configura o pino especificado para se comportar como uma
entrada ou saída.
- Aqui, estamos configurando PINO_LED (que é 4) como OUTPUT, o que significa
que podemos escrever (saída) no pino.
2. pinMode(PINO_BOTAO, INPUT);
- Aqui, estamos configurando PINO_BOTAO (que é 14) como INPUT, o que
significa que podemos ler (entrada) do pino.
4. Entrar na função loop():
- Esta função é chamada repetidamente pelo ESP32 após a conclusão da função
setup().
- Dentro desta função, temos os seguintes comandos:
1. int estadoBotao = digitalRead(PINO_BOTAO);
- Esta função lê o valor de um pino digital especificado.
- Aqui, estamos lendo o valor de PINO_BOTAO, e armazenando-o na variável
estadoBotao.
2. if (estadoBotao == HIGH) {...} else {...}
- Esta é uma instrução condicional que executa diferentes blocos de código
dependendo se a condição especificada é verdadeira ou falsa.
- Aqui, estamos verificando se estadoBotao é igual a HIGH. Se for verdadeiro (o
botão está pressionado), executamos o bloco de código que liga o LED. Se for falso (o
botão não está pressionado), executamos o bloco de código que desliga o LED.
5. Repetir a função loop():
- Após a conclusão da função loop(), ela é chamada novamente pelo ESP32, criando
assim um loop infinito.

ESP 32 Programação – Liga e desliga sem pollup gera instabilidade na


saída.

Explicação:
Neste código, estamos definindo o pino do LED como 4 e o pino do botão como 14. No
setup(), configuramos esses pinos como OUTPUT e INPUT, respectivamente. No loop(),
lemos o estado do botão com digitalRead() e usamos uma instrução if para ligar ou
desligar o LED dependendo se o botão está pressionado ou não. Você pode carregar
este código para a sua placa ESP32 usando a IDE do Arduino. Lembre-se de ajustar os
números dos pinos se o seu LED e botão estiverem conectados a pinos diferentes.
Percebemos que sem um resistor de pull-up ou pull-down externo, o pino de entrada
pode flutuar quando o botão não está sendo pressionado, levando a um
comportamento instável. Recomenda-se usar um resistor de pull-down externo para
garantir que o pino de entrada seja mantido em um estado conhecido quando o botão
não está sendo pressionado.

ESP 32 Programação – Liga e desliga com input e resistor gera instabilidade


na saída.

Explicação:
1. Início:

2. Definir PINO_LED como 2 e PINO_BOTAO como 0:

- Estas são diretivas de pré-processador que definem constantes chamadas PINO_LED e


PINO_BOTAO com os valores 2 e 0, respectivamente.

3. Entrar na função setup():

- Esta função é chamada uma vez quando o ESP32 é inicializado.

- Dentro desta função, temos os seguintes comandos:

1. pinMode(PINO_LED, OUTPUT);

- Esta função configura o pino especificado para se comportar como uma entrada ou saída.

- Aqui, estamos configurando PINO_LED (que é 2) como OUTPUT, o que significa que
podemos escrever (saída) no pino.

2. pinMode(PINO_BOTAO, INPUT);

- Aqui, estamos configurando PINO_BOTAO (que é 0) como INPUT, o que significa que
podemos ler (entrada) do pino.

4. Entrar na função loop():

- Esta função é chamada repetidamente pelo ESP32 após a conclusão da função setup().

- Dentro desta função, temos os seguintes comandos:

1. int estadoBotao = digitalRead(PINO_BOTAO);

- Esta função lê o valor de um pino digital especificado.


- Aqui, estamos lendo o valor de PINO_BOTAO, e armazenando-o na variável
estadoBotao.

2. if (estadoBotao == HIGH) {...} else {...}

- Esta é uma instrução condicional que executa diferentes blocos de código dependendo se
a condição especificada é verdadeira ou falsa.

- Aqui, estamos verificando se estadoBotao é igual a HIGH. Se for verdadeiro (o botão


está pressionado), executamos o bloco de código que liga o LED. Se for falso (o botão não está
pressionado), executamos o bloco de código que desliga o LED.

5. Repetir a função loop():

- Após a conclusão da função loop(), ela é chamada novamente pelo ESP32, criando assim
um loop infinito.

ESP 32 Programação – led automático.

Explicação:
1. Inicialmente, o código define os pinos para o LED e o botão.
2. No setup(), ele configura o pino do LED como saída e o pino do botão como entrada
com um resistor de pull-up interno.
3. Em seguida, entra no loop principal do programa.
4. Dentro do loop(), ele verifica se o botão está pressionado (ou seja,
digitalRead(terminal) == HIGH).
5. Se o botão estiver pressionado, ele entra em um loop onde:
- Acende o LED (digitalWrite(led, HIGH)).
- Espera meio segundo (delay(500)).
- Apaga o LED (digitalWrite(led, LOW)).
- Espera mais meio segundo (delay(500)).
6. Este ciclo de acender e apagar o LED continua enquanto o botão estiver pressionado.
7. Quando o botão é solto (ou seja, digitalRead(terminal) != HIGH), ele sai do loop e
garante que o LED esteja apagado (digitalWrite(led, LOW)).
8. Depois disso, ele volta ao início do loop() e repete todo o processo.

ESP 32 Programação - Semáforo.

Explicação:
1. Inicialmente, o código define os pinos para os LEDs vermelho e verde.
2. No setup(), ele configura os pinos dos LEDs como saída.
3. Em seguida, entra no loop principal do programa.
4. Dentro do loop(), ele acende o LED vermelho (digitalWrite(LED_VERMELHO, HIGH)).
5. Espera por 5 segundos (delay(5000)).
6. Apaga o LED vermelho (digitalWrite(LED_VERMELHO, LOW)).
7. Acende o LED verde (digitalWrite(LED_VERDE, HIGH)).
8. Espera por 5 segundos (delay(5000)).
9. Apaga o LED verde (digitalWrite(LED_VERDE, LOW)).
10. Depois disso, ele volta ao início do loop() e repete todo o processo.

ESP 32-S2 Programação – Porta analógica.

Explicação:
1. Definição de constantes e variáveis: O código começa definindo as constantes para
os pinos do LED e da entrada analógica, bem como a tensão de referência e a resolução
do ADC. Ele também define duas variáveis para armazenar o valor lido do
potenciômetro e a tensão correspondente em milivolts.
2. Configuração inicial (setup): No setup(), o código configura o pino do LED como saída
e inicia a comunicação serial a uma taxa de 115200 baud. Esta parte do código é
executada apenas uma vez quando o Arduino é ligado ou reiniciado.
3. Loop principal (loop): Em seguida, o código entra no loop principal, que será
executado indefinidamente enquanto o Arduino estiver ligado.
4. Leitura do potenciômetro: A primeira coisa que o código faz no loop() é ler o valor do
potenciômetro usando a função analogRead(). Esta função retorna um valor entre 0 e
4095, dependendo da tensão aplicada ao pino analógico.
5. Conversão para milivolts: O valor lido do potenciômetro é então convertido para
milivolts multiplicando-o pela tensão de referência e dividindo pela resolução do ADC.
6. Acender o LED: O LED é então acendido usando a função digitalWrite(), que
configura o pino do LED para HIGH (ligado).
7. Espera proporcional à tensão lida: O código então pausa por um tempo proporcional
à tensão lida usando a função delay(). Esta função pausa a execução do código pelo
número de milissegundos especificado
8. Apagar o LED: Após a pausa, o LED é apagado usando novamente a função
digitalWrite(), desta vez configurando o pino do LED para LOW (desligado).
9. Segunda espera: O código então pausa novamente pelo mesmo tempo que antes.
10. Impressão da tensão no monitor serial: Finalmente, o código imprime uma
mensagem no monitor serial indicando a tensão lida. Ele faz isso usando a função
Serial.println().
11. Repetição do loop: Depois de imprimir a tensão, o código volta ao início do loop() e
repete todo o processo.

VISUAL STUDIO CODE – ESP32

Você também pode gostar