Usando un ESP32 como cliente HTTP para enviar información a un servidor remoto a través de WiFi

Usando un ESP32 como cliente HTTP para enviar información a un servidor remoto a través de WiFi

En este tutorial, exploraremos cómo utilizar el microcontrolador ESP32 como un cliente HTTP para enviar datos a un servidor remoto a través de WiFi. El ESP32 es una potente placa de desarrollo que combina capacidades de WiFi y Bluetooth, lo que la hace ideal para aplicaciones de IoT. Al final de este tutorial, podrás enviar solicitudes HTTP con parámetros definidos por el usuario y recibir respuestas de un servidor.

ESP32-38pin-1

Estaremos utilizando el IDE de Arduino para programar el ESP32, y te guiaré a través de los pasos necesarios para configurar tu entorno. Para un recorrido visual, te recomiendo que revises el video asociado (en video a :00).

Hardware Explicado

El componente principal de este proyecto es el microcontrolador ESP32, específicamente el módulo WROOM32. Este módulo cuenta con 38 pines que se pueden utilizar para diversas operaciones de entrada/salida. Funciona a 3.3 voltios e incluye capacidades de WiFi y Bluetooth incorporadas. El ESP32 es versátil y se puede utilizar en muchas aplicaciones, gracias a sus pines GPIO y protocolos de comunicación.

ESP32-3

Además del ESP32, es posible que necesite un convertidor USB a serie para programar y depurar. El módulo también contiene un regulador de voltaje, que asegura que el microcontrolador reciba una fuente estable de 3.3V de una fuente de mayor voltaje. En general, el ESP32 es un microcontrolador bien equipado, adecuado para varios proyectos.

Detalles de la ficha técnica

Fabricante Espressif Systems
Número de parte ESP32-WROOM-32
Voltaje de lógica/IO 3.3 V
Tensión de alimentación 5 V (máx)
Corriente de salida (por canal) 12 mA
Corriente de pico (por canal) 160 mA
Orientación sobre la frecuencia PWM 1 kHz
Umbrales de lógica de entrada 0.3 * VDD(bajo), 0.7 * VDDalto
Caída de tensión / RDS(on)/ saturación 0.5 V
Límites térmicos 125 °C
Paquete QFN
Notas / variantes Tamaños de flash múltiples disponibles
ESP32-2
  • Asegúrate de que los niveles de voltaje sean correctos (3.3V) para evitar dañar el ESP32.
  • Utilice capacitores de desacoplamiento adecuados cerca de los pines de alimentación para un funcionamiento estable.
  • Implementar disipación de calor si el módulo opera cerca de sus valores máximos de corriente.
  • Utiliza el WiFi integrado del ESP32 para una fácil conectividad de red.
  • Ten cuidado con las configuraciones de los pines GPIO para prevenir cortocircuitos.
  • Prueba con bocetos simples para confirmar la funcionalidad antes de integraciones complejas.

Instrucciones de cableado

Para cablear el ESP32 para este proyecto, empieza conectando el pin de tierra del ESP32 a la tierra de tu fuente de alimentación. A continuación, conecta la fuente de alimentación de 5V al pin Vin o V5 del ESP32, que alimentará el regulador de voltaje interno y proporcionará 3.3V al microcontrolador.

Para la funcionalidad del cliente HTTP, asegúrate de que tu ESP32 esté conectado a una red WiFi. Necesitarás conectar los pines apropiados para cualquier componente adicional que puedas usar, como sensores o LEDs. Por ejemplo, conecta un LED al pin GPIO 2, con una resistencia en serie para limitar la corriente. La pata más larga (ánodo) del LED debe conectarse al pin 2, mientras que la pata más corta (cátodo) se conecta a tierra.

Ejemplos de código y guía

En el fragmento de código proporcionado, inicializamos el cliente HTTP y definimos identificadores clave comomainURL, que contiene la URL a la que estamos enviando la solicitud, yuser, que contiene información del usuario. El código también configura el ESP32 para conectarse a una red WiFi especificada.

String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";

Aquí,mainURLes el objetivo al que estamos apuntando, mientrasusermantiene el parámetro del usuario que se enviará en la solicitud HTTP.

En elsetup()función, comenzamos la comunicación en serie y configuramos la conexión WiFi. También nos preparamos para la solicitud HTTP creando una instancia del cliente HTTP.

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("Robojax", "Your password");
}

Esta sección inicializa el monitor serial para depuración y se conecta a la red WiFi. Las credenciales se definen en eladdAP()método.

En elloop()función, verificamos una conexión WiFi exitosa y procedemos a enviar la solicitud HTTP GET. Los parámetros incluyen los valores del usuario y la temperatura.

if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
  int httpCode = http.GET();}

Este código construye la URL completa con parámetros de consulta y ejecuta la solicitud GET. Si tiene éxito, recupera la respuesta del servidor.

Demostración / Qué esperar

Cuando se enciende el ESP32 y se ejecuta el programa, debería conectarse a la red WiFi especificada y enviar una solicitud HTTP GET al servidor. Puedes monitorear la salida en el Monitor Serial, donde verás el código de estado HTTP y la carga útil de respuesta del servidor. Los problemas comunes pueden incluir credenciales de WiFi incorrectas o un servidor inalcanzable (en el video a las 12:30).

Marcas de tiempo del video

  • 00:00 Comienzo
  • 00:53 Introducción
  • 5V y pines de 3.3V
  • 08:38 Características explicadas
  • 14:03 Pines en la hoja de datos
  • 17:00 Ejemplo de Blink
  • 19:14 Ejemplo de parpadeo con LED externo
  • 21:00 Prueba del cliente HTTP

Imágenes

ESP32-1
ESP32-1
ESP32-2
ESP32-2
ESP32-3
ESP32-3
ESP32-38pin-1
ESP32-38pin-1
ESP32-38pin-2
ESP32-38pin-2
241-ESP32 HTTP Client code example
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Archivos📁

Hoja de datos (pdf)