Arduino Nano ESP32 - MySQL
Este tutorial proporciona instrucciones sobre cómo usar Arduino Nano ESP32 para insertar o actualizar datos en una base de datos MySQL, o leer los datos de la base de datos MySQL.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Arduino Nano ESP32 - MySQL
Hay dos términos en MySQL que los principiantes suelen confundir: base de datos MySQL y servidor MySQL. Son diferentes. Sin embargo, si eres un principiante, puedes asumir que son iguales. Más adelante, encontrarás las diferencias en tu proceso de aprendizaje.
Arduino Nano ESP32 puede interactuar con la base de datos MySQL de dos maneras:
- Directamente: Arduino Nano ESP32 se conecta directamente al servidor MySQL e interactúa con el servidor MySQL usando el protocolo MySQL
- Indirectamente: Arduino Nano ESP32 se conecta indirectamente al servidor MySQL a través de un servidor web utilizando el protocolo HTTP/HTTPS
¿Cuál es el mejor para el ESP32? ¡Vamos a averiguarlo!
Arduino Nano ESP32 interactúa directamente con el servidor MySQL

Interactuar directamente con MySQL parece sencillo, pero hay muchas desventajas:
- Tenemos que otorgar permisos de acceso remoto a una cuenta de usuario de MySQL ⇒ Esto es riesgoso desde el punto de vista de la seguridad, incluso si concedemos privilegios limitados a la cuenta de usuario.
- Arduino Nano ESP32 DEBE almacenar y enviar consultas MySQL al servidor MySQL ⇒ Es necesario escribir mucho código para Arduino Nano ESP32, y también agotar los recursos del Arduino Nano ESP32 (uso de memoria y CPU).
- Arduino Nano ESP32 DEBE procesar una respuesta MySQL compleja (con un tamaño de datos muy grande en algunos casos) ⇒ Esto puede hacer que Arduino Nano ESP32 se quede sin memoria.
- El servidor MySQL debe procesar los datos en crudo ⇒ aumenta la complejidad del script de MySQL.
- La mayoría de las bibliotecas de MySQL para Arduino Nano ESP32 no admiten SSL/TLS ⇒ Los datos y el nombre de usuario/contraseña se envían sin cifrado ⇒ otro problema de seguridad.
Arduino Nano ESP32 interactúa indirectamente con el servidor MySQL a través de HTTP/HTTPS
La interacción con MySQL de forma indirecta a través de HTTP/HTTPS resuelve todos los problemas del acceso directo.
Cómo funciona
- Step 1: Arduino Nano ESP32 incluye los datos para la solicitud HTTP/HTTPS y envía la solicitud al servidor web
- Step 2: El servidor web ejecuta un script PHP que maneja la solicitud de Arduino Nano ESP32
- Step 3: El script PHP extrae los datos de la solicitud HTTP, procesa los datos y luego interactúa con la base de datos MySQL.
- Step 4: El script PHP procesa el resultado y devuelve solo el resultado necesario a Arduino Nano ESP32 a través de la respuesta HTTP

Vamos a instalar el servidor MySQL, el servidor web y PHP en la PC. De hecho, podemos instalarlo en un servidor dedicado o en un servicio en la nube como AWS EC2.
A continuación se muestra cómo la vía indirecta resuelve los problemas de la vía directa.
- Podemos instalar un servidor HTTP y el servidor MySQL en el mismo servidor físico; podemos otorgar un acceso limitado a una cuenta de usuario de MySQL (p. ej. acceso localhost SOLAMENTE) ⇒ seguro
- El nombre de usuario y la contraseña de la cuenta MySQL se almacenan en el servidor ⇒ seguro.
- Los datos son procesados por un script PHP ⇒ Esto reduce la carga y la complejidad para Arduino Nano ESP32 y el servidor MySQL.
- El script PHP puede procesar los datos mucho más fácilmente que el código de Arduino Nano ESP32 y el script MySQL ⇒ Simplificar el código de Arduino Nano ESP32 y del script MySQL.
- El script PHP puede procesar los datos y enviar solo los datos necesarios al Arduino Nano ESP32 (Paso 4) para evitar que Arduino Nano ESP32 quede sin memoria.
- Arduino Nano ESP32 puede hacer solicitudes HTTPS fácilmente ⇒ los datos están encriptados.
Nota: la autenticación entre Arduino Nano ESP32 y el servidor web debe ser independiente de la autenticación de MySQL. Por ejemplo, el nombre de usuario y la contraseña HTTP deben ser diferentes de las credenciales de MySQL.
Debido a esas ventajas, este tutorial utilizará el método indirecto.
Arduino Nano ESP32 a MySQL mediante HTTP/HTTPS
Los siguientes son los pasos que debemos realizar:
- Instalando el paquete XAMPP que incluye el servidor MySQL, el servidor web y PHP en tu PC
- Creando una cuenta de usuario de MySQL
- Creando una base de datos MySQL
- Creando una tabla de MySQL
- Escribiendo uno o más archivos de script PHP
- Escribiendo código para Arduino Nano ESP32
1. Instalando el servidor MySQL, el servidor web y PHP en tu PC
- Descargar e instalar XAMPP desde este enlace. Después de la instalación, revisa la carpeta C:\xampp\htdocs en tu PC. Aquí es donde colocas código PHP (ver más adelante).
- Abre el Panel de Control de XAMPP
- Haz clic en los botones Iniciar para habilitar MySQL y el servidor web (como se muestra en la imagen de abajo)

2. Creación de una cuenta de usuario de MySQL
Crearemos una cuenta de MySQL con permisos de acceso solo desde localhost.
- Incluso si los atacantes conocen el nombre de usuario y la contraseña, no pueden acceder a tu base de datos MySQL a menos que tomen el control de tu ordenador.
- Estas credenciales serán utilizadas por PHP para conectarse a la base de datos MySQL.
Este tutorial crea una cuenta de usuario de MySQL con el nombre de usuario y la contraseña, que son ESP32 y newbiely.com, respectivamente:
- Abre el Command Prompt en tu PC. No lo cierres hasta el final del tutorial.
- Escribe el siguiente comando en el Command Prompt:
- Por defecto, MySQL tiene la cuenta root sin contraseña. Se recomienda encarecidamente establecer la contraseña para la cuenta root (p. ej. YOUR_ROOT_PASSWORD) por razones de seguridad. Escriba el siguiente comando en el símbolo del sistema:
- Teclea el siguiente comando en el Símbolo del sistema para iniciar sesión en el servidor MySQL:
- Escribe TU_ROOT_PASSWORD y pulsa Enter
- Vamos a crear una cuenta de usuario de MySQL con el nombre de usuario y la contraseña que son ESP32 y newbiely.com, respectivamente, copiando los comandos siguientes y pegándolos en el Símbolo del sistema:
Se creó con éxito una cuenta de usuario de MySQL. Anote el nombre de usuario y la contraseña. Se utilizarán en el script PHP.
3. Crear una base de datos MySQL
Crear una base de datos db_nano_esp32 escribiendo el siguiente comando en el símbolo del sistema:
4. Crear una tabla de MySQL
Crea una tabla tbl_temp copiando los comandos a continuación y pégalos en el Símbolo del sistema:
6. Escribe archivos de scripts PHP
Crea un insert_temp.php utilizando cualquier editor de texto (p. ej., Notepad/Notepad++). Escribiremos el script en este archivo para extraer el valor de la temperatura de la solicitud HTTP e insertar el valor de la temperatura en la base de datos.
- Coloque este archivo dentro de la carpeta C:\xampp\htdocs.
- Obtén la dirección IP de tu PC. Si no sabes cómo hacerlo, búscalo en Google.
- Prueba el código PHP abriendo un navegador web (p. ej., Chrome) y accediendo a este enlace: http://192.168.0.19/insert_temp.php?temperature=26.2. Ten en cuenta que debes reemplazar la dirección IP anterior con la dirección de tu PC.
- El navegador web se muestra a continuación:

- Verifique si los datos están almacenados en la base de datos escribiendo el siguiente comando en el Símbolo del sistema:
Como puedes ver, la temperatura de 26.2 está almacenada en la base de datos. El siguiente paso es escribir código para Arduino Nano ESP32 que realice una solicitud HTTP al servidor web en tu PC.
7. Escribe código para Arduino Nano ESP32
El código siguiente para Arduino Nano ESP32 realiza una solicitud HTTP a tu PC para insertar una temperatura de 30,5 °C en la base de datos.
Pasos R\u00e1pidos
- Si es la primera vez que utilizas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
- Realiza el cableado tal como se muestra en la imagen de arriba.
- Conecta la placa Arduino Nano ESP32 a tu PC mediante un cable USB
- Cambia la dirección IP en el código por la dirección IP de tu PC
- Compila y sube el código a Arduino Nano ESP32
- Abre el Monitor Serial en el IDE de Arduino

- El resultado en el Monitor Serial
- Verifique si los datos están almacenados en la base de datos utilizando el siguiente comando en el Símbolo del sistema:
Como puedes ver, la temperatura de 30.5 está almacenada en la base de datos.
Cómo insertar, actualizar u obtener datos en la base de datos MySQL con Arduino Nano ESP32
El ejemplo anterior muestra cómo insertar datos en la base de datos MySQL. Es similar para actualizar y leer datos de la base de datos. Solo necesitas modificar la consulta de MySQL en el código PHP. Puedes aprender más en W3Schools.com
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.