Taula de continguts:

Dispensador automàtic de medicaments: 5 passos
Dispensador automàtic de medicaments: 5 passos

Vídeo: Dispensador automàtic de medicaments: 5 passos

Vídeo: Dispensador automàtic de medicaments: 5 passos
Vídeo: How to Properly Handle Liquids from Bottles | Pipette Tutorial | Ep.8: Dispensers & Burettes 2024, Juliol
Anonim
Dispensador automàtic de medicaments
Dispensador automàtic de medicaments

Aquest projecte s’utilitza en l’àmbit mèdic, on els pacients grans han de tenir una manera fiable de distribuir i dispensar medicaments. Aquest dispositiu permet porcionar medicaments fins a 9 dies abans i dispensar-se automàticament a l’hora desitjada. La tapa també es pot bloquejar amb l’etiqueta RFID, assegurant-se que només el cuidador pot accedir a la medicació.

Subministraments:

Hi ha els materials necessaris per construir aquest projecte:

  • Arduino UNO
  • Mòdul de controlador de motor
  • Servo SG90 9G
  • Motor pas a pas
  • Mòdul RTC DS1302
  • Diversos cables de pont
  • LCD IIC 1602
  • Accés a la impressora 3D
  • Potes com ara clavilles de fusta
  • Mòdul i etiqueta RFID
  • Dos polsadors
  • Soldador
  • Taula de pa
  • Super cola
  • Cargols de fusta
  • Caixa de fusta sense acabar amb tapa articulada
  • Cinta de doble cara

Pas 1: modificació del quadre

Modificació del quadre
Modificació del quadre
Modificació del quadre
Modificació del quadre
Modificació del quadre
Modificació del quadre
Modificació del quadre
Modificació del quadre

Primer s’haurà de modificar el quadre. Hi ha diversos forats que s’han de perforar. El primer forat estarà a la part frontal de la caixa, on s’imprimeix la caixa del tauler de control. El segon forat es troba a la part posterior de la caixa, perquè passi el cable USB. L’últim forat es troba a la part inferior de la caixa, on caurà la medicació un cop dispensada. Per últim, les cames s’han d’adherir a la part inferior. Vaig utilitzar peus de goma que vaig trobar al voltant de casa per a les cames, però també es poden utilitzar tacs de fusta.

Pas 2: peces impreses en 3D

Parts impreses en 3D
Parts impreses en 3D
Parts impreses en 3D
Parts impreses en 3D
Parts impreses en 3D
Parts impreses en 3D

Hi ha moltes parts impreses en 3D necessàries per a aquest projecte.

Ells són:

  • Carrusel que conté medicaments
  • Base per a carrusel
  • Embut per a la medicació
  • Braç per al servomotor per bloquejar la tapa
  • Base per servomotor
  • Pany per servo braç
  • Panell de control
  • Tassa per dispensar la medicació

La base del carrusel s’adhereix a la caixa amb cinta adhesiva de doble cara. La base del servomotor i el pestell del braç es cargolen a la caixa amb cargols de fusta curts. Un cop inserits els components, la caixa del tauler de control s’enganxa a la part frontal de la caixa amb súper cola.

Pas 3: electrònica

Electrònica
Electrònica

Ara l’electrònica s’ha de col·locar a la caixa. En primer lloc, el motor pas a pas està unit a la base del carrusel amb perns i femelles M3. El servo queda super encolat a la seva base. A continuació, el controlador del motor, Arduino, la placa de mòduls, el mòdul RFID i el mòdul RTC s’uneixen a la caixa amb cinta de doble cara. La pantalla LCD s’insereix al forat de la caixa de control. Hi ha una mica de soldadura que es requereix. Per als polsadors, els cables del pont han de ser soldats als connectors de pala. Per al lector RFID, els pins s'han de soldar al tauler.

Pas 4: Codi

A continuació es mostra el codi comentat:

Aquest codi inclou biblioteques per al motor Servo, LCD, RTC, RFID i pas a pas.

///////////////// Biblioteques i variables

