## Descrição do produto

O ESP32 é um microcontrolador desenvolvido pela Espressif Systems, com uma série de recursos que o tornam uma das opções mais poderosas do mercado. É uma versão mais avançada do ESP8266, e foi projetado para aplicações de Internet das Coisas (IoT) devido à sua capacidade de conectividade Wi-Fi e Bluetooth integradas.

É um microcontrolador ideal para projetos que exigem mais poder de processamento, conectividade e versatilidade. Além disso, ele pode ser programado em C/C++, Python, Lua, Micropython ou JavaScript.

<div align="center">
<p><b>Figura 1:</b> <a href="https://victorvision.com.br/wp-content/uploads/2023/11/placa-esp32.jpg">ESP32</a></p>
   <a href="assets/ESP32.png">
      <img style="border: 5px solid #000; border-radius: 15px;" src="assets/ESP32.png" alt="ESP8266" height="360">
   </a>
   <p><b>Fonte:</b> <a href="https://victorvision.com.br/">Victor Vision</a></p>
</div>

## Listagem das características

1. **Unidade de processamento**

<div align="center">
     <p><em><strong>Tabela 1:</strong> Informações sobre a unidade de processamento.</em></p>
</div>

<center>

| CATEGORIA | DESCRIÇÃO |
| --------- | ----------|
| Fabricante | Espressif Systems |
| Microprocessador |  2 Xtensa® 32-bit LX6 |
| Frequência do Clock | 160 MHz - 240 MHz |

</center>

<div align="center">
    <p><em>Fonte: <a href="https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf">ESP32 Series Datasheet Version 4.9, p. 3-4. </a></em></p>
</div>

2. **Memória**
   - 2.1 - **RAM**: 520K Bytes [9]
   - 2.2 - **ROM**: 448 KB [9]
   - 2.3 - **SRAM**: 520 KB [9]

3. **Sistema Operacional**

  O ESP32 não possui um sistema operacional tradicional. Em vez disso, ele utiliza o ESP-IDF (Espressif IoT Development Framework), que é o framework oficial da Espressif para desenvolvimento de aplicações em dispositivos ESP32. Esse framework incorpora o FreeRTOS, um sistema operacional de tempo real (RTOS).

  O FreeRTOS permite a execução de múltiplas tarefas simultaneamente, gerenciamento de prioridades, semáforos, filas e outras funcionalidades essenciais para aplicações que exigem resposta em tempo real.[10]

   <div align="center">
      <p><b>Figura 2:</b> <a href="https://embarcados.com.br/wp-content/uploads/2015/10/imagem-de-destaque-9-1-850x510.png">Processador Free RTOS</a></p>
      <a href="assets/so_esp32.png">
         <img style="border: 5px solid #000; border-radius: 15px;" src="assets/so_esp32.png" alt="ESP8266" height="360">
      </a>
      <p><b>Fonte:</b> <a href="https://embarcados.com.br/freertos-8-2-3/">Embarcados</a></p>
   </div>

