Tartalomjegyzék:

Automatikus gyógyszeradagoló: 5 lépés
Automatikus gyógyszeradagoló: 5 lépés

Videó: Automatikus gyógyszeradagoló: 5 lépés

Videó: Automatikus gyógyszeradagoló: 5 lépés
Videó: Autózsák kitöltő tömítő gép, zsák adagoló csomagoló gép, automatikus tömegű zsákoló gép 2024, Július
Anonim
Automatikus gyógyszeradagoló
Automatikus gyógyszeradagoló

Ez a projekt az orvosi területen használható, ahol az idős betegeknek megbízható módon kell adagolniuk és adagolniuk a gyógyszereket. Ez az eszköz lehetővé teszi a gyógyszerek adagolását akár 9 nappal előre, és a kívánt időpontban történő automatikus adagolást. A fedél zárható az RFID -címkével is, biztosítva, hogy csak a gondozó férjen hozzá a gyógyszerhez.

Kellékek:

A projekt elkészítéséhez szükséges anyagok állnak rendelkezésre:

  • Arduino UNO
  • Motorhajtó modul
  • SG90 9G szervo
  • Léptetőmotor
  • DS1302 RTC modul
  • Különféle jumper vezetékek
  • IIC 1602 LCD
  • 3D nyomtató hozzáférés
  • Lábak, például fa tiplik
  • RFID modul és címke
  • Két nyomógomb
  • Forrasztópáka
  • Kenyeretábla
  • pillanatragasztó
  • Fa csavarok
  • Befejezetlen fa doboz csuklós fedéllel
  • Kétoldalú ragasztó

1. lépés: A doboz módosítása

A doboz módosítása
A doboz módosítása
A doboz módosítása
A doboz módosítása
A doboz módosítása
A doboz módosítása
A doboz módosítása
A doboz módosítása

A dobozt először módosítani kell. Több lyukat kell fúrni. Az első lyuk a doboz elején lesz, ahol a kezelőpanel doboza van nyomtatva. A második lyuk a doboz hátoldalán található, hogy az USB -kábel áthaladjon. Az utolsó lyuk a doboz alján található, ahol a gyógyszer kiesés után átesik. Végül a lábakat az aljához kell rögzíteni. A házam környékén talált gumi lábakat használtam lábakhoz, de fa tiplik is használhatók.

2. lépés: 3D nyomtatott alkatrészek

3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek
3D nyomtatott alkatrészek

Ehhez a projekthez sok 3D nyomtatott alkatrészre van szükség.

Ők:

  • Gyógyszert tároló körhinta
  • A körhinta alapja
  • Tölcsér a gyógyszerhez
  • Kar a szervomotorhoz a fedél rögzítéséhez
  • A szervomotor alapja
  • Retesz a szervókarhoz
  • Kezelőpanel
  • Csésze a gyógyszer adagolására

A körhinta alapját kétoldalas szalaggal ragasztják a dobozhoz. A szervomotor alapját és a kar reteszét egyaránt rövid facsavarokkal csavarják be a dobozba. A vezérlőpanel dobozát szuper ragasztóval a doboz elejére ragasztják, miután az alkatrészeket behelyezték.

3. lépés: Elektronika

Elektronika
Elektronika

Az elektronikát most be kell helyezni a dobozba. Először is, a léptetőmotort M3 csavarokkal és anyákkal rögzítik a körhinta alapjához. A szervót ezután szuperregasztják az alapjához. Ezután a motorvezérlőt, az Arduino -t, a kenyérlapot, az RFID -modult és az RTC -modult kétoldalas szalaggal rögzítik a dobozhoz. Az LCD be van helyezve a vezérlő doboz lyukába. Van néhány forrasztás, amelyre szükség van. A nyomógombokhoz az áthidaló kábeleket az ásócsatlakozókhoz kell forrasztani. Az RFID olvasó esetében a csapokat forrasztani kell a táblához.

4. lépés: Kód

Az alábbiakban a megjegyzett kód látható:

A szervó, LCD, RTC, RFID és léptetőmotorok könyvtárai szerepelnek ebben a kódban.

////////////////// Könyvtárak és változók

