Sisällysluettelo:

Automaattinen lääkkeiden annostelija: 5 vaihetta
Automaattinen lääkkeiden annostelija: 5 vaihetta

Video: Automaattinen lääkkeiden annostelija: 5 vaihetta

Video: Automaattinen lääkkeiden annostelija: 5 vaihetta
Video: Lääketietoa lääkkeiden käyttäjille - Proviisori Henna Uusitalo 2024, Heinäkuu
Anonim
Automaattinen lääkkeiden annostelija
Automaattinen lääkkeiden annostelija

Tämä projekti on tarkoitettu käytettäväksi lääketieteen alalla, jossa iäkkäillä potilailla on oltava luotettava tapa lääkkeiden jakamiseen ja annosteluun. Tämä laite mahdollistaa lääkkeiden annostelun jopa 9 päivää etukäteen ja annostellaan automaattisesti haluttuun aikaan. Kansi on myös lukittava RFID -tunnisteella, mikä varmistaa, että vain hoitaja pääsee käsiksi lääkkeeseen.

Tarvikkeet:

Tämän projektin rakentamiseen tarvitaan tarvittavat materiaalit:

  • Arduino UNO
  • Moottorin ohjainmoduuli
  • SG90 9G Servo
  • Askelmoottori
  • DS1302 RTC -moduuli
  • Erilaisia hyppyjohtimia
  • IIC 1602 LCD
  • 3D -tulostimen käyttö
  • Jalat, kuten puiset tapit
  • RFID -moduuli ja tunniste
  • Kaksi painonappia
  • Juotin
  • Leipälauta
  • pikaliima
  • Puuruuvit
  • Keskeneräinen puulaatikko saranoidulla kannella
  • Kaksipuolinen teippi

Vaihe 1: Laatikon muokkaaminen

Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen
Laatikon muokkaaminen

Laatikko on ensin muutettava. On useita reikiä, jotka on porattava. Ensimmäinen reikä on laatikon etuosassa, johon ohjauspaneelin laatikko on painettu. Toinen reikä on laatikon takana, jotta USB -kaapeli pääsee läpi. Viimeinen reikä on laatikon pohjassa, josta lääke putoaa annostelun jälkeen. Lopuksi jalat on kiinnitettävä pohjaan. Käytin taloni ympäriltä löytämiäni kumijalkoja jaloille, mutta puisia tappeja voidaan myös käyttää.

Vaihe 2: 3D -tulostetut osat

3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat

Tähän projektiin tarvitaan monia 3D -tulostettuja osia.

He ovat:

  • Karuselli, joka sisältää lääkkeitä
  • Pohja karusellille
  • Suppilo lääkitystä varten
  • Servomoottorin varsi kannen lukitsemiseksi
  • Pohja servomoottorille
  • Servovarren salpa
  • Ohjauspaneeli
  • Kuppi lääkkeen annostelua varten

Karusellin pohja kiinnitetään laatikkoon kaksipuolisella teipillä. Servomoottorin pohja ja varren salpa ruuvataan koteloon lyhyillä puuruuvilla. Ohjauspaneelin laatikko liimataan laatikon etuosaan superliimalla, kun komponentit on asetettu paikalleen.

Vaihe 3: Elektroniikka

Elektroniikka
Elektroniikka

Elektroniikka on nyt laitettava laatikkoon. Ensinnäkin askelmoottori kiinnitetään karusellin pohjaan M3 -pulteilla ja muttereilla. Servo on sitten liimattu pohjaansa. Sitten moottorin ohjain, Arduino, leipälevy, RFID -moduuli ja RTC -moduuli kiinnitetään laatikkoon kaksipuolisella teipillä. Nestekidenäyttö asetetaan ohjauslaatikon reikään. Joitakin juotoksia tarvitaan. Painikkeita varten hyppyjohdot on juotettava lapion liittimiin. RFID -lukijaa varten nastat on juotettava piirilevyyn.

Vaihe 4: Koodi

Alla on kommentoitu koodi:

Servo-, LCD-, RTC-, RFID- ja askelmoottorikirjastot sisältyvät tähän koodiin.

////////////////// Kirjastot ja muuttujat

#include #include // Arduino -standardikirjasto #include #include virtuobotixRTC myRTC (2, 3, 4); // Määritä nastat #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int -tila = 0; int ilmoitettu = 0; int tilat = 0; int odota = 0; int kaappi = 0; // Asenna servo Servo servo; int kulma = 180; #include // käytä muokattua askelkirjastoa 1000/0100/0010/0001 magneetin laukaisusekvenssillä. Laita kirjasto kirjastokansioosi. #define gearratio 64 // 1: 64 gear ratio const int stepsPerRevolution = 2048; // Arduino Kit -moottori on suunnattu alas. Kokeella päätin, että 2048 askelta kääntää akselia yhden kierroksen. int askeleet = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // näytä 4-johtiminen askelin nastoissa 8-11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #sisällytä #sisällytä #määrittele SS_PIN 10 #määritä RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Luo MFRC522 -ilmentymä. int deg = 10; void setup () {lcd.init (); // alustetaan lcd lcd.backlight (); // Tämän alapuolella olevalla rivillä asetetaan nykyinen aika. Se on tehtävä vain kerran, ja sen jälkeen koodi // on ladattava uudelleen sen mukana. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (painike, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Sarja.alku (9600); // Sarjaliikenteen aloittaminen SPI.begin (); // Käynnistä SPI -väylä mfrc522. PCD_Init (); // Käynnistä MFRC522 myStepper.setSpeed (0,15*vaihteisto); // moottori näyttää olevan 1/64 alaspäin, mikä tarkoittaa, että nopeus on asetettava 64 -kertaiseksi. // sarjaportin alustaminen: servo.attach (servopin); } void loop () {///////////////// LCD -koodi // Päivittää näytön jatkuvasti nykyisen ajan ja annosteluajan. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Aika:"); 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); ///////////////// Lukupainikkeiden tilat // Lukee painikkeiden tilat annosteluajan muuttamiseksi. tila = digitalRead (painike); ilmoitettu = digitaalinen luku (buttondown); viive (100); ////////////////// Annostelulogiikka // Jos nykyinen aika on sama kuin valittu annosteluaika, käännä askelmoottoria. // Moottori kääntyy ylimääräisen matkan varmistaakseen täyden pyörimisen joka 9. kerta, kun laite annostellaan. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); askeleet = vaiheet +1; viive (60100); myRTC.updateTime (); } muu jos (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); askeleet = 0; viive (60100); myRTC.updateTime (); ////////////////// Annosteluajan muuttaminen // Muuta annosteluaikaa sen mukaan, mitä painiketta painetaan. // Aika palaa nollaan, kun tunteihin tulee 24 ja minuutteihin 60.} if (stateup == LOW && hr <23) {hr = hr+1; viive (50); } muu jos (tila = = LOW && hr == 23) {hr = 0; viive (50); } jos (ilmoitettu == LOW && minn <59) {minn = minn+1; viive (50); } muu jos (ilmoitettu = = LOW && minn == 59) {minn = 0; viive (50); } ///////////////// RFID -koodi // lukee RFID -tunnisteen, kun se esitetään. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Valitse yksi korteista, jos (! Mfrc522. PICC_ReadCardSerial ()) {return; } Merkkijonosisältö = ""; tavukirjain; for (tavu i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (Jono (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (Jono (mfrc522.uid.uidByte , HEX)); kaappi = 1; } content.toUpperCase (); ///////////////// LUKKOKOODI // Kun oikea RFID -tunniste luetaan, siirrä servo auki -asentoon, kun se on kiinni, // ja siirrä servo kiinni -asentoon, kun se on avata. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// muuttaa tässä kortin/korttien UID -tunnuksen, jolle haluat antaa käyttöoikeuden {switch (deg) {case 180: servokirjoitus (aste); deg = 10; kaappi = 0; Serial.print ("liikkuva"); viive (1000); tauko; tapaus 10: servokirjoitus (aste); astetta = 180; kaappi = 0; viive (1000); tauko; }}} else {Serial.println ("Pääsy estetty"); viive (1000); }}}

Vaihe 5: Lopullinen asennus

Viimeinen vaihe on valmistella projekti käyttöön. Lataa ensin koodi, jonka ajan asetusrivi on kommentoimaton, niin voit ladata nykyisen ajan RTC: hen. Kommentoi sitten koodi ulos ja lataa koodi uudelleen. Tämä varmistaa, että jos laite irrotetaan pistorasiasta, se säilyttää silti oikean ajan. Nyt sinun tarvitsee vain laittaa lääke aukkoihin, asettaa kuppi annostelureiän alle ja asettaa annosteluaika. Laite annostelee luotettavasti samaan aikaan joka päivä.

Suositeltava: