Arduino - Requisição HTTP
O Arduino pode atuar como um cliente web para fazer requisições HTTP a um servidor web. O servidor web pode ser um site, uma Web API ou REST API, um serviço web ...
Neste tutorial, vamos aprender:
- Conhecimentos básicos sobre cliente web e servidor web
- Como fazer uma requisição HTTP (GET e POST)
- Como enviar dados para um servidor web (um site, WEB API ou REST API)
- Código Arduino:
- Fazer requisição HTTP GET/POST usando Arduino Uno/Mega + Ethernet Shield
- Fazer requisição HTTP GET e enviar dados usando Arduino Uno/Mega + Ethernet Shield
- Fazer requisição HTTP POST e enviar dados usando Arduino Uno/Mega + Ethernet Shield
- Arduino Uno R4 WiFi
- Arduino Uno/Mega com Ethernet Shield
- O seu PC/smartphone (como cliente web) faz uma requisição HTTP para um servidor web
- O servidor web retorna uma resposta HTTP para o seu PC/smartphone
- O seu PC/smartphone recebe a resposta HTTP e a exibe na sua tela
- Cabeçalho da requisição HTTP
- (Opcional) Corpo da requisição HTTP
- Endereço web (URL)
- Método de requisição (POST ou GET)
- Porta HTTP que o servidor web usa (a maioria dos servidores web usa a porta 80 para HTTP)
- (Opcional) Dados a serem enviados ao servidor web (query string). Neste tutorial, vamos supor que enviamos temperatura e umidade para um servidor web no formato ?temperature={t-value}&humidity={h-value}.
- Declare o método de requisição, a porta HTTP, o hostname, o pathname e a query string
- Declare um objeto de cliente web
- Conecte-se ao servidor web
- Se estiver conectado ao servidor, envie a requisição HTTP
- Leia os dados da resposta do servidor web
- Requisição HTTP GET
- Só pode enviar dados no formato de query string.
- Os dados são anexados ao pathname.
- Requisição HTTP POST
- Pode enviar dados NÃO APENAS no formato de query string, MAS TAMBÉM em qualquer outro formato, como Json, XML, imagem ...
- Os dados ficam no corpo da requisição HTTP.
- Monte a query string
- Modifique o código para enviar dados na requisição HTTP
- HTTP GET: anexe a query string ao pathname
- HTTP POST: envie a query string como corpo HTTP
- Leia os dados da resposta do servidor web
- Para o Ethernet Shield, você precisa modificar o código Arduino. Veja Arduino Ethernet Shield com endereço IP estático

O código para outros Shields/Placas WiFi ou Ethernet é parecido. A diferença está apenas na biblioteca
O tutorial fornece o código Arduino para dois casos:
Hardware Necessário
| 1 | × | Arduino UNO R4 WiFi | |
| 1 | × | Alternatively, DIYables STEM V4 IoT | |
| 1 | × | Alternatively, DIYables STEM V4B IoT | |
| 1 | × | Cabo USB Tipo-A para Tipo-C (para PC com USB-A) | |
| 1 | × | Cabo USB Tipo-C para Tipo-C (para PC com 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 (18 sensors/displays) |
Conhecimentos Básicos sobre Cliente Web e Servidor Web
Quando você acessa um site pelo seu PC ou smartphone, basta digitar o endereço web (URL) em um navegador, esperar um segundo, e a página é exibida no seu PC/smartphone. Você não sabe o que o seu PC/smartphone faz por trás da tela. Então, o que acontece por trás da tela:
Neste tutorial, vamos transformar o Arduino em um cliente web para fazer algo parecido com o seu PC/smartphone.
Endereço Web (URL)
Uma URL tem duas partes: hostname e pathname. O hostname pode ser substituído pelo endereço IP do servidor web. Por exemplo: example.com/test
Na requisição HTTP GET, a URL pode incluir a query string. Por exemplo: example.com/test?temperature=20&humidity=70.
Query String
A query string é um conjunto de pares nome-valor, que são incluídos na requisição HTTP para enviar dados do cliente web para o servidor web.
O nome e o valor são separados pelo caractere "=". Os pares nome-valor são separados pelo caractere "&".
Por exemplo: temperature=26&humidity=70&state=2
Requisição HTTP
A requisição HTTP é composta por:
O cabeçalho e o corpo da requisição HTTP são separados por dois pares de um caractere de retorno de carro (ASCII 13, ou '\r') e um caractere de nova linha (ASCII 10, ou '\n').
Existem muitos métodos de requisição. Entre eles, há dois métodos populares: GET e POST.
Normalmente, usamos o método GET quando queremos obter dados do servidor web, e o método POST para enviar dados ao servidor web. No entanto, o método GET pode ser usado tanto para obter quanto para enviar dados do/para o servidor web
Pré-requisitos
Precisamos definir os seguintes valores:
O endereço web (URL) é dividido em hostname e pathname
Como Fazer uma Requisição HTTP
Esta parte apresenta apenas o código relacionado ao HTTP. O código completo para cada shield será apresentado na última parte.
| Arduino Ethernet Shield | EthernetClient client; |
| Arduino Uno WiFi | WiFiClient client; |
Como Enviar Dados para um Servidor Web
Podemos incluir dados na requisição HTTP. O formato dos dados depende do método de requisição HTTP:
Só precisamos modificar o código que envia a requisição HTTP:
Código Arduino Completo para Fazer Requisição HTTP
Abaixo está o código Arduino completo para fazer requisições HTTP GET/POST
Requisição HTTP GET/POST no Arduino usando Arduino Uno R4 Wifi
Requisição HTTP GET/POST no Arduino usando Arduino Ethernet Shield
Código Arduino Completo para Fazer Requisição HTTP GET com dados
Requisição HTTP GET com dados no Arduino usando Arduino Uno R4 Wifi
Requisição HTTP GET com dados no Arduino usando Arduino Ethernet Shield
Código Arduino Completo para Fazer Requisição HTTP POST com dados
Requisição HTTP POST com dados no Arduino usando Arduino Uno R4 Wifi
Requisição HTTP POST com dados no Arduino usando Arduino Ethernet Shield
※ Nota:
Este tutorial usou o endereço IP dinâmico (via DHCP). Se você quiser usar o endereço IP estático:
WARNING
Observe que este tutorial está incompleto. Vamos avisar na nossa página do Facebook quando o tutorial estiver completo. Curta a página para ficar atualizado.