Arduino - Petición HTTP
Arduino puede desempeñar el papel de cliente web para realizar solicitudes HTTP a un servidor web. El servidor web puede ser un sitio web, una API web o una API REST, un servicio web...
En este tutorial, vamos a aprender:
- Conocimientos básicos de cliente web y servidor web
- Cómo realizar una solicitud HTTP (GET y POST)
- Cómo enviar datos a un servidor web (un sitio web, API web o API REST)
- Código de Arduino:
- Realizar una solicitud HTTP GET/POST utilizando Arduino Uno/Mega + Ethernet Shield
- Realizar una solicitud HTTP GET y enviar datos utilizando Arduino Uno/Mega + Ethernet Shield
- Realizar una solicitud HTTP POST y enviar datos utilizando Arduino Uno/Mega + Ethernet Shield
- Arduino Uno R4 WiFi
- Arduino Uno/Mega con Ethernet Shield
- Tu PC/tu teléfono inteligente (como cliente web) realiza una solicitud HTTP a un servidor web
- El servidor web devuelve una respuesta HTTP a tu PC/tu teléfono inteligente
- Tu PC/tu teléfono inteligente recibe la respuesta HTTP y visualiza la respuesta HTTP en tu pantalla
- Cabecera de la solicitud HTTP
- (Opcional) Cuerpo de la solicitud HTTP
- Dirección web (URL)
- Método de solicitud (POST o GET)
- Puerto HTTP que utiliza el servidor web (la mayoría de los servidores web utilizan el puerto 80 para HTTP)
- (Opcional) Datos a enviar al servidor web (cadena de consulta). En este tutorial, suponemos que enviamos temperatura y humedad a un servidor web con el formato ?temperature={t-value}&humidity={h-value}.
- Declare el método de solicitud, el puerto HTTP, nombre de host, ruta, cadena de consulta
- Declara un objeto cliente web
- Conéctese al servidor web
- Si está conectado al servidor, envíe una solicitud HTTP
- Leer los datos de la respuesta del servidor web
- Solicitud HTTP GET
- Solo puede enviar datos en formato de cadena de consulta.
- Los datos se adjuntan a la ruta.
- Solicitud HTTP POST
- Puede enviar datos NO SOLO en formato de cadena de consulta, SINO TAMBIÉN en cualquier otro formato como JSON, XML, imagen ...
- Los datos son el cuerpo de la solicitud HTTP.
- Construir la cadena de consulta
- Modificar el código para enviar datos en la solicitud HTTP
- HTTP GET: agregar cadena de consulta a ruta
- HTTP POST: enviar cadena de consulta como cuerpo HTTP
- Leer los datos de la respuesta del servidor web
- Para el escudo Ethernet, necesitas modificar el código de Arduino. Ver Arduino Ethernet Shield con dirección IP estática

El código para otros escudos o placas WiFi o Ethernet es similar. La diferencia está solo en la biblioteca.
El tutorial proporciona el código de Arduino para dos casos:
Hardware Requerido
| 1 | × | Arduino UNO R4 WiFi | |
| 1 | × | Alternatively, DIYables STEM V4 IoT | |
| 1 | × | Cable USB Tipo-A a Tipo-C (para PC USB-A) | |
| 1 | × | Cable USB Tipo-C a Tipo-C (para PC USB-C) |
Alternatively if using Ethernet:
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Conocimientos básicos sobre el cliente web y el servidor web
Cuando accedes a un sitio web desde tu PC o teléfono inteligente, solo escribes la dirección web (URL) en un navegador, esperas un segundo y, luego, la página web se muestra en tu PC o teléfono inteligente. No sabes qué hace tu PC o teléfono inteligente detrás de la pantalla. Entonces, ¿qué sucede detrás de la pantalla?
En este tutorial, haremos que Arduino se convierta en un cliente web para hacer algo similar a tu PC o smartphone.
Dirección web (URL)
Una URL incluye dos partes: nombre de host y ruta. El nombre de host puede ser reemplazado por la dirección IP del servidor web. Por ejemplo: example.com/test
En una solicitud HTTP GET, la URL puede incluir la cadena de consulta. Por ejemplo: example.com/test?temperature=20&humidity=70.
Cadena de consulta
La cadena de consulta es un conjunto de pares nombre-valor que se incluyen en una solicitud HTTP para enviar datos desde el cliente web al servidor.
El nombre y el valor están separados por el carácter '='. Los pares nombre-valor están separados por el carácter '&'.
Por ejemplo: temperatura=26&humedad=70&estado=2
Solicitud HTTP
La solicitud HTTP se compone de:
El encabezado de la solicitud HTTP y el cuerpo de la solicitud HTTP están separados por dos pares de caracteres de retorno de carro (ASCII 13, o '\r') y salto de línea (ASCII 10, o '\n').
Hay muchos métodos de solicitud. Entre ellos, hay dos métodos populares: GET y POST.
Normalmente, usamos el método GET cuando queremos obtener datos del servidor web y usamos el método POST para enviar datos al servidor web. Sin embargo, el método GET puede usarse tanto para obtener como para enviar datos desde o hacia el servidor web.
Requisito
Necesitamos determinar los siguientes valores:
La dirección web (URL) se divide en nombre de host y ruta
Cómo hacer una solicitud HTTP
Esta parte presenta solo código relacionado con HTTP. El código completo de cada escudo será presentado en la última parte.
| Arduino Ethernet Shield | EthernetClient client; |
| Arduino Uno WiFi | WiFiClient client; |
Cómo enviar datos a un servidor web
Podemos incluir datos en la solicitud HTTP. El formato de los datos depende del método de la solicitud HTTP:
Solo necesitamos modificar el código para enviar la solicitud HTTP:
Código completo de Arduino para realizar una solicitud HTTP
A continuación se presenta el código completo de Arduino para realizar solicitudes HTTP GET/POST.
Solicitud HTTP GET/POST de Arduino usando Arduino Uno R4 Wifi
Solicitud HTTP GET/POST de Arduino utilizando el Escudo Ethernet de Arduino
Código completo de Arduino para realizar una solicitud HTTP GET con datos
Petición HTTP GET de Arduino con datos utilizando Arduino Uno R4 Wifi
Solicitud HTTP GET de Arduino con datos usando Arduino Ethernet Shield
Código Arduino completo para realizar una solicitud HTTP POST con datos
Solicitud HTTP POST de Arduino con datos usando Arduino Uno R4 Wifi
Solicitud HTTP POST de Arduino con datos usando Arduino Ethernet Shield
※ Nota:
Este tutorial utilizó la dirección IP dinámica (a través de DHCP). Si quieres usar la dirección IP estática:
WARNING
Tenga en cuenta que este tutorial está incompleto. Publicaremos en nuestra página de Facebook cuando el tutorial esté completo. Déle like para mantenerse actualizado.