Cuprins:

Dispenser automat de medicamente: 5 pași
Dispenser automat de medicamente: 5 pași

Video: Dispenser automat de medicamente: 5 pași

Video: Dispenser automat de medicamente: 5 pași
Video: Cum incepi o afacere in 5 pasi 🚀 2024, Iulie
Anonim
Dispenser automat de medicamente
Dispenser automat de medicamente

Acest proiect este destinat utilizării în domeniul medical, unde pacienții vârstnici trebuie să aibă un mod fiabil de a porționa și distribui medicamente. Acest dispozitiv permite porționarea medicamentelor cu până la 9 zile în avans și distribuirea automată la ora dorită. Capacul poate fi blocat și cu eticheta RFID, asigurându-vă că numai îngrijitorul poate accesa medicamentul.

Provizii:

Există materialele necesare pentru construirea acestui proiect:

  • Arduino UNO
  • Modulul driverului motorului
  • Servo SG90 9G
  • Motor pas cu pas
  • Modulul DS1302 RTC
  • Diverse fire jumper
  • IIC 1602 LCD
  • Acces la imprimanta 3D
  • Picioare precum diblurile din lemn
  • Modul și etichetă RFID
  • Două butoane
  • Ciocan de lipit
  • Pană de pâine
  • super-lipici
  • Șuruburi pentru lemn
  • Cutie din lemn neterminată cu capac articulat
  • Bandă cu două fețe

Pasul 1: Modificarea casetei

Modificarea casetei
Modificarea casetei
Modificarea casetei
Modificarea casetei
Modificarea casetei
Modificarea casetei
Modificarea casetei
Modificarea casetei

Căsuța va trebui mai întâi modificată. Există mai multe găuri care trebuie găurite. Prima gaură va fi pe partea din față a cutiei, unde este tipărită cutia panoului de control. A doua gaură este în partea din spate a cutiei, pentru a trece cablul USB. Ultima gaură se află pe partea de jos a cutiei, unde medicamentul va cădea odată eliberat. În cele din urmă, picioarele trebuie atașate la fund. Am folosit picioare de cauciuc pe care le-am găsit în jurul casei pentru picioare, dar pot fi folosite și dibluri din lemn.

Pasul 2: Părți imprimate 3D

Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D

Există multe piese imprimate 3D necesare pentru acest proiect.

Sunt:

  • Carusel care conține medicamente
  • Baza pentru carusel
  • Pâlnie pentru medicamente
  • Braț pentru servomotor pentru a bloca capacul
  • Baza pentru servomotor
  • Zăvor pentru braț servo
  • Panou de control
  • Ceașcă pentru medicamentul în care trebuie administrat

Baza caruselului este aderată la cutie cu bandă dublă. Baza pentru servomotor și zăvorul pentru braț sunt ambele înșurubate în cutie cu șuruburi scurte pentru lemn. Cutia panoului de control este lipită pe partea din față a cutiei cu super lipici, după ce componentele au fost introduse.

Pasul 3: Electronică

Electronică
Electronică

Dispozitivele electronice trebuie acum plasate în cutie. În primul rând, motorul pas cu pas este atașat la baza caruselului cu șuruburi și piulițe M3. Servo-ul este apoi super lipit de baza sa. Apoi, controlerul motorului, Arduino, breadboard, modulul RFID și modulul RTC sunt atașate la cutie cu bandă dublă. LCD-ul este introdus în orificiul din cutia de control. Există unele lipiri care sunt necesare. Pentru butoane, cablurile jumper trebuie lipite la conectorii pică. Pentru cititorul RFID, știfturile trebuie lipite pe placa.

Pasul 4: Cod

Mai jos este codul comentat:

Bibliotecile pentru servo, LCD, RTC, RFID și motorul pas cu pas sunt incluse în acest cod.

///////////////// Biblioteci și variabile

#include #include // Biblioteca standard Arduino #include #include virtuabotixRTC myRTC (2, 3, 4); // Define 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 declarat = 0; int statesel = 0; int wait = 0; int dulap = 0; // Configurați servo Servo servo; int unghi = 180; #include // folosește o bibliotecă pas cu pas modificată cu secvența de ardere a magnetului 1000/0100/0010/0001. Puneți biblioteca în dosarul bibliotecii. #define gearratio 64 // 1: 64 raport de transmisie const int stepsPerRevolution = 2048; // motorul Arduino Kit este redus. Prin experiment am stabilit că 2048 trepte rotesc arborele cu o rundă. pași int = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // creați un pas cu 4 fire pe pinii 8 până la 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Creați o instanță MFRC522. int deg = 10; void setup () {lcd.init (); // inițializați lcd lcd.backlight (); // Linia de sub aceasta este utilizată pentru a seta ora curentă. Trebuie făcut o singură dată, iar ulterior codul // trebuie încărcat din nou cu acesta comentat. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Inițiați o comunicare serial SPI.begin (); // Lansați magistrala SPI mfrc522. PCD_Init (); // Inițiază MFRC522 myStepper.setSpeed (0,15 * gearratio); // motorul pare a fi redus 1/64, ceea ce înseamnă că viteza trebuie setată 64x. // inițializați portul serial: servo.attach (servopin); } void loop () {///////////////// Cod LCD // Actualizează constant afișajul cu ora curentă și timpul de distribuire. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Ora:"); 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); ///////////////// Citire stări butoane // Citește stările butoanelor pentru a schimba timpul de distribuire. stateup = digitalRead (buttonup); declarat = digitalRead (buttondown); întârziere (100); ///////////////// Logică de distribuire // Dacă ora curentă este aceeași cu timpul de distribuire selectat, rotiți motorul pas cu pas. // La fiecare 9 ori dispariția dispozitivului, motorul întoarce o distanță suplimentară pentru a asigura o rotație completă. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); pași = pași +1; întârziere (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); pași = 0; întârziere (60100); myRTC.updateTime (); ///////////////// Modificarea timpului de distribuire // Modificarea timpului de distribuire pe baza cărui buton este apăsat. // Timpul revine la zero când orele ajung la 24 și minutele ajung la 60.} if (stateup == LOW && hr <23) {hr = hr + 1; întârziere (50); } else if (stateup == LOW && hr == 23) {hr = 0; întârziere (50); } if (declarat == LOW && minn <59) {minn = minn + 1; întârziere (50); } else if (statementown == LOW && minn == 59) {minn = 0; întârziere (50); } ///////////////// Cod RFID // Citește eticheta RFID atunci când este prezentată. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Selectați una dintre cărți dacă (! Mfrc522. PICC_ReadCardSerial ()) {return; } Conținut șir = ""; litere de octeți; for (octet 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)); dulap = 1; } content.toUpperCase (); ///////////////// LOCK CODE // Când este citită eticheta RFID corectă, mutați servo în poziția deschis când este închis, // și mutați servo în poziție închis când este deschis. while (dulap == 1) {if (content.substring (1) == "3B 21 D6 22") {// modificați aici UID-ul cardului / cardurilor pe care doriți să le acordați acces {switch (deg) {case 180: servo.write (deg); deg = 10; dulap = 0; Serial.print („în mișcare”); întârziere (1000); pauză; cazul 10: servo.write (deg); deg = 180; dulap = 0; întârziere (1000); pauză; }}} else {Serial.println ("Acces refuzat"); întârziere (1000); }}}

Pasul 5: Configurare finală

Ultimul pas este pregătirea proiectului pentru utilizare. Mai întâi încărcați codul cu linia de setare a orei necomentată, pentru a încărca ora curentă la RTC. Apoi comentați codul și reîncărcați codul. Acest lucru vă va asigura că, dacă dispozitivul este deconectat, acesta va păstra în continuare timpul corect. Acum tot ce trebuie să faceți este să plasați medicamentul în sloturi, să puneți ceașca sub orificiul de distribuire și să setați un timp de distribuire. Dispozitivul se va distribui în mod fiabil la aceeași oră în fiecare zi.

Recomandat: