
O que aconteceu foi o que todos estavam esperando por tanto tempo e o que eles conversaram tanto - os novos módulos do ESP32 começaram a ser amplamente vendidos e foram para as pessoas. Hoje falaremos sobre esses módulos do ponto de vista de um usuário não profissional que está acostumado a trabalhar com o Arduino e criar pequenos projetos para automação residencial ou apenas para diversão e auto-estudo.
Funciona mesmo? O que há com o suporte desses módulos no IDE do Arduino? Vale a pena pagar mais ou é melhor limitar-se ao já familiar ESP8266? Tentaremos responder a todas essas perguntas juntos e, no final do artigo, darei um link para a real incorporação do trabalho do ESP32 com o Arduino - uma distribuição da versão gratuita do
Arduino Mega Server para a plataforma ESP32.
Especificações
Não vou me debruçar sobre as especificações do ESP32 aqui em detalhes; você pode encontrá-las facilmente na Internet: cada revisor considera seu dever trazer uma folha de especificações no início da revisão do ESP32. Só posso dizer que eles são impressionantes e se você abordar o assunto com seriedade e consideração, poderá passar mais de um ano estudando todas as capacidades do módulo e experimentando-o.
Vamos deixar isso para os profissionais (ou aqueles que se consideram como tal) e focar no lado prático da questão, compreensível e acessível ao mero mortal.
Preço de emissão
Vamos começar com o preço. No momento, o módulo ESP32 nas lojas online chinesas custa 350 rublos e 500 na versão da placa com um chicote de fios e uma interface USB. Isso é contra 100 e 160 rublos para o módulo ESP8266, respectivamente. Como você pode ver, a diferença é mais de três vezes, embora os valores absolutos sejam pequenos, cada um, se desejado, pode gastar 350 - 500 rublos em um microcontrolador. Para comparação, o Arduino Mega 2560 na mesma China custa 600 rublos e na Rússia cerca de 1000 (mais o custo do Ethernet Shield).
Resta apenas descobrir se vale a pena pagar três vezes mais do que o ESP8266 e o que receberemos por isso. (Olhando para o futuro, direi que, na minha opinião, definitivamente vale a pena.)
Suporte no IDE do Arduino
Para fazer algo com o módulo, você deve primeiro ter seu suporte no IDE do Arduino. No momento, o suporte ao ESP32 no Arduino IDE está no nível inicial, mas bastante decente e viável. Quem tem medo de encontrar dificuldades intransponíveis aqui não pode se preocupar - as principais funções funcionam bem e você provavelmente não notará nenhuma diferença em comparação com o trabalho em outros controladores.
As coisas estão um pouco piores com os drivers de dispositivo, mas esse é certamente um fenômeno temporário. O módulo é tão popular que o suporte a qualquer periférico aparecerá inevitavelmente em um futuro próximo.
Adicionando suporte ESP32 ao IDE do Arduino
Agora, algumas informações práticas sobre a instalação do suporte ao ESP32 no Arduino IDE. A Internet está cheia de instruções sobre esse assunto, você também pode encontrá-las em abundância. Notei apenas que todas as instruções são divididas em "antigo", onde Python é mencionado e "novo", onde GIT é mencionado. Naturalmente, você precisa ser guiado por novos.
Das muitas instruções, a melhor pode ser chamada (por incrível que pareça) a instrução oficial do fabricante do módulo.
github.com/espressif/arduino-esp32Qual eu recomendo usar. A única ressalva: GIT é opcional, você pode simplesmente baixar o pacote de distribuição e descompactá-lo no diretório desejado.
Nota Todos os itens a seguir se aplicam à instalação no Windows 7 de 64 bits, já que realizei todos os experimentos nele; em outros sistemas operacionais, os caminhos podem diferir dos indicados.Os arquivos de distribuição devem estar na pasta
C:\Users\User\Documents\Arduino\hardware\espressif\esp32
onde C: é o nome da sua unidade do Windows e User é o nome do usuário no sistema operacional (os quais podem diferir dos especificados).
Pontos de instalação não óbvios para o ESP32
Muitos usuários reclamam que nada funciona para eles e o suporte ao ESP32 no Arduino IDE não aparece. Aqui está o problema: como os drivers ESP32 estão sendo desenvolvidos apenas, a ordem do local dos diretórios do sistema foi ligeiramente alterada. A pasta para a localização dos esboços nas configurações do Arduino IDE deve ser especificada.
C:\Users\User\Documents\Arduino
(com as mesmas alterações na unidade e no nome de usuário) e os arquivos de distribuição devem estar localizados dentro desta pasta, conforme recomendado pelo fabricante. Se esse ponto não for levado em consideração, o suporte ao ESP32 no Arduino IDE não aparecerá e nada funcionará.
Versões de Arduino IDE
Você costuma ouvir que o suporte ao ESP32 está disponível apenas nas versões mais recentes do Arduino IDE, não é assim - o ESP32 funciona bem em versões anteriores, por exemplo, a distribuição do Mega Server do Arduino para ESP32 foi desenvolvida na versão 1.6.5 r2.
Benefícios do ESP32
Agora vamos falar sobre as vantagens do ESP32 em relação ao seu antecessor, o ESP8266. Não vou me debruçar sobre coisas óbvias como energia do processador e RAM; só posso dizer que você precisa se esforçar para carregar o ESP32 completamente em tarefas de bricolage e automação residencial.
Pinos
O calcanhar de Aquiles de seu antecessor, o módulo ESP8266, foi (e é) um número extremamente pequeno de conclusões. Depois de trabalhar com controladores como o Arduino Mega e o Arduino Due, com dezenas de pinos digitais e analógicos, o trabalho com o ESP8266 é desconcertante: a contagem GPIO é literalmente uma e isso limita bastante o uso deste módulo em projetos reais.

