- Arduino kullanarak Otomatik İlaç hatırlatması için Gerekli Bileşenler
- Arduino Circuit kullanarak Arduino Medicine Reminder
- Otomatik İlaç Hatırlatma Sisteminin Çalışması
- Tıp Hatırlatıcısı için Arduino UNO'nun Programlanması
Sevdiklerimize gelince, onları her zaman sağlıklı ve formda tutmak isteriz. Ama hastalanırlarsa ve zamanında ilaç almayı unuturlarsa ne olacak? Endişelenirdik, değil mi? Hastanelerde çok sayıda hasta vardır ve her hastaya zamanında ilaç almasını hatırlatmak zordur. Geleneksel yöntemler, ilaçları zamanında almalarını hatırlatmak için insan çabalarını gerektirir. Dijital çağ bunu takip etmiyor ve bunu yapmak için makineleri kullanabiliriz. Uygulanması Akıllı İlaç Hatırlatma çok geniştir ve hastanelerde hastalar evde, doktorlar tarafından kullanılabilir ve diğer birçok yerlerde. Hatırlatmaya gelince, hatırlatmanın birçok yolu olabilir:
- Bir ekranda göster
- E-posta veya Telefonla bildirim gönderin
- Mobil uygulamaları kullanma
- Buzz alarmı
- Bluetooth / Wi-Fi Kullanımı
- Çağrı almak
- Şimdiki zamanı hatırlatırken bir sonraki ilaç zamanını hatırlat
İhtiyaca göre yolları birleştirebiliriz. Burada işleri basitleştirmek için Arduino'yu kullanarak günde 1 veya 2 veya 3 kez ilaç almamızı hatırlatan basit bir İlaç Hatırlatıcısı yaptık. Zaman aralığı, butonlar kullanılarak seçilebilir. Ayrıca geçerli Tarih ve Saati gösterir. Bunu, kullanıcıya bir e-posta veya SMS bildiriminin gönderileceği bir IoT projesi gelen makalelere daha da genişleteceğiz. Bu ilaç hatırlatıcı, Hasta İzleme Sistemi ile de entegre edilebilir.
Arduino kullanarak Otomatik İlaç hatırlatması için Gerekli Bileşenler
- Arduino Uno (Pro mini, Nano gibi diğer Arduino kartlarını da kullanabiliriz)
- RTC DS3231 modülü
- 16x2 LCD Ekran
- Buzzer
- Led (herhangi bir renk)
- Breadboard
- Basma Düğmeleri
- 10K Potansiyometre
- 10K, 1K Dirençler
- Atlama Telleri
Arduino Circuit kullanarak Arduino Medicine Reminder
Arduino kullanarak akıllı bir ilaç kutusu oluşturmak için eksiksiz devre şeması aşağıda gösterilmiştir.
Aşağıda Arduino'nun farklı çevre birimleriyle pin bağlantıları verilmiştir.
Arduino Pimleri Çevresel Pimler
- 2 -----------------------------> 16x2 LCD Ekranın D7'si
- 3 -----------------------------> 16x2 LCD Ekrandan D6
- 4 -----------------------------> 16x2 LCD Ekranın D5'i
- 5 -----------------------------> 16x2 LCD Ekranın D4'ü
- 7 -----------------------------> 3. basma düğmesi
- 8 -----------------------------> 2. basma düğmesi
- 9 -----------------------------> 1. basma düğmesi
- 11 -----------------------------> 16x2 LCD Ekranın EN pini
- 12 -----------------------------> 16x2 LCD Ekranın RS pini
- 13 -----------------------------> + Ve Buzzer ve Led Pimi
- A0 -----------------------------> Düğmeyi Durdur
- A4 -----------------------------> DS3231'in SDA'sı
- A5 -----------------------------> DS3231'in SCL'si
- 3.3V -----------------------------> DS3231'in Vcc'si
- Gnd -----------------------------> Gnd
Bu Tıp Hatırlatma Projesinde, RTC DS3231, Arduino Uno ile I2C protokolü aracılığıyla arayüzlenir. Arduino ile zamanı okumak için de RTC IC DS1307'yi kullanabilirsiniz. RTC DS3231 ayrıca ek verileri depolamak için kullanılabilen dahili 32k belleğe sahiptir. RTC modülü, Arduino uno'nun 3.3V pininden güç alır. SPI kullanılarak 16x2 LCD ekran arabirimlenir. İlaç alma zamanının geldiğini uyarmak ve hatırlatmak için bir vızıltı kullanılır. Her birinin farklı seçme özelliğine sahip olduğu dört basma düğmesi kullanılır. İlk basma düğmesi günde bir kez ilaç almayı hatırlatmak için kullanılır. İkinci düğme, günde iki kez hatırlatmak için kullanılır ve üçüncü düğme, günde üç kez hatırlatmak için kullanılır. Dördüncü basma düğmesi, kullanıcı uyarıyı duyduğunda sesli uyarıyı durdurmak için kullanılır.
Otomatik İlaç Hatırlatma Sisteminin Çalışması
Hap Hatırlatma Alarm 5V kaynağı kullanarak desteklenmektedir. İlk açıldığında, " Circuit Digest'e Hoş Geldiniz " olarak bir karşılama masajı gösterir. LCD ekran, üç ekranda dönecek şekilde ayarlanmıştır. 1 st ekranda “olarak masaj Yakında Geçmiş Olsun, Sağlıklı Kalın ”. İkinci ekran, hatırlatılacak herhangi bir zaman aralığını (günde bir / iki / üç kez) seçmek için seç düğmesine basılmasını söyleyen bir yardım ekranıdır. Zaman dilimi programda değiştirilebilir ve buna göre yapılandırılabilir. Şu anda bunu üç süreye sabitledik, yani sabah 8, akşam 2 ve akşam 8.
Zaman aralıklarını üç moda ayırdık. Mod 1 seçer kez / gün 8 am kullanıcı presler 1 saatte ilaç almak için st basma düğmesi. Mod 2, kullanıcı 2. düğmeye bastığında sabah 8 ve akşam 8'de günde iki kez ilaç almayı seçer. Mod 3, kullanıcı 3. düğmeye basarsa ilacı günde üç kez sabah 8, akşam 2 ve akşam 8'de almayı seçer.
Zil sesini 10 dakika erteleme özelliği de ekleyebiliriz (bu projeye dahil değildir). Kullanıcı butonlara basarak istediği yuvaları seçtiğinde, kullanıcı girişi kaydedilir ve zaman RTC'den alınır. Zaman, seçilen zaman aralığı ile eşleştiğinde, zil çalmaya başlar. Kullanıcı, DURDUR düğmesine basarak sesli uyarıyı durdurabilir. Aynı işlem bir sonraki yuva hatırlatıcısı için devam eder. Komple süreç gösterilmiştir video bu aricle sonunda verilen.
Tıp Hatırlatıcısı için Arduino UNO'nun Programlanması
Hapları almayı hatırlatmanın yollarını düşündüğünüzde program yazmak çok kolaydır. Burada hatırlatıcıyı ekranda gösterecek, bir zil sesi çıkaracak ve LED kullanarak bunu gösterecektir. Aynı zamanda üç zaman dilimi seçme seçeneğine de sahiptir (günde bir / iki / üç kez) ve zaman geldiğinde hastayı zil sesiyle uyarmaya başlar. Daha sonra tüm sistem aşağıdaki gibi görünecektir:
Kullanıcı, ekrandaki yardım talimatlarını alır> Kullanıcı, zaman aralıklarını seçer (bir kez / günde, iki kez / günde, üç kez / gün)> Ekrandaki onay mesajını yazdır> Zaman tutma başladı> Buzzer ve zaman, kullanıcının seçtiği yuvayla eşleştiğinde LED başlar> Kullanıcı durur bir durdurma düğmesine basmak> Bitir
Daha fazla özellik eklemek istersek programı ve donanımı değiştirebiliriz. Çok daha basit bir şekilde anlamak için programı küçük işlevlere ayırdık. Fonksiyonların anlaşılması ve uygulanması kolaydır. Programın tamamı bu projenin sonunda verilmiştir. Programla başlayalım.
16x2 LCD Ekran, RTC DS3231 gibi diğer çevre birimlerini kullandığımızdan beri, öncelikle bunun için kitaplıkları dahil etmeliyiz. Gerekli kütüphane aşağıdaki gibidir:
EEPROM kitaplığı, Arduino açık değilse kullanıcı seçim girişinin kaydını tutmak için kullanılır. Ve kullanıcı Arduino'yu açtığında, EEPROM kütüphanesini kullanarak önceki butonların durumunu alır. Wire.h kitaplığı, RTC DS3231 modülü I2C kullanılarak iletildiği için kullanılır.
RTC, tüm hatırlatma sisteminin zaman tutmasında önemli bir rol oynayacağından , RTC'nin doğru kablolanıp bağlanmadığını her zaman kontrol edin.
if (! rtc.begin ()) {// rtc'nin Serial.println'e bağlı olup olmadığını kontrol edin ("RTC bulunamadı"); while (1); } if (rtc.lostPower ()) { Serial.println ("RTC güç kaybetti, zamanı ayarlayalım!"); }
Zaman ayarı, sistem derleme zamanı kullanılarak otomatik olarak veya manuel olarak girilerek iki şekilde yapılabilir. Saati ayarladıktan sonra, RTC zamanını tekrar değiştirmek istemiyorsanız aşağıdaki satırları yorumlayın.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Bu anahtar ifadesi, basma düğmesinin önceden kaydedilmiş durumunu okumak ve durumu uygun ve doğru hatırlatma süresi için sürdürmek için kullanılır.
val2 = EEPROM.read (adres); // daha önce kaldığı yerden başlamak için basma düğmesinin önceden kaydedilmiş değerini oku (val2) { case 1: Serial.println ("1 / gün için ayarla"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; kırmak; durum 2: Serial.println ("Günde 2 olarak ayarla"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; kırmak; durum 3: Serial.println ("3 / gün olarak ayarla"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; kırmak; }
Bu ifade, tanımlanan aralıklı ekran döngüsünün zamanlaması ve kontrolü için kullanılacak milleri elde etmek için kullanılır.
currentMillisLCD = milis (); // tanımlı zaman aralığında LCD ekran geçişi için milis ile başlayın
Basmalı düğmelere bağlı dijital pinleri okumaya başlayın.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Aşağıdaki fonksiyon, düğme durumunu okumak ve EEPROM'a yazmak için kullanılır. Basma düğmesine her basıldığında, durum EEPROM'a yazılır. Ayrıca seçilen kullanıcı giriş seçeneğinin LCD ekranındaki mesajı yazdırır. Benzer şekilde, push2 () ve push3 () işlevleri kullanılır.
void push1 () {// hatırlatıcıyı günde bir kez ayarlama işlevi if (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (adres, 1); Serial.print ("Push1 Yazılı:"); Serial.println (EEPROM.read (addr)); // hata ayıklamak için pushVal = 1; // düğme-1'in durumunu kaydedin lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Hatırlatma seti"); lcd.setCursor (0, 1); lcd.print ("Günde Bir Kez!"); gecikme (1200); lcd.clear (); } }
Buzzer ve ledi durdurmak için aşağıdaki fonksiyon kullanılır. Öneride bulunmak her zaman iyidir. "İlacı ılık suyla alın" ekranında bir öneri mesajı yazdırın.
void stopPins () {// kullanıcı durdur düğmesine bastığında vızıldamayı durduran işlev if (stopinState == 1) { // stopinState = 0; // pushPressed = true; basılmış = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("İlaç Al"); lcd.setCursor (0, 1); lcd.print ("Sıcak Su ile"); gecikme (1200); lcd.clear (); } }
Aşağıdaki işlev, zaman tutmadan bağımsızdır, ancak her zaman kullanıcıya yardımcı olan üç ekranda döner. Hastalara özen gösterdiğimiz için, duygusal desteğin hastaları daha hızlı bir şekilde iyileştirmede çok yardımcı olduğunu bildiğimiz için bir tebrik mesajı yazdıralım. Kendi yaratıcı mesajınızı seçebilirsiniz. Diyelim “yakında Geçmiş olsun, Sağlıklı Kalın” gibi bir mesaj yazdırın.
İkinci ekran hastalara “Hatırlatma için tuşlara basın..” şeklinde talimat vermek içindir. Üçüncü ekran, yalnızca geçerli tarih ve saati göstermek için kullanılır.
void changeScreen () {// Screen Cycling için işlev // Her tanımlı aralıkta ekran geçişini başlatLCD if (currentMillisLCD - previousMillisLCD> intervalLCD) // ekranı en son değiştirdiğiniz zamanı kaydedin { previousMillisLCD = currentMillisLCD; ekranlar ++; eğer (ekranlar> maxScreen) { ekranlar = 0; // tüm ekranlar -> 1.'den başlar } isScreenChanged = true; } // (isScreenChanged) ise mevcut ekranı görüntülemeye başla // sadece ekran değiştirilirse ekranı güncelle. { isScreenChanged = false; // sonraki yineleme anahtarı için sıfırlama (ekranlar) { case getWellsoon: gwsMessege (); // geçmiş olsun mesajı kırmak; durum HELP_SCREEN: helpScreen (); // komut ekranı sonu; durum TIME_SCREEN: timeScreen (); // tarih ve saat arasını yazdırmak için ; varsayılan: // AYARLANMAMALIDIR. kırmak; } } }
Bu fonksiyon, seçilen zamana ulaştıysa , LED'in aynı anda uğultu ve yanıp sönmesini başlatmak için kullanılır.
void startBuzz () {// zaman tanımlı aralığa ulaştığında vızıldamayı başlatmak için işlev // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed is false in flash"); işaretsiz uzun currentMillis = millis (); eğer (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // LED Serial.println'i en son yanıp söndüğünüz zamanı kaydedin ("Buzzing Başlat"); if (ledState == LOW) {// LED kapalıysa açın veya tersini yapın: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("pushpressed true"); ledState = DÜŞÜK; digitalWrite (ledPin, ledState); } }
Bu işlev, kullanıcının seçtiği zaman aralığını 08: 00'da karşılaştırmak için kullanılır ve sesli uyarıyı çalıştırmaya başlar ve kullanıcı durdurma düğmesine basana kadar LED'i yanıp sönmeye başlar. Benzer şekilde, 2pm () 'de geçersiz ve 8 pm'de geçersiz fonksiyonlar zili başlatmak için kullanılır ve 2pm ve 8 pm'de yönlendirilir.
void at8am () {// 08:00 DateTime şimdi void çalmaya başlamak için işlev = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////// /// } } } }
Bu, Arduino'yu kullanarak kendi Otomatik İlaç Hatırlatıcınızı kolayca yapabilirsiniz. Ayrıca ESP8266'yı, kullanıcıya e-posta uyarısı gönderebilecek bir IoT projesi yapmak için Arduino ile birlikte kullanabilirsiniz.
Tam Kod ve tanıtım Videosu aşağıda verilmiştir.