İçindekiler:

Otomatik İlaç Dağıtıcı: 5 Adım
Otomatik İlaç Dağıtıcı: 5 Adım

Video: Otomatik İlaç Dağıtıcı: 5 Adım

Video: Otomatik İlaç Dağıtıcı: 5 Adım
Video: AEA Klinik İlaç Hesaplamaları Eğitimi (Seminer Kaydı) 2024, Temmuz
Anonim
Otomatik İlaç Dağıtıcı
Otomatik İlaç Dağıtıcı

Bu proje, yaşlı hastaların ilaçlarını porsiyonlara ayırıp dağıtmak için güvenilir bir yola sahip olması gereken tıp alanında kullanım içindir. Bu cihaz, ilaçların 9 gün öncesine kadar porsiyonlanmasına ve istenilen zamanda otomatik olarak verilmesine olanak tanır. Kapak ayrıca RFID etiketi ile kilitlenebilir, bu da ilaca yalnızca bakıcının erişebilmesini sağlar.

Gereçler:

Bu projeyi inşa etmek için gerekli malzemeler var:

  • Arduino UNO'su
  • Motor Sürücü Modülü
  • SG90 9G Servo
  • step motor
  • DS1302 RTC Modülü
  • Çeşitli atlama telleri
  • IIC 1602 LCD
  • 3D yazıcı erişimi
  • Ahşap dübel gibi ayaklar
  • RFID Modülü ve Etiketi
  • İki buton
  • Havya
  • ekmek tahtası
  • Süper yapıştırıcı
  • Tahta çivileri
  • Menteşeli Kapaklı Bitmemiş Ahşap Kutu
  • Çift taraflı bant

Adım 1: Kutuyu Değiştirme

Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme
Kutuyu Değiştirme

Önce kutunun değiştirilmesi gerekecek. Delinmesi gereken birden fazla delik var. İlk delik, kontrol paneli kutusunun yazdırıldığı kutunun ön tarafında olacaktır. İkinci delik, USB kablosunun geçmesi için kutunun arkasındadır. Son delik, kutunun alt kısmındadır, burada ilaç verildikten sonra düşer. Son olarak, bacaklar tabana takılmalıdır. Ben evimin çevresinde bulduğum lastik ayakları bacaklar için kullandım ama ahşap dübeller de kullanılabilir.

2. Adım: 3D Basılı Parçalar

3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar

Bu proje için gereken birçok 3D baskılı parça var.

Onlar:

  • İlaç tutan atlıkarınca
  • atlıkarınca için taban
  • İlaç için huni
  • Kapağı kilitlemek için servo motor kolu
  • Servo motor için taban
  • Servo kol için mandal
  • Kontrol Paneli
  • İlacın dağıtılacağı kap

Atlıkarınca tabanı çift taraflı bant ile kutuya yapıştırılmıştır. Servo motor için taban ve kol için mandal, kutuya kısa ahşap vidalarla vidalanmıştır. Kontrol paneli kutusu, bileşenler yerleştirildikten sonra kutunun önüne süper yapıştırıcı ile yapıştırılır.

Adım 3: Elektronik

Elektronik
Elektronik

Elektroniklerin şimdi kutuya yerleştirilmesi gerekiyor. İlk olarak step motor, M3 cıvata ve somunlarla atlıkarınca tabanına takılır. Servo daha sonra tabanına süper yapıştırılır. Ardından motor kontrolörü, Arduino, breadboard, RFID modülü ve RTC modülü çift taraflı bant ile kutuya yapıştırılır. LCD, kontrol kutusundaki deliğe yerleştirilir. Gerekli olan bazı lehimleme var. Basmalı butonlar için jumper kabloları kürek konektörlerine lehimlenmelidir. RFID okuyucu için pinler karta lehimlenmelidir.

4. Adım: Kod

Aşağıda yorumlanan kod:

Servo, LCD, RTC, RFID ve Step motor için kitaplıklar bu koda dahildir.

//////////////// Kitaplıklar ve Değişkenler

#include #include //Arduino standart kütüphanesi #include #include virtuabotixRTC myRTC(2, 3, 4); // Pinleri tanımlayın #define servopin 8 const int buttonup = 6; const int düğme = 7; int sa=0; int min=0; int sel=0; int durum = 0; int durum aşağı=0; int durumsel=0; int bekle = 0; int soyunma = 0; // Servo Servo servoyu ayarla; int açı = 180; #include //1000/0100/0010/0001 mıknatıs ateşleme sırası ile değiştirilmiş step kitaplığı kullanın. Kütüphane klasörünüze kütüphane koyun. #define gearratio 64 //1:64 dişli oranı const int stepPerRevolution = 2048; //Arduino Kit motoru vites küçültüldü. Deneyle, 2048 adımın şaftı bir tur döndürdüğünü belirledim. int adımlar = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // 8'den 11'e kadar olan pinlerde 4 telli bir step cihazı başlat: Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 örneği oluştur. int derece = 10; geçersiz kurulum() { lcd.init(); // lcd lcd.backlight()'ı başlat; // Bunun altındaki satır geçerli saati ayarlamak için kullanılır. Sadece bir kez yapılmalı ve daha sonra // kodu yorumlanarak tekrar yüklenmelidir. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode(buttonup, INPUT_PULLUP); pinMode(düğme, INPUT_PULLUP); Seri.başla(9600); // Seri iletişim başlat SPI.begin(); // SPI veri yolunu başlat mfrc522. PCD_Init(); // MFRC522 myStepper.setSpeed(0.15*gearratio)'yu başlatın;//motor 1/64 vites küçültülmüş gibi görünüyor, yani hızın 64x ayarlanması gerekiyor. // seri bağlantı noktasını başlat: servo.attach(servopin); } void loop(){ ///////////////// LCD Kodu // Ekranı mevcut saat ve dağıtım süresi ile sürekli günceller. lcd.clear(); myRTC.updateTime(); lcd.setCursor(0, 0); lcd.print("Saat:"); lcd.setCursor(6, 0); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.dakikalar); lcd.setCursor(0, 1); lcd.print("Dağıt:"); lcd.setCursor(10, 1); lcd.print(saat); lcd.print(":"); lcd.print(minn); //////////////// Düğme Durumlarını Oku // Dağıtım süresini değiştirmek için düğmelerin durumlarını okur. stateup = digitalRead(düğme); durum aşağı = digitalRead(düğme); gecikme(100); //////////////// Dağıtım Mantığı // Mevcut zaman seçilen dağıtım zamanı ile aynı ise, step motoru çevirin. // Cihaz her 9 seferde bir, tam bir dönüş yapılmasını sağlamak için motor fazladan bir mesafe döner. if (myRTC.hours == sa && myRTC.minutes == minn && adımlar <9){ myStepper.step(227); adımlar = adımlar +1; gecikme(60100); myRTC.updateTime(); } else if (myRTC.hours == sa && myRTC.dakika == minn && adımlar ==9){ myStepper.step(232); adımlar = 0; gecikme(60100); myRTC.updateTime(); //////////////// Dağıtım Zamanının Değiştirilmesi // Hangi düğmeye basıldığına bağlı olarak dağıtım zamanını değiştirin. // Saatler 24'e ve dakikalar 60'a ulaştığında zaman sıfıra döner. } if (durum == LOW && hr<23){ hr=hr+1; gecikme(50); } else if (durum == LOW && hr ==23){ hr=0; gecikme(50); } if (durum aşağı == LOW && minn <59){ minn=minn+1; gecikme(50); } else if (durum aşağı == LOW && minn ==59){ minn=0; gecikme(50); } //////////////// RFID Kodu // RFID etiketi sunulduğunda okur. if (! mfrc522. PICC_IsNewCardPresent()) { dönüş; } // Kartlardan birini seçin if (! mfrc522. PICC_ReadCardSerial()) { return; } Dizi içeriği= ""; bayt harfi; 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)); dolap = 1; } content.toUpperCase(); ///////////////// KİLİT KODU // Doğru RFID etiketi okunduğunda, servo kapalıyken açık konuma, // kapalıyken servoyu kapalı konuma getirin açık. while (locker == 1){ if (content.substring(1) == "3B 21 D6 22"){ //erişim vermek istediğiniz kartın/kartların UID'sini buradan değiştirin { geçiş (derece){ durum 180: servo.write(derece); derece = 10; dolap = 0; Serial.print("hareketli"); gecikme(1000); kırmak; durum 10: servo.write(derece); derece = 180; dolap=0; gecikme(1000); kırmak; } } } else { Serial.println(" Erişim reddedildi"); gecikme(1000); } } }

Adım 5: Son Kurulum

Son adım, projeyi kullanıma hazırlamaktır. Geçerli saati RTC'ye yüklemek için önce kodu zaman ayar satırı yorumsuz olarak yükleyin. Ardından kodu yorumlayın ve kodu yeniden yükleyin. Bu, cihazın fişi takılı değilse bile doğru zamanı korumasını sağlayacaktır. Şimdi tek yapmanız gereken ilacı yuvalara yerleştirmek, bardağı dağıtım deliğinin altına yerleştirmek ve bir dağıtım süresi ayarlamak. Cihaz her gün aynı saatte güvenilir bir şekilde dağıtım yapacaktır.

Önerilen: