#include <WiFi.h>
#include <WiFiClient.h>
#include <Ultrasonic.h>
#include "ThingSpeak.h"
///########### configuração do wifi
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Defining the WiFi channel speeds up the connection:
#define WIFI_CHANNEL 6
int status = WL_IDLE_STATUS; // the Wifi radio's status
WiFiClient client;
//configuração do thingspeak
const int myChannelNumber = 2569647;
const char* myApiKey = "PR9IBS6FA9FTIZUL";
const char* server = "api.thingspeak.com";
#define TRIG_PIN 13
#define ECHO_PIN 14
#define LED_PIN 2
// Crie uma instância do sensor Ultrasonic
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
int ultimovalor = 0;
unsigned long ultimaAtualizacao = 0;
const unsigned long intervaloEnvio = 15000; // Intervalo de envio em milissegundos (15 segundos)
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
conectawifi(); // Chama a função para conectar-se à rede WiFi
//pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
delay(10); // this speeds up the simulation
float distance = readDistanceCM();
// Verifica se passou o intervalo de 15 segundos desde a última atualização
if(millis() - ultimaAtualizacao >= intervaloEnvio) {
// Atualiza o tempo da última atualização para controlar o próximo envio
bool isNearby = distance < 100;
digitalWrite(LED_PIN, isNearby);
Serial.print("Measured distance: ");
Serial.println(readDistanceCM());
delay(100);
ultimaAtualizacao = millis();
// Configura o campo no ThingSpeak e envia os dados
ThingSpeak.setField(1, distance);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Dado enviado com sucesso");
} else {
Serial.println("Erro de envio" + String(x));
}
}
}
// Função para conectar-se à rede WiFi
void conectawifi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
Serial.print("Conectando ao WiFi ");
Serial.print(WIFI_SSID);
// Aguarda a conexão
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Conectado!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}