ESP32 - MySQL
Este tutorial ensina você a usar o ESP32 para inserir/atualizar dados em um banco de dados MySQL, ou ler dados de um banco de dados MySQL

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
ESP32 - MySQL
Existem dois termos no MySQL que os iniciantes costumam confundir: banco de dados MySQL e servidor MySQL. Eles são diferentes. Porém, se você é iniciante, pode considerar que são a mesma coisa. Mais tarde, você vai perceber as diferenças durante o seu aprendizado.
O ESP32 pode interagir com o banco de dados MySQL de duas formas:
- Diretamente: o ESP32 se conecta diretamente ao servidor MySQL e interage com ele usando o protocolo MySQL
- Indiretamente: o ESP32 se conecta indiretamente ao servidor MySQL por meio de um servidor web, usando o protocolo HTTP/HTTPS.
Qual é a melhor para o ESP32? Vamos descobrir!
O ESP32 interage diretamente com o Servidor MySQL

Interagir diretamente com o MySQL parece simples, mas tem muitas desvantagens:
- Temos que conceder permissões de acesso remoto a uma conta de usuário do MySQL ⇒ Isso é arriscado do ponto de vista da segurança, mesmo que concedamos privilégios limitados à conta de usuário.
- O ESP32 PRECISA armazenar e enviar consultas MySQL ao servidor MySQL ⇒ É preciso escrever muito código ESP32 e também esgota os recursos do ESP32 (uso de memória e de CPU).
- O ESP32 PRECISA processar uma resposta MySQL complexa (em alguns casos, com um volume de dados muito grande) ⇒ Isso pode fazer o ESP32 ficar sem memória
- O servidor MySQL precisa processar os dados brutos ⇒ aumenta a complexidade do script MySQL.
- A maioria das bibliotecas MySQL para ESP32 não suporta SSL/TLS ⇒ Os dados e o usuário/senha são enviados sem criptografia ⇒ outro problema de segurança.
O ESP32 interage indiretamente com o Servidor MySQL via HTTP/HTTPS
Interagir com o MySQL indiretamente via HTTP/HTTPS resolve todos os problemas do acesso direto.
Como funciona
- Passo 1: o ESP32 inclui os dados na requisição HTTP/HTTPS e envia a requisição ao servidor Web
- Passo 2: o servidor Web executa um script PHP que trata a requisição do ESP32
- Passo 3: o script PHP extrai os dados da requisição HTTP, processa os dados e depois interage com o banco de dados MySQL.
- Passo 4: o script PHP processa o resultado e devolve ao ESP32 apenas o resultado necessário, por meio da resposta HTTP

Vamos instalar o servidor MySQL, o servidor Web e o PHP no PC. Na verdade, podemos instalá-los em um servidor dedicado ou em um serviço de nuvem, como o AWS EC2.
Abaixo está como a forma indireta resolve os problemas da forma direta.
- Podemos instalar o servidor HTTP e o servidor MySQL no mesmo servidor físico e dar um acesso limitado a uma conta de usuário do MySQL (por exemplo, acesso SOMENTE via localhost) ⇒ seguro
- O usuário/senha da conta MySQL fica armazenado no servidor ⇒ seguro.
- Os dados são processados por um script PHP ⇒ Isso reduz a carga e a complexidade para o ESP32 e para o servidor MySQL.
- O script PHP processa os dados com muito mais facilidade do que o código ESP32 e o script MySQL ⇒ Simplifica o código ESP32 e o script MySQL
- O script PHP pode processar os dados e enviar ao ESP32 apenas os dados necessários (Passo 4), evitando que o ESP32 fique sem memória.
- O ESP32 consegue fazer requisições HTTPS com facilidade ⇒ os dados são criptografados.
Observe que a autenticação entre o ESP32 e o Servidor Web deve ser independente da autenticação do MySQL. Por exemplo, o usuário/senha HTTP deve ser diferente do usuário/senha do MySQL.
Por causa dessas vantagens, este tutorial vai usar a forma indireta.
ESP32 para MySQL via HTTP/HTTPS
Abaixo estão os passos que precisamos seguir:
- Instalar o pacote XAMPP, que inclui servidor MySQL, servidor Web e PHP, no seu PC
- Criar uma conta de usuário MySQL
- Criar um banco de dados MySQL
- Criar uma tabela MySQL
- Escrever um ou mais arquivos de script PHP
- Escrever o código ESP32
1. Instalando o servidor MySQL, o servidor Web e o PHP no seu PC
- Baixe e instale o XAMPP a partir deste link. Após a instalação, verifique a pasta C:\xampp\htdocs no seu PC. É nela que você coloca o código PHP (veja mais adiante).
- Abra o Painel de Controle do XAMPP
- Clique nos botões Start para ativar o MySQL e o servidor Web (como na imagem abaixo)

2. Criando uma conta de usuário MySQL
Vamos criar uma conta MySQL com permissão de acesso somente via localhost.
- Mesmo que invasores descubram o usuário/senha, eles não conseguem acessar o seu banco de dados MySQL, a menos que assumam o controle do seu PC.
- Esse usuário/senha será usado pelo PHP para se conectar ao banco de dados MySQL.
Este tutorial cria uma conta de usuário MySQL com usuário e senha ESP32 e newbiely.com, respectivamente:
- Abra o Prompt de Comando no seu PC. Não o feche até o final do tutorial.
- Digite o seguinte comando no Prompt de Comando:
- Por padrão, o MySQL tem a conta root sem senha. É altamente recomendável definir uma senha para a conta root (por exemplo, YOUR_ROOT_PASSWORD) por motivo de segurança. Digite o comando abaixo no Prompt de Comando:
- Digite o comando abaixo no Prompt de Comando para fazer login no servidor MySQL:
- Digite YOUR_ROOT_PASSWORD e pressione Enter
- Vamos criar uma conta de usuário MySQL com usuário e senha ESP32 e newbiely.com, respectivamente, copiando os comandos abaixo e colando no Prompt de Comando:
Você criou a conta de usuário MySQL com sucesso. Anote o usuário/senha. Eles serão usados no script PHP.
3. Criando um banco de dados MySQL
Crie um banco de dados db_esp32 digitando o seguinte comando no Prompt de Comando:
4. Criando uma tabela MySQL
Crie uma tabela tbl_temp copiando os comandos abaixo e colando no Prompt de Comando:
6. Escrevendo os arquivos de script PHP
Crie um arquivo insert_temp.php usando qualquer editor de texto (por exemplo, Notepad/Notepad++). Vamos escrever o script neste arquivo para extrair o valor da temperatura da requisição HTTP e inseri-lo no banco de dados.
- Coloque este arquivo dentro da pasta C:\xampp\htdocs
- Descubra o endereço IP do seu PC. Se você não sabe como, pesquise no Google.
- Teste o código PHP abrindo um navegador web (por exemplo, Chrome) e acessando este link: http://192.168.0.19/insert_temp.php?temperature=26.2. Observe que você precisa substituir o endereço IP acima pelo endereço do seu PC.
- O navegador web mostra o seguinte:

- Verifique se os dados foram armazenados no banco de dados digitando o seguinte comando no Prompt de Comando:
Como você pode ver, a temperatura de 26.2 foi armazenada no banco de dados. O próximo passo é escrever o código ESP32 que faz uma requisição HTTP ao servidor web no seu PC.
7. Escrevendo o código ESP32
O código ESP32 abaixo faz uma requisição HTTP ao seu PC para inserir uma temperatura de 30.5°C no banco de dados
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para ESP32 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP32 ao seu PC por um cabo micro USB
- Altere o endereço IP no código para o endereço IP do seu PC
- Compile e faça upload do código para o ESP32
- Abra o Serial Monitor no Arduino IDE

- O resultado no Serial Monitor
- Verifique se os dados foram armazenados no banco de dados usando o seguinte comando no Prompt de Comando:
Como você pode ver, a temperatura 30.5 foi armazenada no banco de dados.
Como o ESP32 insere, atualiza ou obtém dados de/para o banco de dados MySQL
O exemplo acima mostra como inserir dados no banco de dados MySQL. Para atualizar e ler dados do banco de dados, é parecido. Você só precisa modificar a consulta MySQL no código PHP. Você pode aprender mais no W3Schools.com