// Bibliotecas----------------------------------------------------------
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <ThingSpeak.h>
#include <WiFi.h>
// GPIO onde o DS18B20 está conectado
const int OneWireBus = 4;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2958695;
const char* myApiKey = "LN740LM3U73SFGJH";
WiFiClient client;
// Instância OneWire para o DS18B20
OneWire oneWire(OneWireBus);
DallasTemperature sensors(&oneWire);
// LCD I2C no endereço 0x27 com 16 colunas e 2 linhas
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
sensors.begin();
lcd.init();
lcd.backlight();
//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() {
// Leitura do DS18B20
sensors.requestTemperatures();
float temperaturaC = sensors.getTempCByIndex(0);
float temperaturaF = sensors.getTempFByIndex(0);
ThingSpeak.setField(1, temperaturaC);
int status = ThingSpeak.writeFields(myChannelNumber, myApiKey);
Serial.println("---");
Serial.printf("Temp: %.2f °C\n", temperaturaC);
if (status == 200) {
Serial.println("Dados enviados com sucesso!");
} else {
Serial.printf("Erro ao enviar: %d\n", status);
}
delay(10000);
// Exibe a temperatura do DS18B20 no Serial Monitor
Serial.print("DS18B20: ");
Serial.print(temperaturaC);
Serial.println(" ºC");
Serial.print("DS18B20: ");
Serial.print(temperaturaF);
Serial.println(" ºF");
// Exibe a temperatura no LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DSc = ");
lcd.print(temperaturaC);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("DSf = ");
lcd.print(temperaturaF);
lcd.print(" F");
delay(5000);
}
Loading
ds18b20
ds18b20