Taula de continguts:
- Pas 1: modificació del quadre
- Pas 2: peces impreses en 3D
- Pas 3: electrònica
- Pas 4: Codi
- Pas 5: configuració final
Vídeo: Dispensador automàtic de medicaments: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
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
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
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
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:
Dispensador automàtic de desinfectant de mans de bricolatge: 6 passos
Dispensador de desinfectant de mans automàtic de bricolatge: en aquest projecte, construirem un dispensador de desinfectant de mans automàtic. Aquest projecte utilitzarà Arduino, sensor d'ultrasons, bomba d'aigua i desinfectant de mans. S'utilitza un sensor d'ultrasons per comprovar la presència de mans a sota de la sortida de la màquina desinfectant
Dispensador automàtic d'alcohol en gel amb Esp32: 9 passos
Dispensador automàtic d'alcohol en gel amb Esp32: al tutorial veurem com fer un prototip complet, per muntar un dispensador automàtic d'alcohol en gel amb esp32, inclourà muntatge pas a pas, circuit electrònic i també el codi font explicat pas a pas pas
DISPENSADOR AUTOMÀTIC D'ALIMENTS PER A PET: 9 passos
DISPENSADOR AUTOMÀTIC D’ALIMENTS PER A PETS: Alguna vegada heu tingut la sensació de perdre massa temps alimentant la vostra mascota? Alguna vegada ha hagut de trucar a algú per alimentar les seves mascotes mentre estava de vacances? He intentat solucionar aquests dos problemes amb el meu projecte escolar actual: Petfeed
Recordeu-me que he de prendre una màquina de medicaments: 5 passos
Recordeu-me que heu de prendre medicaments: és una màquina que us pot recordar que heu de prendre medicaments. La gent sovint s’oblida de prendre medicaments, ja sigui abans de sortir o abans d’anar a dormir. Deixarà caure un medicament quan passeu per la màquina, així que poseu-lo per on passeu regularment, com al llit o
Dispensador de medicaments basats en Arduino: 5 passos (amb imatges)
Dispensador de medicaments basats en Arduino: és molt fàcil de fer i és molt útil