Sådan oprettes et automatisk fodringssystem til dine kæledyr?

Kæledyrene skal fodres rettidigt, så de kan opretholde et godt helbred. Kæledyrsejerne er ikke tilgængelige hjemme døgnet rundt, nogle gange går de på forretningsmøder til en anden by eller en andens hus, så kæledyrene lider i deres fravær på grund af mangel på mad. Tyngdekraftsfoderautomaterne er tilgængelige på markedet, der automatisk kan fodre kæledyrene, men de er lidt dyre, og de har brug for et stort område til placering. I dag vil jeg designe et automatisk fodringssystem til husdyr, der minimerer den menneskelige indsats for at fodre kæledyrene i vid udstrækning. Den ene placerer maden i beholderen, og den genopfyldes automatisk, så snart den falder under et bestemt niveau. Følg derfor denne vejledning, og vær klar til at implementere denne innovative idé hjemme hos dig.

Hvordan oprettes apparatet og automatiseres ved hjælp af Arduino?

Formålet med denne teknik er at gøre et system, der er mere effektivt fra de tilgængelige systemer på markedet som tyngdekraftsfødere, med relativt lave omkostninger. Vores system vil være ansvarlig for at opretholde den konstante forsyning af mad og vand til kæledyrene. For det første designer vi det automatiske vandfodringssystem og for det andet designer vi en automatisk madfoder til vores kæledyr.

Trin 1: Nødvendige komponenter (hardware)

Trin 2: Nødvendige komponenter (software)

Før kredsløbet monteres på hardwaren, skal det simuleres. Efter simuleringen lærer vi, at om vores kredsløb fungerer korrekt eller ej. Derfor har jeg inkluderet softwaresimuleringerne nedenfor, og til det er den krævede software Proteus Professional.

Trin 3: Arbejdsprincip for det autonome vandpumpesystem

Blandt alle komponenterne er de vigtigste komponenter Transistorer BC 547. Der er i alt 7 transistorer, og de vil føle vandstanden. LED'er overvåger vandstanden i beholderen. når vandet stiger op, begynder sensorerne at komme i kontakt med vandet, og transistorer aktiveres, og der er en progression af strøm i transistorer, der får lysdioderne til at lyse. Der er en strømbegrænsende modstand involveret mellem transistor og LED, og ​​det forhindrer, at højere spænding kommer ind i LED'en. Gummirøret forbindes til overheadtanken, og det er ansvarligt for at fylde beholderen, da niveauet falder under en bestemt tærskel. Når vandet falder under tærsklen, starter vandpumpen, og beholderen begynder at fyldes. På denne måde er det ikke nødvendigt at genopfylde beholderen manuelt, og kæledyr leveres med konstant vandforsyning. For din lethed vil jeg uddybe funktionerne i lysdioder. LED'erne installeret i kredsløbet har fire typer farver. Rød, gul, grøn og blå. Den røde indikerer, at der ikke er vand i beholderen, og ingen af ​​sensorerne er i kontakt med vandet, og beholderen skal genopfyldes. Den gule LED indikerer 1/4 vand i beholderen. Den grønne LED indikerer, at beholderen er halvfuld med vand, og den blå LED indikerer, at beholderen er fuld af vand.

Trin 4: Simulering af kredsløbet

  1. Når du har downloadet og installeret Proteus-softwaren, skal du åbne den. Åbn et nyt skema ved at klikke på ISISikonet i menuen.
  2. Når det nye skema vises, skal du klikke på Pikonet i sidemenuen. Dette åbner et felt, hvor du kan vælge alle de komponenter, der skal bruges.
  3. Skriv nu navnet på de komponenter, der skal bruges til at skabe kredsløbet. Komponenten vises i en liste på højre side.
  4. På samme måde som ovenfor skal du søge i alle komponenter som ovenfor. De vises i Enheder Liste.

Trin 5: Lav et printkortlayout

Som vi skal lave hardwarekredsløb på et printkort, skal vi først lave et printkortlayout til dette kredsløb.

  1. For at fremstille PCB-layoutet på Proteus skal vi først tildele PCB-pakkerne til hver komponent på skemaet. for at tildele pakker skal du højreklikke med musen på den komponent, du vil tildele pakken og vælge Emballage værktøj.
  2. Klik på ARIES-indstillingen i topmenuen for at åbne et PCB-skema.
  3. Fra komponentlisten skal du placere alle komponenterne på skærmen i et design, som dit kredsløb skal se ud.
  4. Klik på spormodus og tilslut alle de ben, som softwaren fortæller dig at oprette forbindelse ved at pege på en pil.

Trin 6: Kredsløbsdiagram

Efter at komponenterne er samlet og tilsluttet dem, skal kredsløbsdiagrammet se sådan ud:

Trin 7: Arbejdsprincip for det autonome madforsyningssystem

