Оглавление:
- Шаг 1: изменение поля
- Шаг 2: детали, напечатанные на 3D-принтере
- Шаг 3: Электроника
- Шаг 4: Код
- Шаг 5: Окончательная настройка
Видео: Автоматический дозатор лекарств: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Этот проект предназначен для использования в области медицины, где у пожилых пациентов должен быть надежный способ дозирования и выдачи лекарств. Это устройство позволяет дозировать лекарства за 9 дней до приема и автоматически выдавать их в желаемое время. Крышка также запирается с помощью RFID-метки, гарантируя, что только лицо, осуществляющее уход, может получить доступ к лекарству.
Запасы:
Необходимые материалы для строительства этого проекта:
- Arduino UNO
- Модуль драйвера двигателя
- Сервопривод SG90 9G
- Шаговый двигатель
- Модуль DS1302 RTC
- Различные перемычки
- IIC 1602 ЖК-дисплей
- Доступ к 3D-принтеру
- Ножки типа деревянных дюбелей
- RFID-модуль и бирка
- Две кнопки
- Паяльник
- Макетная плата
- супер клей
- Шурупы по дереву
- Необработанная деревянная коробка с откидной крышкой
- Двухсторонний скотч
Шаг 1: изменение поля
Коробку сначала нужно будет изменить. Необходимо просверлить несколько отверстий. Первое отверстие будет на передней части коробки, где напечатана коробка панели управления. Второе отверстие находится в задней части коробки, для кабеля USB. Последнее отверстие находится на дне коробки, через которое лекарство будет проваливаться после выдачи. В последнюю очередь к низу необходимо прикрепить ножки. Я использовал резиновые ножки, которые я нашел вокруг своего дома, вместо ножек, но можно использовать и деревянные дюбели.
Шаг 2: детали, напечатанные на 3D-принтере
Для этого проекта необходимо много деталей, напечатанных на 3D-принтере.
Они есть:
- Карусель с лекарствами
- База для карусели
- Воронка для лекарства
- Рычаг серводвигателя для фиксации крышки
- База для серводвигателя
- Защелка сервопривода
- Панель управления
- Чашка для лекарства, в которое будет выдаваться
Основание карусели приклеено к коробке двусторонним скотчем. Основание серводвигателя и защелка рычага вкручиваются в коробку короткими шурупами. Коробка панели управления приклеивается к передней части коробки суперклеем после того, как компоненты были вставлены.
Шаг 3: Электроника
Теперь электронику нужно поместить в коробку. Сначала шаговый двигатель крепится к основанию карусели болтами и гайками М3. Сервопривод затем приклеивается к его основанию. Затем контроллер двигателя, Arduino, макетная плата, модуль RFID и модуль RTC прикрепляются к коробке с помощью двусторонней ленты. ЖК-дисплей вставляется в отверстие в блоке управления. Требуется некоторая пайка. Для кнопок перемычки должны быть припаяны к контактным разъемам. Для считывателя RFID контакты должны быть припаяны к плате.
Шаг 4: Код
Ниже приведен закомментированный код:
В этот код включены библиотеки для сервопривода, ЖК-дисплея, RTC, RFID и шагового двигателя.
///////////////// Библиотеки и переменные
#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 указаноown = 0; int statesel = 0; интервал ожидания = 0; int locker = 0; // Настроить серво Серво серво; int angle = 180; #include // использовать модифицированную библиотеку шаговых двигателей с последовательностью срабатывания магнита 1000/0100/0010/0001. Поместите библиотеку в папку вашей библиотеки. #define gearratio 64 // Передаточное число 1:64 const int stepsPerRevolution = 2048; // мотор комплекта Arduino понижен. Опытным путем я определил, что 2048 шагов поворачивают вал на один оборот. int steps = 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; пустая настройка () {lcd.init (); // инициализируем ЖК-дисплей lcd.backlight (); // Строка ниже используется для установки текущего времени. Это нужно сделать только один раз, а затем код // нужно снова загрузить с комментариями. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (кнопка вверх, INPUT_PULLUP); pinMode (кнопка вниз, 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.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 (час); lcd.print (":"); lcd.print (минн); ///////////////// Чтение состояний кнопок // Считывает состояния кнопок для изменения времени выдачи. stateup = digitalRead (кнопка вверх); указаноown = digitalRead (кнопка вниз); задержка (100); ///////////////// Логика дозирования // Если текущее время совпадает с выбранным временем дозирования, поверните шаговый двигатель. // Каждые 9 раз, когда устройство производит дозирование, двигатель поворачивается на дополнительное расстояние, чтобы обеспечить полный оборот. если (myRTC.hours == час && myRTC.minutes == minn && шаги <9) {myStepper.step (227); шаги = шаги +1; задержка (60100); myRTC.updateTime (); } else if (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); } else if (stateup == LOW && hr == 23) {hr = 0; задержка (50); } if (указаноown == LOW && minn <59) {minn = minn + 1; задержка (50); } else if (указаноown == LOW && minn == 59) {minn = 0; задержка (50); } ///////////////// Код RFID // Считывает тег RFID, когда он представлен. если (! mfrc522. PICC_IsNewCardPresent ()) {возврат; } // Выбираем одну из карточек if (! Mfrc522. PICC_ReadCardSerial ()) {return; } String content = ""; байтовое письмо; 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 (); ///////////////// КОД БЛОКИРОВКИ // Когда считана правильная метка RFID, переместите сервопривод в открытое положение, // когда он закрыт, // и переместите сервопривод в закрытое положение, когда он открытым. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// измените здесь UID карты / карт, которым вы хотите предоставить доступ {switch (deg) {case 180: серво. Запись (град.); град = 10; шкафчик = 0; Serial.print («движущийся»); задержка (1000); перерыв; case 10: servo.write (градус); град = 180; шкафчик = 0; задержка (1000); перерыв; }}} else {Serial.println («Доступ запрещен»); задержка (1000); }}}
Шаг 5: Окончательная настройка
Последний шаг - подготовить проект к использованию. Сначала загрузите код со строкой установки времени без комментариев, чтобы загрузить текущее время в RTC. Затем закомментируйте код и повторно загрузите код. Это гарантирует, что даже если устройство отключено от сети, оно все равно будет показывать правильное время. Теперь все, что вам нужно сделать, это поместить лекарство в прорези, поставить чашку под отверстие для выдачи и установить время выдачи. Устройство будет надежно выдавать в одно и то же время каждый день.
Рекомендуемые:
АВТОМАТИЧЕСКИЙ ДОЗАТОР ДЛЯ ЖИВОТНЫХ: 9 шагов
АВТОМАТИЧЕСКИЙ ДОЗАТОР КОРМА ДЛЯ ЖИВОТНЫХ: Вы когда-нибудь чувствовали, что тратите слишком много времени на кормление своего питомца? Вам когда-нибудь приходилось звать кого-нибудь, чтобы покормить ваших питомцев, пока вы были в отпуске? Я попытался исправить обе эти проблемы в моем текущем школьном проекте: Petfeed
Автоматический дозатор мыла с использованием Arduino: 8 шагов
Автоматический дозатор мыла с использованием Arduino: Автоматический дозатор мыла с использованием arduino: Итак, привет, парень, добро пожаловать обратно в новую статью в этой статье, мы сделаем автоматический дозатор мыла с использованием arduino, этот дозатор мыла очень легко сделать За несколько шагов вы можете сделать этот автоматический дозатор мыла
Автоматический дозатор алкоголя с Arduino: 6 шагов
Автоматический дозатор алкоголя с Arduino: этот проект Arduino расскажет вам, как сделать автоматический дозатор алкоголя. Пользователю не нужно ничего трогать, чтобы получить алкоголь, просто подойдите к ультразвуковому датчику, спирт будет вытолкнут, затем будет воспроизведен аудиофайл, чтобы сообщить пользователю, что он должен сохранить
Как сделать автоматический дозатор мыла: 6 шагов
Как сделать автоматический дозатор мыла: ПРИВЕТ ЗДЕСЬ! В этом уроке я покажу вам, как сделать автоматический бесконтактный дозатор мыла, полностью сделанный своими руками, если вам это нравится, тогда подумайте о поддержке меня, подписавшись на мой канал ARDUINO MAKER. Так что будьте готовы вдохновиться …..! вы также можете смотреть
Автоматический дозатор воды для отслеживания расхода: 6 шагов
Автоматический дозатор воды для отслеживания потребления: Привет! Пару месяцев назад я был в своей комнате и думал о том, какой проект я хотел бы сделать для школьного задания. Я хотел сделать что-то, что подошло бы мне и принесло бы пользу в будущем. Внезапно в комнату вошла мама и