Innehållsförteckning:
- Steg 1: Ändra rutan
- Steg 2: 3D -tryckta delar
- Steg 3: Elektronik
- Steg 4: Kod
- Steg 5: Slutinställning
Video: Automatisk medicindispenser: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:36
Detta projekt är avsett för användning inom det medicinska området, där äldre patienter måste ha ett pålitligt sätt att få medicinering portionerad och utdelad. Med denna enhet kan medicinering delas upp upp till 9 dagar i förväg och automatiskt doseras vid önskad tidpunkt. Locket är också låsbart med RFID -taggen, vilket gör att endast vårdgivaren kan komma åt medicinen.
Tillbehör:
Det finns nödvändigt material för att konstruera detta projekt:
- Arduino UNO
- Motorförarmodul
- SG90 9G Servo
- Stegmotor
- DS1302 RTC -modul
- Olika bygelkablar
- IIC 1602 LCD
- Tillgång till 3D -skrivare
- Ben som träpluggar
- RFID -modul och tagg
- Två tryckknappar
- Lödkolv
- Bakbord
- superlim
- Träskruvar
- Oavslutad trälåda med gångjärnslock
- Dubbelsidig tejp
Steg 1: Ändra rutan
Lådan måste först ändras. Det finns flera hål som måste borras. Det första hålet kommer att vara på framsidan av lådan, där rutan på kontrollpanelen är tryckt. Det andra hålet är på baksidan av lådan, för att USB -kabeln ska passera igenom. Det sista hålet är på botten av lådan, där medicinen kommer att falla igenom när den är utlämnad. Slutligen måste benen fästas i botten. Jag använde gummifötter som jag hittade runt mitt hus för ben, men träpluggar kan också användas.
Steg 2: 3D -tryckta delar
Det finns många 3D -tryckta delar som behövs för detta projekt.
Dom är:
- Karusell som innehåller medicin
- Bas för karusell
- Tratt för medicinen
- Arm för servomotor för att låsa locket
- Bas för servomotor
- Lås för servoarm
- Kontrollpanel
- Kopp för medicinen som ska doseras
Basen för karusellen fästs på lådan med dubbelsidig tejp. Basen för servomotorn och spärren för armen är båda skruvade i lådan med korta träskruvar. Kontrollpanelens låda limmas på framsidan av lådan med superlim, efter att komponenterna har satts in.
Steg 3: Elektronik
Elektroniken måste nu placeras i lådan. Först kopplas stegmotorn till karusellbasen med M3 -bultar och muttrar. Servon är sedan superlimmad på basen. Sedan är motorstyrenheten, Arduino, breadboard, RFID -modulen och RTC -modulen alla fästa på lådan med dubbelsidig tejp. LCD -skärmen sätts in i hålet i kontrollboxen. Det är lite lödning som krävs. För tryckknapparna måste bygelkablarna lödas till spadekontakterna. För RFID -läsaren måste stiften lödas på kortet.
Steg 4: Kod
Nedan finns den kommenterade koden:
Bibliotek för servo, LCD, RTC, RFID och stegmotor ingår i denna kod.
///////////////////// Bibliotek och variabler
#include #include // Arduino standardbibliotek #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 tillstånd = 0; int anges ned = 0; int statesel = 0; int vänta = 0; int skåp = 0; // Ställ in servo Servoservo; int vinkel = 180; #inkludera // använd modifierat stegbibliotek med 1000/0100/0010/0001 magnetavfyrningssekvens. Lägg biblioteket i din biblioteksmapp. #define gearratio 64 // 1: 64 gear ratio const int stepsPerRevolution = 2048; // Arduino Kit -motorn är växlad. Genom experiment bestämde jag att 2048 steg vrider axeln en runda. int -steg = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // instansiera en 4-tråds stepper på stift 8 till 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Skapa MFRC522 -instans. int deg = 10; void setup () {lcd.init (); // initiera lcd lcd.backlight (); // Linjen nedanför detta används för att ställa in aktuell tid. Det behöver bara göras en gång, och efteråt måste koden // laddas upp igen och kommenteras. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); pinMode (nedåt, INPUT_PULLUP); Serial.begin (9600); // Starta en seriell kommunikation SPI.begin (); // Starta SPI -buss mfrc522. PCD_Init (); // Starta MFRC522 myStepper.setSpeed (0,15*växlingsförhållande); // motorn verkar vara nedväxlad 1/64, vilket innebär att hastigheten måste ställas in 64x. // initiera serieporten: servo.attach (servopin); } void loop () {////////////////// LCD -kod // Uppdaterar ständigt displayen med aktuell tid och doseringstid. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Tid:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Dispens:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); ////////////////// Read Button States // Läser knapparnas tillstånd för att ändra doseringstiden. stateup = digitalRead (buttonup); angesown = digitalRead (buttondown); fördröjning (100); /////////////////// Dispenseringslogik // Om aktuell tid är densamma som vald doseringstid, vrid stegmotorn. // Var 9: e gång enheten ger ut, vrider motorn ett extra avstånd för att säkerställa en full rotation. if (myRTC.hours == hr && myRTC.minutes == minn && steg <9) {myStepper.step (227); steg = steg +1; fördröjning (60100); myRTC.updateTime (); } annars om (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); steg = 0; fördröjning (60100); myRTC.updateTime (); /////////////////// Ändra utmatningstid // Ändra utmatningstiden baserat på vilken knapp som trycks. // Tiden återgår till noll när timmarna når 24 och minuter blir 60.} if (stateup == LOW && hr <23) {hr = hr+1; fördröjning (50); } annars if (stateup == LÅG && hr == 23) {hr = 0; fördröjning (50); } om (anges ned == LÅG && minn <59) {minn = minn+1; fördröjning (50); } annars om (anges ned == LÅG && minn == 59) {minn = 0; fördröjning (50); } /////////////////// RFID -kod // Läser RFID -taggen när den presenteras. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Välj ett av korten om (! Mfrc522. PICC_ReadCardSerial ()) {return; } Stränginnehåll = ""; byte brev; för (byte i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte [ii], HEX); content.concat (String (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (String (mfrc522.uid.uidByte , HEX)); skåp = 1; } content.toUpperCase (); /////////////////// LÅSKOD // När rätt RFID -tagg läses, flytta servo till öppet läge när den är stängd, // och flytta servo till stängd position när den är öppen. medan (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// ändra här UID för kortet/korten som du vill ge åtkomst {switch (deg) {case 180: servo.write (deg); deg = 10; skåp = 0; Serial.print ("rörligt"); fördröjning (1000); ha sönder; fall 10: servo.write (deg); deg = 180; skåp = 0; fördröjning (1000); ha sönder; }}} else {Serial.println ("Åtkomst nekad"); fördröjning (1000); }}}
Steg 5: Slutinställning
Det sista steget är att göra projektet klart för användning. Ladda först upp koden med tidsinställningsraden okommenterad för att ladda upp den aktuella tiden till RTC. Kommentera sedan koden och ladda upp koden igen. Detta kommer att säkerställa att om enheten kopplas ur, kommer den fortfarande att behålla rätt tid. Allt du behöver göra är att placera medicinen i spåren, placera koppen under utmatningshålet och ställ in en doseringstid. Enheten kommer att leverera på ett tillförlitligt sätt vid samma tidpunkt varje dag.
Rekommenderad:
Automatisk handdesinfektion: 8 steg
Automatisk handdesinfektion: COVID-19-pandemin har blivit något som allmänheten har hört mycket ofta under 2020. Varje medborgare som hör ordet "COVID-19" kommer omedelbart att tänka på ordet "Farligt", "Dödligt", "Håll rent”Och andra ord. Denna COVID-19 har också
DIY automatisk handdesinfektionsdispenser: 6 steg
DIY automatisk handdesinfektionsdispenser: I detta projekt kommer vi att bygga en automatisk handdesinfektionsdispenser. Detta projekt kommer att använda Arduino, ultraljudssensor, vattenpump och handsprit. En ultraljudssensor används för att kontrollera närvaron av händer under utloppet på desinfektionsmaskinen.
Automatisk gelalkoholautomat med Esp32: 9 steg
Automatisk gelalkoholautomat med Esp32: I handledning kommer vi att se hur man gör en komplett prototyp, att montera en automatisk gelalkoeldispenser med esp32, den kommer att inkludera steg-för-steg-montering, elektronisk krets och även källkoden förklarad steg för steg steg
Automatisk hundmatare !!: 4 steg
Automatisk hundmatare !!: Lätt, hjälpsam och hälsosam
Arduino -baserad medicindispenser: 5 steg (med bilder)
Arduino Based Medicine Dispenser: Detta är superenkelt att göra och supernyttigt