● online
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to F....
- DS3231SN DS3231 SN I2C RTC Module & Baterai Mo....
- LCD CHARACTER 16X2 1602 5V GREEN HIJAU BACKLIGHT M....
- Resistor 220 Ohm 220R Ohm 220Ohm 1/4W 1% Metal fil....
- Raspberry Pi 4 Model B - 2GB RAM Raspberry Pi 4B....
- Kapton Tape Polymide Film 50mm Polimida 50 mm Isol....
- TP5100 4.2v 8.4v 1S 2S Single / Double Cell Lithiu....
- LM2596 Module Step Down DC-DC Ultra compact in 3-4....
- 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
LED adalah singkatan dari Light Emiting Diode, yang merupakan sebuah dioda yang dapat mengubah energi listrik menjadi cahaya, dan... selengkapnya
Alat dan Bahan ESP8266 Lolin(Wemos) NodeMcu v3 beli Modul MAX7219 LED dot matrix 8×8 beli Jenis Modul Modul MAX7219... selengkapnya
Menjaga kondisi lingkungan ruang server tetap stabil adalah hal yang sangat krusial bagi kelangsungan operasional sistem TI. Jika suhu dan... selengkapnya
Bootstrap adalah sebuah framework yang dapat memudahkan seorang programmer web untuk mempercepat dan mempermudah dalam membuat dan mengembangkan website.... selengkapnya
Sensor LM35 merupakan sebuah sensor yang dapat mendeteksi suhu ruangan dengan cara mengubah besaran suhu menjadi besaran listrik dalam... selengkapnya
Semangat pagi semua, kali ini kita akan belajar mengenai penggunaan LCD pada Arduino tanpa module I2C. Kenapa perlu belajar... selengkapnya
Hallo kali ini saya akan membahas mengenai relay lagi yaitu relay 2 channel. Di pasaran, relay ini sudah menggunakan... selengkapnya
Blynk menawarkan beragam fungsi ya, salah satunya untuk mengontrol perangkat. Penggunaan Blynk ini bisa kapan dan dimana saja ya,... selengkapnya
MPU6050 merupakan sebuah sensor yang berfungsi untuk mengukur percepatan suatu benda yang bergerak. Nah kali ini kita akan belajar... selengkapnya
Dalam menjalankan bisnis online tentu saja harus memperhatikan beberapa aspek agar bisnis kita berjalan dengan lancar. Sebagai contoh di... selengkapnya
The power supply is isolated industrial power modules, with a temperature protection, overcurrent and short circuit full protection, high and… selengkapnya
Rp 15.900Features: Brand new and high quality. Control the speed of a DC motor with this controller. High efficiency, high torque,… selengkapnya
Rp 25.400MERK : TOWER PRO MG995 180 derajat Specifications Weight: 55 g Dimension: 40.7 x 19.7 x 42.9 mm approx. Stall… selengkapnya
Rp 36.300Features: It is of high power density, high efficiency, high-reliability, small size and lightweight. It can isolate unsteady single-way voltage… selengkapnya
Rp 18.500ESP-WROOM-32 is Powered by Espressif’s most advanced SoC, the ESP-WROOM-32 features high performance, a wide range of peripherals, Wi-Fi and… selengkapnya
Rp 38.400Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v – Sudah include module I2C Backpack dan tersolder… selengkapnya
Rp 30.000Fitur: -Dapat mendeteksi api atau panjang gelombang sumber cahaya dalam 760nm ~ 1100nm – Api lebih ringan mendeteksi jarak 80cm… selengkapnya
Rp 9.000Specifications: 1. supports sampling costs (KHz): 8/11.025/12/16/22.05/24/32/44.1/48 2. 24-bit DAC output, dynamic range aid: 90dB, SNR aid: 85dB 3. fully… selengkapnya
Rp 17.800Kabel Jumper Dupont Pelangi 30cm Male to Female 1 lembar = 40 kabel
Rp 13.500Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11
Kategori
Artikel Terkait
-
Cara Bikin Sistem Monitoring Getaran Gempa dan Stabilitas Kemiringan Pakai ESP32 dan MPU 6050
-
Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69
-
Bikin Sistem Monitor Volume Air Tandon Otomatis Pakai Arduino Uno dan Sensor Ultrasonik
-
Cara Bikin Kipas Angin Otomatis Berbasis Suhu Pakai Arduino Uno dan Sensor LM35
-
Bikin Sensor Parkir Otomatis Pakai Arduino Uno dan HC SR04

Saat ini belum tersedia komentar.