Arduino Nano - Requisição HTTP - Cliente Web
O Arduino Nano pode atuar como um cliente web, enviando requisições HTTP a um servidor web. Esse servidor web pode ser um site, uma Web API, uma REST API ou um serviço Web...
Este tutorial ensina como usar o Arduino Nano para fazer uma Requisição HTTP a um servidor web. Em detalhes, vamos aprender:
Os fundamentos de cliente web e servidor web
Como criar uma requisição HTTP (GET e POST)
Como enviar dados a um servidor web (um site, WEB API ou REST API)
Código do Arduino Nano:
Fazendo requisições HTTP GET/POST usando o Arduino Nano e o módulo Ethernet
Fazendo requisição HTTP GET e enviando dados usando o Arduino Nano e o módulo Ethernet
Fazendo requisição HTTP POST e enviando dados usando o Arduino Nano e o módulo Ethernet
Or you can buy the following kits:
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Alguns conceitos web importantes incluem endereço web (URL), nome do host, caminho, query string e requisição HTTP. Você pode aprender mais sobre eles em detalhes no tutorial de HTTP.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
image source: diyables.io
Declare o método da requisição, a porta para HTTP, o nome do host, o caminho, a query string e os cabeçalhos relacionados ao código.
int HTTP_PORT = 80;
String HTTP_METHOD = "GET";
char HOST_NAME[] = "example.newbiely.com";
String PATH_NAME = "";
if(client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println("Connected to server");
} else {
Serial.println("connection failed");
}
client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
while(client.available())
{
char c = client.read();
Serial.print(c);
}
if(!client.connected())
{
Serial.println("disconnected");
client.stop();
}
Podemos incluir dados em uma requisição HTTP, e o formato depende do método da requisição HTTP:
Requisição HTTP GET:
Requisição HTTP POST:
Os dados podem ser enviados em vários formatos, como query string, JSON, XML, imagens etc.
Os dados são colocados no corpo da requisição HTTP.
Passos para enviar uma requisição HTTP:
Por exemplo:
int temp =
int humi =
String queryString = String("?temperature=") + String(temp) + String("&humidity=") + String(humi);
Monte o código para enviar Dados na requisição HTTP
client.println("GET " + PATH_NAME + queryString + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
client.println("POST " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
client.println(queryString);
while(client.available())
{
char c = client.read();
Serial.print(c);
}
if(!client.connected())
{
Serial.println("disconnected");
client.stop();
}
Este é o código completo do Arduino Nano para fazer requisições HTTP GET e POST.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "GET";
char HOST_NAME[] = "maker.ifttt.com";
String PATH_NAME = "/trigger";
void setup() {
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address using DHCP");
while(true);
}
if(client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println("Connected to server");
client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
while(client.connected()) {
if(client.available()){
char c = client.read();
Serial.print(c);
}
}
client.stop();
Serial.println();
Serial.println("disconnected");
} else {
Serial.println("connection failed");
}
}
void loop() {
}
Conecte o Arduino Nano ao módulo Ethernet de acordo com o diagrama de ligação acima.
Conecte um cabo Ethernet ao módulo Ethernet.
Conecte o Arduino Nano a um PC usando um cabo USB.
Abra a Arduino IDE no seu PC.
Selecione a placa Arduino Nano e a porta COM correspondente
Clique no ícone Libraries na barra à esquerda da Arduino IDE.
Pesquise “Ethernet”, depois encontre a biblioteca Ethernet de Various
Clique no botão Install para instalar a biblioteca Ethernet.
Copie o código acima e abra com a Arduino IDE
Clique no botão Upload na Arduino IDE para fazer upload do código para o Arduino Nano
Abra o Serial Monitor
Confira o resultado no Serial Monitor.
Observe que o código acima demonstra como fazer uma requisição HTTP. Você precisa substituir URL e queryString pelos seus próprios valores para que funcione.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "GET";
char HOST_NAME[] = "maker.ifttt.com";
String PATH_NAME = "/trigger";
String queryString = "?value1=26&value2=70";;
void setup() {
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address using DHCP");
while(true);
}
if(client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println("Connected to server");
client.println(HTTP_METHOD + " " + PATH_NAME + queryString + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
while(client.connected()) {
if(client.available()){
char c = client.read();
Serial.print(c);
}
}
client.stop();
Serial.println();
Serial.println("disconnected");
} else {
Serial.println("connection failed");
}
}
void loop() {
}
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "POST";
char HOST_NAME[] = "maker.ifttt.com";
String PATH_NAME = "/trigger";
String queryString = "?value1=26&value2=70";;
void setup() {
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address using DHCP");
while(true);
}
if(client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println("Connected to server");
client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
client.println(queryString);
while(client.connected()) {
if(client.available()){
char c = client.read();
Serial.print(c);
}
}
client.stop();
Serial.println();
Serial.println("disconnected");
} else {
Serial.println("connection failed");
}
}
void loop() {
}
※ NOSSAS MENSAGENS
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!