Sadržaj:

Automatski dozator lijekova: 5 koraka
Automatski dozator lijekova: 5 koraka

Video: Automatski dozator lijekova: 5 koraka

Video: Automatski dozator lijekova: 5 koraka
Video: (Re)programiranje podsvijesti u 5 koraka! Dr Cathy Collautt sa prevodom. Moć podsvesti. 2024, Juli
Anonim
Automatski dozator za lijekove
Automatski dozator za lijekove

Ovaj projekt je za upotrebu u medicini, gdje stariji pacijenti moraju imati pouzdan način dijeljenja i izdavanja lijekova. Ovaj uređaj omogućava dijeljenje lijekova do 9 dana unaprijed i automatsko izdavanje u željeno vrijeme. Poklopac se takođe može zaključati pomoću RFID oznake, pazeći da samo njegovatelj može pristupiti lijeku.

Potrošni materijal:

Za izradu ovog projekta potrebni su potrebni materijali:

  • Arduino UNO
  • Modul pokretača motora
  • SG90 9G Servo
  • Stepper Motor
  • DS1302 RTC modul
  • Razne kratkospojne žice
  • IIC 1602 LCD
  • Pristup 3D štampaču
  • Noge poput drvenih tipla
  • RFID modul i oznaka
  • Dva tastera
  • Lemilica
  • Breadboard
  • super ljepilo
  • Vijci za drvo
  • Nedovršena drvena kutija sa poklopcem sa šarkama
  • Dvostrana traka

Korak 1: Izmjena okvira

Modifikacija okvira
Modifikacija okvira
Modifikacija okvira
Modifikacija okvira
Modifikacija okvira
Modifikacija okvira
Modifikovanje okvira
Modifikovanje okvira

Okvir će prvo morati biti izmijenjen. Postoji više rupa koje je potrebno izbušiti. Prva rupa bit će na prednjoj strani kutije, gdje je ispisana kutija kontrolne ploče. Druga rupa nalazi se na stražnjoj strani kutije za prolaz USB kabela. Posljednja rupa nalazi se na dnu kutije, gdje će lijek propasti nakon što je ispušten. Na kraju, noge moraju biti pričvršćene za dno. Za noge sam koristio gumene nožice koje sam našao oko kuće, ali mogu se koristiti i drveni klinovi.

Korak 2: 3D štampani dijelovi

3D štampani delovi
3D štampani delovi
3D štampani delovi
3D štampani delovi
3D štampani delovi
3D štampani delovi

Za ovaj projekt potrebno je mnogo 3D štampanih dijelova.

Oni su:

  • Vrtuljak s lijekovima
  • Baza za vrtuljak
  • Lijevak za lijekove
  • Ruka servo motora za zaključavanje poklopca
  • Baza za servo motor
  • Zatvarač za servo krak
  • Kontrolna tabla
  • Šolja za ispuštanje leka

Baza za vrtuljak pričvršćena je na kutiju dvostranom trakom. I postolje servo motora i zasun za ruku su uvrnuti u kutiju kratkim vijcima za drvo. Kutija kontrolne ploče je zalijepljena na prednju stranu kutije super ljepilom, nakon što su komponente umetnute.

Korak 3: Elektronika

Elektronika
Elektronika

Elektroniku sada treba staviti u kutiju. Najprije je koračni motor pričvršćen na podlogu vrtuljka s M3 vijcima i navrtkama. Servo je tada super zalijepljen na svoju podlogu. Zatim su kontroler motora, Arduino, matična ploča, RFID modul i RTC modul pričvršćeni na kutiju dvostranom trakom. LCD je umetnut u otvor na kontrolnoj kutiji. Potrebno je neko lemljenje. Za tipke, kratkospojni kablovi moraju biti lemljeni na konektore lopatica. Za RFID čitač, pinovi moraju biti lemljeni na ploči.

Korak 4: Kodirajte

Ispod je komentirani kod:

Biblioteke za servo, LCD, RTC, RFID i koračni motor uključene su u ovaj kod.

/////////////////// Biblioteke i varijable

#include #include // Arduino standardna biblioteka #include #include virtuabotixRTC myRTC (2, 3, 4); // Definiranje pinova #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stanjeup = 0; int specifiedown = 0; int statesel = 0; int wait = 0; int ormarić = 0; // Postavljanje servo Servo servo; int kut = 180; #include // koristite izmijenjenu biblioteku koraka sa redoslijedom paljenja magneta 1000/0100/0010/0001. Stavite biblioteku u fasciklu biblioteke. #define gearratio 64 // 1: 64 prijenosni odnos const int stepsPerRevolution = 2048; // motor Arduino Kit je usmjeren prema dolje. Eksperimentom sam utvrdio da 2048 koraka okreće osovinu za jedan krug. int koraci = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // instanciramo 4-žični steper na pinovima 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); // Kreiranje instance MFRC522. int deg = 10; void setup () {lcd.init (); // inicijalizira lcd lcd.backlight (); // Red ispod ovoga služi za postavljanje trenutnog vremena. To se mora učiniti samo jednom, a zatim se kod // mora ponovo učitati s komentarom. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Pokretanje serijske komunikacije SPI.begin (); // Pokretanje sabirnice SPI mfrc522. PCD_Init (); // Pokreće MFRC522 myStepper.setSpeed (0,15*prijenosni omjer); // čini se da je motor smanjen za 1/64, što znači da je potrebno postaviti brzinu 64x. // inicijalizira serijski port: servo.attach (servopin); } void loop () {/////////////////// LCD kod // Stalno ažurira prikaz sa trenutnim vremenom i vremenom doziranja. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Vrijeme:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dostava:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); /////////////////// Read Button States // Čita stanje dugmadi za promjenu vremena točenja. stateup = digitalRead (buttonup); specifiedown = digitalRead (buttondown); kašnjenje (100); /////////////////// Logic Dispensing Logic // Ako je trenutno vrijeme isto kao i odabrano vrijeme točenja, okrenite koračni motor. // Svakih 9 puta kada se uređaj rasprši, motor okreće dodatnu udaljenost kako bi osigurao potpunu rotaciju. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); koraci = koraci +1; kašnjenje (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); koraci = 0; kašnjenje (60100); myRTC.updateTime (); /////////////////// Promjena vremena točenja // Promijenite vrijeme točenja na osnovu pritiska na tipku. // Vrijeme se vraća na nulu kada sati dosegnu 24, a minute 60.} if (stateup == LOW && hr <23) {hr = hr+1; kašnjenje (50); } else if (stateup == LOW && hr == 23) {hr = 0; kašnjenje (50); } if (specifiedown == LOW && minn <59) {minn = minn+1; kašnjenje (50); } else if (specifiedown == LOW && minn == 59) {minn = 0; kašnjenje (50); } /////////////////// RFID kod // Čita RFID oznaku kada je predstavljena. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Odaberite jednu od kartica if (! Mfrc522. PICC_ReadCardSerial ()) {return; } String content = ""; bajtno slovo; for (bajt 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)); ormarić = 1; } content.toUpperCase (); /////////////////// LOCK CODE // Kada se pročita ispravna RFID oznaka, pomaknite servo u otvoreni položaj kada je zatvoren, // i pomaknite servo u zatvoreni položaj kada je otvoren. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// ovdje promijenite UID kartice/kartica kojima želite omogućiti pristup {switch (deg) {case 180: servo.write (deg); deg = 10; ormarić = 0; Serial.print ("kretanje"); kašnjenje (1000); break; slučaj 10: servo.write (deg); deg = 180; ormarić = 0; kašnjenje (1000); break; }}} else {Serial.println ("Pristup odbijen"); kašnjenje (1000); }}}

Korak 5: Konačno postavljanje

Posljednji korak je priprema projekta za upotrebu. Prvo otpremite kôd s redom za podešavanje vremena bez komentara, kako biste učitali trenutno vrijeme u RTC. Zatim komentirajte kôd i ponovo ga učitajte. To će osigurati da će, ako je uređaj isključen, i dalje zadržati točno vrijeme. Sada sve što trebate učiniti je staviti lijekove u otvore, staviti šalicu ispod otvora za točenje i postaviti vrijeme doziranja. Uređaj će se pouzdano izdavati u isto vrijeme svaki dan.

Preporučuje se: