Está é a plataforma mais famosa pra uso em Internet das Coisas (Internet of Things ou IoT ) pois ele não necessita de nenhum modulo adicional para ter conexão com a internet pois ele já vem com Bluetooth e Wi-fi integrado, já no caso do Arduíno Uno, Mega, Nano e etc, necessitam que seja conectado um Shield ou modulo para que haja essa conexão e que ele possa ser usado para a Internet das Coisas. O conjunto inteiro do ESP-32 é chamado de NodeMCU-32S, mas também há outras variantes para a plataforma completa.
Após a explosão no mercado com a plataforma Arduíno muitas outras empresas e organizações começaram a seguir o modelo da plataforma do Arduíno porem nem todas essas plataformas conseguiram ter a integração com a IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Integrado ) do Arduíno, porem em 2016 a Espressif Systems criou a plataforma ESP32 (ESP-WROOM-32) que utiliza o SoC (System on Chip) ESP32-D0WDQ6 e através de sua comunidade desenvolveram um plugin que consegue fazer a integração do ESP32 com a IDE de programação do Arduíno, o que tornou este chip uma grande alternativa em relação ao Arduíno já que ele possui Bluetooth e Wi-fi integrado.
A grande diferencia em si da plataforma Arduíno não era o Arduíno Uno, Arduíno Mega e etc, mas sim a sua IDE de programação que faz um trabalho maravilho em simplificar gigantescamente a programação do usuário e tudo isso graças as grandes quantidades de bibliotecas disponíveis na internet, onde por ser uma plataforma gratuita torna o acesso mais fácil e o desenvolvimento pelos os usuários algo contínuo.
A IDE é muito simples sem muitos botões para confundir usuários iniciantes, o que torna a adesão grande em escolas e por pessoas que nunca tiveram contato com uma IDE de programação,
Especificações:
O datasheet do ESP32 que a Espressif fornece possui muitos dados que são importantíssimos para a conservação e o bom uso do ESP32, organizei em forma de tabela:
Alimentação: 2,2V ~ 3,3V DC Corrente de Consumo: Média de 80mA Temperatura de Operação:
-40°C ~ +85°C
Processador: Xtensa® Dual-Core 32-bit LX6 Processador secundário: ULP (Ultra Low Power coprocessor) 8MHz com consumo de 150uA. Frequência de Operação: 80MHz ~ 240MHz Memoria FLASH: 4MB Memoria RAM: 520KB Memoria ROM: 448KB GPIOs (Entradas e Saídas): 34 GPIOS de 3.3V e 12mA. Conversores ADC (Analógico para Digital): 18 ADC com 12-bit de resolução (4096 bits) Conversores DAC (Digital para Analógico): 2 ADC com 8-bit de resolução (256 bits) WiFi: 2,4 GHz,
802.11 b/g/n/e/i (802.11n até 150 Mbps)
Bluetooth: Bluetooth Low Energy v4.2 (BLE) Criptografia: AES, RSA, SHA e ECC Segurança: WPA/WPA2/WPA2-Enterprise/WPS Protocolos de Rede: IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT Temporizadores: 4 Timers de 64-bit. Interfaces de Módulos:
Cartão SD, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, I2C, IR
Sensores:
1 Sensor de temperatura interno.
1 Sensor de efeito Hall.
10 Sensores de Toque Capacitivo.
Recursos:
São muitos os recursos que estão disponíveis no ESP32, se comparado com o Arduino, o ESP é ideal para projetos profissionais onde necessitam vários recursos com poucos módulos, seu poder de processamento é muito maior que o Arduíno.
Atenção: A alimentação máxima do ESP32 é de 3,3V o que faz que 5V para alimentação ou para sinal lógico em seus GPIOs seja fatal, podendo levar a queima do ESP32, caso necessite entrar um sinal lógico de 5V em seus GPIOs utilize um divisor de tensão com dois resistores um de 1K e outro de 2K.
A alimentação é um dos contras do ESP32 pois a tensão máxima de trabalho é de 3,3V fazendo com que seja necessário adaptações para alimentar algum sensor ou conectar algum periférico nos pinos de GPIO do ESP32, mas dependendo dos sensores nem é necessário adaptações com resistores ou transistores já que uma gama de sensores funcionam a 3,3V.
Pinos de GPIOs:
O esp32 possui 34 GPIOs programáveis e estes mesmos GPIOs possuem diversas funções onde:
18 GPIOs possuem conversor ADC 2 possuem DAC, 10 possuem Sensores de Toque Capacitivo. 34 possuem interrupção 4 possuem I2C 16 possuem Ethernet EMAC
Abaixo está uma ilustração feita pelo identificando cada pino dos ESP32:
Pinout do ESP32 DevKitC, fonte: https://gojimmypi.blogspot.com/2017/03/jtag-debugging-for-esp32.html
Pinout do ESP32 DevKit1, fonte: https://microcontrollerslab.com/
Outra informação importante é que nem todos os GPIO’s possuem resistores de pull-up e pull-down, fui descobrir desta característica depois de desenvolver o XPboard percebi que o pino 34 do LCD não estava funcionando normalmente não exibindo nada no LCD, fui descobrir que alguns pinos não possuem esses resistores internamente. São os GPIO’s do 34 ao 39:
GPIO 34 – Não possui resistor de Pull-up ou Pull-down GPIO 35 – Não possui resistor de Pull-up ou Pull-down GPIO 36 – Não possui resistor de Pull-up ou Pull-down GPIO 39 – Não possui resistor de Pull-up ou Pull-down
Em algumas placas de ESP32 o GPIO 6 até o GPIO 11 Estão disponíveis para o uso para o programador. No entanto, esses pinos estão conectados ao chip flash SPI integrado no chip ESP-WROOM-32 e não são recomendados para outros usos. Portanto, evite usar esses pinos em seus projetos:
GPIO 6 (SCK / CLK)
GPIO 7 (SDO / SD0)
GPIO 8 (SDI / SD1)
GPIO 9 (SHD / SD2)
GPIO 10 (SWP / SD3)
GPIO 11 (CSC / CMD)
Alguns GPIOs alteram seu estado para nivel HIGH (3,3V) ou emitem sinais PWM na inicialização ou reset da placa. Isso significa que, se você tiver saídas conectadas a esses GPIOs, poderá obter resultados inesperados quando o ESP32 for reiniciado ou inicializado, evite usa-los para acionamento de coisas que possam comprometer a segurança de pessoas. Abaxo segue a lista de GPIO’s
GPIO 6 a GPIO 11 (conectado à memória flash SPI integrada do ESP32 – não recomendado para uso).
Você deve estar atento aos GPIO’s que você irá utilizar pois não é todos que possuem as funções que você deseja, algumas GPIO’s são imprevisíveis, segue uma tabela com a maioria dos GPIO’s:
GPIO Entrada Saída Comentários: 0 Sempre em ALTO OK Emite sinal PWM na inicialização 1 Pino TX OK Saída de depuração na inicialização 2 OK OK Conectado ao LED da placa 3 OK Pino RX Durante o boot fica HIGH(3,3V) 4 OK OK 5 OK OK Emite sinal PWM na inicialização 6 x x Conectado ao SPI flash integrado 7 x x Conectado ao SPI flash integrado 8 x x Conectado ao SPI flash integrado 9 x x Conectado ao SPI flash integrado 10 x x Conectado ao SPI flash integrado 11 x x Conectado ao SPI flash integrado 12 OK OK Inicialização falha se colocado em Alto 13 OK OK 14 OK OK Emite sinal PWM na inicialização 15 OK OK Emite sinal PWM na inicialização 16 OK OK 17 OK OK 18 OK OK 19 OK OK 21 OK OK 22 OK OK 23 OK OK 25 OK OK 26 OK OK 27 OK OK 32 OK OK 33 OK OK 34 OK Sem Pull-Up e Pull-Down Recomendável: Somente Entrada 35 OK Sem Pull-Up e Pull-Down Recomendável: Somente Entrada 36 OK Sem Pull-Up e Pull-Down Recomendável: Somente Entrada 39 OK Sem Pull-Up e Pull-Down Recomendável: Somente Entrada
Energia:
Embora o ESP32 seja muito mais potente e robusto para projetos do que o Arduino Uno ou Mega ele consome uma elevada corrente de 80mA se comparado com o Arduíno que consome em torno de 2mA. Isto é devido ao Wi-fi, bluetooth e o processamento o que é horrível para aplicações que utilize bateria, nessas aplicações o uso da energia é crucial quanto menor é a corrente maior é a duração do funcionamento do circuito sem ter que recarregar a bateria, há maneiras de diminuir a corrente de uso do ESP32 como o Deep Sleep, desligar o Wi-Fi quando não houver uso e etc.
Estas praticas exigem que o programador conheça bem o hardware e quando é necessário ligar e desligar os recursos que consomem energia e que não são necessários ficarem ativos constantemente.
Hardware:
A construção do ESP-32 é protegida por um shield de ferro para evitar interferências eletromagnéticas, o ESP-32 em sí é o modulo ESP-WROOM-32 que é bem pequeno se comparado com o restante do NodeMCU-32S no modulo ESP-WROOM-32 possui o chip principal ESP32-D0WDQ6 um cristal oscilador normalmente de 40MHz e um chip de memória Flash GD25Q32 de 4Mb a 16Mb. A seguir está uma galeria de imagens dos componentes do hardware e também o esquemático fornecido pelo datasheet:
Referencias:
https://randomnerdtutorials.com/esp32-pinout-reference-gpios/