فهرست مطالب:

داروخانه اتوماتیک: 5 مرحله
داروخانه اتوماتیک: 5 مرحله

تصویری: داروخانه اتوماتیک: 5 مرحله

تصویری: داروخانه اتوماتیک: 5 مرحله
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, نوامبر
Anonim
تلگراف اتوماتیک دارو
تلگراف اتوماتیک دارو

این پروژه برای استفاده در زمینه پزشکی است ، جایی که بیماران مسن باید راهی مطمئن برای تقسیم و توزیع دارو داشته باشند. این دستگاه به شما امکان می دهد تا 9 روز قبل دارو را تقسیم کرده و به طور خودکار در زمان دلخواه توزیع شود. درپوش نیز با برچسب RFID قفل می شود و مطمئن می شوید که تنها مراقب می تواند به دارو دسترسی داشته باشد.

تدارکات:

مواد لازم برای ساخت این پروژه وجود دارد:

  • آردوینو UNO
  • ماژول درایور موتور
  • SG90 9G سروو
  • استپر موتور
  • ماژول DS1302 RTC
  • سیم های مختلف جهنده
  • LCD IIC 1602
  • دسترسی به چاپگر سه بعدی
  • پاها مانند رولپلاک چوبی
  • ماژول و برچسب RFID
  • دو دکمه فشاری
  • آهن لحیم کاری
  • تخته نان
  • چسب فوق العاده
  • پیچ های چوبی
  • جعبه چوبی ناتمام با درب لولایی
  • نوار دو طرفه

مرحله 1: اصلاح جعبه

اصلاح جعبه
اصلاح جعبه
اصلاح جعبه
اصلاح جعبه
اصلاح جعبه
اصلاح جعبه
اصلاح جعبه
اصلاح جعبه

جعبه ابتدا باید اصلاح شود. چندین سوراخ وجود دارد که باید حفر شوند. اولین سوراخ در جلوی جعبه قرار دارد ، جایی که جعبه کنترل پنل چاپ شده است. سوراخ دوم در پشت جعبه قرار دارد تا کابل USB از آن عبور کند. آخرین سوراخ در انتهای جعبه قرار دارد ، هنگامی که دارو تجویز می شود ، از آنجا خارج می شود. در نهایت ، پاها باید به قسمت پایین متصل شوند. من از پاهای لاستیکی که در اطراف خانه خود پیدا کرده ام برای پاها استفاده کردم ، اما از رولپلاک چوبی نیز می توان استفاده کرد.

مرحله 2: قطعات چاپ سه بعدی

قطعات چاپ سه بعدی
قطعات چاپ سه بعدی
قطعات چاپ سه بعدی
قطعات چاپ سه بعدی
قطعات چاپ سه بعدی
قطعات چاپ سه بعدی

بسیاری از قطعات چاپ سه بعدی برای این پروژه مورد نیاز است.

آن ها هستند:

  • چرخ فلکی که دارای دارو است
  • پایه چرخ فلک
  • قیف برای دارو
  • بازوی سرو موتور برای قفل کردن درب
  • پایه برای سرو موتور
  • چفت برای بازوی سروو
  • صفحه کنترل
  • فنجان دارو برای توزیع

پایه چرخ فلک با نوار دو طرفه به جعبه چسبیده است. پایه موتور سروو و چفت بازو هر دو با پیچ های چوبی کوتاه در جعبه پیچ می شوند. جعبه کنترل پنل را پس از قرار دادن اجزاء ، با چسب فوق العاده به جلوی جعبه چسبانده می شود.

مرحله 3: الکترونیک

الکترونیک
الکترونیک

وسایل الکترونیکی اکنون باید در جعبه قرار گیرند. ابتدا ، موتور پله ای با پیچ و مهره M3 به پایه چرخ فلک متصل می شود. سروو سپس فوق العاده به پایه خود چسبانده می شود. سپس ، کنترل کننده موتور ، آردوینو ، بردبرد ، ماژول RFID و ماژول RTC همه با نوار دو طرفه به جعبه متصل می شوند. LCD در سوراخ جعبه کنترل وارد می شود. مقداری لحیم کاری وجود دارد که لازم است. برای دکمه های فشار ، کابل های بلوز باید به اتصالات بیل لحیم شوند. برای خواننده RFID ، پین ها باید به برد لحیم شوند.

مرحله 4: کد

در زیر کد نظر داده شده است:

کتابخانه های سروو ، ال سی دی ، RTC ، RFID و استپر موتور در این کد گنجانده شده است.

///////////////// کتابخانه ها و متغیرها

#شامل #شامل // کتابخانه استاندارد آردوینو #شامل #شامل virtuabotixRTC myRTC (2 ، 3 ، 4) ؛ // پین ها را تعریف کنید #تعریف سرووپین 8 const int buttonup = 6؛ const int buttondown = 7؛ int hr = 0؛ int minn = 0؛ int sel = 0؛ int stateup = 0؛ int daxuyanown = 0؛ int Statesel = 0؛ int انتظار = 0؛ قفل int = 0؛ // راه اندازی سرو سرو سرو ؛ int زاویه = 180؛ #شامل // از کتابخانه استپر اصلاح شده با دنباله شلیک آهنربایی 1000/0100/0010/0001 استفاده کنید. کتابخانه را در پوشه کتابخانه خود قرار دهید. #تعریف دنده 64 /نسبت دنده 1: 64 const int stepsPerRevolution = 2048 ؛ // موتور آردوینو کیت به سمت پایین تنظیم شده است. با آزمایش مشخص کردم که 2048 پله محور را یک دور می گرداند. مراحل int = 0؛ LiquidCrystal_I2C ال سی دی (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. int deg = 10؛ void setup () {lcd.init ()؛ // مقداردهی اولیه LCD lcd.backlight ()؛ // خط زیر برای تنظیم زمان فعلی استفاده می شود. فقط باید یک بار انجام شود ، و بعد از آن کد // باید دوباره بارگذاری شود و نظر داده شود. //myRTC.setDS1302 زمان (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*gearratio) ؛ // به نظر می رسد موتور 1/64 پایین آمده است ، به این معنی که سرعت باید 64 برابر تنظیم شود. // مقداردهی اولیه پورت سریال: servo.attach (servopin) ؛ } void loop () {///////////////// 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 (":")؛ ال سی دی چاپ (minn) ؛ ////////////////// وضعیت دکمه خواندن // حالت دکمه ها را برای تغییر زمان توزیع می خواند. stateup = digitalRead (buttonup) ؛ statementown = digitalRead (buttondown) ؛ تأخیر (100) ؛ ///////////////// توزیع منطق // اگر زمان فعلی با زمان پخش انتخاب شده یکسان است ، موتور پله ای را بچرخانید. // هر 9 بار که دستگاه پخش می شود ، موتور فاصله بیشتری را می چرخاند تا از چرخش کامل اطمینان حاصل شود. if (myRTC.hours == hr && myRTC.minutes == دقیقه && مراحل <9) {myStepper.step (227)؛ مراحل = مراحل +1 ؛ تاخیر (60100) ؛ myRTC.updateTime ()؛ } else if (myRTC.hours == hr && myRTC.minutes == minn && مراحل == 9) {myStepper.step (232)؛ مراحل = 0 ؛ تاخیر (60100) ؛ myRTC.updateTime ()؛ ////////////////// تغییر زمان توزیع // زمان توزیع را بر اساس فشردن دکمه تغییر دهید. // زمان به صفر می رسد وقتی ساعت به 24 می رسد و دقیقه به 60 می رسد.} if (stateup == LOW && hr <23) {hr = hr+1؛ تأخیر (50) ؛ } else if (stateup == LOW && hr == 23) {hr = 0؛ تأخیر (50) ؛ } if (statementown == LOW && minn <59) {minn = minn+1؛ تأخیر (50) ؛ } else if (statementown == LOW && minn == 59) {minn = 0؛ تأخیر (50) ؛ } ///////////////// RFID Code // برچسب RFID را هنگام ارائه می خواند. if (! mfrc522. PICC_IsNewCardPresent ()) {return؛ } // اگر (! mfrc522. PICC_ReadCardSerial ()) {return؛ یکی از کارت ها را انتخاب کنید. } محتوای رشته = ""؛ بایت نامه ؛ برای (بایت i = 0؛ i <mfrc522.uid.size؛ i ++) {//Serial.println(mfrc522.uid.uidByte unitedii] <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 // وقتی برچسب RFID صحیح خوانده شد ، سروو را هنگامی که بسته است حرکت دهید ، // و سروو را در موقع بسته به موقعیت بسته منتقل کنید باز کن. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// در اینجا UID کارت/کارت هایی را که می خواهید به آنها دسترسی دهید تغییر دهید {switch (deg) {case 180: servo.write (درجه) ؛ درجه = 10 ؛ قفسه = 0 ؛ Serial.print ("در حال حرکت") ؛ تاخیر (1000) ؛ زنگ تفريح؛ مورد 10: servo.write (درجه) ؛ درجه = 180 ؛ قفسه = 0 ؛ تاخیر (1000) ؛ زنگ تفريح؛ }}} else {Serial.println ("دسترسی ممنوع است")؛ تاخیر (1000) ؛ }}}

مرحله 5: تنظیم نهایی

آخرین مرحله آماده سازی پروژه برای استفاده است. ابتدا کد را بدون خط تنظیم زمان بارگذاری کنید تا زمان فعلی در RTC بارگذاری شود. سپس کد را کامنت کنید و کد را دوباره بارگذاری کنید. این اطمینان می دهد که اگر دستگاه از برق جدا باشد ، هنوز زمان صحیح را حفظ می کند. اکنون تنها کاری که باید انجام دهید این است که دارو را در شکاف ها قرار دهید ، فنجان را زیر سوراخ پخش قرار دهید و زمان توزیع را تعیین کنید. دستگاه هر روز به طور قابل اعتماد در همان زمان توزیع می شود.

توصیه شده: