Arduino Nano - MySQL
O Arduino Nano pode coletar dados de sensores e armazená-los em um banco de dados MySQL. Ele também pode recuperar dados (como comandos) do banco de dados MySQL para controlar dispositivos como LEDs, motores e atuadores.
Este tutorial vai guiar você no uso do Arduino Nano e do módulo Ethernet para interagir com um banco de dados MySQL. Especificamente, vamos abordar:
- A melhor maneira de o Arduino Nano se comunicar com um banco de dados MySQL
- Como programar o Arduino Nano para inserir dados em um banco de dados MySQL
- Como programar o Arduino Nano para atualizar dados em um banco de dados MySQL
- Como programar o Arduino Nano para recuperar dados de um banco de dados MySQL

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Arduino Nano - MySQL
Se você é novo em arquitetura de sistemas, tudo bem pensar no Banco de Dados MySQL e no Servidor MySQL como a mesma coisa por enquanto. À medida que ganhar mais conhecimento, você vai entender as diferenças entre eles.
Existem dois métodos para o Arduino Nano se comunicar com um banco de dados MySQL:
- Conectando-se diretamente ao Servidor MySQL por uma conexão MySQL (a abordagem direta)
- Comunicando-se com o Servidor MySQL de forma indireta por uma conexão HTTP (a abordagem indireta)
Vamos explorar a melhor opção.
O Arduino Nano interage diretamente com o Servidor MySQL

Isso pode parecer mais simples, mas tem várias desvantagens:
- Permitir que uma conta de usuário MySQL acesse o banco de dados MySQL remotamente traz riscos de segurança, mesmo que a conta tenha privilégios limitados.
- Processar dados no Arduino Nano e/ou no servidor MySQL aumenta a complexidade tanto do código do Arduino Nano quanto dos scripts MySQL, e consome muitos recursos do Arduino Nano (memória e CPU).
- Em alguns casos, o servidor MySQL pode devolver uma grande quantidade de dados ao Arduino Nano, o que pode fazer o Nano ficar sem memória.
- A maioria das bibliotecas MySQL disponíveis não oferece suporte a SSL/TLS, o que significa que dados sensíveis, como nomes de usuário e senhas, serão enviados em texto simples, criando um risco de segurança adicional.
O Arduino Nano interage indiretamente com o Servidor MySQL via HTTP/HTTPS
A abordagem indireta resolve todos os problemas da abordagem direta. Antes de ver como ela supera as desvantagens da abordagem direta, vamos primeiro ver como ela funciona.
Como Funciona
- Passo 1: O Arduino Nano envia uma requisição HTTP ao servidor web.
- Passo 2: O servidor web executa um script PHP.
- Passo 3: O script PHP obtém os dados da requisição HTTP, os processa e interage com o banco de dados MySQL.
- Passo 4: O script PHP processa o resultado e o envia de volta ao Arduino Nano em uma resposta HTTP.

Neste tutorial, tanto o servidor web quanto o servidor MySQL serão instalados em um PC.
Pode parecer complicado, mas não é. Veja como o método indireto resolve os problemas da abordagem direta:
- Ao instalar os servidores MySQL e HTTP na mesma máquina, podemos restringir a conta de usuário MySQL para acessar somente o localhost. Além disso, o nome de usuário e a senha do MySQL ficam armazenados com segurança no servidor (passo 3), melhorando a segurança.
- Os dados são processados por um script PHP (passos 3 e 4), reduzindo a carga e a complexidade tanto para o Arduino Nano quanto para o servidor MySQL. Processar dados com código PHP é muito mais fácil do que com código do Arduino Nano ou scripts MySQL.
- O script PHP pode filtrar os dados e enviar ao Arduino Nano somente o que é necessário (passo 4), evitando sobrecarga de memória.
- A maioria das bibliotecas Ethernet/WiFi oferece suporte a TLS/SSL, permitindo fazer requisições HTTPS. Usar HTTPS garante que os dados sejam criptografados e trocados com segurança online.
No passo 1, podemos usar um nome de usuário e uma senha diferentes para a autenticação entre o Arduino Nano e o servidor web. Por segurança, o nome de usuário e a senha HTTP não devem ser os mesmos das credenciais do MySQL.
O tutorial a seguir mostrará como usar o método indireto com o Arduino Nano e o MySQL, explicando suas muitas vantagens.
Diagrama de Ligação entre o Arduino Nano e o módulo Ethernet W5500

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
Arduino Nano - MySQL via HTTP/HTTPS
Estes são os passos que precisamos seguir:
- Instalar o servidor MySQL, o servidor web e o PHP no seu PC.
- Ativar os servidores MySQL e web.
- Criar uma conta de usuário MySQL.
- Configurar um banco de dados MySQL.
- Criar uma tabela MySQL.
- Escrever um ou mais arquivos de script PHP.
- Escrever o código do Arduino Nano.
Vamos fazer um passo de cada vez. Vamos percorrer o processo aos poucos.
1. Instale o servidor MySQL, o servidor Web e o PHP no seu PC
Felizmente, o pacote XAMPP inclui todos esses itens.
Só precisamos instalá-lo uma vez:
- Baixe o XAMPP neste link
- Execute a instalação.
Depois de instalar, você verá a pasta C:\xampp\htdocs no seu computador. É nela que você deve colocar seu código PHP (como será explicado mais adiante).
2. Ative o MySQL e o servidor Web
- Abra o Painel de Controle do XAMPP.
- Pressione o botão Start para ativar o MySQL e o servidor Web. (Veja a imagem abaixo.)

