- Komponen yang Diperlukan untuk pengingat Pengobatan Otomatis menggunakan Arduino
- Pengingat Obat Arduino menggunakan Sirkuit Arduino
- Cara Kerja Sistem Pengingat Obat Otomatis
- Pemrograman Arduino UNO untuk Pengingat Obat
Dalam hal orang yang kita cintai, kita selalu ingin menjaga mereka tetap sehat dan bugar. Tapi apa jadinya jika mereka sakit dan lupa minum obat tepat waktu. Kami akan khawatir, bukan? Di rumah sakit banyak pasien dan sulit mengingatkan setiap pasien untuk minum obat tepat waktu. Cara tradisional membutuhkan upaya manusia untuk mengingatkan agar meminum obat tepat waktu. Era digital tidak mengikuti itu dan kita bisa menggunakan mesin untuk melakukan itu. Aplikasi Smart Medicine Reminder sangat luas dan dapat digunakan oleh pasien di rumah, dokter di rumah sakit, dan di banyak tempat lainnya. Dalam hal mengingatkan, ada banyak cara untuk mengingatkannya:
- Tunjukkan di layar
- Kirim pemberitahuan melalui email atau Telepon
- Menggunakan aplikasi seluler
- Alarm buzz
- Menggunakan Bluetooth / Wi-Fi
- Telepon
- Ingatkan untuk waktu pengobatan berikutnya sambil mengingatkan waktu saat ini
Kita bisa menggabungkan cara tergantung kebutuhan. Untuk mempermudah di sini kami membuat Pengingat Obat sederhana menggunakan Arduino yang mengingatkan kita untuk minum obat 1 atau 2 atau 3 kali sehari. Slot waktu dapat dipilih dengan menggunakan tombol tekan. Juga, ini menunjukkan Tanggal dan Waktu saat ini. Kami selanjutnya akan memperluasnya ke artikel masuk proyek IoT di mana pemberitahuan email atau SMS akan dikirim ke pengguna. Pengingat pengobatan ini juga dapat diintegrasikan dengan Sistem Pemantauan Pasien.
Komponen yang Diperlukan untuk pengingat Pengobatan Otomatis menggunakan Arduino
- Arduino Uno (Kita juga dapat menggunakan papan Arduino lainnya, seperti Pro mini, Nano)
- Modul RTC DS3231
- Layar LCD 16x2
- Bel
- Led (warna apa saja)
- Papan tempat memotong roti
- Tekan tombol
- Potensiometer 10K
- Resistor 10K, 1K
- Kabel Jumper
Pengingat Obat Arduino menggunakan Sirkuit Arduino
Diagram rangkaian lengkap untuk membangun kotak obat pintar menggunakan Arduino ditunjukkan di bawah ini
Di bawah ini adalah koneksi pin Arduino dengan periferal berbeda
Pin Periferal Arduino Pins
- 2 -----------------------------> D7 dari Layar LCD 16x2
- 3 -----------------------------> D6 dari Layar LCD 16x2
- 4 -----------------------------> D5 dari Layar LCD 16x2
- 5 -----------------------------> D4 dari Layar LCD 16x2
- 7 -----------------------------> tombol tekan ke-3
- 8 -----------------------------> tombol tekan ke-2
- 9 -----------------------------> tombol tekan pertama
- 11 -----------------------------> Pin EN Layar LCD 16x2
- 12 -----------------------------> Pin RS dari Layar LCD 16x2
- 13 -----------------------------> + V Pin Buzzer dan Led
- A0 -----------------------------> Hentikan Tombol Tekan
- A4 -----------------------------> SDA dari DS3231
- A5 -----------------------------> SCL dari DS3231
- 3.3V -----------------------------> Vcc dari DS3231
- Gnd -----------------------------> Gnd
Dalam Proyek Pengingat Obat ini, RTC DS3231 dihubungkan melalui protokol I2C dengan Arduino Uno. Anda juga dapat menggunakan IC RTC DS1307 untuk membaca waktu dengan Arduino. RTC DS3231 juga memiliki memori 32k inbuilt yang dapat digunakan untuk menyimpan data tambahan. Modul RTC didukung melalui pin 3.3V Arduino uno. Layar LCD 16x2 dihubungkan menggunakan SPI. Sebuah buzze r digunakan untuk waspada dan mengingatkan bahwa sudah waktunya untuk mengambil obat. Empat tombol tekan digunakan di mana masing-masing memiliki fitur pemilihan yang berbeda. Tombol tekan pertama digunakan untuk mengingatkan minum obat sekali sehari. Tombol tekan kedua digunakan untuk mengingatkan dua kali sehari dan tombol ketiga digunakan untuk mengingatkan tiga kali sehari. Tombol tekan keempat digunakan untuk menghentikan bel ketika pengguna telah mendengar peringatan.
Cara Kerja Sistem Pengingat Obat Otomatis
The Pill Alarm Pengingat dinyalakan menggunakan pasokan 5V. Saat pertama kali boot, itu menunjukkan pijatan selamat datang sebagai " Selamat Datang di Circuit Digest ". Layar LCD diatur untuk berputar dalam tiga layar. 1 st layar menunjukkan pijat sebagai “ Tetap Sehat, Get Well Soon ”. Layar kedua adalah layar bantuan yang memberitahu untuk menekan tombol tekan pilih untuk memilih satu slot waktu untuk mengingatkan (sekali / dua kali / tiga kali dalam sehari). Slot waktu dapat diubah dalam program dan dapat dikonfigurasi dengan sesuai. Saat ini kami telah memperbaikinya menjadi tiga durasi yaitu 8am, 2pm, dan 8pm.
Kami telah membagi slot waktu menjadi tiga mode. Mode 1 menyeleksi minum obat sekali / hari di 8:00 ketika pengguna menekan 1 st tombol push. Mode 2 menyeleksi minum obat dua kali / hari pada 08:00 dan 20:00 saat pengguna menekan 2 nd menekan tombol. Mode 3 menyeleksi minum obat tiga kali / hari pada 08:00, 14:00 dan 08:00 jika pengguna menekan 3 rd tombol push.
Kami juga dapat menambahkan fitur untuk menunda bel selama 10 menit (tidak termasuk dalam proyek ini). Ketika pengguna memilih slot yang diinginkan dengan menekan tombol tekan, input pengguna direkam dan waktu diambil dari RTC. Ketika waktu sudah cocok dengan slot waktu yang dipilih maka bel mulai berdengung. Pengguna dapat menghentikan bel dengan menekan tombol STOP. Proses yang sama berlanjut untuk pengingat slot berikutnya. Proses lengkap ditampilkan dalam Video yang diberikan di akhir aricle ini.
Pemrograman Arduino UNO untuk Pengingat Obat
Sangat mudah untuk menulis program setelah Anda memikirkan cara-cara untuk mengingatkan Anda untuk meminum pil. Di sini ini akan menunjukkan pengingat yang dipajang, mendengung bel dan menunjukkannya menggunakan LED. Ini juga memiliki opsi untuk memilih tiga slot waktu (sekali / dua kali / tiga kali per hari) dan ketika waktu mencapai itu mulai mengingatkan pasien dengan mendengung bel. Maka keseluruhan sistem akan terlihat seperti berikut:
Pengguna mendapat petunjuk bantuan pada tampilan> Pengguna memilih slot waktu (sekali / hari, dua kali / hari, tiga kali / hari)> Cetak pesan konfirmasi pada tampilan> Pencatatan waktu dimulai> Buzzer dan LED dimulai ketika waktu sesuai dengan slot yang dipilih pengguna> Pengguna berhenti dengan menekan tombol tekan stop> End
Kita bisa mengganti program dan hardware jika ingin menambah fitur. Untuk memahami dengan cara yang lebih sederhana, kami telah memecah program menjadi fungsi-fungsi kecil. Fungsinya mudah dipahami dan diterapkan. Program lengkap diberikan di akhir proyek ini. Mari kita mulai dengan programnya.
Karena, kami telah menggunakan periferal lain seperti Layar LCD 16x2, RTC DS3231, jadi pertama-tama kami harus menyertakan pustaka f atau itu. Perpustakaan yang dibutuhkan adalah sebagai berikut:
Perpustakaan EEPROM digunakan untuk melacak input pilihan pengguna jika Arduino tidak dihidupkan. Dan ketika pengguna menyalakan Arduino itu mendapatkan keadaan tombol push sebelumnya menggunakan pustaka EEPROM. Library Wire.h digunakan sejak modul RTC DS3231 dikomunikasikan menggunakan I2C.
Selalu periksa apakah RTC terhubung dengan benar atau tidak rusak, karena RTC akan memainkan peran penting dalam menjaga waktu seluruh sistem pengingat.
if (! rtc.begin ()) {// periksa apakah rtc terhubung Serial.println ("Tidak dapat menemukan RTC"); sementara (1); } if (rtc.lostPower ()) { Serial.println ("RTC kehilangan daya, mari atur waktu!"); }
Penyesuaian waktu dapat dilakukan dengan dua cara, baik secara otomatis menggunakan waktu kompilasi sistem maupun dengan memasukkannya secara manual. Setelah kami mengatur waktu, komentari baris di bawah ini kecuali Anda ingin mengubah waktu RTC lagi.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Ini pernyataan switch digunakan untuk membaca keadaan disimpan sebelumnya dari tombol push dan melanjutkan negara untuk waktu pengingat yang tepat dan akurat.
val2 = EEPROM.read (addr); // baca nilai yang telah disimpan sebelumnya dari tombol tekan untuk memulai dari tempatnya sebelumnya beralih (val2) { case 1: Serial.println ("Set for 1 / day"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; istirahat; case 2: Serial.println ("Setel untuk 2 / hari"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; istirahat; case 3: Serial.println ("Setel untuk 3 / hari"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; istirahat; }
Pernyataan ini digunakan untuk mendapatkan milidetik yang akan digunakan untuk pengaturan waktu dan kontrol siklus layar interval yang ditentukan.
currentMillisLCD = milis (); // mulai milis untuk peralihan layar LCD pada interval waktu yang ditentukan
Mulailah membaca pin digital yang terhubung ke tombol tekan.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Fungsi di bawah ini digunakan untuk membaca status tombol tekan dan menuliskannya ke EEPROM. Setiap kali tombol tekan ditekan, status ditulis ke EEPROM. Juga mencetak pesan pada layar LCD dari pilihan input pengguna yang dipilih. Demikian pula fungsi push2 () dan push3 () digunakan.
void push1 () {// berfungsi untuk menyetel reminder sekali / hari jika (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // untuk men- debug pushVal = 1; // simpan status tombol tekan-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Reminder set"); lcd.setCursor (0, 1); lcd.print ("untuk Sekali / hari!"); penundaan (1200); lcd.clear (); } }
Fungsi di bawah ini digunakan untuk menghentikan bel dan led. Itu selalu bagus untuk memberi saran. Cetak pesan saran pada tampilan “Minum obat dengan air hangat”.
void stopPins () {// berfungsi untuk menghentikan dengungan saat pengguna menekan tombol stop push if (stopinState == 1) { // stopinState = 0; // pushPressed = true; ditekan = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Minum Obat"); lcd.setCursor (0, 1); lcd.print ("dengan Air Hangat"); penundaan (1200); lcd.clear (); } }
Fungsi di bawah ini tidak tergantung pada pencatat waktu tetapi selalu berputar dalam tiga layar yang membantu pengguna. Karena kami menjaga pasien, mari kita cetak pesan ucapan selamat karena kita tahu bahwa dukungan emosional sangat membantu dalam penyembuhan pasien dalam waktu yang lebih cepat. Anda dapat memilih pesan kreatif Anda sendiri. Mari kita cetak pesan sebagai "Tetap sehat, cepat sembuh".
Layar kedua adalah untuk memberikan instruksi kepada pasien sebagai "Tekan tombol untuk pengingat..". Layar Ketiga digunakan untuk menunjukkan tanggal dan waktu saat ini.
void changeScreen () {// berfungsi untuk Screen Cycling // Mulai berpindah layar setiap intervalLCD yang ditentukan if (currentMillisLCD - beforeMillisLCD> intervalLCD) // simpan terakhir kali Anda mengubah tampilan { beforeMillisLCD = currentMillisLCD; layar ++; if (screens> maxScreen) { screens = 0; // semua layar berakhir -> mulai dari pertama } isScreenChanged = true; } // Mulai tampilkan layar saat ini jika (isScreenChanged) // hanya perbarui layar jika layar diubah. { isScreenChanged = false; // setel ulang untuk sakelar iterasi berikutnya (layar) { case getWellsoon: gwsMessege (); // semoga cepat sembuh pesan istirahat; kasus HELP_SCREEN: helpScreen (); // instruksi jeda layar ; kasus TIME_SCREEN: timeScreen (); // untuk mencetak tanggal dan waktu istirahat; default: // TIDAK SET. istirahat; } } }
Fungsi ini digunakan untuk mulai mendengung dan mengedipkan LED secara bersamaan jika waktu yang dipilih telah tercapai.
void startBuzz () {// berfungsi untuk mulai berdengung ketika waktu mencapai interval yang ditentukan // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed is false in blink"); currentMillis panjang unsigned = millis (); jika (currentMillis - priorMillis> = interval) { priorMillis = currentMillis; // simpan terakhir kali Anda mengedipkan LED Serial.println ("Start Buzzing"); if (ledState == LOW) {// jika LED mati hidupkan dan sebaliknya: ledState = HIGH; } lain { ledState = LOW; } digitalWrite (ledPin, ledState); } } lain jika (pushpressed == 1) { Serial.println ("pushpressed benar"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Fungsi ini digunakan untuk membandingkan slot waktu yang dipilih pengguna pada pukul 8 pagi dan mulai mendengung bel dan mengedipkan LED hingga pengguna menekan tombol tekan berhenti. Demikian pula fungsi void at2pm () dan void at8pm digunakan untuk memulai buzzer dan memimpin pada 2pm dan 8pm.
void at8am () {// berfungsi untuk mulai berdengung pada 8am DateTime now = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////// /// } } } }
Ini adalah bagaimana Anda bisa membuat Pengingat Obat Otomatis Anda sendiri menggunakan Arduino. Anda juga dapat menggunakan ESP8266 dengan Arduino untuk menjadikannya proyek IoT yang akan dapat mengirim peringatan email kepada pengguna.
Kode Lengkap dan Video demonstrasi diberikan di bawah ini.