Cuprins:
- Pasul 1: Modificarea casetei
- Pasul 2: Părți imprimate 3D
- Pasul 3: Electronică
- Pasul 4: Cod
- Pasul 5: Configurare finală
Video: Dispenser automat de medicamente: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
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
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
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ă
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:
Căi ferate model automat automat punct la punct: 10 pași (cu imagini)
Modele de cale ferată automate simple punct la punct: microcontrolerele Arduino sunt excelente pentru automatizarea modelelor de cale ferată. Automatizarea planurilor este utilă în multe scopuri, cum ar fi plasarea aspectului dvs. pe un afișaj în care operația de planificare poate fi programată pentru a circula trenurile într-o succesiune automată. Eu
Structură feroviară de model automat automat - Arduino controlat: 11 pași (cu imagini)
Structură feroviară automată simplă | Arduino controlat: microcontrolerele Arduino sunt o completare excelentă pentru modelul de cale ferată, mai ales atunci când se ocupă de automatizare. Iată o modalitate simplă și ușoară de a începe cu automatizarea modelului feroviar cu Arduino. Deci, fără alte îndemnuri, să începem
Amintește-mi să iau mașina cu medicamente: 5 pași
Amintește-mi să iau un medicament: acesta este un aparat care îți poate aminti să iei medicamente. Oamenii uită adesea să ia medicamente, fie înainte de a ieși afară, fie înainte de a merge la culcare. Va scăpa un medicament când treceți pe lângă mașină, așa că puneți-l acolo unde treceți regulat, ca lângă pat sau
ECG automat automat (1 amplificator, 2 filtre): 7 pași
ECG automat automat (1 amplificator, 2 filtre): o electrocardiogramă (ECG) măsoară și afișează activitatea electrică a inimii folosind diferiți electrozi așezați pe piele. Un ECG poate fi creat folosind un amplificator de instrumentație, un filtru de notch și un filtru trece jos. În cele din urmă, filtrat un
Alimentator automat de plante WiFi cu rezervor - Configurare cultură interioară / exterioară - Plantele de apă automat cu monitorizare de la distanță: 21 de pași
Alimentator automat de plante WiFi cu rezervor - Configurare cultură interioară / exterioară - Plantele de apă automat cu monitorizare de la distanță: În acest tutorial vom arăta cum să configurați un sistem personalizat de alimentare cu plante interior / exterior care udă automat plantele și poate fi monitorizat de la distanță folosind platforma Adosia