4. **Sensores e Atuadores**:

   4.1 - **Sensores**
   - **Internal Temperature Sensor**: Utilizado para medir a temperatura do core da ESP32. Ele é utilizado para aumentar a performance do chip, evitar superaquecimento e monitorar energia.[11]
   - **Hall Sensor**: Localizado atrás da tampa de metal da ESP32. Esse sensor detecta mudanças no campo magnético ao seu redor.[12]

   <div align="center">
      <p><b>Figura 3:</b> <a href="https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/04/hall_effect_sensor_esp32.jpg?w=750&quality=100&strip=all&ssl=1">Hall Sensor</a></p>
      <a href="assets/hall_effect_sensor.png">
         <img style="border: 5px solid #000; border-radius: 15px;" src="assets/hall_effect_sensor.png" alt="ESP8266" height="260">
      </a>
      <p><b>Fonte:</b> <a href="https://randomnerdtutorials.com/esp32-hall-effect-sensor/">ESP32 Built-In Hall Effect Sensor with Arduino IDE and MicroPython</a></p>
   </div>

   - **Touch Sensor:** O ESP32 possui 10 GPIOs capacitivos de toque.Esses  podem detectar variações em qualquer coisa que contenha carga elétrica. são frequentemente usados ​​para despertar o ESP32 do modo de hibernação.[8]

   <div align="center">
      <p><b>Figura 4:</b> <a href="https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/ESP32-Touch-Sensor-Pins-Arduino-IDE.jpg?resize=1024%2C576&quality=100&strip=all&ssl=1">Touch Sensor</a></p>
      <a href="assets/touch_pins.png">
         <img style="border: 5px solid #000; border-radius: 15px;" src="assets/touch_pins.png" alt="ESP8266" height="260">
      </a>
      <p><b>Fonte:</b> <a href="https://randomnerdtutorials.com/esp32-hall-effect-sensor/">ESP32 Capacitive Touch Sensor Pins with Arduino IDE</a></p>
   </div>

   Além dos sensores embutidos, o ESP32 pode se conectar e controlar sensores externos.

   4.2 - **Atuadores**

   O ESP32 não possui atuadores integrados, mas tem suporte para diversos tipos de atuadores que podem ser controlados diretamente pelas portas GPIO ou por meio de interfaces de comunicação como I2C, SPI ou UART.

   4.3 - **Conexão com a MCU/MPU**

   Os dispositivos são conectados à ESP32 por:

   - **GPIOs:** A ESP32 possui até 34 pinos GPIO programáveis para comunicação digital simples com sensores e atuadores. Estes pinos operam em 3.3V e podem fornecer/drenar até 40mA por pino.[13]

   - **Interfaces de comunicação:**

      - **I2C:** 2 controllers disponíveis para conectar sensores como MPU6050, BMP280 e displays OLED.[13]
      - **SPI:** 4 interfaces para comunicação rápida com displays, memórias flash e outros periféricos.[13]
      - **UART:** 3 interfaces seriais para comunicação com módulos GPS, GSM ou outros microcontroladores.[13]


   - **Interfaces analógicas:**

      - **ADC:** 18 canais de conversão analógico-digital com resolução de 12 bits para leitura de sensores analógicos.[13]
      - **DAC:** 2 canais de conversão digital-analógico com 8 bits para geração de sinais analógicos.[13]
      - **PWM:** 16 canais independentes para controle de intensidade em LEDs ou posicionamento de servo motores.[13]


   - **Comunicação sem fio:**

      - **Wi-Fi:** Conectividade integrada permitindo controle remoto de atuadores via rede local ou internet.[13]
      - **Bluetooth/BLE:** Para comunicação com dispositivos próximos sem necessidade de cabos.[13]
      - **ESP-NOW:** Protocolo proprietário para comunicação direta e de baixa latência entre múltiplas ESP32.[14]

5. **Interfaces de Comunicação com fio**
   - 5.1 - **I2C**: Possui dois controladores I²C (um no sistema principal e outro no sistema de baixo consumo), suportando modo Standard (100 kbit/s), Fast (400 kbit/s) e até 5 MHz (limitado pela força do pull-up), endereçamento de 7/10 bits, modo dual address e filtro digital programável. Os pinos SDA e SCL são mapeáveis via GPIO Matrix. [1].
   - 5.2 - **SPI**: Tem três controladores SPI (SPI, HSPI e VSPI) configuráveis em modos full-duplex ou half-duplex, nos papéis master e slave, com largura de dados programável, CPOL/CPHA ajustáveis e clock configurável. Os sinais SPI podem ser roteados por meio do GPIO Matrix para qualquer pino disponível [1].
   - 5.3 - **UART**: Conta com duas UARTs no sistema principal e uma UART de baixo consumo (LP UART), com baud rate programável, suporte a RS-232, RS-485, IrDA, controle de fluxo (hardware/software), wake-up por UART e acesso DMA. Todos os sinais TX/RX/CTS/RTS são roteáveis via GPIO Matrix [1]. 
   - 5.4 - **CAN**: implementa o controlador TWAI (Two-wire Automotive Interface), compatível com ISO 11898-1 (CAN 2.0), suportando quadros padrão (11 bits) e estendidos (29 bits), taxas de 12,5 kbit/s a 1 Mbit/s (dependendo da revisão de silício), modos Normal, Listen Only e Self-Test, FIFO de recepção de 64 bytes, filtros de aceitação e detecção de erro [1]. 
   - 5.5 - **Ethernet MAC** - integra um MAC IEEE-802.3-2008, suportando 10/100 Mbps, MII ou RMII (17 ou 9 sinais, respectivamente), DMA dedicado para transferência de frames, VLAN, half-duplex/full-duplex, CRC-32, FIFOs internos (512 words) e PTP (IEEE 1588 v2). Requer PHY externo [1].

6. **Interfaces de Comunicação sem fio**
   - 6.1 - **Wi-Fi (802.11 b/g/n)**: integra um transceptor Wi-Fi 802.11 b/g/n que opera na banda de 2.4 GHz[1].
   - 6.2 - **Bluetooth® V4.2 BR/EDR & BLE**: Inclui suporte a Bluetooth clássico e Low Energy, classes de potência 1/2/3, AFH, codificações CVSD e SBC, com perfil BLE integrado [1]. 

7. **Unidades de Entrada/Saída (I/O)**
   - 7.1 - **GPIO**: até 36 pinos GPIO multiplexáveis, bi-direcionais, não inversores, tri-state, com pull-up/pull-down internos, detecção de borda para interrupções, e mapeamento flexível via GPIO Matrix [1].
   - 7.2 - **ADC & DAC**: dois SAR ADC de 12 bits cobrindo até 18 canais analógicos, com ULP coprocessor capaz de amostragens em modo de baixo consumo e dois canais DAC de 8 bits (GPIO25 e GPIO26), com resistor interno e buffer [1].
   - 7.3 - **PWM**: 16 geradores independentes, resolução de até 20 bits, 8 temporizadores, dithering e fading automático [1].

8. **Fonte de Energia e Sistema de Alimentação**
   - 8.1 - **Tipo de Alimentação**: Fonte externa de 3,0 – 3,6 V (recomendada de 3,3 V, ≥ 500 mA) [1].
   - 8.2 - **Gerenciamento de Energia**: Possui regulador interno LDO para VDD_SDIO, selecionável via strapping pin (MTDI) ou eFuse, permitindo 1,8 V ou 3,3 V para flash/PSRAM [1].
   - 8.3 - **Circuito de Reset**: O pino **EN** (enable) do ESP32 controla o estado de funcionamento do chip. Para assegurar um reset estável e um sequenciamento correto de energia, recomenda-se utilizar um circuito RC simples: um resistor de **10 kΩ** em série com um capacitor de **1 µF**, conectados entre o pino EN e o GND. Esse arranjo garante um tempo de subida (t<sub>rise</sub>) adequado na ativação da alimentação, evitando resets indevidos causados por ruídos ou flutuações na tensão de alimentação. [1]

9. **Firmware e Atualizações**
   - 9.1 - **Firmware:** A Espressif fornece o ESP-IDF (Espressif IoT Development Framework) como o framework oficial para desenvolvimento de firmware na ESP32. [1].
   - 9.2 - **Atualizações Over-the-Air (OTA):** A ESP32 permite atualizar o firmware remotamente, usando partições de memória específicas para garantir atualizações seguras sem necessidade de conexão física. 

10. **Unidade de Proteção e Segurança**
   - 10.1 - **Criptografia:** O ESP32 possui aceleradores de hardware para criptografia (AES, SHA, RSA, ECC) e operações com grandes números (até 4096 bits), aumentando a velocidade e segurança do processamento, além de proteger o código armazenado contra invasões. [1]
   - 10.2 - **Hardware Security Module (HSM):** Não possui um HSM dedicado, mas pode ser integrado com módulos dedicados de HSM via interfaces padrão, como PKCS #11. [2]
   - 10.3 - **Outras caracteísticas de Segurança:** O ESP32 suporta autenticação em redes Wi-Fi corporativas usando métodos EAP (como EAP-TLS, EAP-TTLS, PEAP e EAP-FAST) e é compatível com os padrões WPA2 e WPA3. Para comunicação segura, utiliza o componente ESP-TLS, que simplifica a implementação de conexões TLS e é compatível com protocolos como HTTP/1.1 e HTTP/2. No entanto, o ESP32 não oferece suporte nativo a VPNs. [3]

11. **Armazenamento Externo**
   - 11.1 - **Cartões SD, NAND flash, HDD:**  O ESP32 suporta SPI Flash, SD Card, eMMC e EEPROM. NAND Flash tem suporte usando driver específico [14] [5]

12. **Interface com o Usuário (UI)**
   - 12.1 - **Displays:** Os chips ESP podem gerar vários tipos de sinais de temporização necessários para os displays LCD mais comuns do mercado, como LCDs SPI, LCDs I2C, LCDs Paralelos (Intel 8080), LCDs RGB/SRGB e LCDs MIPI DSI. [6]
   - 12.2 - **Botões e Sensores de Toque:** A ESP32 permite a utilização de botões GPIO e ADC. Usando GPIO, cada botão usa um pino separado (independente), o que garante alta estabilidade e evita interferências entre eles. Porém, se houver muitos botões, isso consome muitos pinos da ESP32. Já usando ADC, Vários botões podem ser conectados a um único canal ADC, economizando pinos. Porém, não é possível pressionar vários botões ao mesmo tempo. [7]

   <div align="center">
     <p><b>Figura 5:</b> <a href="https://docs.espressif.com/projects/esp-iot-solution/en/latest/_images/button_hardware.png">Button</a></p>
      <a href="assets/adc_gpio.png">
         <img style="border: 5px solid #000; border-radius: 15px;" src="assets/adc_gpio.png" alt="ESP8266" height="360">
      </a>
      <p><b>Fonte:</b> <a href="https://docs.espressif.com/projects/esp-iot-solution/en/latest/input_device/button.html">Espressif Systems</a></p>
   </div>
   A ESP32 possui sensores de toque capacitivo integrados, permitindo a detecção de toques em superfícies condutivas conectadas a pinos específicos. Isso possibilita a criação de interfaces sensíveis ao toque sem a necessidade de componentes mecânico. Ela suporta até 10 pinos de toque capacitivo, identificados como T0 a T9. Os sensores detectam variações de capacitância quando um objeto condutivo, como um dedo, se aproxima ou toca a superfície conectada ao pino. [8]
  
  <div align="center">
      <p><b>Figura 6:</b> <a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/_images/touch_pad-measurement-parameters.jpg">Touch Sensor</a></p>
      <a href="assets/touch.png">
         <img style="border: 5px solid #000; border-radius: 15px;" src="assets/touch.png" alt="ESP8266" height="360">
      </a>
      <p><b>Fonte:</b> <a href="http://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/touch_pad.html">Espressif Systems</a></p>
   </div>

## Referências

> [1] Espressif Systems. "ESP32 Series Datasheet." Version 5.3, 2025. Disponível em: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

> [2] Espressif Systems. "Secure Signing Using External HSM." Version 5.4.1, 2025. Disponível em: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/ota.html

> [3] Espressif Systems. "Wi-Fi Security." Version 5.4.1, 2025. Disponível em: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/wifi-security.html

> [4] Espressif Systems. "Storage Media." Version 5.4.1, 2025. Disponível em: https://espressif-docs.readthedocs-hosted.com/projects/espressif-esp-iot-solution/en/latest/storage/storage_media.html

> [5] Espressif Systems. "SPI NAND Flash Driver."  Version 0.11,.0 2025. https://components.espressif.com/components/espressif/spi_nand_flash

> [6] Espressif Systems. "LCD." Version 5.4.1, 2025. Disponível em: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/lcd/index.html

> [7] Espressif Systems. "Button." Version 5.4.1, 2025. Disponível em: https://docs.espressif.com/projects/esp-iot-solution/en/latest/input_device/button.html

> [8] Espressif Systems. "Touch Sensor." Version 5.4.1, 2025. Disponível em: http://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/touch_pad.html

> [9] Espressif Systems. "ESP32". 2025. Disponível em: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

> [10] Espressif Systems. "FreeRTOS Overview". 2025. Disponível em: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/freertos.html

> [11] The Engineering Projects. "ESP32 Internal Temperature Sensor". 2022. Disponível em: https://www.theengineeringprojects.com/2022/01/esp32-internal-temperature-sensor.html

> [12] Random Nerd Tutorials. "ESP32 Built-In Hall Effect Sensor with Arduino IDE and MicroPython". 2019. Disponível em: https://randomnerdtutorials.com/esp32-hall-effect-sensor/

> [13] Espressif. "ESP32 Series Datasheet Version 4.9". 2025. Disponível em: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

> [14] Random Nerd Tutorials. "Getting Started with ESP-NOW (ESP32 with Arduino IDE)" 2020. Disponível em: https://randomnerdtutorials.com/esp-now-esp32-arduino-ide/