جدول المحتويات:

موزع الأدوية الأوتوماتيكي: 5 خطوات
موزع الأدوية الأوتوماتيكي: 5 خطوات

فيديو: موزع الأدوية الأوتوماتيكي: 5 خطوات

فيديو: موزع الأدوية الأوتوماتيكي: 5 خطوات
فيديو: كيفية استخدام منعّم الأقمشة في غسّالة أوتوماتيكية \ داوني 2024, يوليو
Anonim
موزع الأدوية الأوتوماتيكي
موزع الأدوية الأوتوماتيكي

هذا المشروع مخصص للاستخدام في المجال الطبي ، حيث يجب أن يكون لدى المرضى المسنين طريقة موثوقة لتقسيم الأدوية وتوزيعها. يسمح هذا الجهاز بتقسيم الدواء حتى 9 أيام مقدمًا ، وصرفه تلقائيًا في الوقت المطلوب. الغطاء قابل للقفل أيضًا بعلامة RFID ، مع التأكد من أن مقدم الرعاية فقط يمكنه الوصول إلى الدواء.

اللوازم:

هناك المواد المطلوبة لبناء هذا المشروع:

  • اردوينو UNO
  • وحدة سائق المحرك
  • أجهزة SG90 9G
  • السائر المحركات
  • وحدة DS1302 RTC
  • أسلاك توصيل مختلفة
  • IIC 1602 LCD
  • وصول الطابعة ثلاثية الأبعاد
  • الأرجل مثل المسامير الخشبية
  • وحدة RFID والعلامة
  • اثنين من الأزرار الانضغاطية
  • لحام حديد
  • اللوح
  • صمغ ممتاز
  • مسامير خشبية
  • صندوق خشبي غير مكتمل مع غطاء مفصلي
  • شريط مزدوج

الخطوة 1: تعديل الصندوق

تعديل الصندوق
تعديل الصندوق
تعديل الصندوق
تعديل الصندوق
تعديل الصندوق
تعديل الصندوق
تعديل الصندوق
تعديل الصندوق

سيتعين تعديل المربع أولاً. هناك العديد من الثقوب التي يجب حفرها. ستكون الفتحة الأولى في مقدمة الصندوق ، حيث تتم طباعة مربع لوحة التحكم. توجد الفتحة الثانية في الجزء الخلفي من الصندوق ، ليمر كبل USB من خلالها. توجد الفتحة الأخيرة في أسفل الصندوق ، حيث سيسقط الدواء بمجرد صرفه. أخيرًا ، يجب ربط الأرجل بالجزء السفلي. لقد استخدمت أقدامًا مطاطية وجدتها حول منزلي للأرجل ، لكن يمكن أيضًا استخدام المسامير الخشبية.

الخطوة 2: أجزاء مطبوعة ثلاثية الأبعاد

أجزاء مطبوعة ثلاثية الأبعاد
أجزاء مطبوعة ثلاثية الأبعاد
أجزاء مطبوعة ثلاثية الأبعاد
أجزاء مطبوعة ثلاثية الأبعاد
أجزاء مطبوعة ثلاثية الأبعاد
أجزاء مطبوعة ثلاثية الأبعاد

هناك العديد من الأجزاء المطبوعة ثلاثية الأبعاد اللازمة لهذا المشروع.

هم انهم:

  • دائري يحتوي على دواء
  • قاعدة دائري
  • قمع الدواء
  • ذراع لمحرك سيرفو لقفل الغطاء
  • قاعدة لمحرك سيرفو
  • مزلاج لذراع المؤازرة
  • لوحة التحكم
  • كوب الدواء المراد صرفه

قاعدة الكاروسيل ملتصقة بالصندوق بشريط مزدوج الجوانب. تم تثبيت كل من قاعدة المحرك المؤازر ومزلاج الذراع في الصندوق بمسامير خشبية قصيرة. يتم لصق صندوق لوحة التحكم في مقدمة الصندوق بغراء فائق ، بعد إدخال المكونات.

الخطوة الثالثة: الإلكترونيات

إلكترونيات
إلكترونيات

يجب الآن وضع الإلكترونيات في الصندوق. أولاً ، يتم توصيل محرك السائر بقاعدة دائرية بمسامير وصواميل M3. ثم يتم لصقها بشكل كبير على قاعدتها. بعد ذلك ، يتم توصيل كل من وحدة التحكم في المحرك ، و Arduino ، واللوح ، ووحدة RFID ، ووحدة RTC بالصندوق بشريط مزدوج الجوانب. يتم إدخال شاشة LCD في الفتحة الموجودة في صندوق التحكم. هناك بعض اللحام المطلوب. بالنسبة لأزرار الدفع ، يجب أن تكون كبلات العبور ملحومة بموصلات الأشياء بأسمائها الحقيقية. بالنسبة لقارئ RFID ، يجب أن تكون المسامير ملحومة باللوحة.

الخطوة 4: الكود

أدناه هو رمز التعليق:

يتم تضمين مكتبات لمحرك Servo و LCD و RTC و RFID و Stepper في هذا الرمز.

/////////////////// المكتبات والمتغيرات

# تتضمن # تتضمن // مكتبة Arduino القياسية # تتضمن #include VirtuabotixRTC myRTC (2، 3، 4) ؛ // تحديد المسامير # تعريف servopin 8 const int buttonup = 6 ؛ const int buttondown = 7 ؛ ساعة int = 0 ؛ int minn = 0 ؛ int sel = 0 ؛ int stateup = 0 ؛ int المذكورة = 0 ؛ int stateel = 0 ؛ انتظر int = 0 ؛ خزانة int = 0 ؛ // إعداد المؤازرة المؤازرة ؛ زاوية int = 180 ؛ # تضمين // استخدم مكتبة السائر المعدلة مع تسلسل إطلاق المغناطيس 1000/0100/0010/0001. ضع المكتبة في مجلد مكتبتك. # تعريف سرعة التروس 64 // 1: 64 نسبة التروس ثابتة في الخطوات PerRevolution = 2048 ؛ // محرك Arduino Kit موجه لأسفل. من خلال التجربة ، حددت أن 2048 خطوة تدور حول العمود مرة واحدة. خطوات كثافة العمليات = 0 ؛ LiquidCrystal_I2C lcd (0x27، 16، 2) ؛ // إنشاء خطوة مكونة من 4 أسلاك على المسامير من 8 إلى 11: Stepper myStepper (stepsPerRevolution ، A0 ، A1 ، A2 ، A3) ؛ # تضمين # تضمين # تعريف SS_PIN 10 # تعريف RST_PIN 9 MFRC522 mfrc522 (SS_PIN ، RST_PIN) ؛ // إنشاء مثيل MFRC522. درجة كثافة العمليات = 10 ؛ إعداد باطل () {lcd.init () ؛ // تهيئة شاشة lcd lcd.backlight () ؛ // يستخدم السطر أدناه لضبط الوقت الحالي. يجب أن يتم ذلك مرة واحدة فقط ، وبعد ذلك يجب تحميل الكود // مرة أخرى مع التعليق عليه. //myRTC.setDS1302Time (40، 55، 11، 1، 7، 12، 2020) ؛ pinMode (buttonup ، INPUT_PULLUP) ؛ pinMode (زر أسفل ، INPUT_PULLUP) ، Serial.begin (9600) ؛ // بدء اتصال تسلسلي SPI.begin () ؛ // Initiate SPI bus mfrc522. PCD_Init () ؛ // بدء MFRC522 myStepper.setSpeed (0.15 * gearratio) ؛ // يبدو أن المحرك موجه لأسفل 1/64 ، مما يعني أن السرعة تحتاج إلى ضبط 64x. // تهيئة المنفذ التسلسلي: servo.attach (servopin) ؛ } حلقة فارغة () {///////////////// LCD Code // يقوم باستمرار بتحديث العرض بالوقت الحالي ووقت الاستغناء. 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 (buttonup) ؛ saidown = digitalRead (buttondown) ؛ تأخير (100) ؛ ///////////////// صرف المنطق // إذا كان الوقت الحالي هو نفسه وقت الاستغناء المحدد ، فقم بتدوير محرك السائر. // كل 9 مرات يوزع الجهاز ، يدور المحرك مسافة إضافية لضمان الدوران الكامل. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227)؛ الخطوات = الخطوات +1 ؛ تأخير (60100) ؛ myRTC.updateTime () ، } else if (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) ؛ } else if (stateup == LOW && hr == 23) {hr = 0 ؛ تأخير (50) ؛ } إذا (ذكر == LOW && minn <59) {minn = minn + 1؛ تأخير (50) ؛ } else if (الملاحظة == LOW && minn == 59) {minn = 0 ؛ تأخير (50) ؛ } /////////////////// RFID Code // يقرأ علامة RFID عند تقديمها. إذا (! mfrc522. PICC_IsNewCardPresent ()) {return؛ } // حدد إحدى البطاقات إذا (! mfrc522. PICC_ReadCardSerial ()) {return؛ } محتوى السلسلة = "" ؛ حرف البايت لـ (byte i = 0؛ i <mfrc522.uid.size؛ i ++) {//Serial.println(mfrc522.uid.uidByte <0x10؟ "0": "")؛ //Serial.println(mfrc522.uid.uidByte ، HEX) ؛ content.concat (سلسلة (mfrc522.uid.uidByte <0x10؟ "0": "")) ؛ content.concat (سلسلة (mfrc522.uid.uidByte ، HEX)) ؛ الخزانة = 1 ؛ } content.toUpperCase () ، ///////////////// LOCK CODE // عندما تتم قراءة علامة RFID الصحيحة ، انقل المؤازرة لفتح الموضع عند إغلاقه ، // وانقل المؤازرة إلى الوضع المغلق عندما تكون كذلك افتح. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// غيّر هنا المعرف الفريد للبطاقة / البطاقات التي تريد منحها حق الوصول {التبديل (درجة) {حالة 180: كتابة مؤازرة (درجة) ؛ درجة = 10 ؛ الخزانة = 0 ؛ Serial.print ("تتحرك") ؛ تأخير (1000) ؛ استراحة؛ الحالة 10: كتابة مؤازرة (درجة) ؛ درجة = 180 ؛ الخزانة = 0 ؛ تأخير (1000) ؛ استراحة؛ }}} else {Serial.println ("تم رفض الوصول")؛ تأخير (1000) ؛ }}}

الخطوة 5: الإعداد النهائي

الخطوة الأخيرة هي تجهيز المشروع للاستخدام. قم أولاً بتحميل الكود مع سطر إعداد الوقت بدون تعليق ، لتحميل الوقت الحالي إلى RTC. ثم قم بالتعليق على الكود ، وأعد تحميل الكود. سيضمن هذا أنه إذا تم فصل الجهاز عن مصدر الطاقة ، فسيظل يحتفظ بالوقت الصحيح. الآن كل ما عليك فعله هو وضع الدواء في الفتحات ، ووضع الكوب تحت فتحة الاستغناء ، وتحديد وقت الاستغناء. سيتم توزيع الجهاز بشكل موثوق في نفس الوقت كل يوم.

موصى به: