ESP32-C6 na Prática: Criando uma API REST e Arduino IDE

Este post faz parte da série ESP32-C6 na Prática

Introdução

O protocolo REST (Representational State Transfer) é amplamente usado em aplicações web e IoT, permitindo a comunicação entre dispositivos e servidores através de requisições HTTP.

Neste artigo, mostraremos como criar uma API REST na placa de desenvolvimento ESP32-C6 DevKitC-1 com Arduino IDE

Nosso projeto tem como objetivo criar duas rotas para fazer requisições. Uma HTTP GET para obter dados de um sensor de temperatura da placa e uma HTTP POST para atualizar o LED.

Para conhecer mais a placa de desenvolvimento consulte nosso artigo Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT

O que é uma API REST?

Uma API REST é um conjunto de endpoints (URLs) que recebem requisições HTTP.

Métodos mais usados:

  • GET: Obter dados
  • POST: Enviar dados
  • PUT/PATCH: Atualizar dados
  • DELETE: Remover dados

Materiais Necessários

Para desenvolver nossa aplicação os materiais utilizados foram:

  •  Placa ESP23-C6 DevKitC-1
  • Cabo USB-C
  • Resistor 10k ohms
  • LED
  • Resistor 330 ohms
  • Sensor DHT11
  • Jumpers
  • Arduino IDE

Para configurar o ambiente e instalar o suporte a ESP32-C6 veja o artigo ESP32-C6 na Prática: Seu Primeiro “Hello World”

Circuito

Figura 1: Circuito desenvolvido

Código

Vamos criar dois endpoints:

  • GET /sensor: retorna os valores de temperatura e umidade em JSON
  • POST /led: recebe um JSON {“led”: “1/0”} para ligar/desligar o LED
// Função para lidar com requisições de sensor
void handleSensor() {
  if (readSensor()) {
    JsonDocument doc;
    doc["temperatura"] = temperature;
    doc["umidade"] = humidity;
    String response;
    serializeJson(doc, response);
    server.send(200, "application/json", response); // Envia a resposta com os dados do sensor
  } else {
    server.send(500, "application/json", "{\"error\":\"Falha no sensor\"}");
  }
}


// Função para lidar com requisições de LED
void handleLed() {
  if (server.hasArg("plain")) {
    String body = server.arg("plain");  // Obtém o corpo da requisição POST


    JsonDocument doc;
    DeserializationError error = deserializeJson(doc, body);


    if (!error) {
      int ledState = doc["led"];
      setLED(ledState == 1 ? HIGH : LOW);
      server.send(200, "application/json", "{\"message\":\"LED atualizado\"}");
      return;
    }
  }
  server.send(400, "application/json", "{\"error\":\"JSON inválido\"}");
}

  // Definicao de Rotas da API REST
  server.on("/sensor", HTTP_GET, handleSensor);
  server.on("/led", HTTP_POST, handleLed);


  server.begin();  // Inicia o servidor web server


O código completo pode ser consultado em:

https://github.com/guilhermefernandesk/ESP32-C6/tree/main/apiRest

Resultados

Figura 2: Acesso a rota GET/sensor pelo navegador

Para a realização do teste da requisição POST, utilizou-se o software Postman, que permite o envio do JSON na rota especificada e a validação da resposta obtida. 

Para utilizá-lo, é necessário realizar o download do Postman no site oficial, instalar o software e, em seguida, configurá-lo de acordo com o ambiente de desenvolvimento desejado.

No exemplo abaixo, enviamos o JSON {“led”: “1/0”} na rota POST /led

Conclusão

Neste artigo, apresentamos como usar o ESP32-C6 como um servidor RESTful para enviar e receber informações em JSON. Essa abordagem demonstra o uso de um protocolo de comunicação para sistemas web e Iot

Sinta-se à vontade para compartilhar seus resultados com a comunidade, seja por artigos, vídeos ou repositórios abertos. Sua experiência pode inspirar e auxiliar muitos outros desenvolvedores.

Referências

ESP32-C6 na Prática

ESP32-C6 na Prática: Consumindo a API do OpenWeatherMap com JSON ESP32-C6 na Prática: Watchdog Timer com Arduino IDE
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Internet Das Coisas » ESP32-C6 na Prática: Criando uma API REST e Arduino IDE

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: