#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include "ThingSpeak.h"
// Data wire is connected to GPIO4
#define ONE_WIRE_BUS 12
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
// Pins for the ultrasonic sensor
#define TRIG_PIN 16
#define ECHO_PIN 17
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String tbHost = "eu.thingsboard.cloud";
String tbToken = "YWHnVX5FWShNdQkhcDYM";
// ThingSpeak settings
unsigned long myChannelNumber = 2833377;
const char * myWriteAPIKey = "259L28IZVYJZV47E";
WiFiClient client;
void setup() {
// Start serial communication
Serial.begin(115200);
// Start the DS18B20 sensor
sensors.begin();
// Initialize the ultrasonic sensor pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Get temperature from DS18B20 sensor
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
// Get distance from ultrasonic sensor
long duration, distanceCm;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distanceCm = duration * 0.034 / 2;
// Print the results to the serial monitor
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print(" °C, Distance: ");
Serial.print(distanceCm);
Serial.println(" cm");
// Send data to ThingSpeak
ThingSpeak.setField(1, temperatureC);
ThingSpeak.setField(2, distanceCm);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else{
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
// Wait a bit before next loop
delay(20000); // ThingSpeak allows updates every 15 seconds; setting delay to 20 seconds
}
Loading
ds18b20
ds18b20