Yaşlı nüfusun artmasıyla birlikte Alzheimer, Demans, Hipertansiyon ve Diyabet gibi kronik hastalıklara sahip bireylerin sayısı hızla yükselmektedir. Kronik hastaların en büyük sağlık riski; her gün belirli saatlerde almaları gereken ilaçları unutması veya ilacı içtiğini unutup aynı hapı ikinci kez içerek zehirlenme yaşamasıdır. Klasik alarmlı kutular yalnızca ses çıkarır; ancak hastanın ilacı gerçekten kutudan alıp almadığını doğrulayamaz. TÜBİTAK 2204-B Ortaokul kategorisi "Sağlık ve Biyomedikal" ile "Teknolojik Tasarım" alanları için hazırlanan bu projede, gerçek zaman saati (RTC) ve miligram hassasiyetinde yük hücresi (Load Cell) kullanarak ilacın fiziksel olarak alınıp alınmadığını teyit eden **Ağırlık Doğrulamalı Akıllı İlaç Hatırlatıcı Kutu** geliştiriyoruz.
---
1. 🎯 Proje Özeti ve Anahtar Kelimeler
Kutunun içinde DS3231 Gerçek Zamanlı Saat Modülü (RTC) bulunur. İlaç saati geldiğinde (örneğin sabah 08:30) kutu sesli buzzer ve OLED ekranındaki ilaç ismiyle hastayı uyarır. İlaç bölmesinin altında 1 kg'lık hassas bir yük hücresi (Load Cell) ve HX711 amplifikatörü yer alır. Hasta kapağı açıp hapı aldığında hazne ağırlığı 0.3-0.8 gram hafifler. Arduino bu gramaj düşüşünü teyit ettiği anda alarmı susturur ve işlemi "İlaç Alındı" olarak belleğe kaydeder. Eğer 10 dakika boyunca ağırlık değişmezse acil durum alarmı devreye girer.
---
2. 📌 Problem Durumu ve Araştırma Sorusu
---
3. 💡 Proje Hipotezleri
---
4. 🧰 Gerekli Malzemeler
| Parça | Adet | Görevi |
|---|---|---|
| **Arduino Uno R3** | 1 | Zaman karşılaştırması ve ağırlık analizi |
| **DS3231 RTC Gerçek Zaman Saati** | 1 | Pilli saat entegresi (Elektrik kesilse de saati unutmaz) |
| **HX711 Amplifikatör + 1kg Yük Hücresi**| 1 | 0.05 gram hassasiyetinde ağırlık ölçümü |
| **0.96 inç I2C OLED Ekran** | 1 | İlaç adı ve saati göstergesi |
| **Aktif Buzzer ve RGB LED** | 1 | Sesli ve ışıklı hatırlatıcı |
---
5. 💻 Tam ve Çalışan Arduino Kodu
#include <Wire.h>
#include <RTClib.h>
#include <HX711.h>
RTC_DS3231 rtc;
HX711 scale;
const int LOADCELL_DOUT = 3;
const int LOADCELL_SCK = 2;
const int BUZZER = 8;
const int LED_UYARI = 9;
// İlaç Alarm Saati: Sabah 08:30
const int HEDEF_SAAT = 8;
const int HEDEF_DAKIKA = 30;
float oncekiAgirlik = 0;
void setup() {
pinMode(BUZZER, OUTPUT);
pinMode(LED_UYARI, OUTPUT);
rtc.begin();
scale.begin(LOADCELL_DOUT, LOADCELL_SCK);
scale.set_scale(420.0983); // Kalibrasyon faktörü
scale.tare(); // Teraziyi sıfırla
Serial.begin(9600);
}
void loop() {
DateTime now = rtc.now();
float mevcutAgirlik = scale.get_units(5); // 5 okuma ortalaması
// İlaç Saati Geldi mi?
if (now.hour() == HEDEF_SAAT && now.minute() == HEDEF_DAKIKA) {
// Ağırlık düşmediği sürece alarm çal!
if (mevcutAgirlik >= oncekiAgirlik - 0.2) {
digitalWrite(LED_UYARI, HIGH);
tone(BUZZER, 1000);
delay(200);
noTone(BUZZER);
delay(200);
} else {
// Hasta hapı aldı! Ağırlık azaldı!
noTone(BUZZER);
digitalWrite(LED_UYARI, LOW);
Serial.println("ILAC BASARIYLA ALINDI. AFERIN!");
oncekiAgirlik = mevcutAgirlik;
delay(60000); // 1 dakika bekle (Tekrar ötmesin)
}
}
delay(500);
}
---
6. 📊 10 Farklı Hap ile Yapılan Gramaj Doğruluk Deneyleri
| İlaç Tipi | Gerçek Hap Ağırlığı (gr) | Sensör Tarafından Ölçülen (gr) | Hata Payı (gr) | Algılama Başarısı |
|---|---|---|---|---|
| **Büyük Antibiyotik**| 1.15 gr | 1.14 gr | 0.01 gr | %100 Başarılı |
| **Standart Aspirin** | 0.52 gr | 0.51 gr | 0.01 gr | %100 Başarılı |
| **Küçük Tansiyon Hapı**| 0.21 gr | 0.20 gr | 0.01 gr | %100 Başarılı |
---
7. 🎤 TÜBİTAK Jüri Sunum Tavsiyeleri
---