Съдържание:

Автоматичен дозатор за лекарства: 5 стъпки
Автоматичен дозатор за лекарства: 5 стъпки

Видео: Автоматичен дозатор за лекарства: 5 стъпки

Видео: Автоматичен дозатор за лекарства: 5 стъпки
Видео: Автоматичен диспенсър за паста за зъби 2024, Ноември
Anonim
Автоматичен дозатор за лекарства
Автоматичен дозатор за лекарства

Този проект е за използване в медицинската област, където възрастните пациенти трябва да имат надежден начин за порциониране и отпускане на лекарства. Това устройство позволява да се порционира лекарството до 9 дни предварително и да се отпуска автоматично в желаното време. Капакът също се заключва с RFID етикет, като се гарантира, че само болногледачът има достъп до лекарството.

Консумативи:

Има необходимите материали за изграждането на този проект:

  • Arduino UNO
  • Модул за задвижване на двигателя
  • SG90 9G Серво
  • Стъпков мотор
  • DS1302 RTC модул
  • Различни джъмперни проводници
  • IIC 1602 LCD
  • Достъп до 3D принтер
  • Крака като дървени дюбели
  • RFID модул и етикет
  • Два бутона
  • Поялник
  • Платка
  • супер лепило
  • Винтове за дърво
  • Недовършена дървена кутия с капак на шарнири
  • Двустранна касета

Стъпка 1: Промяна на кутията

Промяна на кутията
Промяна на кутията
Промяна на кутията
Промяна на кутията
Промяна на кутията
Промяна на кутията
Промяна на кутията
Промяна на кутията

Кутията първо ще трябва да бъде променена. Има няколко дупки, които трябва да бъдат пробити. Първият отвор ще бъде в предната част на кутията, където е отпечатана кутията на контролния панел. Вторият отвор е в задната част на кутията, за да може USB кабелът да премине. Последната дупка е на дъното на кутията, където лекарството ще пропадне, след като бъде издадено. И накрая, краката трябва да бъдат прикрепени към дъното. Използвах гумени крачета, които намерих около къщата си за крака, но могат да се използват и дървени дюбели.

Стъпка 2: 3D отпечатани части

3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части
3D отпечатани части

За този проект са необходими много 3D отпечатани части.

Те са:

  • Въртележка с лекарства
  • Основа за въртележка
  • Фуния за лекарството
  • Рамо за серво мотор за заключване на капака
  • Основа за серво мотор
  • Фиксатор за серво рамо
  • Контролен панел
  • Чаша за дозиране на лекарството

Основата за въртележката се залепва към кутията с двустранна лента. Основата за серво мотора и ключалката за рамото се завинтват в кутията с къси винтове за дърво. Кутията на контролния панел е залепена към предната част на кутията със супер лепило, след като компонентите са поставени.

Стъпка 3: Електроника

Електроника
Електроника

Сега електрониката трябва да бъде поставена в кутията. Първо, стъпковият двигател е прикрепен към основата на въртележката с болтове и гайки М3. След това сервото е супер залепено към основата си. След това контролерът на двигателя, Arduino, макет, RFID модул и RTC модул са прикрепени към кутията с двустранна лента. LCD дисплеят е поставен в отвора в кутията за управление. Необходимо е известно запояване. За бутоните джъмперните кабели трябва да бъдат запоени към конекторите на лопатките. За RFID четеца щифтовете трябва да бъдат запоени към платката.

Стъпка 4: Код

По -долу е коментираният код:

Библиотеките за серво, LCD, RTC, RFID и стъпков двигател са включени в този код.

/////////////////// Библиотеки и променливи

#include #include // Стандартна библиотека на Arduino #include #include virtuabotixRTC myRTC (2, 3, 4); // Определете щифтове #дефинирайте 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 statesel = 0; int чакане = 0; int шкафче = 0; // Настройка на серво Серво серво; int ъгъл = 180; #include // използвайте модифицирана степърна библиотека с 1000/0100/0010/0001 последователност на изстрелване на магнит. Поставете библиотеката във вашата библиотечна папка. #define gearratio 64 // 1: 64 предавателно отношение const int stepsPerRevolution = 2048; // двигателят на Arduino Kit е насочен надолу. Чрез експеримент установих, че 2048 стъпки завъртат вала един кръг. int стъпки = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // създаваме 4-жичен степер на щифтове 8 до 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Създаване на екземпляр на MFRC522. int deg = 10; void setup () {lcd.init (); // инициализираме lcd lcd.backlight (); // Редът под това се използва за задаване на текущото време. Това трябва да се направи само веднъж, а след това кодът // трябва да бъде качен отново с коментар. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (бутон, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Иницииране на серийна комуникация SPI.begin (); // Иницииране на SPI шина mfrc522. PCD_Init (); // Инициирайте MFRC522 myStepper.setSpeed (0,15*gearratio); // изглежда, че двигателят е насочен надолу 1/64, което означава, че скоростта трябва да бъде зададена 64x. // инициализира серийния порт: 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 (hr); lcd.print (":"); lcd.print (minn); /////////////////// Четене на състоянието на бутоните // Чете състоянията на бутоните, за да промени времето за дозиране. stateup = digitalRead (бутон); заявено = digitalRead (buttondown); забавяне (100); /////////////////// Логика за дозиране // Ако текущото време е същото като избраното време за дозиране, завъртете стъпковия двигател. // На всеки 9 пъти, когато устройството се разпределя, моторът завърта допълнително разстояние, за да се гарантира пълно завъртане. if (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.} if (stateup == LOW && hr <23) {hr = hr+1; забавяне (50); } иначе ако (stateup == LOW && hr == 23) {hr = 0; забавяне (50); } if (заявено == НИСКО && minn <59) {minn = minn+1; забавяне (50); } иначе ако (заявено == НИСКО && minn == 59) {minn = 0; забавяне (50); } /////////////////// RFID код // Чете RFID етикет, когато е представен. if (! mfrc522. PICC_IsNewCardPresent ()) {връщане; } // Изберете една от картите ако (! Mfrc522. PICC_ReadCardSerial ()) {return; } Низово съдържание = ""; байтова буква; for (байт 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 (Низ (mfrc522.uid.uidByte , HEX)); шкафче = 1; } content.toUpperCase (); /////////////////// LOCK CODE // Когато се прочете правилния RFID маркер, преместете серво в отворена позиция, когато е затворена, // и преместете серво в затворена позиция, когато е отворен. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// променете тук UID на картата/картите, на които искате да предоставите достъп {switch (deg) {case 180: servo.write (deg); deg = 10; шкафче = 0; Serial.print ("преместване"); забавяне (1000); прекъсване; случай 10: servo.write (deg); deg = 180; шкафче = 0; забавяне (1000); прекъсване; }}} else {Serial.println ("Достъпът е отказан"); забавяне (1000); }}}

Стъпка 5: Окончателна настройка

Последната стъпка е да подготвите проекта за употреба. Първо качете кода с некомментиран ред за настройка на времето, за да качите текущото време в RTC. След това коментирайте кода и го заредете отново. Това ще гарантира, че ако устройството е изключено, то ще запази правилното време. Сега всичко, което трябва да направите, е да поставите лекарството в слотовете, да поставите чашата под отвора за дозиране и да зададете време за дозиране. Устройството надеждно ще се разпределя по едно и също време всеки ден.

Препоръчано: