Sisukord:

Automaatne ravimite jaotur: 5 sammu
Automaatne ravimite jaotur: 5 sammu

Video: Automaatne ravimite jaotur: 5 sammu

Video: Automaatne ravimite jaotur: 5 sammu
Video: Riigikogu 08.05.2023 2024, Juuni
Anonim
Automaatne ravimite jaotur
Automaatne ravimite jaotur

See projekt on mõeldud kasutamiseks meditsiinivaldkonnas, kus eakatel patsientidel peab olema usaldusväärne viis ravimite jagamiseks ja väljastamiseks. See seade võimaldab ravimeid jagada kuni 9 päeva ette ja väljastada automaatselt soovitud ajal. Kaas on lukustatav ka RFID -sildiga, tagades, et ravimile pääseb ligi ainult hooldaja.

Tarvikud:

Selle projekti ehitamiseks on vajalikud materjalid:

  • Arduino UNO
  • Mootori juhi moodul
  • SG90 9G servo
  • Sammumootor
  • DS1302 RTC moodul
  • Erinevad hüppajajuhtmed
  • IIC 1602 LCD
  • Juurdepääs 3D -printerile
  • Jalad nagu puidust tüüblid
  • RFID -moodul ja silt
  • Kaks nuppu
  • Jootekolb
  • Leivalaud
  • Super liim
  • Puidukruvid
  • Lõpetamata puidust kast hingedega kaanega
  • Kahepoolne teip

Samm: kasti muutmine

Kasti muutmine
Kasti muutmine
Kasti muutmine
Kasti muutmine
Kasti muutmine
Kasti muutmine
Kasti muutmine
Kasti muutmine

Esmalt tuleb kasti muuta. Seal on mitu auku, mis tuleb puurida. Esimene auk asub karbi esiküljel, kuhu on trükitud juhtpaneeli kast. Teine auk on karbi tagaosas USB -kaabli läbimiseks. Viimane auk on karbi põhjas, kust ravimid pärast väljalaskmist läbi kukuvad. Lõpuks tuleb jalad põhja külge kinnitada. Kasutasin jalgade jaoks oma maja ümbrusest leitud kummist jalgu, kuid võib kasutada ka puidust tüüblit.

2. samm: 3D -prinditud osad

3D trükitud osad
3D trükitud osad
3D trükitud osad
3D trükitud osad
3D trükitud osad
3D trükitud osad

Selle projekti jaoks on vaja palju 3D -trükitud osi.

Nemad on:

  • Karussell, mis sisaldab ravimeid
  • Karusselli alus
  • Ravimi lehter
  • Servomootori käepide kaane lukustamiseks
  • Servomootori alus
  • Servohoova riiv
  • Kontrollpaneel
  • Tass ravimi väljastamiseks

Karusselli alus kinnitatakse kasti külge kahepoolse teibiga. Servomootori alus ja käe riiv on mõlemad lühikeste puidukruvidega karpi keeratud. Juhtpaneeli karp liimitakse pärast komponentide sisestamist superliimiga karbi esiküljele.

3. samm: elektroonika

Elektroonika
Elektroonika

Nüüd tuleb elektroonika kasti panna. Esiteks kinnitatakse samm -mootor karusselli aluse külge M3 poltide ja mutritega. Seejärel liimitakse servo aluspinnale superliimiga. Seejärel on mootorikontroller, Arduino, leivaplaat, RFID -moodul ja RTC -moodul kõik karbi külge kinnitatud kahepoolse teibiga. LCD sisestatakse juhtkarbi avasse. Vajalik on jootmine. Nuppude jaoks tuleb hüppajakaablid joota labidaühenduste külge. RFID -lugeja jaoks peavad tihvtid plaadile jootma.

4. samm: kood

Allpool on kommenteeritud kood:

Sellesse koodi kuuluvad servo-, LCD-, RTC-, RFID- ja samm -mootori raamatukogud.

///////////////// Raamatukogud ja muutujad

#include #include // Arduino standardraamatukogu #include #include virtuobotixRTC myRTC (2, 3, 4); // Defineeri nööpnõelad #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int olek = 0; int märgitud = 0; int olek = 0; int ootama = 0; int kapp = 0; // Servo seadistamine Servo servo; int nurk = 180; #include // kasutage muudetud sammuteeki koos magnetväljade käivitamise järjestusega 1000/0100/0010/0001. Pange kogu oma raamatukogu kausta. #define gearratio 64 // 1: 64 ülekandearv const int stepsPerRevolution = 2048; // Arduino Kiti mootor on allapoole suunatud. Katsega tegin kindlaks, et 2048 sammu pöörab võlli ühe ringi. int sammud = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // 4-juhtmelise stepperi loomine tihvtidel 8 kuni 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Loo eksemplar MFRC522. int deg = 10; void setup () {lcd.init (); // initsialiseeri lcd lcd.backlight (); // Selle all olevat rida kasutatakse praeguse kellaaja määramiseks. Seda tuleb teha ainult üks kord ja pärast seda tuleb kood // koos kommentaaridega uuesti üles laadida. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (nupp, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Seriaalne algus (9600); // jadaühenduse algatamine SPI.begin (); // SPI -siini algatamine mfrc522. PCD_Init (); // Käivitage MFRC522 myStepper.setSpeed (0,15*käigukast); // mootor näib olevat 1/64 allapoole suunatud, mis tähendab, et kiirus tuleb seadistada 64x. // jadaporti initsialiseerida: servo.attach (servopin); } void loop () {///////////////// LCD -kood // Värskendab ekraani pidevalt jooksva aja ja väljastamisajaga. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Aeg:"); 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); ///////////////// Lugemisnuppude olekud // Loeb väljastusaja muutmiseks nuppude olekut. olek = digitalRead (nupp); väidetud = digitalRead (buttondown); viivitus (100); ///////////////// Väljastamisloogika // Kui praegune kellaaeg on sama, mis valitud väljastusaeg, keerake samm -mootorit. // Iga 9 korda, kui seade väljub, pöörab mootor täiendava vahemaa, et tagada täielik pöörlemine. if (myRTC.hours == h && myRTC.minutes == minn && steps <9) {myStepper.step (227); sammud = sammud +1; viivitus (60100); myRTC.updateTime (); } muidu kui (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); sammud = 0; viivitus (60100); myRTC.updateTime (); ////////////////// Väljastamisaja muutmine // Muutke väljastamisaega vastavalt sellele, millist nuppu vajutatakse. // Aeg naaseb nulli, kui tunnid jõuavad 24 -ni ja minutid 60 -ni.} If (stateup == LOW && hr <23) {hr = hr+1; viivitus (50); } muu kui (olek == LOW && hr == 23) {hr = 0; viivitus (50); } kui (märgitud == LOW && minn <59) {minn = minn+1; viivitus (50); } muidu kui (märgitud == LOW && minn == 59) {minn = 0; viivitus (50); } ///////////////// RFID -kood // Loeb RFID -märgendit selle esitamisel. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Valige üks kaartidest, kui (! Mfrc522. PICC_ReadCardSerial ()) {return; } Stringi sisu = ""; bait täht; for (bait 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)); kapp = 1; } content.toUpperCase (); ////////////////// LUKUSTUSKOOD // Kui õige RFID -silt on loetud, viige servo suletud asendisse avatud asendisse ja // ning viige servo suletud asendisse lahti. while (kapp == 1) {if (content.substring (1) == "3B 21 D6 22") {// muuda siin selle kaardi/kaartide UID -d, millele soovid juurdepääsu anda {switch (deg) {case 180: servo.write (kraad); kraad = 10; kapp = 0; Serial.print ("liigub"); viivitus (1000); murda; juhtum 10: servo.write (deg); kraad = 180; kapp = 0; viivitus (1000); murda; }}} else {Serial.println ("Juurdepääs keelatud"); viivitus (1000); }}}

Samm: lõplik seadistamine

Viimane samm on projekti ettevalmistamine kasutamiseks. Esmalt laadige üles kood, mille aja määramise rida on kommenteerimata, et laadida praegune aeg RTC -sse. Seejärel kommenteerige koodi ja laadige kood uuesti. See tagab, et kui seade on vooluvõrgust lahti ühendatud, säilitab see ikkagi õige aja. Nüüd peate vaid panema ravimi piludesse, asetama tassi doseerimisava alla ja määrama väljastusaja. Seade väljastab usaldusväärselt iga päev samal kellaajal.

Soovitan: