Mündəricat:

Avtomatik dərman dispenseri: 5 addım
Avtomatik dərman dispenseri: 5 addım

Video: Avtomatik dərman dispenseri: 5 addım

Video: Avtomatik dərman dispenseri: 5 addım
Video: Pill Dispenser 2024, Iyul
Anonim
Avtomatik Dərman Dispenseri
Avtomatik Dərman Dispenseri

Bu layihə, yaşlı xəstələrin dərmanları paylamaq və buraxmaq üçün etibarlı bir şəkildə istifadə etmələri lazım olan tibb sahəsində istifadə üçündür. Bu cihaz, dərmanların 9 gün əvvəldən hissələrə bölünməsinə və istədiyiniz vaxt avtomatik olaraq verilməsinə imkan verir. Qapaq RFID etiketi ilə də kilidlənə bilər və bu dərmanı yalnız baxıcının əldə edə biləcəyinə əmin olun.

Təchizat:

Bu layihəni hazırlamaq üçün lazım olan materiallar var:

  • Arduino UNO
  • Motor Sürücü Modulu
  • SG90 9G Servo
  • Step Motor
  • DS1302 RTC Modulu
  • Müxtəlif keçid telləri
  • LCD IIC 1602
  • 3D printerə giriş
  • Taxta dübel kimi ayaqlar
  • RFID Modulu və Etiketi
  • İki düymə
  • Lehimleme dəmir
  • Çörək lövhəsi
  • Super yapışqan
  • Taxta vintlər
  • Menteşeli qapaqlı bitməmiş taxta qutu
  • İki tərəfli lent

Addım 1: Qutunun dəyişdirilməsi

Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi
Qutunun dəyişdirilməsi

Əvvəlcə qutu dəyişdirilməlidir. Qazılmalı olan bir çox deşik var. İlk çuxur idarəetmə paneli qutusunun çap olunduğu qutunun ön tərəfində olacaq. İkinci çuxur, USB kabelinin keçməsi üçün qutunun arxasındadır. Son çuxur qutunun altındadır, dərman buraxıldıqdan sonra düşəcək. Nəhayət, ayaqları dibinə yapışdırılmalıdır. Evimin ətrafında tapdığım rezin ayaqları ayaq üçün istifadə etdim, ancaq taxta dübeller də istifadə edilə bilər.

Addım 2: 3D çaplı hissələr

3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr

Bu layihə üçün bir çox 3D çap hissələri lazımdır.

Onlar:

  • Dərman saxlayan karusel
  • Karusel üçün əsas
  • Dərman üçün huni
  • Qapağı kilidləmək üçün servo motor üçün qol
  • Servo motor üçün baza
  • Servo qolu üçün mandal
  • İdarə paneli
  • Dərmanın buraxılacağı fincan

Karuselin əsası iki tərəfli bantla qutuya yapışdırılır. Servo motorun əsası və qolun mandalı hər ikisi də qısa taxta vintlər ilə qutuya vidalanmışdır. İdarəetmə paneli qutusu, komponentlər daxil edildikdən sonra super yapışqan ilə qutunun ön hissəsinə yapışdırılır.

Addım 3: Elektronika

Elektronika
Elektronika

İndi elektronikanı qutuya yerləşdirmək lazımdır. Birincisi, step motoru M3 boltlar və qoz -fındıqlarla karusel bazasına bərkidilir. Servo daha sonra bazasına super yapışdırılır. Daha sonra, motor nəzarətçisi, Arduino, çörək taxtası, RFID modulu və RTC modulu hamısı iki tərəfli lentlə qutuya yapışdırılır. LCD nəzarət qutusundakı çuxura daxil edilir. Bəzi lehimləmə tələb olunur. Düymələr üçün tullanan kabellər kürək bağlayıcılarına lehimlənməlidir. RFID oxuyucusu üçün sancaqlar lövhəyə lehimlənməlidir.

Addım 4: Kod

Aşağıda şərh olunan kod var:

Servo, LCD, RTC, RFID və Stepper üçün kitabxanalar bu koda daxildir.

////////////////// Kitabxanalar və Dəyişənlər

#include #include // Arduino standart kitabxanası #include #include virtuabotixRTC myRTC (2, 3, 4); // Pinləri təyin edin #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int ifadəli = 0; int Statesel = 0; int wait = 0; int soyunma = 0; // Servo qurun Servo servo; int bucağı = 180; #include // 1000/0100/0010/0001 maqnit atəş ardıcıllığı ilə dəyişdirilmiş step kitabxanasından istifadə edin. Kitabxananı kitabxana qovluğuna qoyun. #define gearratio 64 // 1: 64 dişli nisbəti const int stepsPerRevolution = 2048; // Arduino Kit motoru aşağı yönəldilmişdir. Təcrübə ilə müəyyən etdim ki, 2048 addım mili bir dairəyə çevirir. int addımları = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // 8-dən 11-ə qədər sancaqlar üzərində 4 telli bir addım atın: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #daxil edin #daxil edin #SS_PIN təyin edin 10 #RST_PIN 9 təyin edin MFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522 nümunəsi yaradın. int deg = 10; boş quraşdırma () {lcd.init (); // lcd lcd.backlight () işə salın; // Bunun altındakı xətt cari vaxtı təyin etmək üçün istifadə olunur. Yalnız bir dəfə edilməlidir və sonra // kodu şərh yazılaraq yenidən yüklənməlidir. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (düymələndirmə, INPUT_PULLUP); pinMode (günorta, INPUT_PULLUP); Serial.begin (9600); // SPI.begin () seriyalı ünsiyyətə başlayın; // SPI avtobusunu başlat mfrc522. PCD_Init (); // MFRC522 myStepper.setSpeed (0.15*gearratio) başlatın; // mühərrikin 1/64 aşağıya doğru yönəldildiyi görünür, yəni sürətin 64 dəfə təyin edilməsi lazımdır. // seriyalı portu işə salın: servo.attach (servopin); } void loop () {//////////////// LCD Kodu // Ekranı cari vaxt və paylama vaxtı ilə daim yeniləyir. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Zaman:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dağıt:"); lcd.setCursor (10, 1); lcd çap (saat); lcd.print (":"); lcd çap (minn); ///////////////// Düymə vəziyyətlərini oxuyun // Dağıtma vaxtını dəyişdirmək üçün düymələrin vəziyyətini oxuyur. stateup = digitalRead (düymənin açılması); qeyd olunan = digitalRead (gecənin ortası); gecikmə (100); ///////////////// Dağıtım məntiqi // Cari vaxt seçilmiş paylama vaxtı ilə eynidirsə, step motorunu çevirin. // Cihaz hər 9 dəfə çıxdıqda, motor tam fırlanmasını təmin etmək üçün əlavə bir məsafə çevirir. əgər (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); addımlar = addımlar +1; gecikmə (60100); myRTC.updateTime (); } başqa halda (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); addımlar = 0; gecikmə (60100); myRTC.updateTime (); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Saat 24 -ə, dəqiqə 60 -a çatanda zaman sıfıra qayıdır.} İf (stateup == LOW & hr <23) {hr = hr+1; gecikmə (50); } if if (stateup == LOW && hr == 23) {hr = 0; gecikmə (50); } əgər (bildirilmiş == LOW && minn <59) {minn = minn+1; gecikmə (50); } başqa əgər (bildirilmiş == LOW && minn == 59) {minn = 0; gecikmə (50); } ///////////////// RFID Kodu // Təqdim edildikdə RFID etiketini oxuyur. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Kartlardan birini seçin, əgər (! Mfrc522. PICC_ReadCardSerial ()) {return; } String məzmunu = ""; bayt hərfi; for (bayt 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)); soyunma = 1; } content.toUpperCase (); //////////////// KİLİD KODU // Düzgün RFID etiketi oxunduqda, servo bağlandıqda açıq mövqeyə keçin // və servo bağlandıqda qapalı vəziyyətə keçin. açmaq while (soyunma == 1) {if (content.substring (1) == "3B 21 D6 22") {// giriş vermək istədiyiniz kartın/kartların UID -ni burada dəyişin {switch (deg) {case 180: servo.write (dərəcə); dərəcə = 10; soyunma = 0; Serial.print ("hərəkət edir"); gecikmə (1000); fasilə; hal 10: servo.write (dərəcə); dərəcə = 180; soyunma = 0; gecikmə (1000); fasilə; }}} başqa {Serial.println ("Giriş rədd edildi"); gecikmə (1000); }}}

Addım 5: Son Quraşdırma

Son addım layihəni istifadəyə hazırlamaqdır. Əvvəlcə cari vaxtı RTC -yə yükləmək üçün vaxtı təyin etmə xətti qeyd olunmamış kodu yükləyin. Sonra kodu şərh edin və kodu yenidən yükləyin. Bu, cihazın cərəyandan çıxarıldığı təqdirdə hələ də düzgün vaxtı saxlayacağını təmin edəcək. İndi etməniz lazım olan tək şey dərmanları yuvalara yerləşdirmək, fincanı paylama çuxurunun altına qoymaq və yemək vaxtı təyin etməkdir. Cihaz hər gün eyni vaxtda etibarlı şəkildə paylanacaq.

Tövsiyə: