Turinys:
- 1 žingsnis: pakeiskite dėžutę
- 2 žingsnis: 3D spausdintos dalys
- 3 žingsnis: Elektronika
- 4 žingsnis: kodas
- 5 veiksmas: galutinis nustatymas
Video: Automatinis vaistų dozatorius: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Šis projektas skirtas naudoti medicinos srityje, kur vyresnio amžiaus pacientai turi turėti patikimą būdą dalinti ir išleisti vaistus. Šis prietaisas leidžia dozuoti vaistus iki 9 dienų ir automatiškai išleisti norimu laiku. Dangtį taip pat galima užrakinti naudojant RFID žymę, todėl įsitikinkite, kad tik globėjas gali pasiekti vaistus.
Priedai:
Šiam projektui sukurti reikalingos medžiagos:
- Arduino UNO
- Variklio vairuotojo modulis
- SG90 9G servo
- Žingsninis variklis
- DS1302 RTC modulis
- Įvairūs jungiamieji laidai
- IIC 1602 LCD
- Prieiga prie 3D spausdintuvo
- Kojos, tokios kaip mediniai kaiščiai
- RFID modulis ir žymė
- Du mygtukai
- Lituoklis
- Bandomoji Lenta
- Super klijai
- Mediniai varžtai
- Nebaigta medinė dėžutė su šarnyriniu dangčiu
- Dvipusė juosta
1 žingsnis: pakeiskite dėžutę
Pirmiausia reikia pakeisti dėžutę. Yra daug skylių, kurias reikia gręžti. Pirmoji skylė bus dėžutės priekyje, kur spausdinama valdymo skydelio dėžutė. Antroji skylė yra dėžutės gale, skirta USB kabeliui praeiti. Paskutinė skylė yra dėžutės apačioje, per kurią išleidę vaistai iškris. Galiausiai kojos turi būti pritvirtintos prie apačios. Kojoms naudoju gumines kojas, kurias radau aplink savo namą, tačiau galima naudoti ir medinius kaiščius.
2 žingsnis: 3D spausdintos dalys
Šiam projektui reikia daug 3D spausdintų dalių.
Jie yra:
- Karuselė, kurioje telpa vaistai
- Karuselės pagrindas
- Piltuvas vaistams
- Servo variklio svirtis dangteliui užrakinti
- Servo variklio pagrindas
- Servo rankenos fiksatorius
- Kontrolės skydelis
- Puodelis vaistui išpilstyti
Karuselės pagrindas prie dėžutės priklijuojamas dvipuse juosta. Servo variklio pagrindas ir rankos skląstis yra įsukti į dėžę trumpais mediniais varžtais. Įdėjus komponentus, valdymo skydelio dėžutė priklijuojama prie dėžutės priekio super klijais.
3 žingsnis: Elektronika
Dabar elektroniką reikia įdėti į dėžę. Pirma, žingsninis variklis yra pritvirtintas prie karuselės pagrindo M3 varžtais ir veržlėmis. Tada servo yra super priklijuotas prie jo pagrindo. Tada variklio valdiklis, „Arduino“, duonos lenta, RFID modulis ir RTC modulis yra pritvirtinti prie dėžutės dvipuse juosta. Skystųjų kristalų ekranas įkištas į skylę valdymo dėžutėje. Reikalingas tam tikras litavimas. Spaudžiamųjų mygtukų jungiamieji kabeliai turi būti prilituoti prie kastuvų jungčių. RFID skaitytuvui kaiščiai turi būti prilituoti prie plokštės.
4 žingsnis: kodas
Žemiau yra komentuojamas kodas:
Į šį kodą įtrauktos „Servo“, LCD, RTC, RFID ir žingsninio variklio bibliotekos.
////////////////// Bibliotekos ir kintamieji
#include #include // Arduino standartinė biblioteka #include #include virtuoabotixRTC myRTC (2, 3, 4); // Apibrėžti kaiščius #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int būsena = 0; int teigiamas = 0; int būsenos = 0; int laukti = 0; int spintelė = 0; // Nustatyti servo Servo servo; int kampas = 180; #include // naudokite modifikuotą žingsnių biblioteką su 1000/0100/0010/0001 magneto paleidimo seka. Įdėkite biblioteką į savo bibliotekos aplanką. #define gearratio 64 // 1: 64 pavaros santykis const int stepsPerRevolution = 2048; // „Arduino Kit“variklis yra nukreiptas žemyn. Eksperimentuodamas nustatiau, kad 2048 žingsniai pasuka veleną vieną ratą. int žingsniai = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // parenkamas 4 laidų žingsninis ant 8–11 kaiščių: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Sukurti MFRC522 egzempliorių. int deg = 10; void setup () {lcd.init (); // inicijuoti lcd lcd.backlight (); // Žemiau esanti eilutė naudojama dabartiniam laikui nustatyti. Tai reikia padaryti tik vieną kartą, o vėliau kodas // turi būti įkeliamas dar kartą kartu su juo. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (mygtukas, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Inicijuoti serijinį ryšį SPI.begin (); // Inicijuoti SPI magistralę mfrc522. PCD_Init (); // Inicijuokite MFRC522 myStepper.setSpeed (0,15*pavarų skaičius); // atrodo, kad variklis yra sumažintas 1/64, tai reiškia, kad greitį reikia nustatyti 64 kartus. // inicijuoti nuoseklųjį prievadą: servo.attach (servopin); } void loop () {///////////////// LCD kodas // Nuolat atnaujinamas ekranas pagal esamą laiką ir išdavimo laiką. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Laikas:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dispense:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); ///////////////// Skaitymo mygtukų būsenos // Skaito mygtukų būsenas, kad būtų galima pakeisti dozavimo laiką. būsena = digitalRead (mygtukas); konstatuotas = digitalRead (buttondown); vėlavimas (100); ///////////////// Dozavimo logika // Jei dabartinis laikas sutampa su pasirinktu dozavimo laiku, pasukite žingsninį variklį. // Kas 9 kartus išleidžiant prietaisą, variklis sukasi papildomą atstumą, kad būtų užtikrintas visas sukimasis. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); žingsniai = žingsniai +1; vėlavimas (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); žingsniai = 0; vėlavimas (60100); myRTC.updateTime (); ////////////////// Dozavimo laiko keitimas // Pakeiskite dozavimo laiką pagal tai, kuris mygtukas paspaudžiamas. // Laikas grįžta į nulį, kai valandos pasiekia 24, o minutės - 60.} if (stateup == LOW && hr <23) {hr = hr+1; vėlavimas (50); } else if (būsena == LOW && hr == 23) {hr = 0; vėlavimas (50); } jei (nurodytas == LOW &&minn <59) {minn = minn+1; vėlavimas (50); } else if (konstatuotas == LOW && minn == 59) {minn = 0; vėlavimas (50); } ///////////////// RFID kodas // Skaito RFID žymą, kai ji pateikiama. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Pasirinkite vieną iš kortelių, jei (! Mfrc522. PICC_ReadCardSerial ()) {return; } Styginių turinys = ""; baitų raidė; for (baitas i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (Styga (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (Styga (mfrc522.uid.uidByte , HEX)); spintelė = 1; } content.toUpperCase (); ///////////////// LOCK CODE // Kai nuskaitoma teisinga RFID žyma, perkelkite servo į atvirą padėtį, kai ji uždaryta, // ir perkelkite servo į uždarą padėtį, kai ji yra atviras. nors (spintelė == 1) {if (content.substring (1) == "3B 21 D6 22") {// čia pakeiskite kortelės/kortelių, kurioms norite suteikti prieigą, UID {switch (deg) {case 180: servo.write (deg); deg = 10; spintelė = 0; Serial.print („juda“); vėlavimas (1000); pertrauka; 10 atvejis: servo.write (deg); deg = 180; spintelė = 0; vėlavimas (1000); pertrauka; }}} else {Serial.println ("Prieiga uždrausta"); vėlavimas (1000); }}}
5 veiksmas: galutinis nustatymas
Paskutinis žingsnis yra paruošti projektą naudoti. Pirmiausia įkelkite kodą su nekomentuojama laiko nustatymo eilute, kad į RTC įkeltumėte dabartinį laiką. Tada pakomentuokite kodą ir iš naujo įkelkite kodą. Tai užtikrins, kad atjungus prietaisą, jis vis tiek išlaikys teisingą laiką. Dabar viskas, ką jums reikia padaryti, tai įdėti vaistus į lizdus, įdėti puodelį po dozavimo anga ir nustatyti dozavimo laiką. Prietaisas bus patikimai išleidžiamas kiekvieną dieną tuo pačiu laiku.
Rekomenduojamas:
„Pasidaryk pats“automatinis rankų dezinfekavimo priemonės dozatorius: 6 žingsniai
„Pasidaryk pats“automatinis rankų dezinfekavimo priemonės dozatorius: Šiame projekte mes sukursime automatinį rankų dezinfekavimo priemonės dozatorių. Šiame projekte bus naudojamas „Arduino“, ultragarso jutiklis, vandens siurblys ir rankų dezinfekavimo priemonė. Ultragarso jutiklis naudojamas patikrinti, ar rankos yra žemiau dezinfekavimo aparato išleidimo angos
AUTOMATINIS PET MAISTO DOZATORIUS: 9 žingsniai
AUTOMATINIS GYVŪNŲ MAISTO DOZATORIUS: Ar kada nors jautėte, kad eikvojate per daug laiko maitindami savo augintinį? Ar jums kada nors teko skambinti kam nors, kad pamaitintų jūsų augintinius, kai atostogavote? Aš bandžiau išspręsti abi šias problemas savo dabartiniame mokyklos projekte: „Petfeed
Automatinis rankų dezinfekavimo priemonės dozatorius: 3 žingsniai
Automatinis rankų dezinfekavimo priemonės dozatorius: Šis automatinis rankų dezinfekcijos dozatorius buvo sukurtas taip, kad būtų palyginti nebrangus pasirinkimas, kurį lengva surinkti. Daugumą reikalingų prekių galima įsigyti iš vietinių aparatūros ir elektronikos mažmenininkų. Yra galimybė spausdinti 3D
Automatinis muilo dozatorius naudojant „Arduino“: 8 žingsniai
Automatinis muilo dozatorius naudojant „Arduino“: Automatinis muilo dozatorius naudojant „arduino“: Taigi, sveikas, sveikiname sugrįžus prie naujo straipsnio šiame straipsnyje, mes pagaminsime automatinį muilo dozatorių, naudojantį „arduino“, šį muilo dozatorių labai lengva padaryti. Keletą žingsnių galite padaryti šį automatinį muilo dozatorių
Automatinis alkoholio dozatorius su „Arduino“: 6 žingsniai
Automatinis alkoholio dozatorius su „Arduino“: Šis „arduino“projektas padės jums sukurti automatinį alkoholio dozatorių. Vartotojui nereikia nieko liesti, kad gautų alkoholio, tiesiog priartėkite prie ultragarso jutiklio, alkoholis bus išstumtas, tada bus paleistas garso failas, informuojantis vartotoją, kad jis turėtų