#include #include // Arduino standard library #include #include virtuabotixRTC myRTC (2, 3, 4); // Pinek definiálása #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; int állapota = 0; int kijelentett = 0; int állapota = 0; int várakozás = 0; int szekrény = 0; // Servo beállítása Servo servo; int szög = 180; #include // módosított léptetőkönyvtár használata 1000/0100/0010/0001 mágneses tüzelési sorozattal. Tegye a könyvtárat a könyvtár mappájába. #define gearratio 64 // 1: 64 sebességfokozat const int stepsPerRevolution = 2048; // az Arduino Kit motor le van szerelve. Kísérlettel megállapítottam, hogy 2048 lépésben fordítsuk el a tengelyt egy kört. int lépések = 0; LiquidCrystal_I2C LCD (0x27, 16, 2); // példányosítson egy 4-vezetékes léptetőt a 8-11-es csapokon: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Hozzon létre MFRC522 példányt. int deg = 10; void setup () {lcd.init (); // inicializálja az LCD -t lcd.backlight (); // Az alatta lévő sor az aktuális idő beállítására szolgál. Ezt csak egyszer kell elvégezni, majd ezt követően a // kódot újra fel kell tölteni a megjegyzésekkel együtt. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (gombos, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Sorozat.kezdet (9600); // Soros kommunikáció kezdeményezése SPI.begin (); // SPI busz kezdeményezése mfrc522. PCD_Init (); // Indítsa el az MFRC522 myStepper.setSpeed (0,15*sebességfokozat) értéket; // úgy tűnik, hogy a motor 1/64 arányban le van kapcsolva, ami azt jelenti, hogy a sebességet 64x kell beállítani. // inicializálja a soros portot: servo.attach (servopin); } void loop () {///////////////// LCD kód // Folyamatosan frissíti a kijelzőt az aktuális idővel és az adagolási idővel. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Idő:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dispense:"); lcd.setCursor (10, 1); lcd.print (óra); lcd.print (":"); lcd.print (minn); ///////////////// Olvasógombok állapota // Olvassa el a gombok állapotát az adagolási idő módosításához. stateup = digitalRead (gombos); kijelentett = digitalRead (buttondown); késleltetés (100); ///////////////// Adagolási logika // Ha az aktuális idő megegyezik a kiválasztott adagolási idővel, forgassa el a léptetőmotort. // A készülék minden 9 -szeres adagoláskor a motor extra távolságot fordít, hogy biztosítsa a teljes forgást. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); lépések = lépések +1; késleltetés (60100); myRTC.updateTime (); } else if (myRTC.hours == óra && myRTC.minutes == minn && steps == 9) {myStepper.step (232); lépések = 0; késleltetés (60100); myRTC.updateTime (); ////////////////// Az adagolási idő módosítása // Módosítsa az adagolási időt a gomb megnyomása alapján. // Az idő nullára tér vissza, amikor az óra 24 -re, a perc 60 -ra emelkedik.} If (stateup == LOW && hr <23) {hr = hr+1; késleltetés (50); } else if (állapota == LOW && hr == 23) {hr = 0; késleltetés (50); } if (konstatált == LOW && minn <59) {minn = minn+1; késleltetés (50); } else if (konstatált == LOW && minn == 59) {minn = 0; késleltetés (50); } ///////////////// RFID -kód // Olvassa el az RFID -címkét, amikor bemutatják. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Válassza ki az egyik kártyát, ha (! Mfrc522. PICC_ReadCardSerial ()) {return; } String tartalom = ""; bájt betű; for (byte i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (Karakterlánc (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (Karakterlánc (mfrc522.uid.uidByte , HEX)); szekrény = 1; } content.toUpperCase (); ///////////////// LOCK CODE // Amikor a helyes RFID -címkét olvassuk, állítsuk a szervót nyitott helyzetbe, amikor az zárva van, // és állítsuk a szervót zárt helyzetbe, amikor az nyisd ki. while (zárható szekrény == 1) {if (content.substring (1) == "3B 21 D6 22") {// itt módosítja a hozzáférni kívánt kártya/kártyák UID azonosítóját {switch (deg) {case 180: szervo.write (fok); fok = 10; szekrény = 0; Serial.print ("mozgó"); késleltetés (1000); szünet; 10. eset: szervo.write (deg); fok = 180; szekrény = 0; késleltetés (1000); szünet; }}} else {Serial.println ("Hozzáférés megtagadva"); késleltetés (1000); }}}

5. lépés: Végső beállítás

Az utolsó lépés a projekt előkészítése a használatra. Először töltse fel a kódot úgy, hogy az időbeállítási sor nincs megjegyzésben, és töltse fel az aktuális időt az RTC -be. Ezután írja be a kódot, és töltse fel újra. Ez biztosítja, hogy ha az eszközt kihúzzuk a konnektorból, akkor is megmarad a megfelelő idő. Most már csak annyit kell tennie, hogy a gyógyszert a résekbe helyezi, a poharat az adagolónyílás alá helyezi, és beállítja az adagolási időt. A készülék minden nap ugyanabban az időben megbízhatóan adagol.

Ajánlott: