Mundarija:

Avtomatik dori tarqatuvchi: 5 qadam
Avtomatik dori tarqatuvchi: 5 qadam

Video: Avtomatik dori tarqatuvchi: 5 qadam

Video: Avtomatik dori tarqatuvchi: 5 qadam
Video: TO'YIB UXLASH UCHUN 5 TAVSIYA// ЯХШИ УХЛАШ УСУЛЛАРИ. 5 ТАВСИЯ 2024, Iyul
Anonim
Dori -darmonlarni avtomatik tarqatish moslamasi
Dori -darmonlarni avtomatik tarqatish moslamasi

Bu loyiha tibbiyot sohasida foydalanish uchun mo'ljallangan bo'lib, u erda keksa bemorlarga dori -darmonlarni taqsimlash va tarqatishning ishonchli usuli bo'lishi kerak. Bu qurilma dori -darmonlarni 9 kungacha bo'linishiga va avtomatik ravishda kerakli vaqtda tarqatilishiga imkon beradi. Qopqoqni RFID yorlig'i bilan ham qulflab qo'yish mumkin, bu dori -darmonga faqat g'amxo'rlik qilayotgan odam kirishi mumkin.

Ta'minot:

Loyihani tayyorlash uchun zarur materiallar mavjud:

  • Arduino UNO
  • Motor haydovchi moduli
  • SG90 9G Servo
  • Bosqichli motor
  • DS1302 RTC moduli
  • Har xil o'tish simlari
  • LCD IIC 1602
  • 3D printerga kirish
  • Yog'och dublonlar kabi oyoqlar
  • RFID moduli va yorlig'i
  • Ikkita tugma
  • Lehimlash temir
  • Non paneli
  • Super elim
  • Yog'och vintlardek
  • Menteşeli qopqoqli tugallanmagan yog'och quti
  • Ikki tomonlama lenta

1 -qadam: qutini o'zgartirish

Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish
Qutini o'zgartirish

Avval qutini o'zgartirish kerak bo'ladi. Burg'ilash kerak bo'lgan bir nechta teshiklar mavjud. Birinchi teshik qutining old tomonida bo'ladi, u erda boshqaruv paneli qutisi bosiladi. Ikkinchi teshik qutining orqa tomonida, USB kabeli o'tishi uchun. Oxirgi tuynuk qutining pastki qismida joylashgan bo'lib, u erda dori yuborilganidan keyin tushadi. Oxir -oqibat, oyoqlar pastki qismga biriktirilgan bo'lishi kerak. Men uyim atrofida topilgan kauchuk oyoqlarni oyoqlar uchun ishlatardim, lekin yog'och dublonlar ham ishlatilishi mumkin.

2 -qadam: 3D bosilgan qismlar

3D bosma qismlar
3D bosma qismlar
3D bosma qismlar
3D bosma qismlar
3D bosilgan qismlar
3D bosilgan qismlar

Ushbu loyiha uchun 3D bosma qismlar kerak.

Ular:

  • Dori -darmonlarni saqlaydigan karusel
  • Karusel uchun asos
  • Dori -darmon uchun huni
  • Qopqoqni qulflash uchun servo dvigatel uchun qo'l
  • Servo dvigatel uchun taglik
  • Servo qo'l uchun mandal
  • Boshqaruv paneli
  • Dori -darmonlarni tarqatish uchun idish

Karusel uchun tayanch qutiga ikki tomonlama lenta bilan yopishtirilgan. Servo dvigatel uchun taglik va qo'l uchun mandal qisqa yog'och vintlar bilan qutiga vidalanadi. Boshqarish paneli qutisi, komponentlar kiritilgandan so'ng, qutining old qismiga super elim bilan yopishtirilgan.

3 -qadam: elektronika

Elektronika
Elektronika

Endi elektronikani qutiga joylashtirish kerak. Birinchidan, qadam dvigateli M3 murvat va yong'oqlar bilan karusel tagiga biriktirilgan. Keyin servo uning tagiga super yopishtiriladi. Keyin dvigatel boshqaruvchisi, Arduino, non paneli, RFID moduli va RTC moduli qutiga ikki tomonlama lenta bilan biriktirilgan. LCD boshqaruv qutisidagi teshikka joylashtirilgan. Bir oz lehim kerak. Tugmalar uchun o'tish kabellari belkurak ulagichlariga lehimlanishi kerak. RFID o'quvchi uchun pinlar taxtaga lehimli bo'lishi kerak.

4 -qadam: kod

Quyida sharhlangan kod:

Servo, LCD, RTC, RFID va Step vosita kutubxonalari ushbu kodga kiritilgan.

////////////////// Kutubxonalar va o'zgarmaydiganlar

#include #include // Arduino standart kutubxonasi #include #include virtuabotixRTC myRTC (2, 3, 4); // Pinlarni belgilang #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int holati = 0; int bayon etilgan = 0; int Statesel = 0; int kutish = 0; int shkafi = 0; // Servo servo servo sozlash; int burchagi = 180; #include // 1000/0100/0010/0001 magnitli o'q otish ketma -ketligi bilan o'zgartirilgan qadam kutubxonasidan foydalaning. Kutubxonani kutubxona papkasiga joylashtiring. #define gearratio 64 // 1: 64 tishli nisbati const int stepsPerRevolution = 2048; // Arduino Kit dvigateli pastga yo'naltirilgan. Tajriba orqali aniqladimki, 2048 qadam milni bir dumaloq aylantiradi. int qadamlari = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // 8 dan 11 gacha pimlarga 4 simli qadamni o'rnating: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #kiritish #qo'shish #SS_PIN 10ni belgilash #RST_PIN 9ni belgilash MFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522 misolini yarating. int deg = 10; void setup () {lcd.init (); // lcd lcd.backlight () ni ishga tushirish; // Quyidagi satr joriy vaqtni belgilash uchun ishlatiladi. Buni faqat bir marta bajarish kerak, keyin esa // kodini sharhlar bilan yana yuklash kerak. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (tugmacha, INPUT_PULLUP); pinMode (kechqurun, INPUT_PULLUP); Serial.begin (9600); // SPI.begin () ketma -ket aloqasini ishga tushirish; // SPI avtobusini ishga tushiring mfrc522. PCD_Init (); // MFRC522 ni ishga tushiring myStepper.setSpeed (0.15*tishli uzatish); // dvigatel 1/64 pastga yo'naltirilgan ko'rinadi, ya'ni tezlikni 64x ga o'rnatish kerak. // ketma -ket portni ishga tushirish: servo.attach (servopin); } void loop () {//////////////// LCD kodi // Displeyni joriy vaqt va tarqatish vaqti bilan doimiy ravishda yangilab turadi. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Vaqt:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Tarqatish:"); lcd.setCursor (10, 1); lcd.print (soat); lcd.print (":"); lcd.print (minn); ///////////////// O'qish tugmachalari holatlari // Tarqatish vaqtini o'zgartirish uchun tugmalar holatini o'qiydi. stateup = digitalRead (tugmachasi); bayon qilingan = digitalRead (quyida); kechikish (100); ///////////////// Tarqatish mantig'i // Agar joriy vaqt tanlangan tarqatish vaqti bilan bir xil bo'lsa, step motorini aylantiring. // Har 9 marta qurilma tarqatilganda, vosita to'liq aylanishni ta'minlash uchun qo'shimcha masofani aylantiradi. agar (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); qadamlar = qadamlar +1; kechikish (60100); myRTC.updateTime (); } if if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); qadamlar = 0; kechikish (60100); myRTC.updateTime (); ///////////////// Tarqatish vaqtini o'zgartirish // Qaysi tugma bosilganiga qarab tarqatish vaqtini o'zgartiring. // Vaqt nolga qaytadi, soat 24 ga, minut 60 ga tushadi.} If (stateup == LOW && hr <23) {hr = hr+1; kechikish (50); } if if (stateup == LOW && hr == 23) {hr = 0; kechikish (50); } agar (belgilangan == LOW && minn <59) {minn = minn+1; kechikish (50); } else if (aytilgan == LOW && minn == 59) {minn = 0; kechikish (50); } ///////////////// RFID kodi // RFID tegini taqdim etilganda o'qiydi. agar (! mfrc522. PICC_IsNewCardPresent ()) {qaytish; } // Kartalardan birini tanlang, agar (! Mfrc522. PICC_ReadCardSerial ()) {return; } String tarkibi = ""; bayt harfi; for (bayt i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (String (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (String (mfrc522.uid.uidByte , HEX)); shkaf = 1; } content.toUpperCase (); ///////////////// qulf kodi // u yopiq holatda uchun yopiq // va harakat Servo bo'lsa u qachon to'g'ri RFID yorlig'i ochiq joyiga, harakat Servo o'qib bo'lganda ochiq. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// kirish huquqini bermoqchi bo'lgan karta/kartalarning UID manzilini o'zgartiring {switch (deg) {case 180: servo.write (daraja); daraja = 10; shkaf = 0; Serial.print ("harakatlanuvchi"); kechikish (1000); tanaffus; 10 -holat: servo.write (daraja); daraja = 180; shkaf = 0; kechikish (1000); tanaffus; }}} boshqa {Serial.println ("Kirish taqiqlangan"); kechikish (1000); }}}

5 -qadam: Yakuniy sozlash

Oxirgi qadam - loyihani foydalanishga tayyorlash. Birinchidan, joriy vaqtni RTCga yuklash uchun vaqtni belgilash chizig'i yozilmagan kodni yuklang. Keyin kodni izohlang va kodni qayta yuklang. Bu shuni anglatadiki, agar qurilma uzilgan bo'lsa, u to'g'ri vaqtni saqlab qoladi. Endi siz dori -darmonlarni uyalarga joylashtirishingiz, kosani tarqatish teshigi ostiga qo'yishingiz va tarqatish vaqtini belgilashingiz kifoya. Qurilma har kuni bir vaqtning o'zida ishonchli tarzda tarqatiladi.

Tavsiya: