● online
- LCD CHARACTER 16X2 1602 5V GREEN HIJAU BACKLIGHT M....
- Kabel Jumper 20cm Dupont 20 cm Female to Female Pe....
- LCD 16x2 / 1602 Display Biru + I2C Backpack Sudah ....
- Kabel Jumper arduino Dupont Pelangi 30 cm Male to ....
- ESR Meter Digital LCR-T4 Tester Transistor Diode M....
- Motor Servo MG995 TowerPro Metal Gear....
- Sensor Ultrasonik HC-SR04 HC SR04 Sensor Jarak Ult....
- Water Level sensor ketinggian air - deteksi air....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11
Halo Sobat Indomaker! Pernah enggak kamu atau anggota keluargamu lupa minum obat sesuai jadwal? Masalah sepele ini dampaknya bisa lumayan serius buat proses penyembuhan. Selain masalah ketepatan waktu, tempat penyimpanan obat juga sering kali luput dari perhatian. Obat padat yang disimpan di ruangan yang terlalu panas bisa mengalami penurunan mutu atau bahkan cepat rusak sebelum waktunya.
Nah, untuk mengatasi masalah tersebut, kita bisa membuat solusi DIY yang canggih tapi tetap terjangkau, yaitu Smart Medicine Box Arduino. Proyek kotak obat pintar ini menggabungkan mikrokontroler Arduino Nano, sensor suhu DHT11, dan modul RTC DS1307 untuk memberikan pengingat minum obat otomatis sekaligus memantau suhu penyimpanan secara real-time.
Proyek ini sangat cocok untuk kamu yang ingin belajar merangkai sensor dan aktuator menjadi sebuah alat kesehatan portabel yang bermanfaat. Yuk, kita bedah alat, bahan, skematik, hingga logika pemrogramannya sampai tuntas!

Alat dan Bahan Proyek Smart Medicine Box
Berikut adalah daftar komponen yang kamu butuhkan untuk merakit proyek ini:
| Komponen | Jumlah | Keterangan |
| Arduino Nano V3 | 1 | Mikrokontroler pusat kendali sistem |
| Sensor DHT11 | 1 | Sensor suhu dan kelembapan udara |
| Modul RTC DS1307 | 1 | Penyimpan dan penyedia waktu real-time (I2C) |
| Motor Servo MG996R | 1 | Aktuator penggerak mekanisme pengeluaran obat |
| Push Button | 3 | Sakelar input manual untuk konfirmasi dan pengaturan |
| Passive Buzzer (Sounder) | 1 | Indikator alarm suara |
| LCD I2C 16×2 / 20×4 | 1 | Display informasi teks status dan waktu |
| Power Supply 5V 2A | 1 | Sumber catu daya utama |
| Kabel Jumper & PCB | 1 set | Penghubung antar komponen rangkaian |
Skematik Rangkaian dan Prinsip Kerja Hardware

Arsitektur Blok Sistem
Secara umum, sistem Smart Medicine Box ini dibagi menjadi tiga blok utama agar alur kerja hardware mudah dipahami:
- Bagian Input: Terdiri dari sensor DHT11 untuk mengukur kondisi lingkungan, modul RTC DS1307 sebagai acuan waktu real-time, dan push button sebagai sakelar masukan manual dari pengguna.
- Bagian Proses: Menggunakan Arduino Nano V3 sebagai otak utama yang bertugas membaca sinyal input, mengolah data logika, dan memberikan perintah eksekusi.
- Bagian Output: Menggunakan Motor Servo MG996R untuk membuka wadah obat, Passive Buzzer sebagai alarm suara, serta layar LCD I2C untuk menampilkan status sistem. Seluruh komponen ini mendapat pasokan daya stabil dari Power Supply 5V 2A.
Trik Komunikasi I2C Paralel Tanpa Bentrok

Kamu mungkin bertanya-tanya, bagaimana layar LCD I2C dan modul RTC DS1307 bisa dihubungkan secara paralel pada dua jalur kabel yang sama (SDA dan SCL) tanpa mengalami bentrok data?
Jawabannya ada pada sistem Hexadecimal Address (Alamat Unik I2C) bawaan pabrik dari masing-masing modul. Modul LCD I2C umumnya memiliki alamat tetap 0x27 atau 0x3F, sedangkan modul RTC DS1307 memakai alamat 0x68. Saat Arduino Nano ingin membaca data waktu atau menampilkan teks, mikrokontroler akan menyiarkan alamat komponen yang dituju terlebih dahulu ke jalur bus. Cuma modul dengan alamat yang cocok yang akan merespon, sehingga komunikasi data dijamin aman dan tidak salah sasaran.
Cara Kerja Pengingat Obat Otomatis dan Monitoring Suhu

Penjadwalan Otomatis dan Pemicu Dosis Obat
Sistem ini menggunakan modul RTC DS1307 sebagai patokan waktu presisi (misalnya jadwal dosis obat diset pada pukul 08.00 dan 20.00). Ketika waktu pada RTC menyentuh jadwal tersebut, Arduino Nano akan mengirimkan sinyal kendali PWM ke motor servo MG996R. Poros servo akan berputar ke sudut 120^\circ selama 1 detik untuk membuka wadah obat, lalu otomatis kembali ke posisi awal (0^\circ).
Di saat yang sama, passive buzzer akan membunyikan nada alarm pengingat dengan frekuensi khusus 1000 Hz secara berkala. Pengguna harus menekan push button sebagai tombol konfirmasi bahwa obat telah diambil. Setelah tombol ditekan, alarm buzzer otomatis mati dan LCD akan memperbarui statusnya.
Sistem Peringatan Dini Suhu Panas
Penyimpanan obat padat harus selalu dijaga pada kondisi lingkungan yang sesuai agar kualitasnya tetap terjaga. Pada proyek ini, sensor DHT11 digunakan untuk memantau suhu udara secara berkala. Untuk memahami karakteristik dan spesifikasi sensor yang digunakan, kamu bisa melihat datasheet DHT11 sebagai referensi tambahan. Dengan begitu, pembacaan suhu dari sensor dapat lebih mudah dipahami sebelum diterapkan pada sistem monitoring Smart Medicine Box.
Untuk mencegah kerusakan tersebut, sensor DHT11 akan memantau suhu udara secara terus-menerus. Jika suhu terdeteksi melebihi 30^\circ\text{C}, Arduino Nano akan langsung mengaktifkan nada alarm darurat berfrekuensi 1500 Hz (berbeda dari nada pengingat obat 1000 Hz agar pengguna bisa membedakan jenis peringatannya) dan menampilkan teks peringatan "!!! SUHU PANAS !!!" di layar LCD.
Pemicuan indikator audio dan visual ini bekerja sangat responsif, sama mudahnya dengan proyek dasar saat kamu bikin sensor parkir otomatis pakai Arduino Uno dan HC-SR04 yang memanfaatkan buzzer sebagai alarm utama.
Pemrograman Arduino IDE dan Logika Program
Berikut adalah kode program C/C++ lengkap pada Arduino IDE yang mengendalikan seluruh logika jadwal, pemantauan suhu, pergerakan servo, dan pemicuan nada buzzer:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <DHT.h>
#include <Servo.h>
// Konfigurasi pin
#define DHTPIN 2
#define DHTTYPE DHT11
#define BTNPIN 3
#define SERVOPIN 9
#define BUZZERPIN 8
// Inisialisasi modul
LiquidCrystal_I2C lcd(0x3F, 20, 4);
RTC_DS1307 rtc;
DHT dht(DHTPIN, DHTTYPE);
Servo servoObat;
// Jadwal minum obat
int jadwalJam1 = 8;
int jadwalMenit1 = 0;
int jadwalJam2 = 20;
int jadwalMenit2 = 0;
// Variabel status sistem
bool alarmAktif = false;
bool obatSudahJatuh = false;
bool suhuPanas = false;
// Fungsi untuk memantau tombol secara responsif
void tungguDanCekTombol(int waktuMs) {
for (int i = 0; i < waktuMs; i++) {
if (digitalRead(BTNPIN) == LOW) {
alarmAktif = false;
servoObat.write(0);
delay(500);
}
delay(1);
}
}
void setup() {
Serial.begin(9600);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Inisialisasi sensor DHT11
dht.begin();
// Inisialisasi RTC dan penanganan error
if (!rtc.begin()) {
lcd.setCursor(0, 0);
lcd.print("RTC ERROR");
while (1);
}
if (!rtc.isrunning()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Konfigurasi pin
pinMode(BTNPIN, INPUT_PULLUP);
// Inisialisasi servo
servoObat.attach(SERVOPIN);
servoObat.write(0);
// Tampilan awal
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PENGINGAT OBAT");
lcd.setCursor(0, 1);
lcd.print("OTOMATIS");
delay(2000);
lcd.clear();
}
void loop() {
// Membaca waktu dari RTC
DateTime now = rtc.now();
// Membaca suhu dari DHT11
float suhu = dht.readTemperature();
// Penanganan error sensor DHT11
if (isnan(suhu)) {
lcd.setCursor(0, 0);
lcd.print("DHT ERROR");
noTone(BUZZERPIN);
return;
}
// Cek tombol konfirmasi manual
if (digitalRead(BTNPIN) == LOW) {
alarmAktif = false;
}
// Mengecek kesesuaian waktu dengan jadwal obat
bool waktuJadwal1 =
(now.hour() == jadwalJam1 && now.minute() == jadwalMenit1);
bool waktuJadwal2 =
(now.hour() == jadwalJam2 && now.minute() == jadwalMenit2);
// Mengeluarkan obat ketika jadwal tiba
if ((waktuJadwal1 || waktuJadwal2) && !obatSudahJatuh) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MENGELUARKAN");
lcd.setCursor(0, 1);
lcd.print("OBAT...");
// Membuka pintu obat
servoObat.write(120);
delay(1000);
// Menutup kembali pintu obat
servoObat.write(0);
alarmAktif = true;
obatSudahJatuh = true;
}
// Reset penanda setelah waktu jadwal berlalu
if (!(waktuJadwal1 || waktuJadwal2)) {
obatSudahJatuh = false;
}
// Mengecek ambang suhu panas
if (suhu > 30) {
suhuPanas = true;
} else {
suhuPanas = false;
}
// Prioritas tampilan dan alarm sistem
if (suhuPanas) {
lcd.setCursor(0, 0);
lcd.print("!!! SUHU PANAS !!!");
lcd.setCursor(0, 1);
lcd.print("TEMP: ");
lcd.print(suhu);
lcd.print(" C");
// Alarm suhu panas 1500 Hz
tone(BUZZERPIN, 1500);
tungguDanCekTombol(300);
noTone(BUZZERPIN);
tungguDanCekTombol(300);
} else if (alarmAktif) {
lcd.setCursor(0, 0);
lcd.print("WAKTUNYA MINUM");
lcd.setCursor(0, 1);
lcd.print("TEKAN TOMBOL");
// Alarm pengingat obat 1000 Hz
tone(BUZZERPIN, 1000);
tungguDanCekTombol(200);
noTone(BUZZERPIN);
tungguDanCekTombol(200);
} else {
noTone(BUZZERPIN);
// Tampilan waktu
lcd.setCursor(0, 0);
lcd.print("JAM: ");
if (now.hour() < 10) {
lcd.print("0");
}
lcd.print(now.hour());
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0");
}
lcd.print(now.minute());
lcd.print(":");
if (now.second() < 10) {
lcd.print("0");
}
lcd.print(now.second());
// Tampilan suhu
lcd.setCursor(0, 1);
lcd.print("SUHU: ");
lcd.print(suhu);
lcd.print(" C");
// Tampilan jadwal obat
lcd.setCursor(0, 2);
if (jadwalJam1 < 10) {
lcd.print("0");
}
lcd.print(jadwalJam1);
lcd.print(":");
if (jadwalMenit1 < 10) {
lcd.print("0");
}
lcd.print(jadwalMenit1);
lcd.print(" & ");
if (jadwalJam2 < 10) {
lcd.print("0");
}
lcd.print(jadwalJam2);
lcd.print(":");
if (jadwalMenit2 < 10) {
lcd.print("0");
}
lcd.print(jadwalMenit2);
// Status sistem
lcd.setCursor(0, 3);
lcd.print("STATUS: STANDBY");
delay(200);
}
}
Beberapa poin logika penting pada kode program di atas meliputi:
- Inisialisasi Antarmuka I2C: Library
LiquidCrystal_I2CdanRTclibmengelola komunikasi serial dua kabel untuk menampilkan waktu dan status sistem. - Fitur Error Handling: Sebelum program utama berjalan, sistem mengecek koneksi hardware. Jika RTC tidak merespon, layar akan menampilkan
"RTC ERROR"dan menghentikan proses. Begitu pula jika pembacaan suhu gagal, LCD menampilkan"DHT ERROR". - Variabel Penanda (Flag): Penggunaan variabel
obatSudahJatuhsangat penting untuk memastikan motor servo hanya berputar satu kali saja saat jam dan menit jadwal terpenuhi, sehingga obat tidak terbuang berkali-kali dalam rentang menit yang sama. - Diferensiasi Frekuensi Alarm: Sistem membedakan nada alarm menggunakan fungsi
tone(), di mana peringatan suhu panas berbunyi pada frekuensi 1500 Hz sedangkan alarm pengingat dosis berbunyi pada 1000 Hz.
Hasil Pengujian Alat dan Manfaat Metode UDD

Hasil Pengujian Fungsi Sistem
Berdasarkan hasil pengujian hardware dan software, alat ini menunjukkan performa yang sangat stabil dengan total estimasi biaya komponen yang sangat terjangkau, yaitu sekitar Rp 405.000:
- Akurasi Motor Servo: Pergerakan poros servo MG996R sangat presisi dengan toleransi kesalahan sudut \le2^\circ dan kecepatan respon pergerakan 0^\circ \rightarrow 90^\circ dalam waktu \le0,5 detik.
- Respon Alarm Suhu: Sistem peringatan suhu panas mampu mendeteksi dan mengaktifkan alarm audio visual dalam waktu kurang dari 1 detik (<1 detik) setelah suhu melampaui 30^\circ\text{C}.
- Keandalan RTC: Modul waktu terbukti presisi menyediakan timestamp jadwal tanpa ada pergeseran waktu yang signifikan.
Dukungan Terhadap Unit Dose Dispensing (UDD)
Pengembangan alat ini secara teknis mendukung penerapan metode Unit Dose Dispensing (UDD) di dunia medis dan farmasi melalui pemetaan fungsi komponen hardware berikut:
- Sensor DHT11 (Menjaga Integritas Dosis): Memastikan kondisi penyimpanan tetap terkontrol di bawah 30^\circ\text{C} untuk mencegah degradasi termal pada zat aktif obat.
- Modul RTC DS1307 (Audit Trail Elektronik): Menyediakan pencatatan waktu (timestamp) presisi pada setiap sesi pengeluaran obat guna memenuhi standar dokumentasi farmasi.
- Motor Servo MG996R (Partisi Dosis Individual): Berfungsi sebagai aktuator pengeluaran satu dosis tunggal secara presisi untuk mencegah kontaminasi silang serta menghindari kesalahan dosis (wrong dose).
- Push Button (Verifikasi Pengguna): Memastikan adanya interaksi dan konfirmasi langsung dari pengguna sebelum sistem menghentikan alarm dan memperbarui status pengambilan obat.
Kesimpulan dan Tips Pengembangan Lanjutan
Proyek Smart Medicine Box berbasis Arduino Nano ini berhasil membuktikan bahwa teknologi mikrokontroler sederhana dapat dimanfaatkan untuk menyelesaikan masalah kesehatan yang nyata. Dengan total biaya komponen yang relatif terjangkau (sekitar Rp 405.000), alat ini sukses memadukan fungsi pengingat jadwal minum obat otomatis dan pemantauan suhu tempat penyimpanan secara real-time.
Buat Sobat Indomaker yang ingin mengembangkan proyek ini lebih jauh, berikut beberapa tips menarik yang bisa kamu coba:
- Tambahkan Modul Wi-Fi (ESP32): Kamu bisa mengganti mikrokontroler dengan ESP32 agar sistem bisa mengirimkan notifikasi pengingat minum obat dan peringatan suhu panas langsung ke aplikasi smartphone atau layanan cloud.
- Pasang Baterai Cadangan (Backup Power): Tambahkan rangkaian baterai Li-ion atau UPS mini agar sistem monitoring dan jadwal waktu RTC tetap aktif bekerja meskipun terjadi pemadaman listrik di rumah.
- Buat PCB Custom: Ubah rangkaian kabel jumper yang berserakan menjadi papan PCB custom agar susunan komponen lebih rapi, kokoh, dan bebas dari risiko korsleting atau kabel lepas.
Selamat mencoba merakit proyek ini, teman-teman! Kalau ada pertanyaan seputar pembuatan skematik atau coding, langsung tulis di kolom komentar ya!
Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11
Sobat Maker, pernah nggak sih lagi asik-asiknya mandi tiba-tiba air di tandon habis? Atau sebaliknya, tandon malah meluap sampai air... selengkapnya
Potensiometer adalah salah satu jenis resistor yang nilai resistansinya dapat diatur sesuai dengan kebutuhan rangkaian elektronika ataupun kebutuhan pemakainya.... selengkapnya
Mengapa disebut buzzer passive? karena sensor ini tidak mempunyai suara sendiri, melainkan buzzer ini perlu dikontrol dengan kontroler seperti... selengkapnya
I think I need to make a virtual personal assistant that can help me make a self-service video tutorial... selengkapnya
Kebocoran gas LPG di dapur sering kali tidak kita sadari sampai baunya menyengat atau bahkan saat sudah terlambat. Kondisi ini... selengkapnya
Bootstrap adalah sebuah framework yang dapat memudahkan seorang programmer web untuk mempercepat dan mempermudah dalam membuat dan mengembangkan website.... selengkapnya
Halo, Sobat Makers! Pernah nggak sih ngerasa pusing atau pengap pas lagi asyik nyolder project atau eksperimen kimia di kamar/lab?... selengkapnya
Setelah kamu mengenal Arduino Uno dan isi dari Arduino Uno Trainer Kit, sekarang saatnya masuk ke bagian yang lebih teknis... selengkapnya
Jumpa lagi dengan tutorial mengenai thingspeak, kali ini akan dibahas cara menampilkan data suhu pada Thingspeak menggunakan ESP-01 dan... selengkapnya
Sensor MQ-2 merupakan sensor yang berfungsi untuk mendeteksi kandungan gas seperti Lpg, CO, asap dan masih banyak lainnya. Sensor... selengkapnya
Spesifikasi: 50mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 75.000Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v – Sudah include module I2C Backpack dan tersolder… selengkapnya
Rp 30.000Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.199.000Harga untuk 10pcs Resistance: 1K Ohm Wattage Rating: 0.25 Watt Tolerance: 1% Metal Film
Rp 1.500Buruan dibeli gan….barang murah-berkualitas SIAPA CEPAT DIA DAPAT Spesifikasi: LCD 1602 / 16×2 (16 karakter, 2 baris) merek QAPASS (cek… selengkapnya
Rp 24.500Features – Calibrated directly in Celsius (Centigrade) – Linear + 10.0 mV/C scale factor – 0.5C accuracy guaranteeable (at +25C)… selengkapnya
Rp 8.000Menerima jasa cetak PCB FR2 (pertinax) / FR4 (double) single / double layer. Silahkan ke web kalkulator biaya cetak pcb… selengkapnya
Rp 1.0002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.500Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.500Kabel Jumper Dupont Pelangi 10 cm.. male to female 1 lembar isi 40 kabel
Rp 9.000Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11
Kategori
Artikel Terkait
-
Bikin Sensor Parkir Otomatis Pakai Arduino Uno dan HC SR04
-
Monitoring Suhu Ruang Server Otomatis Pakai Arduino Uno dan Sensor DHT22
-
Biar Dapur Anti Kebakaran Yuk Bikin Detektor Gas dan Asap Sederhana Pakai Arduino Uno
-
Jaga Rumah dari Kebakaran dengan Sistem Monitoring Arduino yang Satset dan Akurat
-
Pantau Tandon Air Gak Pake Ribet dengan ESP32 dan Sensor Water Level

Saat ini belum tersedia komentar.