Funktionsprincippet for madforsyningssystemet er meget simpelt, og den mest vitale komponent i dette kredsløb er Real-time urmodul (DS3231)hvorigennem vi er i stand til at indstille datoen og klokkeslættet, hvor mad skal serveres til vores kæledyr. LCD-modulet viser dato og klokkeslæt og servomotor roterer skåle, der vil bestå af mad. Jeg har inkluderet 4 × 4 tastaturet til manuelt at indstille tidspunktet for fodring af kæledyrene. Jeg har brugt servomotoren, så skålen, der indeholder maden, kan drejes, og den kan smides ned i den nederste skål, hvorfra kæledyrene kan spise den. Maden tabes i den nederste skål med de specifikke intervaller, der indstilles af dig i koden. Du kan indstille mængden af ​​mad på egen hånd under hensyntagen til vaner ved at spise hund, kat, papegøje osv.

Trin 8: Simulering af kredsløbet

Simuler kredsløbet ved at følge trinene ovenfor for at kontrollere, om det fungerer eller ej. Resten af ​​proceduren er den samme bortset fra komponenterne og deres placering. Komponenterne, der skal bruges i kredsløbet, er vist nedenfor:

  • Komponenterne vises i Enheder Liste.

Nu, da vi har kontrolleret, at kredsløbet fungerer fint, fortsætter vi videre og skriver koden til Arduino.

Trin 9: Kredsløbsdiagram

Kredsløbsdiagrammet for Proteus skal se sådan ud:

Trin 10: Kom godt i gang med Arduino

Hvis du ikke er bekendt med Arduino IDE før, skal du ikke bekymre dig, for nedenfor kan du se klare trin til at brænde kode på mikrocontrolerkortet ved hjælp af Arduino IDE. Du kan downloade den nyeste version af Arduino IDE herfra og følge nedenstående trin:

  1. Når Arduino-kortet er tilsluttet din pc, skal du åbne "Kontrolpanel" og klikke på "Hardware og lyd". Klik derefter på "Enheder og printere". Find navnet på den port, som dit Arduino-kort er tilsluttet. I mit tilfælde er det “COM14” men det kan være anderledes på din pc.
  2. Åbn nu Arduino IDE. Fra værktøjer skal du indstille Arduino-kortet til Arduino / Genuino UNO.
  3. Fra den samme værktøjsmenu skal du indstille det portnummer, du så i kontrolpanelet.
  4. Download nedenstående kode og kopier den til din IDE. For at uploade koden skal du klikke på upload-knappen.

Du kan downloade koden herfra.

Trin 11: Forståelse af koden

Koden, der anvendes i dette projekt, er meget enkel og godt kommenteret. Selvom det er selvforklarende, beskrives det kort nedenfor, så hvis du bruger et andet Arduino-kort som nano, mega osv., Kan du ændre koden korrekt og derefter brænde den på dit bord.

  1. Øverst er forskellige biblioteker inkluderet, så tastaturet, LCD, RTC IC og servomotor kan betjenes af mikrocontrolleren.
#omfatte  #omfatte  #omfatte  #omfatte 

2. Derefter har rækkerne og kolonnerne på tastaturet initialiseret de stifter på Arduino, de skal forbindes til, og derefter oprettes hele tastaturet.

const byte RÆGER = 4; // Fire rækker med byte COLS = 4; // Tre kolonner // Definer Keymap-tegnene [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {2, 3, 4, 5}; // Tilslut tastaturet ROW0, ROW1, ROW2 og ROW3 til disse Arduino-ben. byte colPins [COLS] = {6, 7, 8, 9}; // Tilslut tastaturet COL0, COL1 og COL2 til disse Arduino-ben. Tastatur kpd = Tastatur (makeKeymap (nøgler), rowPins, colPins, ROWS, COLS); // Opret tastaturet

3. Derefter initialiseres RTC IC, servomotor og Liquid LCD, og ​​nogle variabler erklæres, der vil blive brugt til kørselstidsberegningerne.

DS3231 rtc (A4, A5); Servo servo_test; // initialisere et servoobjekt til den tilsluttede servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Opretter et LC-objekt. Parametre: (rs, aktiver, d4, d5, d6, d7) // int vinkel = 0; // int potentio = A0; // initialisere A0analog pin til potentiometer int t1, t2, t3, t4, t5, t6; boolsk foder = sandt; // betingelse for alarm char nøgle; int r [6]; 

4. ugyldig opsætning ()er en funktion, der kun udføres en gang i koden, når mikrokontrolleren tændes, eller der trykkes på aktiveringsknappen. Baudhastigheden indstilles i denne funktion, som grundlæggende er hastigheden i bits per sekund, hvormed mikrokontrolleren kommunikerer med de perifere enheder. I denne funktion startes også RTC og servo, og benene initialiseres til brug som input eller output.

ugyldig opsætning () {servo_test.attach (10); // vedhæft signalstiften på servo til pin9 i arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); }

5. ugyldig sløjfe () er en funktion, der udføres igen og igen i en loop. Her i denne funktion skrives koden for at holde styr på tiden og udskrive den på LCD'et. derefter gives en kommando til at rotere servoen i en specificeret vinkel.

ugyldig sløjfe () {lcd.setCursor (0,0); int-knapTryk på; buttonPress = digitalRead (A3); hvis (buttonPress == 1) sætFeedingTime (); //Serial.println(buttonPress); lcd.print ("Time:"); Streng t = ""; t = rtc.getTimeStr (); t1 = t.charAt (0) -48; t2 = t.charAt (1) -48; t3 = t.charAt (3) -48; t4 = t.charAt (4) -48; t5 = t.charAt (6) -48; t6 = t.charAt (7) -48; lcd.print (rtc.getTimeStr ()); lcd.setCursor (0,1); lcd.print ("Dato:"); lcd.print (rtc.getDateStr ()); hvis (t1 == r [0] && t2 == r [1] && t3 == r [2] && t4 == r [3] && t5 <1 && t6 <3 && feed == true) {servo_test. skriv (100); // kommando til at rotere servoen til den specificerede vinkelforsinkelse (400); servo_test.write (55); feed = false; }}

6. ugyldigt setFeedingTime () er en funktion, der tager input fra tastaturet og kortlægger input for at indstille fodringstiden i mikrokontrolleren. Denne tid bruges senere til at rotere motoren for at fodre kæledyrene.

ugyldig setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Indstil fodringstid"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); mens (1) {key = kpd.getKey (); char j; hvis (nøgle! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (nøgle); r [i] = nøgle-48; i ++; j ++; hvis (j == 2) {lcd.print (":"); j ++; } forsinkelse (500); } hvis (nøgle == 'D') {nøgle = 0; pause; }}}

Trin 12: Hardware design af vandpumpesystem

Da vi har udført alle softwareopgaverne, skal vi nu fortsætte med at designe projektets hardware. Først og fremmest samler vi komponenterne i vandpumpesystemet og bagefter designer vi hardware til det automatiske madforsyningssystem. Efter at have lavet et printkortlayout af kredsløbet lod komponenterne på printkortet i henhold til kredsløbsdiagrammet vist ovenfor. Læg kredsløbet i en lille kasse, og lav huller i det på passende vis, så LED'er let kan komme ud af kassen. Tag et printkort og lod LED'erne på det i overensstemmelse med niveauerne defineret ovenfor. Efter at have analyseret kredsløbet fik vi at vide, at der skal tages fem forsyningsledninger fra hovedkortet til sensoren. Fire linjer er af sensorerne, og en er til Almindelig positiv pin.

Vi skal muligvis lave to kanaler, så når de er i kontakt med vand, vil de gå rundt som en switch, da vand er en god leder af elektricitet. Vi kan bruge et PVC-rør og lave huller i det. Mål først beholderens højde, og marker derefter med lige store intervaller 4 punkter på den. Lav huller på disse punkter, og lav derefter en trådsløjfe, der bærer strømmen. Fix den trådsløjfe med møtrikker og bolte i det PVC-rør, og tilføj derefter en fælles ledning til huset. Hullet på den nøgne ledning og bolten skal holdes på et minimum, og i tilfælde af at du har brug for det, kan du lodde en lille smule ledning til den fælles linje lige ved siden af ​​møtrikken og skruen, da sensingen ville være mere på det tidspunkt, hvor vandet interagerer med den normale ledning og bolten, der vil være en overførsel af strøm fra den afisolerede ledning til bolten, og følgelig er sensedelen komplet. Så snart vandet kommer under et bestemt niveau, drejes vandmotoren og tanken begynder at fylde. Når tanken begynder at fylde, begynder beholderen også at fylde på grund af vandrøret, da vand overføres fra tanken til beholderen gennem røret. Derfor er der ikke længere behov for manuelt at fylde containeren.

Trin 13: Hardware Design af automatisk madforsyningssystem

Nu samler vi hardware til madforsyningssystemet. Vi kan indstille tidsintervaller efter eget valg ved hjælp af DS3231 Realtidsur modul og dermed holde øje med vores kæledyrs spiseplan, vil vi justere tidsplanen. Når timeren når den indstillede dato og det tidspunkt, servomotoren bevæger sig, og maden falder ned i skålen placeret nedenunder. Saml kredsløbet som vist ovenfor på brødbrættet. Tag en træpind og fastgør servomotoren med den. Fastgør det lodret mod væggen, og fastgør skålen med mad til pinden ved hjælp af skruer. Skål kan være som et bambusformet hulrør åbent fra begge ender, og et rundt træstykke placeres i bunden af ​​det. Servomotoren fastgøres til træstykket, og så snart motoren bevæger sig i en eller anden vinkel, tabes maden i skålen nedenunder.

Det er alt for i dag. Glem ikke at dele din oplevelse efter at have gennemført dette projekt, og hvis du har problemer, mens du gør det, er du velkommen til at spørge i kommentarsektionen.

Facebook Twitter Google Plus Pinterest