/*
* This sketch demonstrates how to scan WiFi networks.
* The API is based on the Arduino WiFi Shield library, but has significant changes as newer WiFi functions are supported.
* E.g. the return value of `encryptionType()` different because more modern encryption is supported.
*/
#include "WiFi.h"
#include <DHT.h>
#include <ThingSpeak.h>
#define DHTPIN 5 // Pino onde o DHT22 está conectado
#define DHTTYPE DHT22 // Modelo do sensor
//wifi e thingspeak
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2995706;
const char* myApiKey = "4HFFP7J4AULY7X9T";
WiFiClient client;
DHT dht(DHTPIN, DHTTYPE);
// Variáveis de leitura DHT22
float temp = 0, umid = 0;
float tempSoma = 0, umidSoma = 0;
float tempMedia = 0, umidMedia = 0;
void setup() {
Serial.begin(115200);
dht.begin();
// Set WiFi to station mode and disconnect from an AP if it was previously connected.
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Setup done");
//WiFi e thingSpeak
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi não conectado");
}
Serial.println("WiFi conectado!");
Serial.println("IP local: " + WiFi.localIP().toString());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
Serial.println("Scan start");
// WiFi.scanNetworks will return the number of networks found.
int n = WiFi.scanNetworks();
Serial.println("Scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
Serial.println("Nr | SSID | RSSI | CH | Encryption");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.printf("%2d", i + 1);
Serial.print(" | ");
Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
Serial.print(" | ");
Serial.printf("%4ld", WiFi.RSSI(i));
Serial.print(" | ");
Serial.printf("%2ld", WiFi.channel(i));
Serial.print(" | ");
switch (WiFi.encryptionType(i)) {
case WIFI_AUTH_OPEN: Serial.print("open"); break;
case WIFI_AUTH_WEP: Serial.print("WEP"); break;
case WIFI_AUTH_WPA_PSK: Serial.print("WPA"); break;
case WIFI_AUTH_WPA2_PSK: Serial.print("WPA2"); break;
case WIFI_AUTH_WPA_WPA2_PSK: Serial.print("WPA+WPA2"); break;
case WIFI_AUTH_WPA2_ENTERPRISE: Serial.print("WPA2-EAP"); break;
case WIFI_AUTH_WPA3_PSK: Serial.print("WPA3"); break;
case WIFI_AUTH_WPA2_WPA3_PSK: Serial.print("WPA2+WPA3"); break;
case WIFI_AUTH_WAPI_PSK: Serial.print("WAPI"); break;
default: Serial.print("unknown");
}
Serial.println();
delay(10);
}
}
Serial.println("");
// Delete the scan result to free memory for code below.
WiFi.scanDelete();
// Cálculo da média de temperatura e umidade do DHT22
tempSoma = 0;
umidSoma = 0;
for (int i = 0; i < 100; i++) {
temp = dht.readTemperature();
umid = dht.readHumidity();
tempSoma += temp;
umidSoma += umid;
delay(10); // pequena pausa entre leituras
}
tempMedia = tempSoma / 100.0;
umidMedia = umidSoma / 100.0;
// Exibe a média do DHT22 no Serial Monitor
Serial.print("DHT22 - Temp média: ");
Serial.print(tempMedia);
Serial.println(" ºC");
Serial.print("DHT22 - Umidade média: ");
Serial.print(umidMedia);
Serial.println(" %");
ThingSpeak.setField(1, tempMedia);
ThingSpeak.setField(2, umidMedia);
int status = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (status == 200) {
Serial.println("Dados enviados com sucesso!");
} else {
Serial.printf("Erro ao enviar: %d\n", status);
}
// Wait a bit before scanning again.
delay(5000);
}