#include #include // Biblioteca estàndard Arduino #include #include virtuabotixRTC myRTC (2, 3, 4); // Defineix pins #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int déclarat = 0; int statesel = 0; int espera = 0; int locker = 0; // Configura servo Servo servo; int angle = 180; #include // utilitzeu una biblioteca pas a pas modificada amb una seqüència de tret d'imant 1000/0100/0010/0001. Posa la biblioteca a la carpeta de la biblioteca. #define gearratio 64 // 1: 64 gear ratio const int stepsPerRevolution = 2048; // el motor Arduino Kit està reduït. Per experiment, vaig determinar que 2048 graons giraven l’eix d’una volta. int steps = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // instanciar un pas a pas de 4 fils als pins 8 a 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Creeu una instància MFRC522. int deg = 10; void setup () {lcd.init (); // inicialitzar el lcd lcd.backlight (); // La línia inferior es fa servir per establir l’hora actual. Només s’ha de fer una vegada i després s’ha de tornar a penjar el codi // amb el comentari. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Inicieu una comunicació serial SPI.begin (); // Inicieu el bus SPI mfrc522. PCD_Init (); // Inicieu MFRC522 myStepper.setSpeed (0,15 * gearratio); // sembla que el motor està engranat 1/64, cosa que significa que cal establir la velocitat 64x. // inicialitzar el port sèrie: servo.attach (servopin); } void loop () {///////////////// Codi LCD // Actualitza constantment la pantalla amb l'hora actual i el temps de distribució. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Temps:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dispensa:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); ///////////////// Llegir estats dels botons // Llegeix els estats dels botons per canviar el temps de distribució. stateup = digitalRead (buttonup); statementown = DigitalRead (buttondown); retard (100); ///////////////// Lògica de distribució // Si l’hora actual és la mateixa que el temps de distribució seleccionat, gireu el motor pas a pas. // Cada 9 vegades que es dispensa el dispositiu, el motor gira una distància addicional per garantir una rotació completa. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); passos = passos +1; retard (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); passos = 0; retard (60100); myRTC.updateTime (); ///////////////// Canviar el temps de dispensació // Canvieu el temps de dispensació en funció del botó que es prem. // El temps torna a zero quan les hores passen a 24 i els minuts a 60.} if (stateup == BAIX && hr <23) {hr = hr + 1; retard (50); } else if (estat == BAIX && hr == 23) {hr = 0; retard (50); } if (indicat == BAIX && minn <59) {minn = minn + 1; retard (50); } else if (enunciat == BAIX && minn == 59) {minn = 0; retard (50); } ///////////////// Codi RFID // Llegeix l'etiqueta RFID quan es presenta. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Seleccioneu una de les cartes si (! Mfrc522. PICC_ReadCardSerial ()) {return; } Contingut de la cadena = ""; carta de bytes; for (byte i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (Cadena (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (String (mfrc522.uid.uidByte , HEX)); taquilla = 1; } content.toUpperCase (); ///////////////// CODI DE BLOQUEIG // Quan es llegeix l’etiqueta RFID correcta, moure el servo a la posició oberta quan estigui tancat, // i moure el servo a la posició tancada quan estigui obert. while (armari == 1) {if (content.substring (1) == "3B 21 D6 22") {// canvieu aquí l'UID de la targeta / targetes a les quals voleu donar accés {commutador (deg) {cas 180: servo.write (deg); deg = 10; taquilla = 0; Serial.print ("en moviment"); retard (1000); trencar; cas 10: servo.write (deg); deg = 180; taquilla = 0; retard (1000); trencar; }}} else {Serial.println ("Accés denegat"); retard (1000); }}}

Pas 5: configuració final

L’últim pas és preparar el projecte per utilitzar-lo. Primer carregueu el codi amb la línia de configuració de l’hora sense comentar per carregar l’hora actual al RTC. A continuació, comenteu el codi i torneu a penjar el codi. D’aquesta manera, s’assegurarà que si el dispositiu està desconnectat, encara conservarà l’hora correcta. Ara tot el que heu de fer és col·locar la medicació a les ranures, col·locar la tassa sota el forat de distribució i establir un temps de distribució. El dispositiu es distribuirà de manera fiable cada dia a la mateixa hora.

Recomanat: