INHOUDSOPGAWE:

Outomatiese medisyne -dispenser: 5 stappe
Outomatiese medisyne -dispenser: 5 stappe

Video: Outomatiese medisyne -dispenser: 5 stappe

Video: Outomatiese medisyne -dispenser: 5 stappe
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Julie
Anonim
Outomatiese medisyne dispenser
Outomatiese medisyne dispenser

Hierdie projek is bedoel vir gebruik in die mediese veld, waar bejaarde pasiënte 'n betroubare manier moet hê om medikasie te laat deel en uit te gee. Met hierdie toestel kan medikasie tot 9 dae vantevore in porsies gedoseer word en outomaties op die verlangde tyd afgelewer word. Die deksel is ook afsluitbaar met die RFID -etiket, sodat slegs die versorger toegang tot die medisyne kan kry.

Benodighede:

Daar is die nodige materiaal om hierdie projek te bou:

  • Arduino UNO
  • Motorbestuurder module
  • SG90 9G Servo
  • Stapmotor
  • DS1302 RTC -module
  • Verskeie springdrade
  • IIC 1602 LCD
  • Toegang tot 3D -drukkers
  • Bene soos houtpennetjies
  • RFID -module en tag
  • Twee drukknoppies
  • Soldeerbout
  • Broodbord
  • wondergom
  • Houtskroewe
  • Onvoltooide houtkas met skarnierdeksel
  • Dubbelzijdige band

Stap 1: Verander die boks

Die kassie verander
Die kassie verander
Die kassie verander
Die kassie verander
Die kassie verander
Die kassie verander
Die kassie verander
Die kassie verander

Die boks sal eers aangepas moet word. Daar is verskeie gate wat geboor moet word. Die eerste gaatjie sal aan die voorkant van die boks wees, waar die boks van die bedieningspaneel gedruk word. Die tweede gaatjie is aan die agterkant van die boks, sodat die USB -kabel deur kan gaan. Die laaste gaatjie is aan die onderkant van die boks, waar die medikasie deurval as dit eenmaal afgelewer word. Laastens moet die bene aan die onderkant vasgemaak word. Ek het rubbervoete gebruik wat ek in my huis gevind het vir bene, maar houtdoppels kan ook gebruik word.

Stap 2: 3D -gedrukte onderdele

3D -gedrukte onderdele
3D -gedrukte onderdele
3D -gedrukte onderdele
3D -gedrukte onderdele
3D -gedrukte onderdele
3D -gedrukte onderdele

Daar is baie 3D -gedrukte onderdele wat nodig is vir hierdie projek.

Hulle is:

  • Carrusel wat medikasie bevat
  • Basis vir karrousel
  • Trechter vir die medikasie
  • Arm vir servomotor om die deksel te sluit
  • Basis vir servomotor
  • Grendel vir servo -arm
  • Beheer paneel
  • Beker vir die toediening van die medikasie

Die basis van die karrus word met dubbelzijdige band aan die boks vasgemaak. Die basis vir die servomotor en die grendel vir die arm word met kort houtskroewe in die boks vasgeskroef. Die bedieningspaneelkas word met supergom aan die voorkant van die boks vasgeplak nadat die komponente ingevoeg is.

Stap 3: Elektronika

Elektronika
Elektronika

Die elektronika moet nou in die boks geplaas word. Eerstens word die stapmotor met M3 -boute en moere aan die karruselbasis vasgemaak. Die servo word dan op die basis vasgeplak. Die motorbestuurder, Arduino, broodbord, RFID -module en RTC -module word dan met dubbelzijdige band aan die boks geheg. Die LCD word in die gat in die bedieningsboks geplaas. Daar is soldeer wat nodig is. Vir die drukknoppies moet die springkabels aan die graafverbindings gesoldeer word. Vir die RFID -leser moet die penne aan die bord gesoldeer word.

Stap 4: Kode

Hieronder is die kommentaarkode:

Biblioteke vir die Servo, LCD, RTC, RFID en Stepper motor is ingesluit in hierdie kode.

///////////////////// Biblioteke en veranderlikes

#include #include // Arduino standaardbiblioteek #include #include virtuabotixRTC myRTC (2, 3, 4); // Definieer penne #definieer servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int toestand = 0; int verklaar = 0; int state = 0; int wag = 0; int locker = 0; // Stel servo Servo servo op; int hoek = 180; #sluit in // gebruik gemodifiseerde stepper biblioteek met 'n 1000/0100/0010/0001 magneetvuurvolgorde. Plaas die biblioteek in u biblioteekmap. #define gearratio 64 // 1: 64 ratverhouding const int stepsPerRevolution = 2048; // die Arduino Kit -motor is afgeskakel. Deur eksperiment het ek vasgestel dat 2048 trappe die as een ronde draai. int stappe = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // instansieer 'n 4-draads stepper op penne 8 tot en met 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Skep MFRC522 -instansie. int deg = 10; ongeldige opstelling () {lcd.init (); // initialiseer die lcd lcd.backlight (); // Die reël hieronder word gebruik om die huidige tyd in te stel. Dit hoef slegs een keer gedoen te word, en daarna moet die kode // weer opgelaai word met kommentaar daarop. //myRTC.setDS1302Tyd (40, 55, 11, 1, 7, 12, 2020); pinMode (knoppie, INPUT_PULLUP); pinMode (onderstebo, INPUT_PULLUP); Serial.begin (9600); // Begin 'n reekskommunikasie SPI.begin (); // Begin SPI -bus mfrc522. PCD_Init (); // Begin MFRC522 myStepper.setSpeed (0.15*ratratio); // die motor blyk 1/64 af te wees, wat beteken dat die snelheid 64x ingestel moet word. // initialiseer die seriële poort: servo.attach (servopin); } leemte -lus () {/////////////////// LCD -kode // Werk die skerm voortdurend op met die huidige tyd en reseptyd. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Tyd:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Afgee:"); lcd.setCursor (10, 1); lcd.print (uur); lcd.print (":"); lcd.print (minn); ////////////////// Lees knoppie state // Lees die toestande van die knoppies om die afleweringstyd te verander. stateup = digitalRead (knoppie); stateown = digitalRead (buttondown); vertraging (100); ///////////////// Dispensing Logic // As die huidige tyd dieselfde is as die geselekteerde doseringstyd, draai die stapmotor. // Elke 9 keer wat die toestel uitgereik word, draai die motor 'n ekstra afstand om te verseker dat die motor heeltemal draai. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); stappe = stappe +1; vertraging (60100); myRTC.updateTime (); } anders as (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); stappe = 0; vertraging (60100); myRTC.updateTime (); /////////////////// Verandering van afleweringstyd // Verander die afleweringstyd op grond waarvan die knoppie ingedruk word. // Die tyd keer terug na nul wanneer die ure 24 word en die minute 60.} as (stateup == LOW && hr <23) {hr = hr+1; vertraging (50); } anders as (stateup == LOW && hr == 23) {hr = 0; vertraging (50); } as (vermeld == LOW && minn <59) {minn = minn+1; vertraging (50); } anders as (vermeld == LOW && minn == 59) {minn = 0; vertraging (50); } /////////////////// RFID -kode // Lees RFID -etiket wanneer dit aangebied word. as (! mfrc522. PICC_IsNewCardPresent ()) {opgawe; } // Kies een van die kaarte as (! Mfrc522. PICC_ReadCardSerial ()) {return; } Stringinhoud = ""; greep letter; vir (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)); kas = 1; } content.toUpperCase (); ////////////////// LOCK CODE // As die korrekte RFID -etiket gelees word, skuif servo na oop posisie wanneer dit gesluit is, // en skuif servo na geslote posisie wanneer dit is oopmaak. terwyl (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// verander hier die UID van die kaart/kaarte wat u toegang wil gee {switch (deg) {case 180: servo.write (deg); deg = 10; locker = 0; Serial.print ("beweeg"); vertraging (1000); breek; saak 10: servo.write (deg); deg = 180; locker = 0; vertraging (1000); breek; }}} else {Serial.println ("Toegang geweier"); vertraging (1000); }}}

Stap 5: Finale opstelling

Die laaste stap is om die projek gereed te maak vir gebruik. Laai eers die kode op sonder dat die tydsreël onkommenteer is, om die huidige tyd na die RTC op te laai. Lewer dan kommentaar op die kode en laai die kode weer op. Dit sal verseker dat die toestel steeds die korrekte tyd behou as die toestel ontkoppel word. Al wat u hoef te doen is om die medikasie in die gleuwe te plaas, die beker onder die houer te plaas en 'n tyd vir die afgifte in te stel. Die toestel sal elke dag op dieselfde tyd betroubaar afgee.

Aanbeveel: