সুচিপত্র:

স্বয়ংক্রিয় Disষধ সরবরাহকারী: 5 টি ধাপ
স্বয়ংক্রিয় Disষধ সরবরাহকারী: 5 টি ধাপ

ভিডিও: স্বয়ংক্রিয় Disষধ সরবরাহকারী: 5 টি ধাপ

ভিডিও: স্বয়ংক্রিয় Disষধ সরবরাহকারী: 5 টি ধাপ
ভিডিও: ০১.২০. অধ্যায় ১ : মৌলিক অর্থনৈতিক সমস্যা ও সমাধান - স্বয়ংক্রিয় দাম ব্যবস্থা [HSC] 2024, নভেম্বর
Anonim
স্বয়ংক্রিয় ওষুধ বিতরণকারী
স্বয়ংক্রিয় ওষুধ বিতরণকারী

এই প্রকল্পটি চিকিৎসা ক্ষেত্রে ব্যবহারের জন্য, যেখানে বয়স্ক রোগীদের অবশ্যই ওষুধের অংশবিশেষ এবং বিতরণের একটি নির্ভরযোগ্য উপায় থাকতে হবে। এই ডিভাইসটি medicationষধগুলিকে 9 দিন আগে ভাগ করে নিতে দেয় এবং পছন্দসই সময়ে স্বয়ংক্রিয়ভাবে বিতরণ করতে দেয়। আরএফআইডি ট্যাগের সাহায্যে lockাকনাটিও লক করা যায়, এটি নিশ্চিত করে যে শুধুমাত্র পরিচর্যাকার canষধ ব্যবহার করতে পারে।

সরবরাহ:

এই প্রকল্পটি নির্মাণের জন্য প্রয়োজনীয় উপকরণ রয়েছে:

  • আরডুইনো ইউএনও
  • মোটর ড্রাইভার মডিউল
  • SG90 9G Servo
  • Stepper মোটর
  • DS1302 RTC মডিউল
  • বিভিন্ন জাম্পার তার
  • আইআইসি 1602 এলসিডি
  • 3 ডি প্রিন্টার অ্যাক্সেস
  • পা যেমন কাঠের ডোয়েল
  • RFID মডিউল এবং ট্যাগ
  • দুটি পুশবাটন
  • তাতাল
  • ব্রেডবোর্ড
  • ভালো আঠা
  • কাঠের স্ক্রু
  • Hinged idাকনা সঙ্গে অসমাপ্ত কাঠের বাক্স
  • ডবল পার্শ্বযুক্ত টেপ

ধাপ 1: বাক্স পরিবর্তন করা

বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা
বাক্স পরিবর্তন করা

বাক্সটি প্রথমে সংশোধন করতে হবে। একাধিক ছিদ্র আছে যা অবশ্যই খনন করতে হবে। প্রথম ছিদ্রটি থাকবে বাক্সের সামনের দিকে, যেখানে কন্ট্রোল প্যানেল বাক্স প্রিন্ট করা আছে। দ্বিতীয় গর্তটি বাক্সের পিছনে, USB তারের মধ্য দিয়ে যাওয়ার জন্য। শেষ গর্তটি বাক্সের নীচে, যেখানে ওষুধটি একবার বিতরণ করা হবে। অবশেষে, পাগুলি নীচে সংযুক্ত থাকতে হবে। আমি আমার ঘরের চারপাশে পায়ে রাবার পা ব্যবহার করেছি, কিন্তু কাঠের ডোয়েলও ব্যবহার করা যেতে পারে।

ধাপ 2: 3D মুদ্রিত অংশ

3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ

এই প্রকল্পের জন্য অনেক 3D মুদ্রিত অংশ প্রয়োজন।

তারা হল:

  • ক্যারোসেল যা holdsষধ ধারণ করে
  • ক্যারোসেলের জন্য বেস
  • ওষুধের জন্য ফানেল
  • Oাকনা লক করার জন্য servo মোটর জন্য বাহু
  • সার্ভো মোটরের জন্য বেস
  • Servo আর্ম জন্য ল্যাচ
  • কন্ট্রোল প্যানেল
  • ওষুধ দেওয়ার জন্য কাপ

ক্যারাউজেলের জন্য বেসটি ডবল পার্শ্বযুক্ত টেপ দিয়ে বাক্সে লেগে থাকে। সার্ভো মোটরের জন্য ভিত্তি এবং বাহুর জন্য ল্যাচ উভয়ই ছোট কাঠের স্ক্রু দিয়ে বাক্সে স্ক্রু করা হয়। কন্ট্রোল প্যানেল বাক্সটি সুপার গ্লু দিয়ে বাক্সের সামনের দিকে আঠালো করা হয়, উপাদানগুলো োকানোর পর।

ধাপ 3: ইলেকট্রনিক্স

ইলেকট্রনিক্স
ইলেকট্রনিক্স

ইলেকট্রনিক্স এখন বাক্সে রাখা প্রয়োজন। প্রথমে, স্টেপার মোটরটি এম 3 বোল্ট এবং বাদাম সহ ক্যারোজেল বেসের সাথে সংযুক্ত। সার্ভো তারপর তার বেস থেকে খুব আঠালো হয়। তারপর, মোটর কন্ট্রোলার, আরডুইনো, ব্রেডবোর্ড, আরএফআইডি মডিউল, এবং আরটিসি মডিউল সবই ডবল পার্শ্বযুক্ত টেপ দিয়ে বাক্সের সাথে সংযুক্ত। LCD কন্ট্রোল বক্সের গর্তে োকানো হয়। কিছু সোল্ডারিং আছে যা প্রয়োজন। পুশ বোতামের জন্য, জাম্পার কেবলগুলি কোদাল সংযোগকারীদের কাছে বিক্রি করতে হবে। আরএফআইডি রিডারের জন্য, পিনগুলি অবশ্যই বোর্ডে বিক্রি করতে হবে।

ধাপ 4: কোড

নীচে মন্তব্য করা কোড:

সার্ভো, এলসিডি, আরটিসি, আরএফআইডি এবং স্টেপার মোটরের জন্য লাইব্রেরি এই কোডের অন্তর্ভুক্ত।

////////////////// লাইব্রেরি এবং ভেরিয়েবল

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অর্ডুইনো স্ট্যান্ডার্ড লাইব্রেরি #অন্তর্ভুক্ত #অন্তর্ভুক্ত ভার্চুয়াবোটিক্সআরটিসি মাইআরটিসি (2, 3, 4); // পিন সংজ্ঞায়িত করুন const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int স্টেটডাউন = 0; int স্টেটসেল = 0; int অপেক্ষা = 0; int লকার = 0; // servo servo servo সেট আপ; int কোণ = 180; #অন্তর্ভুক্ত // 1000/0100/0010/0001 চুম্বক ফায়ারিং ক্রম সহ পরিবর্তিত স্টেপার লাইব্রেরি ব্যবহার করুন। আপনার লাইব্রেরি ফোল্ডারে লাইব্রেরি রাখুন। #সংজ্ঞা গিয়ারের 64 // 1: 64 গিয়ার অনুপাত const int ধাপগুলি // Arduino কিট মোটর নিচে গিয়ার করা হয়। পরীক্ষার মাধ্যমে আমি নির্ধারণ করেছি যে 2048 ধাপ খাদকে এক রাউন্ড ঘুরিয়ে দেয়। int ধাপ = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // পিন 8 থেকে 11 এর মধ্যে 4-তারের স্টেপার ইনস্ট্যান্ট করুন: স্টেপার মাই স্টেপার (ধাপসমূহ, বিপ্লব, A0, A1, A2, A3); #অন্তর্ভুক্ত #অন্তর্ভুক্ত #সংজ্ঞা #SS_PIN 10 #RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN) নির্ধারণ করুন; // MFRC522 উদাহরণ তৈরি করুন। int deg = 10; অকার্যকর সেটআপ () {lcd.init (); // এলসিডি শুরু করুন lcd.backlight (); // এই নিচের লাইনটি বর্তমান সময় নির্ধারণ করতে ব্যবহৃত হয়। এটি শুধুমাত্র একবার করতে হবে, এবং পরে কোড // আবার এটি আপলোড করতে হবে মন্তব্য করে। //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); পিনমোড (বাটনডাউন, INPUT_PULLUP); Serial.begin (9600); // একটি সিরিয়াল যোগাযোগ SPI.begin () শুরু করুন; // SPI বাস mfrc522. PCD_Init () শুরু করুন; // MFRC522 myStepper.setSpeed (0.15*gearratio); // সিরিয়াল পোর্ট আরম্ভ করুন: servo.attach (servopin); } অকার্যকর লুপ () {/////////////////// এলসিডি কোড // বর্তমান সময় এবং ডিসপেনসিং সময়ের সাথে ডিসপ্লেটি নিয়মিত আপডেট করে। 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 (hr); lcd.print (":"); lcd.print (minn); ////////////////// বাটন স্টেটস পড়ুন // বিতরণের সময় পরিবর্তনের জন্য বোতামের অবস্থাগুলি পড়ুন। stateup = digitalRead (buttonup); স্টেটডাউন = ডিজিটাল রিড (বাটনডাউন); বিলম্ব (100); ///////////////// ডিসপেন্সিং লজিক // যদি বর্তমান সময় নির্বাচিত বিতরণ সময়ের মতো হয়, স্টেপার মোটর চালু করুন। // প্রতি 9 বার ডিভাইস বিতরণ, মোটর একটি সম্পূর্ণ ঘূর্ণন করা হয় তা নিশ্চিত করার জন্য একটি অতিরিক্ত দূরত্ব ঘুরিয়ে দেয়। যদি (myRTC.hours == hr && myRTC.minutes == minn && ধাপ <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); } ///////////////// আরএফআইডি কোড // যখন এটি উপস্থাপন করা হয় তখন আরএফআইডি ট্যাগ পড়ে। যদি (! mfrc522. PICC_IsNewCardPresent ()) {return; } // একটি কার্ড নির্বাচন করুন যদি (! Mfrc522. PICC_ReadCardSerial ()) {return; } স্ট্রিং কন্টেন্ট = ""; বাইট লেটার; জন্য (বাইট i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte // Serial.println(mfrc522.uid.uidByte , HEX); content.concat (স্ট্রিং (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (স্ট্রিং (mfrc522.uid.uidByte , HEX)); লকার = 1; } content.toUpperCase (); ///////////////// লক কোড // যখন সঠিক আরএফআইডি ট্যাগ পড়া হয়, সার্ভোটি যখন বন্ধ থাকে তখন খোলা অবস্থানে সরান, // এবং যখন এটি থাকে তখন সার্ভোটি বন্ধ অবস্থায় সরান খোলা while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// এখানে কার্ড/কার্ডের UID পরিবর্তন করুন যা আপনি অ্যাক্সেস দিতে চান {সুইচ (ডিগ্রি) {কেস 180: servo.write (deg); ডিগ্রী = 10; লকার = 0; সিরিয়াল.প্রিন্ট ("চলন্ত"); বিলম্ব (1000); বিরতি; কেস 10: servo.write (deg); ডিগ্রি = 180; লকার = 0; বিলম্ব (1000); বিরতি; }}} অন্য {Serial.println ("অ্যাক্সেস অস্বীকার"); বিলম্ব (1000); }}}

ধাপ 5: চূড়ান্ত সেট আপ

শেষ ধাপ হল ব্যবহারের জন্য প্রকল্প প্রস্তুত করা। আরটিসিতে বর্তমান সময় আপলোড করার জন্য প্রথমে কোডটি আপলোড করুন টাইম সেটিং লাইনের সাথে। তারপরে কোডটি মন্তব্য করুন এবং কোডটি পুনরায় আপলোড করুন। এটি নিশ্চিত করবে যে যদি ডিভাইসটি আনপ্লাগ করা থাকে তবে এটি এখনও সঠিক সময় ধরে রাখবে। এখন আপনাকে যা করতে হবে তা হল স্লটে ওষুধ রাখা, কাপটি ডিসপেনসিং হোল এর নিচে রাখা এবং ডিসপেনসিং টাইম সেট করা। ডিভাইসটি নির্ভরযোগ্যভাবে প্রতিদিন একই সময়ে বিতরণ করবে।

প্রস্তাবিত: