ESP32 - MySQL
Este tutorial explica cómo usar ESP32 para insertar o actualizar datos en una base de datos MySQL, o leer los datos de una base de datos MySQL.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
ESP32 - MySQL
Hay dos términos en MySQL con los que los principiantes suelen confundirse: Base de datos de MySQL y servidor de MySQL. Son diferentes. Sin embargo, si eres principiante, puedes suponer que son lo mismo. Más tarde, encontrarás las diferencias en tu proceso de aprendizaje.
El ESP32 puede interactuar con la base de datos MySQL de dos maneras:
- Directamente: ESP32 se conecta directamente al servidor MySQL y interactúa con el servidor MySQL utilizando el protocolo MySQL
- Indirectamente: 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!
ESP32 interactúa directamente con el Servidor MySQL

Interactuar directamente con MySQL parece sencillo, pero hay muchos inconvenientes:
- Tenemos que otorgar permisos de acceso remoto a una cuenta de usuario de MySQL ⇒ Esto es arriesgado desde el punto de vista de la seguridad, incluso si otorgamos privilegios limitados a la cuenta de usuario.
- ESP32 DEBE almacenar y enviar consultas MySQL al servidor MySQL ⇒ Es necesario escribir mucho código para ESP32, y también agotar los recursos del ESP32 (memoria y uso de la CPU).
- ESP32 DEBE procesar una respuesta MySQL compleja (muy grande en algunos casos) ⇒ Esto puede hacer que el ESP32 se quede sin memoria.
- El servidor MySQL debe procesar los datos en bruto ⇒ lo que aumenta la complejidad del script de MySQL.
- La mayoría de las bibliotecas de MySQL para ESP32 no admiten SSL/TLS ⇒ Los datos y las credenciales de usuario se envían sin cifrado ⇒ otro problema de seguridad.
ESP32 interactúa indirectamente con el servidor MySQL a través de HTTP/HTTPS
Interactuar con MySQL indirectamente a través de HTTP/HTTPS soluciona todos los problemas del acceso directo.
Cómo funciona
- Step 1: 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 del 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 al 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 el servidor HTTP y el servidor MySQL en el mismo servidor físico. Podemos otorgar 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 de MySQL se almacenan en el servidor ⇒ seguro.
- Los datos son procesados por un script PHP ⇒ Esto reduce la carga y la complejidad para el ESP32 y el servidor MySQL.
- El script PHP puede procesar los datos mucho más fácilmente que el código ESP32 y el script MySQL ⇒ Simplificar el código ESP32 y el script MySQL.
- El script PHP puede procesar los datos y enviar solo los datos necesarios al ESP32 (Paso 4) para evitar que el ESP32 se quede sin memoria.
- ESP32 puede realizar solicitudes HTTPS fácilmente ⇒ los datos están encriptados.
Nota: la autenticación entre el ESP32 y el servidor web debe ser independiente de la autenticación de MySQL. Por ejemplo, el nombre de usuario y la contraseña de HTTP deberían ser diferentes de las de MySQL.
Debido a esas ventajas, este tutorial utilizará la vía indirecta.
ESP32 a MySQL a través de HTTP/HTTPS
A continuación se presentan los pasos que debemos seguir:
- Instalar el paquete XAMPP que incluye el servidor MySQL, el servidor web y PHP en tu PC
- Crear una cuenta de usuario de MySQL
- Crear una base de datos MySQL
- Crear una tabla MySQL
- Escribir uno o más archivos de scripts PHP
- Escribir código para ESP32
1. Instalación del servidor MySQL, del servidor web y de PHP en tu PC
- Descargue e instale XAMPP desde este enlace. Después de la instalación, verifique la carpeta C:\xampp\htdocs en su PC. Aquí es donde coloca el código PHP (ver más adelante).
- Abra el Panel de Control de XAMPP
- Haga clic en los botones Start para habilitar MySQL y el servidor web (como se muestra en la imagen de abajo)

2. Crear una cuenta de usuario de MySQL
Crearemos una cuenta de MySQL con permisos de acceso únicamente desde localhost.
- Aunque los atacantes conozcan el nombre de usuario y la contraseña, no podrán acceder a tu base de datos MySQL a menos que tomen el control de tu PC.
- Este nombre de usuario y su contraseña serán utilizados por PHP para conectarse a la base de datos MySQL.
Este tutorial crea una cuenta de usuario de MySQL cuyo nombre de usuario y contraseña son ESP32 y newbiely.com, respectivamente:
- Abra el Símbolo del sistema en su PC. No lo cierre hasta el final del tutorial.
- Escriba el siguiente comando en el Símbolo del sistema:
- 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 motivos de seguridad. Escribe el siguiente comando en el símbolo del sistema:
- Escribe el siguiente comando en el Símbolo del sistema para iniciar sesión en el servidor MySQL:
- Escribe TU CONTRASEÑA DE ROOT 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 a continuación y pegándolos en el Símbolo del sistema:
Has creado con éxito una cuenta de usuario de MySQL. Anota el nombre de usuario y la contraseña. Se utilizará en un script de PHP.
3. Creación de una base de datos MySQL
Crea una base de datos db_esp32 escribiendo el siguiente comando en el Símbolo del sistema:
4. Creación de una tabla de MySQL
Crea una tabla tbl_temp copiando los comandos que se muestran a continuación y pégalos en el Símbolo del sistema:
6. Escribe archivos de scripts PHP
Crea un insert_temp.php usando cualquier editor de texto (p. ej. Notepad/Notepad++). Escribiremos el script en este archivo para extraer el valor de temperatura de la solicitud HTTP e insertar el valor de temperatura en la base de datos.
- Coloque este archivo dentro de la carpeta C:\xampp\htdocs.
- Obtenga la dirección IP de su PC. Si no sabe cómo hacerlo, búsquelo en Google.
- Pruebe el código PHP abriendo un navegador web (p. ej., Chrome) y acceda a este enlace: http://192.168.0.19/insert_temp.php?temperature=26.2. Tenga en cuenta que debe reemplazar la dirección IP anterior por la de su 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 ESP32 que haga una solicitud HTTP al servidor web en tu PC.
7. Escribe código ESP32
El código ESP32 que se muestra a continuación realiza una petición 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 usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Realiza el cableado como en la imagen anterior.
- Conecta la placa ESP32 a tu PC mediante un cable micro USB.
- Cambia la dirección IP en el código por la dirección IP de tu PC.
- Compila y carga el código en ESP32.
- Abre el Monitor Serial en Arduino IDE.

- El resultado en el monitor serie
- Comprueba 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 30.5 está almacenada en la base de datos.
Cómo el ESP32 inserta, actualiza u obtiene datos en una base de datos MySQL
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.