7. Soğuk Zincir Alarmı
DS18B20 sıcaklığını izleyin. PxServ’deki maksimum sıcaklık eşiği aşılırsa buzzer’ı etkinleştirip alarm durumunu gönderin.
Seviye: Orta · Süre: 45 dakika
Kapsam uyarısı
Bu proje eğitim amaçlıdır; gıda, ilaç veya yasal izlenebilirlik gerektiren soğuk zincirlerde kalibre cihaz, kesintisiz kayıt, bağımsız alarm ve doğrulanmış süreç gerekir.
Gerekenler ve bağlantılar
- ESP32, DS18B20, 4,7 kΩ direnç, aktif buzzer
- OneWire ve DallasTemperature kütüphaneleri
| Parça | ESP32 |
|---|---|
| DS18B20 DQ | GPIO 4; DQ ile 3V3 arasına 4,7 kΩ |
| DS18B20 VDD / GND | 3V3 / GND |
| Buzzer SIG | GPIO 23 |
Tam kod
#include <PxServ.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const char* WIFI_SSID = "wifi_ssid";
const char* WIFI_PASSWORD = "wifi_sifre";
const char* PXSERV_API_KEY = "pxserv_api_anahtariniz";
const int ONE_WIRE_PIN = 4;
const int BUZZER_PIN = 23;
PxServ client(PXSERV_API_KEY);
OneWire oneWire(ONE_WIRE_PIN);
DallasTemperature sensors(&oneWire);
float maxTemperature = 8.0;
void setup() {
Serial.begin(115200);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
sensors.begin();
PxServ::connectWifi(WIFI_SSID, WIFI_PASSWORD);
}
void loop() {
PxServ::Callback threshold = client.getData("soguk-zincir/maksimum");
if (threshold.status == 200) maxTemperature = threshold.data.toFloat();
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
if (temperature == DEVICE_DISCONNECTED_C) {
digitalWrite(BUZZER_PIN, HIGH);
client.setData("soguk-zincir/durum", "sensor-hatasi");
delay(5000);
return;
}
bool alarm = temperature > maxTemperature;
digitalWrite(BUZZER_PIN, alarm ? HIGH : LOW);
client.setData("soguk-zincir/sicaklik", String(temperature, 2));
client.setData("soguk-zincir/esik", String(maxTemperature, 1));
client.setData("soguk-zincir/durum", alarm ? "alarm" : "normal");
delay(10000);
}Test
Önce eşiği mevcut oda sıcaklığının altında belirleyerek alarmı, sonra üzerinde belirleyerek normal durumu test edin. Sensörü çıkararak sensor-hatasi durumunun üretildiğini doğrulayın.
Teknik referans: DS18B20 üretici sayfası ve veri sayfası
Son güncelleme