Daftar Isi:

Dispenser Obat Otomatis: 5 Langkah
Dispenser Obat Otomatis: 5 Langkah

Video: Dispenser Obat Otomatis: 5 Langkah

Video: Dispenser Obat Otomatis: 5 Langkah
Video: BURUAN BONGKAR MEGICOM RUSAK !! AMBIL SAKLAR OTOMATISNYA !! 2024, November
Anonim
Dispenser Obat Otomatis
Dispenser Obat Otomatis

Proyek ini digunakan dalam bidang medis, di mana pasien lanjut usia harus memiliki cara yang dapat diandalkan untuk membagi dan mengeluarkan obat. Perangkat ini memungkinkan obat untuk dibagikan hingga 9 hari sebelumnya, dan secara otomatis dibagikan pada waktu yang diinginkan. Tutupnya juga dapat dikunci dengan tag RFID, memastikan bahwa hanya pengasuh yang dapat mengakses obat.

Perlengkapan:

Ada bahan yang diperlukan untuk membangun proyek ini:

  • Arduino UNO
  • Modul Pengemudi Motor
  • Servo SG90 9G
  • Motor langkah
  • Modul RTC DS1302
  • Berbagai kabel jumper
  • LCD IIC 1602
  • Akses pencetak 3D
  • Kaki seperti pasak kayu
  • Modul dan Tag RFID
  • Dua tombol tekan
  • Besi solder
  • Papan tempat memotong roti
  • lem super
  • Sekrup kayu
  • Kotak Kayu yang Belum Selesai dengan Tutup Berengsel
  • Pita dua sisi

Langkah 1: Memodifikasi Kotak

Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak
Memodifikasi Kotak

Kotak pertama harus dimodifikasi. Ada beberapa lubang yang harus dibor. Lubang pertama akan berada di bagian depan kotak, tempat kotak panel kontrol dicetak. Lubang kedua ada di bagian belakang kotak, untuk dilewati kabel USB. Lubang terakhir ada di bagian bawah kotak, tempat obat akan jatuh begitu dikeluarkan. Terakhir, kaki harus menempel di bagian bawah. Saya menggunakan kaki karet yang saya temukan di sekitar rumah saya untuk kaki, tetapi pasak kayu juga bisa digunakan.

Langkah 2: Bagian Cetakan 3D

Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D

Ada banyak bagian cetak 3D yang dibutuhkan untuk proyek ini.

Mereka:

  • Korsel yang menyimpan obat
  • Dasar untuk korsel
  • Corong untuk obat
  • Lengan untuk motor servo untuk mengunci tutupnya
  • Basis untuk motor servo
  • Kait untuk lengan servo
  • Panel kendali
  • Cangkir untuk obat yang akan dibagikan

Basis untuk korsel dilekatkan ke kotak dengan selotip dua sisi. Basis untuk motor servo dan kait untuk lengan keduanya disekrup ke dalam kotak dengan sekrup kayu pendek. Kotak panel kontrol direkatkan ke bagian depan kotak dengan lem super, setelah komponen dimasukkan.

Langkah 3: Elektronik

Elektronik
Elektronik

Elektronik sekarang perlu ditempatkan ke dalam kotak. Pertama, motor stepper dipasang pada dasar carousel dengan baut dan mur M3. Servo kemudian direkatkan ke dasarnya. Kemudian, pengontrol motor, Arduino, papan tempat memotong roti, modul RFID, dan modul RTC semuanya direkatkan ke kotak dengan pita dua sisi. LCD dimasukkan ke dalam lubang di kotak kontrol. Ada beberapa solder yang diperlukan. Untuk tombol tekan, kabel jumper harus disolder ke konektor sekop. Untuk pembaca RFID, pin harus disolder ke papan.

Langkah 4: Kode

Di bawah ini adalah kode yang dikomentari:

Pustaka untuk motor Servo, LCD, RTC, RFID, dan Stepper disertakan dalam kode ini.

///////////////// Pustaka dan Variabel

#include #include //library standar Arduino #include #include virtuabotixRTC myRTC(2, 3, 4); // Tentukan pin #define servopin 8 const int buttonup = 6; const int buttondown = 7; int jam=0; int minn=0; int sel=0; int status = 0; int status turun=0; int status = 0; int tunggu = 0; int loker = 0; // Mengatur servo Servo servo; int sudut = 180; #include //gunakan pustaka stepper yang dimodifikasi dengan urutan penembakan magnet 1000/0100/0010/0001. Letakkan perpustakaan di folder perpustakaan Anda. #define gearratio 64 //1:64 rasio roda gigi const int langkahPerRevolution = 2048; //motor Arduino Kit diturunkan. Dengan percobaan saya menentukan bahwa 2048 langkah memutar poros satu putaran. int langkah = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // buat instance stepper 4-kawat pada pin 8 hingga 11: Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3); #sertakan #sertakan #tentukan SS_PIN 10 #tentukan RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Buat instance MFRC522. int derajat = 10; void pengaturan() { lcd.init(); // inisialisasi lcd lcd.backlight(); // Baris di bawah ini digunakan untuk mengatur waktu saat ini. Itu hanya perlu dilakukan sekali, dan setelah itu kode // harus diunggah lagi dengan dikomentari. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode(tombol up, INPUT_PULLUP); pinMode(tombol ke bawah, INPUT_PULLUP); Serial.begin(9600); // Memulai komunikasi serial SPI.begin(); // Memulai bus SPI mfrc522. PCD_Init(); // Inisiasi MFRC522 myStepper.setSpeed(0.15*gearratio);//motor tampaknya diturunkan 1/64, artinya kecepatan perlu disetel 64x. // inisialisasi port serial: servo.attach(servopin); } void loop(){ ///////////////// LCD Code // Terus-menerus memperbarui tampilan dengan waktu saat ini dan waktu pengeluaran. lcd.clear(); myRTC.updateTime(); lcd.setCursor(0, 0); lcd.print("Waktu:"); lcd.setCursor(6, 0); lcd.print(myRTC.jam); lcd.print(":"); lcd.print(myRTC.minutes); lcd.setCursor(0, 1); lcd.print("Keluarkan:"); lcd.setCursor(10, 1); lcd.print(jam); lcd.print(":"); lcd.print(minn); ///////////////// Baca Status Tombol // Membaca status tombol untuk mengubah waktu pengeluaran. stateup = digitalRead(buttonup); statedown = digitalRead(tombol turun); penundaan(100); ///////////////// Logika Pengeluaran // Jika waktu saat ini sama dengan waktu pengeluaran yang dipilih, putar motor stepper. // Setiap 9 kali perangkat mengeluarkan, motor memutar jarak ekstra untuk memastikan putaran penuh dibuat. if (myRTC.hours == jam && myRTC.minutes == menit && langkah <9){ myStepper.step(227); langkah = langkah +1; penundaan (60100); myRTC.updateTime(); } else if (myRTC.hours == jam && myRTC.minutes == menit && langkah ==9){ myStepper.step(232); langkah = 0; penundaan (60100); myRTC.updateTime(); ///////////////// Mengubah Waktu Pengeluaran // Mengubah waktu pengeluaran berdasarkan tombol yang ditekan. // Waktu kembali ke nol ketika jam mencapai 24 dan menit mencapai 60. } if (status == LOW && hr<23){ hr=hr+1; penundaan(50); } else if (status == RENDAH && hr ==23){ hr=0; penundaan(50); } if (status == RENDAH && minn <59){ minn=minn+1; penundaan(50); } else if (status == RENDAH && minn ==59){ minn=0; penundaan(50); } ///////////////// Kode RFID // Membaca tag RFID saat ditampilkan. if (! mfrc522. PICC_IsNewCardPresent()) { kembali; } // Pilih salah satu kartu jika (! mfrc522. PICC_ReadCardSerial()) { return; } String konten = ""; huruf byte; for (byte i = 0; i < mfrc522.uid.size; i++) { //Serial.println(mfrc522.uid.uidByte < 0x10 ? " 0": " "); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0": " ")); content.concat(String(mfrc522.uid.uidByte, HEX)); loker = 1; } konten.toUpperCase(); ///////////////// KODE KUNCI // Ketika tag RFID yang benar dibaca, pindahkan servo ke posisi terbuka saat ditutup, // dan pindahkan servo ke posisi tertutup saat membuka. while (locker == 1){ if (content.substring(1) == "3B 21 D6 22"){ //ubah di sini UID kartu/kartu yang ingin Anda akses { switch (deg){ case 180: servo.write(derajat); derajat = 10; loker = 0; Serial.print("bergerak"); penundaan (1000); merusak; kasus 10: servo.write(deg); derajat = 180; loker=0; penundaan (1000); merusak; } } } else { Serial.println("Akses ditolak"); penundaan (1000); } } }

Langkah 5: Pengaturan Akhir

Langkah terakhir adalah menyiapkan proyek untuk digunakan. Pertama-tama unggah kode dengan baris pengaturan waktu tidak dikomentari, untuk mengunggah waktu saat ini ke RTC. Kemudian komentari kodenya, dan unggah ulang kodenya. Ini akan memastikan bahwa jika perangkat dicabut, itu akan tetap mempertahankan waktu yang tepat. Sekarang yang harus Anda lakukan adalah menempatkan obat di slot, menempatkan cangkir di bawah lubang pengeluaran, dan mengatur waktu pengeluaran. Perangkat akan andal mengeluarkan pada waktu yang sama setiap hari.

Direkomendasikan: