תוכן עניינים:

מתקן תרופות אוטומטי: 5 שלבים
מתקן תרופות אוטומטי: 5 שלבים

וִידֵאוֹ: מתקן תרופות אוטומטי: 5 שלבים

וִידֵאוֹ: מתקן תרופות אוטומטי: 5 שלבים
וִידֵאוֹ: איך להפוך פחד לביטחון ב-3 דקות וב-5 שלבים ברורים ופשוטים 2024, יולי
Anonim
מתקן תרופות אוטומטי
מתקן תרופות אוטומטי

פרויקט זה מיועד לשימוש בתחום הרפואי, שבו למטופלים קשישים חייבת להיות דרך אמינה לחלק את התרופות ולמחלק אותן. מכשיר זה מאפשר למנות תרופות עד 9 ימים מראש, ולהוציא אותן באופן אוטומטי בזמן הרצוי. המכסה ננעל גם באמצעות תג RFID, וודא שרק המטפל יכול לגשת לתרופה.

אספקה:

ישנם החומרים הדרושים לבניית פרויקט זה:

  • ארדואינו UNO
  • מודול נהג מנוע
  • סרוו SG90 9G
  • מנוע צעדים
  • מודול RTC DS1302
  • חוטי מגשר שונים
  • IIC 1602 LCD
  • גישה למדפסת תלת מימד
  • רגליים כגון דיבלים מעץ
  • מודול ותגי RFID
  • שני לחצנים
  • מלחם
  • לוח לחם
  • דבק מגע
  • ברגים מעץ
  • קופסת עץ לא גמורה עם מכסה ציר
  • קלטת דו צדדית

שלב 1: שינוי התיבה

שינוי התיבה
שינוי התיבה
שינוי התיבה
שינוי התיבה
שינוי התיבה
שינוי התיבה
שינוי התיבה
שינוי התיבה

תחילה יהיה צורך לשנות את התיבה. ישנם מספר חורים שחייבים לקדוח. החור הראשון יהיה בחזית התיבה, שם מודפסת תיבת לוח הבקרה. החור השני נמצא בחלק האחורי של הקופסה, כדי שכבל ה- USB יעבור דרכו. החור האחרון נמצא בחלק התחתון של הקופסה, שם התרופה תיפול לאחר שתוציא. לבסוף, הרגליים חייבות להיות מחוברות לתחתית. השתמשתי ברגלי גומי שמצאתי ברחבי הבית לרגליים, אך ניתן להשתמש גם בנעלי עץ.

שלב 2: חלקים מודפסים בתלת מימד

חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד

יש צורך בחלקים רבים המודפסים בתלת מימד לפרויקט זה.

הם:

  • קרוסלה שמחזיקה תרופות
  • בסיס לקרוסלה
  • משפך על התרופה
  • זרוע למנוע סרוו לנעילת המכסה
  • בסיס למנוע סרוו
  • תפס לזרוע סרוו
  • לוח בקרה
  • כוס למתן התרופה

בסיס הקרוסלה נדבק לקופסה בעזרת סרט דו צדדי. הבסיס למנוע הסרוו והתפס לזרוע מוברגים שניהם לתוך הקופסה בעזרת ברגי עץ קצרים. תיבת לוח הבקרה מודבקת בחזית התיבה בדבק סופר, לאחר הכנסת הרכיבים.

שלב 3: אלקטרוניקה

מכשירי חשמל
מכשירי חשמל

כעת יש להכניס את האלקטרוניקה לקופסה. ראשית, מנוע צעד מחובר לבסיס הקרוסלה עם ברגים ואומים M3. לאחר מכן סרוו מודבק במיוחד לבסיסו. לאחר מכן, בקר המנוע, Arduino, לוח הלחם, מודול RFID ומודול RTC מחוברים כולם לקופסה עם סרט דו צדדי. ה- LCD מוכנס לתוך החור בתיבת הבקרה. יש צורך בהלחמה כלשהי. עבור כפתורי הלחיצה, כבלי המגשר חייבים להיות מולחמים למחברי הכף. עבור קורא ה- RFID, הסיכות חייבות להיות מולחמות ללוח.

שלב 4: קוד

להלן הקוד שהגיב:

ספריות עבור סרוו, LCD, RTC, RFID ומנוע צעד כלולות בקוד זה.

/////////////////// ספריות ומשתנים

#include #include // הספרייה הסטנדרטית של Arduino #include #include virtuabotixRTC myRTC (2, 3, 4); // הגדר סיכות #הגדר servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int angesown = 0; int מדינת = 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); // לייצר צעד 4-חוטים על סיכות 8 עד 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // צור מופע MFRC522. int deg = 10; הגדרת חלל () {lcd.init (); // לאתחל את lcd lcd.backlight (); // השורה שמתחתיה משמשת לקביעת השעה הנוכחית. זה צריך להיעשות רק פעם אחת, ולאחר מכן יש להעלות שוב את הקוד // עם הערתו. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (כפתור, INPUT_PULLUP); pinMode (Buttonown, INPUT_PULLUP); Serial.begin (9600); // ליזום תקשורת טורית SPI.begin (); // ליזום אוטובוס SPI mfrc522. PCD_Init (); // התחל את MFRC522 myStepper.setSpeed (0.15*gearratio); // המנוע נראה מכוון ל -1/64, כלומר יש להגדיר את המהירות 64x. // לאתחל את היציאה הטורית: servo.attach (servopin); } לולאת חלל () {////////////////// קוד LCD // מעדכנת את התצוגה ללא הרף בזמן הנוכחי ובזמן ההגשה. 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 (minn); ////////////////// Read Button States // קורא את מצבי הכפתורים כדי לשנות את זמן ההגשה. stateup = digitalRead (כפתור); saidown = digitalRead (buttondown); עיכוב (100); ////////////////// Logic dispensing // אם הזמן הנוכחי זהה לזמן ההנפקה שנבחר, סובב את מנוע הצעד. // כל 9 פעמים שהמכשיר מוציא, המנוע פונה למרחק נוסף כדי להבטיח סיבוב מלא. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); צעדים = צעדים +1; עיכוב (60100); myRTC.updateTime (); } אחרת אם (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); צעדים = 0; עיכוב (60100); myRTC.updateTime ();. // הזמן חוזר לאפס כאשר השעות מגיעות ל -24 והדקות מגיעות ל -60.} אם (stateup == LOW && hr <23) {hr = hr+1; עיכוב (50); } אחרת אם (stateup == LOW && hr == 23) {hr = 0; עיכוב (50); } אם (ציין == LOW && minn <59) {minn = minn+1; עיכוב (50); } אחרת אם (ציין == LOW && minn == 59) {minn = 0; עיכוב (50); } /////////////////// קוד RFID // קורא תג RFID כאשר הוא מוצג. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // בחר אחד מהכרטיסים אם (! Mfrc522. PICC_ReadCardSerial ()) {return; } תוכן מחרוזת = ""; מכתב בתים; עבור (בת i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte [ji] <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 (); ////////////////// LOCK COD לִפְתוֹחַ. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// שנה כאן את מזהה הכרטיס/כרטיסים שברצונך לתת גישה {switch (deg) {case 180: servo.write (deg); deg = 10; ארונית = 0; Serial.print ("זז"); עיכוב (1000); לשבור; מקרה 10: servo.write (deg); deg = 180; ארונית = 0; עיכוב (1000); לשבור; }}} else {Serial.println ("גישה נדחתה"); עיכוב (1000); }}}

שלב 5: הגדרה אחרונה

השלב האחרון הוא הכנת הפרויקט לשימוש. קודם כל העלה את הקוד כאשר שורת ההגדרה של הזמן לא הגיבה, כדי להעלות את הזמן הנוכחי ל- RTC. לאחר מכן הגיב על הקוד והעלה את הקוד מחדש. זה יבטיח שאם המכשיר ינותק מהחשמל, הוא עדיין ישמור על הזמן הנכון. כל שעליך לעשות הוא להניח את התרופה בחריצים, להניח את הכוס מתחת לחור ההגשה ולקבוע זמן מתן. המכשיר ייתן באופן מהימן בכל יום את אותה השעה.

מוּמלָץ: