Агуулгын хүснэгт:

Эмийн автомат диспенсер: 5 алхам
Эмийн автомат диспенсер: 5 алхам

Видео: Эмийн автомат диспенсер: 5 алхам

Видео: Эмийн автомат диспенсер: 5 алхам
Видео: зачем нужна Мочевина? отключить систему SCR, жидкость AdBlue 2024, Долдугаар сарын
Anonim
Эмийн автомат диспенсер
Эмийн автомат диспенсер

Энэхүү төсөл нь өндөр наст өвчтөнүүд эм тариа хуваах, тараах найдвартай аргатай байх ёстой анагаах ухааны салбарт ашиглахад зориулагдсан болно. Энэхүү төхөөрөмж нь эмийг 9 хоногийн өмнө хувааж, хүссэн үедээ автоматаар тараах боломжийг олгодог. Тагийг RFID шошго ашиглан түгжих боломжтой бөгөөд зөвхөн асран хамгаалагч эмэнд хандах боломжтой эсэхийг шалгаарай.

Хангамж:

Энэхүү төслийг хэрэгжүүлэхэд шаардлагатай материалууд байна:

  • Ардуино НҮБ
  • Мотор жолоочийн модуль
  • SG90 9G Servo
  • Stepper мотор
  • DS1302 RTC модуль
  • Төрөл бүрийн холбогч утас
  • IIC 1602 LCD дэлгэц
  • 3D принтер рүү нэвтрэх
  • Модон алчуур гэх мэт хөл
  • RFID модуль ба хаяг
  • Хоёр товчлуур
  • Гагнуурын төмөр
  • Талхны самбар
  • супер цавуу
  • Модон эрэг
  • Нугасны тагтай дуусаагүй модон хайрцаг
  • Хоёр талт соронзон хальс

Алхам 1: Хайрцгийг өөрчлөх

Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх
Хайрцгийг өөрчлөх

Эхлээд хайрцгийг өөрчлөх шаардлагатай болно. Өрөмдөх шаардлагатай олон нүх байдаг. Эхний нүх нь хяналтын самбарын хайрцгийг хэвлэсэн хайрцгийн урд талд байх болно. Хоёрдахь нүх нь USB кабелиар дамжихын тулд хайрцагны ард байрладаг. Сүүлчийн цоорхой нь хайрцгийн ёроолд байдаг бөгөөд эм тараагдсаны дараа унах болно. Эцэст нь хөлийг ёроолд нь бэхлэх ёстой. Би байшингийнхаа эргэн тойронд олсон резинэн хөлийг хөлдөө ашигласан боловч модон алчуурыг бас ашиглаж болно.

Алхам 2: 3D хэвлэсэн хэсэг

3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги

Энэхүү төсөлд 3D хэвлэмэл хэсгүүд хэрэгтэй болно.

Тэд:

  • Эм агуулсан карусель
  • Каруселийн суурь
  • Эмийн юүлүүр
  • Тагийг түгжихийн тулд servo моторын гар
  • Серво хөдөлгүүрийн суурь
  • Серво гарны түгжээ
  • Хяналтын самбар
  • Эмэнд өгөх аяга

Каруселийн суурийг хоёр талт соронзон хальсны хайрцгаар наасан байна. Серво хөдөлгүүрийн суурь ба гарны түгжээг хоёуланг нь богино модон эрэг ашиглан хайрцагт шургуулдаг. Хяналтын самбарын хайрцгийг бүрэлдэхүүн хэсгүүдийг оруулсны дараа хайрцгийн урд талд супер цавуугаар наасан байна.

Алхам 3: Электроник

Электроник
Электроник

Цахилгаан хэрэгслийг одоо хайрцагт хийх хэрэгтэй. Нэгдүгээрт, stepper моторыг тойргийн сууринд М3 боолт, самараар бэхлэв. Дараа нь servo -ийг суурин дээрээ супер наасан байна. Дараа нь мотор хянагч, Arduino, талх, RFID модуль, RTC модулийг хоёр талт соронзон хальсны хамт хайрцагт хавсаргасан болно. LCD нь хяналтын хайрцгийн нүхэнд ордог. Зарим гагнуур хийх шаардлагатай байдаг. Товчлуурын товчлуурын хувьд холбогч кабелийг хүрзний холбогчдод гагнах ёстой. RFID уншигчийн хувьд тээглүүрийг самбар дээр гагнах ёстой.

Алхам 4: Код

Доор тайлбарласан код байна:

Servo, LCD, RTC, RFID, Stepper моторын номын санг энэ кодонд оруулсан болно.

////////////////// Номын сан ба хувьсагчид

#include #include // Arduino стандарт номын сан #include #include virtuabotixRTC myRTC (2, 3, 4); // Зүү тодорхойлох #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int мэдэгдсэн = 0; int stateel = 0; int wait = 0; int locker = 0; // Servo servo -ийг тохируулах; int өнцөг = 180; #include // 1000/0100/0010/0001 соронзоор галлах дарааллаар өөрчлөгдсөн stepper номын санг ашиглах. Номын сангаа номын сангийнхаа хавтсанд оруулна уу. #dearine gearratio 64 // 1: 64 gear ratio const int stepsPerRevolution = 2048; // Arduino Kit мотор доошоо чиглэсэн байна. Туршилтаар би 2048 алхам нь босоо амыг нэг эргүүлж байгааг тогтоов. int алхамууд = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // 8-оос 11 хүртэлх зүү дээр 4 утастай stepper-ийг үүсгэнэ: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #оруулах #оруулах #SS_PIN тодорхойлох 10 #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 (өглөөний, INPUT_PULLUP); Цуваа эхлэх (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.хэвлэх (цаг); lcd.print (":"); lcd.хэвлэх (мин); ///////////////// Товчлуурын төлөвийг уншина уу // Тараах хугацааг өөрчлөх товчлууруудын төлөвийг уншина. stateup = digitalRead (buttonup); мэдэгдсэн = digitalRead (өглөөний); саатал (100); ///////////////// Түгээх логик // Хэрэв одоогийн цаг нь сонгосон хуваарилах хугацаатай ижил байвал stepper моторыг эргүүлнэ. // Төхөөрөмжийг 9 удаа тараах бүрт хөдөлгүүр бүрэн эргэлт гаргахын тулд нэмэлт зайг эргүүлнэ. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); алхам = алхам +1; саатал (60100); myRTC.updateTime (); } if if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); алхам = 0; саатал (60100); myRTC.updateTime (); ////////////////// Тараах хугацааг өөрчлөх // Тараах хугацааг аль товчлуур дарагдсан дээр үндэслэн өөрчлөх. // Цаг 24 болж, минут 60 болтол цаг тэг рүү буцна.} If (stateup == LOW &&r <23) {hr = hr+1; саатал (50); } if if (stateup == LOW && hr == 23) {hr = 0; саатал (50); } if (мэдэгдсэн == LOW && minn <59) {minn = minn+1; саатал (50); } өөр бол (мэдэгдсэн == LOW && minn == 59) {minn = 0; саатал (50); } ///////////////// RFID код // RFID тагийг танилцуулах үед уншдаг. if (! mfrc522. PICC_IsNewCardPresent ()) {буцах; } // Хэрэв (! Mfrc522. PICC_ReadCardSerial ()) {return; } String контент = ""; байт үсэг; for (byte 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)); шүүгээ = 1; } content.toUpperCase (); //////////////// LOCK CODE // Зөв RFID шошгыг уншихад servo -ийг хаагдах үед нээлттэй байрлал руу шилжүүлэх, // servo -ийг хаагдсан үед хаалттай байрлалд шилжүүлэх. нээлттэй. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// хандалт өгөхийг хүсч буй карт/картуудын UID -г энд өөрчилнө үү {switch (deg) {case 180: servo.write (deg); градус = 10; шүүгээ = 0; Serial.print ("хөдөлж"); саатал (1000); завсарлага; тохиолдол 10: servo.write (deg); градус = 180; шүүгээ = 0; саатал (1000); завсарлага; }}} өөр {Serial.println ("Хандалтыг хориглосон"); саатал (1000); }}}

Алхам 5: Эцсийн тохиргоо

Эцсийн алхам бол төслийг ашиглахад бэлэн болгох явдал юм. Эхлээд цагийг тохируулах мөрийг тайлбарлаагүй кодыг байршуулж, одоогийн цагийг RTC дээр байршуулна уу. Дараа нь кодыг тайлбарлаж, кодыг дахин ачаална уу. Энэ нь хэрэв төхөөрөмжийг салгасан бол зөв цагийг хадгалах болно. Одоо таны хийх ёстой зүйл бол эмийг үүрэнд хийж, аягыг тараах нүхний доор байрлуулж, тараах хугацааг тохируулах явдал юм. Төхөөрөмжийг өдөр бүр нэгэн зэрэг найдвартай тараана.

Зөвлөмж болгож буй: