#include <WiFi.h>
#include <ThingSpeak.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>
#include "max6675.h"
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2597971 ;
const char* myApiKey = "C8I6Q5MQMH52WPQE";
const char* server = "api.thingspeak.com";
WiFiClient client;
#define DHTPIN 27 // Pin data DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(4); // Pin untuk DS18B20
DallasTemperature sensors(&oneWire);
int thermoDO = 19; // Pin SPI MAX6675
int thermoCS = 23;
int thermoCLK = 5;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
// Alamat (address) dari setiap sensor DS18B20
DeviceAddress sensorAddress1 = {0x28, 0xFF, 0x43, 0x6F, 0x92, 0x16, 0x04, 0x0C};
DeviceAddress sensorAddress2 = {0x28, 0xFF, 0xC0, 0x6F, 0x92, 0x16, 0x04, 0x0C};
DeviceAddress sensorAddress3 = {0x28, 0xFF, 0x2E, 0x78, 0x92, 0x16, 0x04, 0x0C};
DeviceAddress sensorAddress4 = {0x28, 0xFF, 0x64, 0x6F, 0x92, 0x16, 0x04, 0x0C};
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
dht.begin();
sensors.begin();
sensors.setResolution(sensorAddress1, 10);
sensors.setResolution(sensorAddress2, 10);
sensors.setResolution(sensorAddress3, 10);
sensors.setResolution(sensorAddress4, 10);
}
void loop() {
float temperature_ds18b20[4]; // Simpan data dari 4 sensor DS18B20
float humidity, soundLevel, airflow;
// Baca data dari 4 sensor DS18B20 yang berbeda alamat
sensors.requestTemperatures();
temperature_ds18b20[0] = sensors.getTempC(sensorAddress1);
temperature_ds18b20[1] = sensors.getTempC(sensorAddress2);
temperature_ds18b20[2] = sensors.getTempC(sensorAddress3);
temperature_ds18b20[3] = sensors.getTempC(sensorAddress4);
// Baca data sensor K-Type MAX6675
float temperature_max6675 = thermocouple.readCelsius();
// Baca data sensor kelembaban DHT22
humidity = dht.readHumidity();
// Baca data sensor suara analog
soundLevel = analogRead(32) / 10.0; // Ganti pin jika perlu
// Baca data sensor airflow analog
airflow = analogRead(33) / 10.0; // Ganti pin jika perlu
// Kirim data ke ThingSpeak
ThingSpeak.setField(1, temperature_ds18b20[0]);
ThingSpeak.setField(2, temperature_ds18b20[1]);
ThingSpeak.setField(3, temperature_ds18b20[2]);
ThingSpeak.setField(4, temperature_ds18b20[3]);
ThingSpeak.setField(5, temperature_max6675);
ThingSpeak.setField(6, humidity);
ThingSpeak.setField(7, soundLevel);
ThingSpeak.setField(8, airflow);
int response = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (response == 200) {
Serial.println("Data Terkirim ke ThingSpeak");
} else {
Serial.println("Gagal Mengirim Data ke ThingSpeak");
}
delay(15000); // Delay sebelum pengiriman data berikutnya
}