O ESP32, se não completamente, é praticamente desprovido dessa desvantagem. O número de pinos disponíveis aumentou significativamente e muitas entradas analógicas também apareceram. 13 conclusões podem ser consideradas completamente gratuitas e acessíveis para uso.
GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33
Se necessário, eles podem ser adicionados com funcionalidade limitada e funcionando apenas na entrada
GPIO 34, 35, 36, 39
Se você sacrificar alguns recursos e não usar Serial, SPI ou I2C em projetos específicos, poderá adicionar mais 8 pinos a esse número.
GPIO 1, 3, 5, 18, 19, 21, 22, 23
Bem, é possível usar mais 6 pinos projetados para funcionar com memória flash interna (por exemplo, se você conectar um cartão SD externo)
GPIO 6, 7, 8, 9, 10, 11
Como você pode ver, não há comparação com o ESP8266 - o novo módulo parece ótimo no número de conexões possíveis e é muito valioso em projetos reais em que cada pino é caro.
Velocidade de trabalho
Eu já mencionei um processador poderoso, agora algumas palavras precisam ser ditas sobre a velocidade da operação da rede. Acho difícil dizer com o que isso está conectado, possivelmente com um processador poderoso, talvez com a otimização da pilha de rede, mas o módulo ESP32 sob o controle do Arduino Mega Server mostrou desempenho recorde na rede.

Carregar uma página com códigos CSS e JavaScript volumosos e uma abundância de gráficos leva apenas um segundo - mais rápido do que em qualquer outro controlador testado, incluindo controladores com fio com as interfaces Ethernet W5100 e W5500.
Em relação ao Arduino Mega Server, isso remove todas as restrições ao uso de gráficos e quaisquer bibliotecas JavaScript, tanto em tamanho quanto em número.
Outras vantagens
O ESP32 é um dispositivo de alta tecnologia, apenas uma lista seca de recursos disponíveis pode levar mais de uma página, e listar as vantagens e os recursos com comentários levará um volume inteiro. Portanto, vou me limitar a isso, para não confundir o artigo e dar alguns exemplos de como trabalhar com o código ESP32 no ambiente do Arduino.
Exemplos de código
Memória não volátil
Isso é o que costumávamos chamar de EEPROM para o Arduino Mega. O ESP32 não possui essa memória como tal, mas este módulo possui seu análogo e a biblioteca correspondente para trabalhar com ele. Essa memória é chamada "NVS" (armazenamento não volátil).
Mas para nós não há diferença - você pode salvar os valores da mesma maneira e lê-los depois de desligar e depois ligar o controlador.
Exemplo de uso. Conectamos a biblioteca:
#include <Preferences.h>
Crie um objeto prefs
Preferences prefs;
Inicializamos o repositório com o identificador, por exemplo, "nvs":
prefs.begin("nvs", false);
false refere-se à escolha do modo de leitura / gravação, neste caso, leitura e gravação. Nós salvamos o byte com o nome "addr":
prefs.putUChar("addr", 65);
Lemos o byte salvo:
byte b = prefs.getUChar("addr", 0);
Da mesma maneira, você pode salvar e ler os valores de qualquer outro tipo de dados. Agora exclua o armazenamento.
prefs.remove("nvs");
Se você observar, é ainda mais fácil do que trabalhar com memória EEPROM não volátil padrão nos controladores Arduino.
AnalogWrite ()
Outra inovação que pode confundir um usuário iniciante é que a função AnalogWrite () familiar está ausente no ESP32. No começo, isso é muito incomum, mas, de fato, essa função é substituída apenas por sua contraparte mais funcional.
Considere um exemplo. Vamos começar conectando a biblioteca correspondente, embora isso não possa ser chamado de biblioteca no sentido completo da palavra, mas é um arquivo especializado com uma descrição das funções necessárias. O fato é que nem todas as funções estão presentes diretamente no IDE do Arduino, algumas funções estão disponíveis nos arquivos localizados no diretório
...\Documents\Arduino\hardware\espressif\esp32\cores\esp32
Nesse caso, estamos interessados no arquivo para trabalhar com PWM e LEDs, que conectamos com a seguinte instrução:
#include "esp32-hal-ledc.h"
Em seguida, precisamos definir o número do canal (0), a frequência PWM (por exemplo, 50 Hz) e a resolução (8 bits).
ledcSetup(0, 50, 8);
Os números dos canais podem ser definidos no intervalo de 0 a 15 e a resolução de 1 a 16 bits. Se você selecionar uma resolução de 8 bits, o intervalo de dados que controla o PWM estará no intervalo de 0 a 255.
Em seguida, precisamos vincular nosso canal (0) a algum pino GPIO, neste caso, pino 22:
ledcAttachPin(22, 0);
E você não deve esquecer de configurar o 22º pino na saída da maneira usual.
pinMode(22, OUTPUT);
É isso, agora podemos controlar, por exemplo, o brilho do LED, apenas indicando o número do canal e o valor PWM (brilho) do intervalo de 0 a 255.
ledcWrite(0, 50);
Outros exemplos de código ESP32
A distribuição do Mega Server do Arduino, o link que fornecerei no final do artigo, exceto para um sistema totalmente funcional, é uma extensa coleção de códigos estruturados que foram testados e verificados para funcionar no módulo ESP32. Você pode usá-lo como um tutorial para inserir o tópico de programação no ESP32.
Estabilidade no trabalho
O Arduino Mega Server para ESP8266 confirmou o tempo de atividade de vários meses e demonstra uma operação absolutamente estável e não tenho motivos para pensar que o módulo ESP32 possa ter problemas de estabilidade. Pelo menos durante todo o tempo em que criei a distribuição AMS para o ESP32, não observei uma única falha ou reinicialização não autorizada do módulo. Tudo funciona de forma muito clara e previsível.
Arduino Mega Server para ESP32
Este é outro representante do ecossistema AMS, que inclui controladores e placas Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB, etc. Graças ao poderoso processador e à rápida operação de rede do módulo ESP32, a interface do Arduino Mega Server contém uma abundância de gráficos e scripts e isso não afeta sua velocidade - a página é carregada quase instantaneamente.

Tudo funciona de forma estável e previsível, não foram detectadas falhas ou comportamento inadequado do sistema ou módulo. Abaixo está o log de download do AMS, no qual você pode descobrir alguns detalhes sobre o sistema.

A temperatura do módulo, medida pelo sensor de temperatura embutido, varia de 50 graus Celsius na inicialização a 55 graus durante a operação. Durante a operação, o consumo atual do módulo é de cerca de 130 mA.
Perspectivas
Você não precisa ser um especialista especial para prever que agora, como cogumelos depois da chuva, placas no ESP32 de vários formatos e com várias funções começarão a aparecer. Aqui está um dos primeiros sinais do OLIMEX
ESP32-EVB , um quadro muito interessante para o qual, em um futuro próximo, será lançado um kit de distribuição especializado Arduino Mega Server.

Conclusão
Na verdade, isso é tudo o que posso dizer sobre o novo módulo ESP32 e seu trabalho com o Arduino. Ele deixa impressões extremamente positivas, pelo menos foi muito agradável e interessante para mim trabalhar com ele. A falta de bibliotecas para suportar sensores e periféricos estraga um pouco a imagem, mas esse é um fenômeno temporário e em breve tudo ficará bem com isso.
Você pode baixar o kit de distribuição do Arduino Mega Server para ESP32 na página de
download do site oficial, em breve a documentação relevante aparecerá lá e, por enquanto, você poderá usar as breves instruções do arquivo readme.txt localizado no kit de distribuição.