Съдържание:
- Стъпка 1: Промяна на кутията
- Стъпка 2: 3D отпечатани части
- Стъпка 3: Електроника
- Стъпка 4: Код
- Стъпка 5: Окончателна настройка
Видео: Автоматичен дозатор за лекарства: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Този проект е за използване в медицинската област, където възрастните пациенти трябва да имат надежден начин за порциониране и отпускане на лекарства. Това устройство позволява да се порционира лекарството до 9 дни предварително и да се отпуска автоматично в желаното време. Капакът също се заключва с RFID етикет, като се гарантира, че само болногледачът има достъп до лекарството.
Консумативи:
Има необходимите материали за изграждането на този проект:
- Arduino UNO
- Модул за задвижване на двигателя
- SG90 9G Серво
- Стъпков мотор
- DS1302 RTC модул
- Различни джъмперни проводници
- IIC 1602 LCD
- Достъп до 3D принтер
- Крака като дървени дюбели
- RFID модул и етикет
- Два бутона
- Поялник
- Платка
- супер лепило
- Винтове за дърво
- Недовършена дървена кутия с капак на шарнири
- Двустранна касета
Стъпка 1: Промяна на кутията
Кутията първо ще трябва да бъде променена. Има няколко дупки, които трябва да бъдат пробити. Първият отвор ще бъде в предната част на кутията, където е отпечатана кутията на контролния панел. Вторият отвор е в задната част на кутията, за да може USB кабелът да премине. Последната дупка е на дъното на кутията, където лекарството ще пропадне, след като бъде издадено. И накрая, краката трябва да бъдат прикрепени към дъното. Използвах гумени крачета, които намерих около къщата си за крака, но могат да се използват и дървени дюбели.
Стъпка 2: 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. След това коментирайте кода и го заредете отново. Това ще гарантира, че ако устройството е изключено, то ще запази правилното време. Сега всичко, което трябва да направите, е да поставите лекарството в слотовете, да поставите чашата под отвора за дозиране и да зададете време за дозиране. Устройството надеждно ще се разпределя по едно и също време всеки ден.
Препоръчано:
Направи си сам автоматичен дозатор за дезинфекция на ръце: 6 стъпки
Направи си сам автоматичен дозатор за дезинфекция на ръце: В този проект ние ще изградим автоматичен дозатор за дезинфекция на ръце. Този проект ще използва Arduino, ултразвуков сензор, водна помпа и дезинфектант за ръце. Ултразвуков сензор се използва за проверка на наличието на ръце под изхода на дезинфектанта
Автоматичен дозатор за алкохол с гел с Esp32: 9 стъпки
Автоматичен дозатор за алкохол с гел с Esp32: В урока ще видим как да направим пълен прототип, за да сглобим автоматичен дозатор за гел за алкохол с esp32, той ще включва поетапно сглобяване, електронна схема, както и изходния код, обяснен всички стъпки от стъпка
АВТОМАТИЧЕН ДОЗАТОР ЗА ХРАНИТЕЛНИ ХРАНИ: 9 стъпки
АВТОМАТИЧЕН ДОЗАТОР ЗА ХРАНИТЕЛНИ ХРАНИ: Някога чувствали ли сте се, че губите твърде много време в храненето на вашия домашен любимец? Случвало ли ви се е да се обадите на някого, за да нахрани вашите домашни любимци, докато сте на почивка? Опитах се да поправя и двата проблема с настоящия си училищен проект: Petfeed
Автоматичен дозатор за дезинфекция на ръце: 3 стъпки
Автоматичен дозатор за дезинфекция на ръце: Този автоматичен дозатор за дезинфекция на ръце е проектиран да бъде относително ниска цена, която е лесна за сглобяване. Повечето от необходимите артикули могат да бъдат закупени от местните търговци на хардуер и електроника. Има възможност за 3D отпечатване на
Автоматичен дозатор за сапун, използващ Arduino: 8 стъпки
Автоматичен дозатор за сапун, използващ Arduino: Автоматичен дозатор за сапун, използващ arduino: Така че добре дошъл човек обратно към новата статия в тази статия, ние ще направим автоматичен дозатор за сапун, използващ arduino, този дозатор за сапун е много лесен за изработка В няколко стъпки можете да направите този автоматичен дозатор за сапун