Мазмұны:

Дәрі -дәрмектің автоматты диспенсері: 5 қадам
Дәрі -дәрмектің автоматты диспенсері: 5 қадам

Бейне: Дәрі -дәрмектің автоматты диспенсері: 5 қадам

Бейне: Дәрі -дәрмектің автоматты диспенсері: 5 қадам
Бейне: Какую хлебопечку выбрать? 2024, Маусым
Anonim
Дәрілік заттың автоматты диспенсері
Дәрілік заттың автоматты диспенсері

Бұл жоба егде жастағы емделушілерге дәрі -дәрмектерді бөлудің және таратудың сенімді әдісі болуы керек медицина саласында қолдануға арналған. Бұл құрылғы дәрі -дәрмекті 9 күнге дейін бөлуге мүмкіндік береді және қалаған уақытта автоматты түрде шығарылады. Қақпақ RFID белгісімен бекітіледі, бұл дәрі -дәрмекке тек қамқоршы кіре алатынына көз жеткізіңіз.

Жабдықтар:

Бұл жобаны құру үшін қажетті материалдар бар:

  • Arduino UNO
  • Қозғалтқыш модулі
  • SG90 9G Серво
  • Қадамдық мотор
  • DS1302 RTC модулі
  • Әр түрлі секіргіш сымдар
  • СКД IIC 1602
  • 3D принтерге қол жеткізу
  • Ағаш дюбель сияқты аяқтар
  • RFID модулі мен тег
  • Екі түйме
  • Пісіру темірі
  • Нан тақтасы
  • Супер желім
  • Ағаш бұрандалар
  • Топсалы қақпағы бар аяқталмаған ағаш қорап
  • Екі жақты таспа

1 -қадам: қорапты өзгерту

Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту
Қорапты өзгерту

Алдымен қорапты өзгерту керек. Бұрғылау қажет көптеген тесіктер бар. Бірінші тесік басқару тақтасының қорабы басылған қораптың алдыңғы жағында болады. Екінші тесік қораптың артында, USB кабелі арқылы өтеді. Соңғы тесік қораптың түбінде орналасқан, онда дәрі -дәрмектер жіберілгеннен кейін құлап кетеді. Соңында аяқтар түбіне бекітілуі керек. Мен үйдің айналасынан тапқан резеңке табанды аяққа қолдандым, бірақ ағаштан жасалған сүлгілерді де қолдануға болады.

2 -қадам: 3D басып шығарылған бөлшектер

3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер

Бұл жобаға қажет 3D басып шығарылған көптеген бөлшектер бар.

Олар:

  • Дәрілік заттарды ұстайтын карусель
  • Карусель үшін негіз
  • Дәрілік заттарға арналған шұңқыр
  • Қақпақты құлыптауға арналған серво қозғалтқышына арналған қол
  • Серво қозғалтқышы үшін негіз
  • Серво қолына арналған ілмек
  • Басқару панелі
  • Дәрі -дәрмектерге арналған шыныаяқ

Карусельдің негізі қорапқа екі жақты таспамен бекітілген. Серво қозғалтқышының негізі мен қолдың ысырмасы қысқа ағаш бұрандалармен қорапқа бекітілген. Басқару панелінің қорабы компоненттер салынғаннан кейін супер желіммен қораптың алдыңғы жағына жабыстырылады.

3 -қадам: электроника

Электроника
Электроника

Енді электрониканы қорапқа салу керек. Біріншіден, қадамдық қозғалтқыш карусель негізіне М3 болттар мен гайкалармен бекітіледі. Серво содан кейін оның негізіне супер желімделеді. Содан кейін мотор контроллері, Arduino, нан тақтасы, RFID модулі және RTC модулі қорапқа екі жақты таспамен бекітілген. СКД басқару қорабындағы тесікке салынған. Кейбір дәнекерлеу қажет. Түймешіктер үшін өтпелі кабельдер күрек қосқыштарына дәнекерленген болуы керек. RFID оқу құралы үшін түйреуіштер тақтаға дәнекерленген болуы керек.

4 -қадам: код

Төменде түсіндірілген код:

Серво, СКД, RTC, RFID және Stepper қозғалтқышына арналған кітапханалар осы кодқа кіреді.

////////////////// Кітапханалар мен айнымалылар

#include #include // Arduino стандартты кітапханасы #include #include virtuabotixRTC myRTC (2, 3, 4); // түйреуіштерді анықтау #define servopin 8 const int buttonup = 6; const int buttondown = 7; int сағ = 0; int minn = 0; int sel = 0; int stateup = 0; int мәлімделген = 0; int Statesel = 0; int wait = 0; int locker = 0; // Серво сервоприводын орнату; int бұрышы = 180; #include // 1000/0100/0010/0001 магнитті күйдіру реттілігі бар өзгертілген қадамдық кітапхананы қолданыңыз. Кітапхананы кітапхана қалтасына салыңыз. #define gearratio 64 // 1: 64 беріліс коэффициенті const int stepsPerRevolution = 2048; // Arduino Kit қозғалтқышы төмен бағытталған. Тәжірибе арқылы мен 2048 қадам білікті бір айналымға айналдыратынын анықтадым. int қадамдары = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // 8-ден 11-ге дейінгі түйреуіштерде 4 сымды қадамды жасаңыз: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #қосу #қосу #анықтау SS_PIN 10 #анықтау RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522 данасын жасаңыз. int deg = 10; void setup () {lcd.init (); // lcd lcd.backlight () инициализациялау; // Бұның астындағы жол ағымдағы уақытты орнату үшін қолданылады. Мұны тек бір рет жасау керек, содан кейін // кодын түсініктеме беру арқылы қайтадан жүктеу керек. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (түйме, INPUT_PULLUP); pinMode (түнгі, INPUT_PULLUP); Serial.begin (9600); // SPI.begin () сериялық байланысын бастаңыз; // SPI шинасын іске қосыңыз mfrc522. PCD_Init (); // MFRC522 myStepper.setSpeed (0.15*беріліс шамасы) іске қосыңыз; // қозғалтқыш 1/64 төмен бағытталған сияқты, яғни жылдамдықты 64 есе орнату қажет. // сериялық портты инициализациялау: servo.attach (servopin); } void loop () {//////////////// СКД коды // Дисплейді ағымдағы уақыт пен тарату уақытымен үнемі жаңартып отырады. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print («Уақыт:»); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print («:»); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print («Тарату:»); lcd.setCursor (10, 1); lcd.print (сағ); lcd.print («:»); lcd.print (мин); ///////////////// Түймешік күйлерін оқу // Тарату уақытын өзгерту үшін түймелердің күйін оқиды. stateup = digitalRead (түймешік); баяндалған = digitalRead (түнгі); кешіктіру (100); ///////////////// Бөлу логикасы // Егер ағымдағы уақыт таңдалған тарату уақытымен бірдей болса, қадамдық қозғалтқышты бұраңыз. // Құрылғы әр 9 рет жібергенде, қозғалтқыш толық айналуды қамтамасыз ету үшін қосымша қашықтықты айналдырады. егер (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); қадамдар = қадамдар +1; кешіктіру (60100); myRTC.updateTime (); } if if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); қадамдар = 0; кешіктіру (60100); myRTC.updateTime (); ///////////////// Бөлу уақытын өзгерту // Қандай түйме басылғанына байланысты тарату уақытын өзгертіңіз. // Сағат 24 -ке, минут 60 -қа жеткенде уақыт нөлге қайтарылады.} If (stateup == LOW &&hr <23) {hr = hr+1; кешіктіру (50); } if if (stateup == LOW && hr == 23) {hr = 0; кешіктіру (50); } егер (көрсетілген төмен == LOW && minn <59) {minn = minn+1; кешіктіру (50); } else if (айтылғандай == LOW && minn == 59) {minn = 0; кешіктіру (50); } ///////////////// RFID коды // RFID тегі ұсынылған кезде оқылады. if (! mfrc522. PICC_IsNewCardPresent ()) {қайтару; } // Карталардың біреуін таңдаңыз, егер (! Mfrc522. PICC_ReadCardSerial ()) {return; } Жол мазмұны = «»; байт әрпі; for (байт i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidBute <0x10? «0»: «»); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (String (mfrc522.uid.uidByte <0x10? «0»: «»)); content.concat (String (mfrc522.uid.uidByte , HEX)); шкаф = 1; } content.toUpperCase (); //////////////// ҚҰЛЫПТАУ КОДЫ // Дұрыс RFID тегі оқылғанда, серво жабылған кезде ашық күйге жылжытыңыз // және серво жабылған кезде жабық күйге жылжытыңыз. ашық while (locker == 1) {if (content.substring (1) == «3B 21 D6 22») {// рұқсат бергіңіз келетін картаның/карталардың UID мекенжайын өзгертіңіз {switch (deg) {case 180: servo.write (deg); градус = 10; шкаф = 0; Serial.print («қозғалатын»); кешіктіру (1000); үзіліс; 10 -жағдай: servo.write (deg); градус = 180; шкаф = 0; кешіктіру (1000); үзіліс; }}} else {Serial.println («Қол жеткізуге рұқсат жоқ»); кешіктіру (1000); }}}

5 -қадам: соңғы орнату

Соңғы қадам - жобаны пайдалануға дайындау. Ағымдағы уақытты RTC -ге жүктеу үшін алдымен уақытты белгілеу сызығы жоқ кодты жүктеңіз. Содан кейін кодты түсіндіріп, кодты қайта жүктеңіз. Бұл құрылғы розеткадан ажыратылса, ол дұрыс уақытты сақтап қалатынын қамтамасыз етеді. Енді сізге дәрі -дәрмектерді ойықтарға салу, шыныаяқты тарату саңылауының астына қою және тарату уақытын орнату жеткілікті. Құрылғы күн сайын бір уақытта сенімді түрде шығарылады.

Ұсынылған: