Hoe maak je een automatisch voersysteem voor je huisdieren?
De huisdieren moeten op tijd worden gevoerd, zodat ze een goede gezondheid kunnen behouden. De eigenaren van gezelschapsdieren zijn niet 24/7 beschikbaar in het huis, soms gaan ze voor zakelijke bijeenkomsten naar een andere stad of het huis van iemand anders, dus de huisdieren lijden in hun afwezigheid door gebrek aan voedsel. De zwaartekrachtvoeders zijn op de markt verkrijgbaar die de huisdieren automatisch kunnen voeren, maar ze zijn een beetje duur en ze vereisen een groot gebied voor plaatsing. Vandaag zal ik een automatisch voersysteem voor huisdieren ontwerpen dat de menselijke inspanningen om de huisdieren te voeren grotendeels zal minimaliseren. Degene plaatst het voedsel in de container en het wordt automatisch bijgevuld zodra het onder een bepaald niveau komt. Volg daarom deze tutorial en wees klaar om dit innovatieve idee bij u thuis te implementeren.
Hoe het apparaat in te stellen en te automatiseren met behulp van Arduino?
Het doel van deze techniek is om een systeem te maken dat effectiever is dan de systemen die op de markt beschikbaar zijn, zoals zwaartekrachtvoeders, tegen relatief lage kosten. Ons systeem zal verantwoordelijk zijn voor het in stand houden van de constante toevoer van voedsel en water voor zowel de huisdieren. Ten eerste zullen we het automatische watervoersysteem ontwerpen en ten tweede zullen we een automatische voerautomaat voor onze huisdieren ontwerpen.
Stap 1: Benodigde componenten (hardware)
Stap 2: Benodigde componenten (software)
Voordat de schakeling op de hardware wordt gemonteerd, moet deze worden gesimuleerd. Na de simulatie komen we erachter of ons circuit nauwkeurig zal werken of niet. Daarom heb ik de onderstaande softwaresimulaties opgenomen en daarvoor is de benodigde software Proteus Professional.
Stap 3: Werkingsprincipe van autonoom waterpompsysteem
Van alle componenten zijn de belangrijkste componenten Transistors BC 547. Er zijn in totaal 7 transistors en deze zullen het waterniveau meten. LED's zullen het waterpeil in de container controleren. naarmate het water stijgt, beginnen de sensoren in contact te komen met het water en worden de transistors geactiveerd en is er een toename van de stroom in de transistors waardoor de LED's oplichten. Er is een stroombeperkende weerstand tussen de transistor en de LED en deze voorkomt dat een hogere spanning de LED binnenkomt. De rubberen buis wordt verbonden met de bovenliggende tank en is verantwoordelijk voor het vullen van de container als het niveau onder een bepaalde drempel zakt. Als het water onder de drempel zakt, start de waterpomp en begint de container te vullen. Op deze manier is het niet nodig om de container handmatig bij te vullen en krijgen huisdieren de constante toevoer van water. Voor uw gemak zal ik de functionaliteit van LED's nader toelichten. De LED's die in het circuit zijn geïnstalleerd, hebben vier soorten kleuren. Rood, geel, groen en blauw. De rode geeft aan dat er geen water in de container zit en geen van de sensoren in contact is met het water en de container moet worden bijgevuld. De gele LED geeft 1/4 water in de container aan. De groene LED geeft aan dat de container halfvol water is en de blauwe LED geeft aan dat de container vol water is.
Stap 4: Simuleren van het circuit
- Nadat u de Proteus-software hebt gedownload en geïnstalleerd, opent u deze. Open een nieuw schema door op het ISISicoon op het menu.
- Wanneer het nieuwe schema verschijnt, klikt u op het Ppictogram in het zijmenu. Dit opent een vak waarin u alle componenten kunt selecteren die zullen worden gebruikt.
- Typ nu de naam van de componenten die zullen worden gebruikt om het circuit te maken. Het onderdeel verschijnt in een lijst aan de rechterkant.
- Zoek op dezelfde manier, zoals hierboven, alle componenten zoals hierboven. Ze verschijnen in de Apparaten Lijst.
Stap 5: Maak een PCB-layout
Omdat we de . gaan maken hardware circuit op een PCB moeten we eerst een PCB-layout voor dit circuit maken.
- Om de PCB-layout op Proteus te maken, moeten we eerst de PCB-pakketten toewijzen aan elk onderdeel in het schema. om pakketten toe te wijzen, klikt u met de rechtermuisknop op het onderdeel waaraan u het pakket wilt toewijzen en selecteert u Verpakkingstool.
- Klik op de ARIES-optie in het bovenste menu om een PCB-schema te openen.
- Plaats vanuit de componentenlijst alle componenten op het scherm in een ontwerp dat u wilt dat uw circuit eruitziet.
- Klik op de track-modus en verbind alle pinnen die de software je vertelt te verbinden door met een pijl te wijzen.
Stap 6: Schakelschema
Na montage van de componenten en bedrading ziet het schakelschema er als volgt uit:
Stap 7: Werkingsprincipe van autonoom voedselvoorzieningssysteem
Het werkingsprincipe van het voedselvoorzieningssysteem is heel eenvoudig en het meest vitale onderdeel in dit circuit is de: Realtime klokmodule (DS3231)waarmee we de datum en tijd kunnen instellen waarop voedsel aan onze huisdieren wordt geserveerd. De LCD-module geeft de datum en tijd weer en de servomotor zal de kommen draaien die uit voedsel zullen bestaan. Ik heb het 4×4-toetsenbord meegeleverd om de tijd voor het voeren van de huisdieren handmatig in te stellen. Ik heb de servomotor gebruikt zodat de kom met het voedsel kan worden gedraaid en deze in de onderste kom kan worden gedropt van waaruit de huisdieren het kunnen eten. Het voedsel wordt in de onderste schaal gegooid met de specifieke intervallen die door u in de code worden ingesteld. U kunt zelf de hoeveelheid voer instellen, rekening houdend met de eetgewoonten van de hond, kat, papegaai, etc.
Stap 8: Het circuit simuleren
Simuleer het circuit door de bovenstaande stappen te volgen om te controleren of het werkt of niet. De rest van de procedure is hetzelfde, behalve de componenten en hun plaatsing. De componenten die in het circuit zullen worden gebruikt, worden hieronder weergegeven:
- De componenten verschijnen in de Apparaten Lijst.
Nu we hebben gecontroleerd of het circuit goed werkt, gaan we verder en schrijven we de code voor Arduino.
Stap 9: Schakelschema
Het schakelschema van Proteus zou er als volgt uit moeten zien:
Stap 10: Aan de slag met Arduino
Als u nog niet bekend bent met Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder ziet u duidelijke stappen voor het branden van code op het microcontrollerbord met behulp van Arduino IDE. U kunt de nieuwste versie van Arduino IDE hier downloaden en de onderstaande stappen volgen:
- Wanneer het Arduino-bord is aangesloten op uw pc, opent u "Configuratiescherm" en klikt u op "Hardware en geluid". Klik vervolgens op "Apparaten en printers". Zoek de naam van de poort waarop uw Arduino-bord is aangesloten. In mijn geval is het “COM14” maar het kan op uw pc anders zijn.
- Open nu de Arduino IDE. Stel vanuit Tools het Arduino-bord in op Arduino / Echte UNO.
- Stel vanuit hetzelfde Tool-menu het poortnummer in dat u in het configuratiescherm zag.
- Download de onderstaande code en kopieer deze naar uw IDE. Om de code te uploaden, klikt u op de upload-knop.
U kunt de code hier downloaden.
Stap 11: De code begrijpen
De code die in dit project wordt gebruikt, is heel eenvoudig en goed becommentarieerd. Hoewel het voor zich spreekt, wordt het hieronder kort beschreven, zodat als je een ander Arduino-bord gebruikt, zoals nano, mega, enz., je de code correct kunt wijzigen en het vervolgens op je bord kunt branden.
- Bovenaan zijn verschillende bibliotheken opgenomen zodat toetsenbord, LCD, RTC IC en servomotor kunnen worden bediend door de microcontroller.
#include#include #include #include
2. Vervolgens hebben de rijen en kolommen van het toetsenbord de pinnen van Arduino geïnitialiseerd waarmee ze zullen worden verbonden en dan is het hele toetsenbord gemaakt.
const byte RIJEN = 4; // Vier rijen const byte COLS = 4; // Drie kolommen // Definieer de Keymap-tekentoetsen [ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6', 'B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins [ROWS] = { 2, 3, 4, 5 }; // Sluit toetsenbord ROW0, ROW1, ROW2 en ROW3 aan op deze Arduino-pinnen. byte colPins [COLS] = { 6, 7, 8, 9 }; // Sluit toetsenbord COL0, COL1 en COL2 aan op deze Arduino-pinnen. Toetsenbord kpd = Toetsenbord (makeKeymap (toetsen), rowPins, colPins, RIJEN, COLS); // Maak het toetsenbord
3. Vervolgens worden de RTC IC, servomotor en de Liquid LCD geïnitialiseerd en worden enkele variabelen gedeclareerd die zullen worden gebruikt voor de runtime-berekeningen.
DS3231 rtc(A4, A5); Servo servo_test; // initialiseer een servo-object voor de aangesloten servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Maakt een LC-object. Parameters: (rs, inschakelen, d4, d5, d6, d7) //int hoek = 0; // int-potentio = A0; // initialiseer de A0analoge pin voor potentiometer int t1, t2, t3, t4, t5, t6; booleaanse feed = waar; // voorwaarde voor alarmsleutel; int r[6];
4. ongeldige setup()is een functie die slechts één keer in de code wordt uitgevoerd wanneer de microcontroller wordt ingeschakeld of de activeringsknop wordt ingedrukt. De baudrate wordt in deze functie ingesteld, wat in feite de snelheid in bits per seconde is waarmee de microcontroller communiceert met de randapparatuur. In deze functie worden ook RTC en de servo gestart en worden de pinnen geïnitialiseerd om als ingang of uitgang te worden gebruikt.
void setup() { servo_test.attach(10); // bevestig de signaalpin van servo aan pin9 van arduino rtc.begin (); lcd.begin(16,2); servo_test.write(55); Serial.begin (9600); pinMode (A0, UITGANG); pinMode (A1, UITGANG); pinMode (A2, UITGANG); }
5. lege lus() is een functie die keer op keer in een lus wordt uitgevoerd. Hier in deze functie wordt de code geschreven om de tijd bij te houden en op het LCD-scherm af te drukken. dan wordt een commando gegeven om de servo onder een bepaalde hoek te draaien.
leegte loop () {lcd.setCursor (0,0); int-knopDruk op; buttonPress = digitalRead (A3); if (buttonPress==1) setFeedingTime(); //Serial.println(buttonPress); lcd.print("Tijd: "); Tekenreeks 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("Datum: "); lcd.print(rtc.getDateStr()); if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true) { servo_test. schrijf(100); // opdracht om de servo naar de opgegeven hoekvertraging (400) te draaien; servo_test.write(55); feed = false; } }
6. ongeldig setFeedingTime () is een functie die invoer van het toetsenbord ontvangt en de invoer in kaart brengt om de voedertijd in de microcontroller in te stellen. Deze tijd wordt later gebruikt om de motor te draaien om de huisdieren te voeren.
void setFeedingTime() { feed = true; int i = 0; lcd.wissen(); lcd.setCursor(0,0); lcd.print("Voertijd instellen"); lcd.wissen(); lcd.print("UU:MM"); lcd.setCursor (0,1); while(1){ sleutel = kpd.getKey(); char j; if (key! = NO_KEY) {lcd.setCursor (j, 1); lcd.print(sleutel); r [i] = key-48; i++; j++; if (j==2) { lcd.print(":"); j++; } vertraging (500); } if (toets == 'D') {toets=0; breken; } } }
Stap 12: Hardware-ontwerp van waterpompsysteem
Nu we alle softwaretaken hebben gedaan, gaan we verder met het ontwerpen van de hardware van het project. Allereerst assembleren we de componenten van het waterpompsysteem en daarna ontwerpen we de hardware van het automatische voedselvoorzieningssysteem. Na het maken van een printlayout van de schakeling soldeer je de componenten op de printplaat volgens bovenstaand schakelschema. Plaats het circuit in een kleine doos en maak er gaten in, zodat de LED's gemakkelijk uit de doos kunnen komen. Neem een printplaat en soldeer de LED's erop volgens de hierboven gedefinieerde niveaus. Na analyse van de schakeling kwamen we erachter dat er vijf voedingslijnen moeten worden verwijderd van de hoofdprintplaat naar de sensor. Vier lijnen zijn van de sensoren en één is voor Gemeenschappelijke positieve pin.
Mogelijk moeten we twee kanalen maken, zodat wanneer ze in contact komen met water, ze als een schakelaar werken, omdat water een goede geleider van elektriciteit is. We kunnen een PVC-buis gebruiken en er gaten in maken. Meet eerst de hoogte van de container en markeer er vervolgens met gelijke intervallen 4 punten op. Maak gaten op die punten en maak vervolgens een lus van draad die de stroom zal dragen. Bevestig die draadlus met bouten en moeren in die PVC-buis en voeg daarna een gemeenschappelijke draad toe aan de behuizing. Het gat van de blootliggende draad en bout moet tot een minimum worden beperkt en in het geval dat u nodig heeft, kunt u een klein stukje draad solderen aan de gemeenschappelijke lijn net naast de moer en schroef, aangezien de detectie meer op het punt zou zijn wanneer het water interageert met de normale draad en de bout, er zal een stroomoverdracht zijn van de gestripte draad naar de bout en daarom is het detectiegedeelte voltooid. Zodra het water onder een bepaald niveau komt, wordt de watermotor gedraaid AAN en de tank begint te vullen. Als de tank begint te vullen, begint de container ook te vullen dankzij de waterleiding, aangezien water door de leiding van de tank naar de container wordt overgebracht. Het is dus niet meer nodig om de container handmatig te vullen.
Stap 13: Hardwareontwerp van automatisch voedselvoorzieningssysteem
Nu gaan we de hardware van het voedselvoorzieningssysteem monteren. We kunnen de tijdsintervallen van onze eigen keuze instellen met behulp van de DS3231 realtime klok module en dus rekening houdend met het eetschema van onze huisdieren zullen we het schema aanpassen. Wanneer de timer de ingestelde datum en tijd bereikt, zal de servomotor bewegen en zal het voedsel in de kom vallen die eronder is geplaatst. Monteer het circuit zoals hierboven weergegeven op het breadboard. Neem een houten stok en bevestig de servomotor ermee. Bevestig het verticaal tegen de muur en bevestig met behulp van schroeven de kom met voedsel aan de stok. Bowl kan zijn als een bamboevormige holle pijp die aan beide uiteinden open is en een rond houten stuk op de bodem ervan wordt geplaatst. De servomotor wordt aan het houten stuk bevestigd en zodra de motor onder een bepaalde hoek beweegt, valt het voedsel in de kom die eronder staat.
Dat is alles voor vandaag. Vergeet niet om uw ervaring te delen na het voltooien van dit project en als u problemen ondervindt tijdens het maken, kunt u deze gerust stellen in het opmerkingengedeelte.