3. Crie uma conta de Usuário MySQL
Vamos criar uma conta MySQL que possa se conectar ao banco de dados MySQL somente a partir do localhost:
- Mesmo que o nome de usuário e a senha sejam expostos, os invasores não conseguirão acessar o banco de dados MySQL a menos que controlem o computador.
- Como o PHP e o MySQL estão instalados no mesmo PC, o PHP pode usar esse nome de usuário e senha para se conectar ao banco de dados MySQL.
Vamos criar uma conta de usuário MySQL com o nome de usuário Arduino e a senha ArduinoGetStarted.com:
- Abra o Prompt de Comando no seu computador. Mantenha esta janela aberta até o fim do tutorial.
- Digite o seguinte comando no Prompt de Comando:
- Por padrão, o MySQL tem uma conta root que não tem senha.
- É recomendável adicionar uma senha a ela.
Defina your-root-password para a conta root digitando este comando no Prompt de Comando:
- Digite este comando no Prompt de Comando:
- Digite sua senha root e pressione a tecla Enter.
- Crie uma conta de usuário MySQL com o nome de usuário Arduino e a senha ArduinoGetStarted.com copiando os comandos abaixo e colando-os no Prompt de Comando:
Agora você criou uma conta de usuário MySQL. Lembre-se do nome de usuário e da senha, pois eles serão necessários para o script PHP.
4. Crie um banco de dados MySQL
Vamos gerar um banco de dados chamado db_arduino digitando o seguinte comando no Prompt de Comando:
5. Crie uma tabela MySQL
Vamos criar uma tabela chamada tbl_temp copiando os comandos abaixo e colando-os no Prompt de Comando:
6. Escreva um ou mais arquivos PHP
Crie um arquivo PHP. Dê a ele o nome insert_temp.php. Obtenha a temperatura da Requisição HTTP. Insira a temperatura no banco de dados
- Deve ser "Temperature 27.5 is saved".
- Coloque este arquivo no diretório C:\xampp\htdocs.
- Descubra o endereço IP do seu PC. Se não souber como, pesquise no Google.
- Para testar o código PHP, abra um navegador web (por exemplo, o Chrome) e acesse este link: http://192.168.0.26/insert_temp.php?temperature=27.5. Lembre-se de substituir o endereço IP pelo seu.
- O navegador web deve exibir "Temperature 27.5 is saved".

- Verifique se os dados foram armazenados no banco de dados digitando o seguinte comando no Prompt de Comando:
É evidente que a temperatura de 27.5 está armazenada no banco de dados. A ação seguinte é escrever um código para o Arduino Nano que gere uma Requisição HTTP semelhante para o seu PC.
7. Escreva o código do Arduino Nano
Vamos usar o Arduino Nano e o Ethernet Shield para o teste.
O código do Arduino Nano abaixo envia uma requisição HTTP ao seu PC, com uma temperatura de 29.1°C, para ser inserida no banco de dados.
Passos Rápidos
- Conecte o Arduino Nano ao módulo Ethernet de acordo com o diagrama de ligação acima.
- Conecte um cabo Ethernet ao módulo Ethernet.
- Conecte o Arduino Nano a um PC usando um cabo USB.
- Abra a Arduino IDE no seu PC.
- Selecione a placa Arduino Nano e a porta COM correspondente
- Clique no ícone Libraries na barra à esquerda da Arduino IDE.
- Pesquise “Ethernet”, depois encontre a biblioteca Ethernet de Various
- Clique no botão Install para instalar a biblioteca Ethernet.

- Modifique o código para refletir o endereço IP do PC.
- Compile e faça upload do código para o Arduino Nano.
- Abra o Serial Monitor.
- A saída no Serial Monitor exibirá o endereço IP do Ethernet Shield.
- Verifique se os dados foram armazenados no banco de dados digitando o seguinte comando no Prompt de Comando:
É evidente que o banco de dados contém a temperatura de 29.1.
Como o Arduino Nano insere, atualiza ou obtém dados de/para o banco de dados MySQL
No exemplo acima, aprendemos como inserir dados em um banco de dados MySQL. Atualizar e recuperar dados do banco de dados funciona de forma semelhante. Você só precisa ajustar as consultas MySQL no script PHP. Para mais informações, você pode visitar o W3Schools.
※ Nota:
Para construir um sistema altamente seguro, precisaríamos tomar medidas extras (por exemplo, evitar injeção de MySQL, converter HTTPS em uma REST API, usar o formato JSON para os dados etc.). No entanto, este tutorial foi feito para iniciantes aprenderem com o Arduino Nano, então o mantivemos o mais simples possível. Depois de concluir este tutorial, você pode expandi-lo para adicionar recursos mais avançados.