Spisu treści:
- Krok 1: Modyfikacja pudełka
- Krok 2: Części drukowane w 3D
- Krok 3: Elektronika
- Krok 4: Kod
- Krok 5: Ostateczna konfiguracja
Wideo: Automatyczny dozownik leków: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:26
Ten projekt ma zastosowanie w medycynie, gdzie starsi pacjenci muszą mieć niezawodny sposób na porcjowanie i wydawanie leków. To urządzenie pozwala na porcjowanie leków z 9-dniowym wyprzedzeniem i automatyczne wydawanie w żądanym czasie. Pokrywę można również zablokować za pomocą znacznika RFID, dzięki czemu tylko opiekun ma dostęp do leku.
Kieszonkowe dzieci:
Do wykonania tego projektu potrzebne są materiały:
- Arduino UNO
- Moduł sterownika silnika
- Serwo SG90 9G
- Silnik krokowy
- Moduł RTC DS1302
- Różne przewody połączeniowe
- IIC 1602 LCD
- Dostęp do drukarki 3D
- Nogi takie jak drewniane kołki
- Moduł i tag RFID
- Dwa przyciski
- Lutownica
- Deska do krojenia chleba
- Super klej
- Wkręty do drewna
- Niedokończone drewniane pudełko z pokrywką na zawiasach
- Taśma dwustronna
Krok 1: Modyfikacja pudełka
Najpierw trzeba będzie zmodyfikować pudełko. Należy wywiercić wiele otworów. Pierwszy otwór będzie z przodu pudełka, gdzie nadrukowany jest panel sterowania. Drugi otwór znajduje się z tyłu pudełka, przez który przechodzi kabel USB. Ostatni otwór znajduje się na dnie pudełka, przez które wpadnie lek po wydaniu. Wreszcie nogi muszą być przymocowane do dna. Do nóg użyłem gumowych nóżek, które znalazłem w domu, ale można też użyć drewnianych kołków.
Krok 2: Części drukowane w 3D
Do tego projektu potrzebnych jest wiele części drukowanych w 3D.
Oni są:
- Karuzela z lekami
- Podstawa do karuzeli
- Lejek na leki
- Ramię do serwomotoru do zablokowania pokrywy
- Podstawa do silnika serwo
- Zatrzask do ramienia serwa
- Panel sterowania
- Kubek na lek, który ma być dozowany
Podstawa karuzeli jest przyklejona do pudełka taśmą dwustronną. Podstawa silnika serwo i zatrzask ramienia są przykręcone do skrzynki za pomocą krótkich wkrętów do drewna. Puszka panelu sterowania jest przyklejana z przodu pudełka za pomocą super kleju, po włożeniu elementów.
Krok 3: Elektronika
Elektronika musi teraz zostać umieszczona w pudełku. Najpierw silnik krokowy mocowany jest do podstawy karuzeli za pomocą śrub i nakrętek M3. Serwo jest następnie super przyklejane do jego podstawy. Następnie sterownik silnika, Arduino, płytkę stykową, moduł RFID i moduł RTC są przymocowane do pudełka taśmą dwustronną. Wyświetlacz LCD jest włożony w otwór w skrzynce sterowniczej. Wymagane jest trochę lutowania. W przypadku przycisków kable połączeniowe muszą być przylutowane do złączy widełkowych. W przypadku czytnika RFID piny muszą być przylutowane do płytki.
Krok 4: Kod
Poniżej komentowany kod:
Biblioteki dla serwo, LCD, RTC, RFID i silnika krokowego są zawarte w tym kodzie.
///////////////// Biblioteki i zmienne
#include #include //Standardowa biblioteka Arduino #include #include virtuabotixRTC myRTC(2, 3, 4); // Zdefiniuj piny #define servopin 8 const int buttonup = 6; const int buttondown = 7; int godz=0; int min=0; int wyb=0; int stan=0; int statedown=0; int stansel=0; int czekaj = 0; wew szafka = 0; // Ustaw serwo Serwo serwo; kąt wewnętrzny = 180; #include //użyj zmodyfikowanej biblioteki krokowej z sekwencją zapłonu magnesu 1000/0100/0010/0001. Umieść bibliotekę w folderze biblioteki. #define gearratio 64 //1:64 przełożenie const int stepsPerRevolution = 2048; //silnik Arduino Kit jest na niższym biegu. Eksperymentalnie ustaliłem, że 2048 kroków obraca wał o jeden obrót. int kroki = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // utwórz instancję 4-przewodowego steppera na pinach od 8 do 11: Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Utwórz instancję MFRC522. int stopnie = 10; void setup() { lcd.init(); // zainicjuj lcd lcd.backlight(); // Wiersz poniżej służy do ustawienia aktualnego czasu. Wystarczy to zrobić tylko raz, a następnie kod // musi zostać ponownie przesłany z komentarzem. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode(buttonup, INPUT_PULLUP); pinMode(przycisk, INPUT_PULLUP); Serial.początek(9600); // Zainicjuj komunikację szeregową SPI.begin(); // Zainicjuj magistralę SPI mfrc522. PCD_Init(); // Zainicjuj MFRC522 myStepper.setSpeed(0.15*gearratio);//silnik wydaje się być obniżony o 1/64, co oznacza, że należy ustawić prędkość 64x. // zainicjuj port szeregowy: servo.attach(servopin); } void loop(){ ///////////////// LCD Code // Ciągle aktualizuje wyświetlacz o aktualny czas i czas dozowania. lcd.clear(); mójRTC.czas aktualizacji(); lcd.setCursor(0, 0); lcd.print("Czas:"); lcd.setCursor(6, 0); lcd.print(myRTC.godziny); lcd.print(":"); lcd.print(myRTC.minuty); lcd.setCursor(0, 1); lcd.print("Wydawanie:"); lcd.setCursor(10, 1); lcd.print(hr); lcd.print(":"); lcd.print(minn); ///////////////// Odczytaj stany przycisków // Odczytuje stany przycisków w celu zmiany czasu dozowania. stateup = digitalRead(buttonup); statedown = digitalRead(buttondown); opóźnienie (100); ///////////////// Logika dozowania // Jeśli aktualny czas jest taki sam jak wybrany czas dozowania, włącz silnik krokowy. // Co 9 razy urządzenie dozuje, silnik obraca się o dodatkową odległość, aby zapewnić pełny obrót. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9){ myStepper.step(227); kroki = kroki +1; opóźnienie (60100); mójRTC.czas aktualizacji(); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps ==9){ myStepper.step(232); kroki = 0; opóźnienie (60100); mójRTC.czas aktualizacji(); ///////////////// Zmiana czasu dozowania // Zmiana czasu dozowania w zależności od tego, który przycisk został naciśnięty. // Czas wraca do zera, gdy godziny zbliżają się do 24, a minuty do 60. } if (stateup == LOW && hr<23){ hr=hr+1; opóźnienie(50); } else if (stateup == LOW && hr ==23){ hr=0; opóźnienie(50); } if (statedown == NISKI && minn <59){ minn=minn+1; opóźnienie(50); } else if (statedown == LOW && minn ==59){ minn=0; opóźnienie(50); } ///////////////// Kod RFID // Odczytuje tag RFID po jego prezentacji. if (! mfrc522. PICC_IsNewCardPresent()) { return; } // Wybierz jedną z kart if (! mfrc522. PICC_ReadCardSerial()) { return; } Treść ciągu = ""; litera bajtu; 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)); szafka = 1; } content.toUpperCase(); ///////////////// KOD BLOKUJĄCY // Po odczytaniu prawidłowego tagu RFID przesuń serwomechanizm do pozycji otwartej, gdy jest zamknięty, // i przesuń serwomechanizm do pozycji zamkniętej, gdy jest otwarty. while (locker == 1){ if (content.substring(1) == "3B 21 D6 22"){ //zmień tutaj UID karty/kart, którym chcesz przyznać dostęp { switch (deg){ case 180: serwo.zapis(stopnie); stopnie = 10; szafka = 0; Serial.print("przenoszenie"); opóźnienie (1000); przerwa; przypadek 10: servo.write(deg); stopnie = 180; szafka=0; opóźnienie (1000); przerwa; } } } else { Serial.println("Odmowa dostępu"); opóźnienie (1000); } } }
Krok 5: Ostateczna konfiguracja
Ostatnim krokiem jest przygotowanie projektu do użytku. Najpierw wgraj kod z odkomentowaną linią ustawiania czasu, aby wgrać aktualny czas do RTC. Następnie zakomentuj kod i prześlij go ponownie. Zapewni to, że jeśli urządzenie zostanie odłączone, nadal zachowa prawidłowy czas. Teraz wystarczy umieścić lek w szczelinach, umieścić kubek pod otworem dozującym i ustawić czas dozowania. Urządzenie będzie niezawodnie dozować codziennie o tej samej porze.
Zalecana:
Automatyczny dozownik do ręcznego dezynfekcji rąk: 6 kroków
Automatyczny dozownik do ręcznego dezynfekcji rąk: W tym projekcie zbudujemy automatyczny dozownik do dezynfekcji rąk. Ten projekt będzie wykorzystywał Arduino, czujnik ultradźwiękowy, pompę wody i dezynfektor do rąk. Czujnik ultradźwiękowy służy do sprawdzania obecności rąk poniżej wylotu dezynfektora
Automatyczny dozownik alkoholu żelowego z Esp32: 9 kroków
Automatyczny dozownik alkoholu żelowego z Esp32: W samouczku zobaczymy, jak zrobić kompletny prototyp, aby złożyć automatyczny dozownik alkoholu żelowego z esp32, będzie zawierał montaż krok po kroku, obwód elektroniczny, a także kod źródłowy wyjaśniony krok po kroku krok
AUTOMATYCZNY DOZOWNIK KARMY DLA ZWIERZĄT: 9 kroków
AUTOMATYCZNY DOZOWNIK KARMY DLA ZWIERZĄT: Czy kiedykolwiek miałeś ochotę marnować zbyt dużo czasu na karmienie zwierzaka? Czy kiedykolwiek musiałeś zadzwonić do kogoś, aby nakarmił twoje zwierzęta, gdy byłeś na wakacjach? Próbowałem rozwiązać oba te problemy w moim obecnym projekcie szkolnym: Petfeed
Automatyczny dozownik mydła za pomocą Arduino: 8 kroków
Automatyczny dozownik mydła za pomocą Arduino: Automatyczny dozownik mydła za pomocą arduino: Witam serdecznie z powrotem do nowego artykułu w tym artykule zrobimy automatyczny dozownik mydła za pomocą arduino ten dozownik mydła jest bardzo łatwy do wykonania W kilku krokach możesz zrobić ten automatyczny dozownik mydła
Dozownik leków na bazie Arduino: 5 kroków (ze zdjęciami)
Dozownik leków na bazie Arduino: jest bardzo łatwy w wykonaniu i bardzo przydatny