Inhoudsopgave:

De ultieme doe-het-zelf automatische visvoeder: niveau 2: 10 stappen (met afbeeldingen)
De ultieme doe-het-zelf automatische visvoeder: niveau 2: 10 stappen (met afbeeldingen)

Video: De ultieme doe-het-zelf automatische visvoeder: niveau 2: 10 stappen (met afbeeldingen)

Video: De ultieme doe-het-zelf automatische visvoeder: niveau 2: 10 stappen (met afbeeldingen)
Video: Lakmoes strips 2024, Juli-
Anonim
De ultieme doe-het-zelf automatische visvoeder: Tier 2
De ultieme doe-het-zelf automatische visvoeder: Tier 2

De Tier 2 Feeder is een grote stap voorwaarts ten opzichte van de Tier 1. Deze versie gebruikt een ESP8266 wifi-module om de klok van de Arduino te synchroniseren om het voedingsschema en de verlichting van de tank te regelen.

Stap 1: Wat heb je nodig:

Alles in Tier 1 behalve de lichttimer

  • ESP8266-01
  • FTDI programmeur (om de ESP8266 te programmeren)
  • Soldeerbout
  • 5V RGBW LED strip (SK6812 IP 65, daglicht wit, deze heb ik gebruikt)
  • De lichtstrip moet waterdicht zijn, omdat water uit de tank verdampt en condenseert op het tankdeksel en de lichten zelf.
  • 5V-voeding (ik heb deze gebruikt, de Arduino KAN NIET alle lichten alleen van stroom voorzien).
  • Voel je vrij om elke 5V-voeding te gebruiken die je wilt, zorg er wel voor dat deze voldoende stroom levert om alle lichten te voeden.
  • 3.3V spanningsregelaar
  • De ESP8266 werkt op 3,3V, daarom is al het andere 5V, het is gemakkelijker om van 5 naar 3,3 te gaan dan van 12 naar 3,3
  • Weerstanden (1kOhm x2, 2kOhm x2 (of 1kOhm x4), 10kOhm x1)
  • superlijm
  • Hete lijm
  • 3D-geprinte onderdelen x8 (STL-bestanden meegeleverd)
  • Draadstrippers (ik raad deze handige dingen aan)
  • Breadboard (voor het maken van prototypes)
  • Protoboard/Projectboard (voor eindmontage)
  • Standaard 3-polige computervoedingskabel.
  • (optioneel) Trilmotor voor mobiele telefoon (om de trechter in beweging te brengen) (ik heb er een gebruikt)
  • Installeer deze arduino-bibliotheken:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Geduld.

Stap 2: Hoe het werkt

De ESP8266 haalt de Unix-tijd van een NIST-server en geeft die door aan de Arduino. De Arduino gebruikt die tijd vervolgens om de lokale zonsopgang en zonsondergang te bepalen en zijn interne klok te synchroniseren om te bepalen hoeveel minuten er zijn verstreken sinds middernacht. Met behulp van deze verstreken tijd sinds middernacht, stelt de arduino de kleur van de lichten in en weet hij wanneer de feeder moet worden geactiveerd, wat hetzelfde mechanisme is als de Tier 1-freeder. De standaardinstellingen in de Arduino-code die ik heb geschreven, hebben de lichten ingesteld op een dag / nacht-cyclus die tot op de seconde kan worden geregeld voor soepele vervagingen en worden gesynchroniseerd met de zonsopgang en zonsondergang van uw locatie. De arduino reset zichzelf ook één keer per dag om zichzelf opnieuw te synchroniseren met de NIST-server en ervoor te zorgen dat er geen timer-overflows zijn

Stap 3: Programmeren van de ESP8266

Programmeren van de ESP8266
Programmeren van de ESP8266

Oké, dus de ESP8266 is een klootzak om te programmeren.

Het is niet breadboard-vriendelijk en als je vrouwelijke jumperdraden hebt, raad ik aan die te gebruiken. Als uw ESP8266 zonder firmware is geïnstalleerd zoals de mijne, moet u de firmware flashen. Gebruik de FTDI-programmeur om dit te doen, er zijn genoeg instructies om dit elders te doen, maar ik heb voor het gemak een bedradingsschema verstrekt. ZORG ERVOOR dat de FTDI-programmeur 3.3V levert! 5V zal je ESP8266 bakken. In mijn diagram mag de oranje die is aangesloten tussen GPI01 en GND alleen worden gemaakt bij het flashen van de firmware van de ESP8266. GPI01 moet losgekoppeld blijven bij het uploaden van de daadwerkelijke Arduino-code naar de module.

Vervolgens moet u de daadwerkelijke code van de ESP8266 uploaden. Gebruik deze keer de FTDI-programmer samen met de arduino IDE. U moet ook alle gebruikte bibliotheken downloaden en installeren. De instellingen die worden gebruikt om de code met arduino 1.8 te uploaden, bevinden zich aan het begin in het gedeelte met opmerkingen. ZORG ERVOOR dat u de code bijwerkt met uw wifi-netwerk en wachtwoord.

Stap 4: Verbind de ESP8266 met de Arduino

Sluit de ESP8266 aan op de Arduino
Sluit de ESP8266 aan op de Arduino
Sluit de ESP8266 aan op de Arduino
Sluit de ESP8266 aan op de Arduino

Zodra de code is geüpload, kunt u de FTDI-programmer loskoppelen en de ESP8266 aansluiten zoals weergegeven in het diagram. De weerstanden worden gebruikt als spanningsdeler om ervoor te zorgen dat de Arduino geen 5V in de communicatie- en resetpinnen van de ESP8266 pompt. Voer deze stap uit op een breadboard om te debuggen, we zullen het later op het proto-board plaatsen.

Zodra de ESP8266 allemaal is aangesloten, zou je een blauw lampje moeten zien knipperen wanneer het is aangesloten op de stroom, een paar seconden later zou het de Unix-tijd van internet moeten krijgen en dat naar de Arduino moeten sturen, dan heeft het een lege lege lus () waarin het zit totdat het wordt gereset, net als de Tier 1-feeder.

Om er zeker van te zijn dat de ESP8266 werkt, moet je de code van de volgende stap uploaden naar de Arduino en de seriële monitor openen.

Stap 5: De Arduino-code uploaden en problemen oplossen

De Arduino-code uploaden en problemen oplossen
De Arduino-code uploaden en problemen oplossen

Upload nu de code naar de Arduino nano, open de seriële monitor, je zou zoiets als het bovenstaande voorbeeld moeten zien. De arduino reset wanneer je de seriële monitor opent, dus de ESP8266 wordt tegelijkertijd gereset. de seriële monitor begint de seconden te tellen vanaf middernacht op 1 januari 1970, totdat de ESP8266 hem de huidige Unix-tijd stuurt. Wanneer dat gebeurt, zou je dit moeten zien:

Het kan 3-15 seconden duren voordat dit werkt, dus wees geduldig. Ik heb zelden gezien dat het langer dan 10 seconden duurt, maar geef het 15 voordat je begint met het oplossen van problemen.

Als je ESP8266 de tijd niet naar de Arduino stuurt, probeer dan deze stappen:

· Zorg ervoor dat alles PRECIES is aangesloten zoals het hoort

· Controleer nogmaals of je de juiste wifi-SSID en het juiste wachtwoord in de ESP8266 hebt ingevoerd, zo niet, dan moet je hem weer aansluiten op de FTDI-programmeur om de juiste informatie te uploaden, en hem dan opnieuw verbinden met de Arduino. (een superlange SSID of wachtwoord kan problemen veroorzaken, maar mijn wifi-netwerk heeft meer dan 20 tekens in beide velden, dus de meeste thuisnetwerken zouden in orde moeten zijn)

· Controleer de beheerderspagina van uw router (indien mogelijk) voor een aangesloten apparaat dat alleen verschijnt als de ESP8266 is ingeschakeld. Om er zeker van te zijn dat het aan blijft terwijl je dit controleert (de arduino schakelt het uit), sluit je de draad die naar de reset-pin van de ESP8266 leidt rechtstreeks opnieuw aan op 3,3 V, en als je deze HOOG houdt, blijft de ESP8266 aan. Zorg ervoor dat u dit ongedaan maakt nadat u het heeft gecontroleerd.

Stap 6: De Arduino-code aanpassen

Zodra je ESP8266 is aangesloten en tijd naar de Arduino verzendt, telt de geprogrammeerde Arduino gewoon de tijd en geeft hij een paar andere stukjes foutopsporingsinformatie weer, zoals zonsopgang en zonsondergang. We kunnen enkele van deze waarden aanpassen in de Arduino-code, de rest is er gewoon, zodat ik het hele systeem kan debuggen.

Lees de documentatie over de Dusk2Dawn-bibliotheek om beter te begrijpen hoe de arduino zonsopgang en zonsondergang berekent. U moet uw breedte- en lengtegraad invoeren (als u de naam van uw locatie wijzigt, zorg er dan voor dat deze overal in de code wordt gewijzigd!) Dusk2Dawn gebruikt uw gps-coördinaten (die u kunt vinden op google maps) en de lokale tijd om bepalen wanneer de zon opkomt en ondergaat in minuten vanaf middernacht. De minfromMid-variabele is de huidige minuut sinds middernacht en wordt vergeleken met zonsopgang, zonsondergang, de voedertijden en schemering om de Arduino te vertellen wanneer hij wat moet doen. Zorg ervoor dat u ook uw tijdzone bijwerkt, de standaard is EST.

Zodra uw locatie is ingesteld, stelt u de schemertijd in om de Arduino te vertellen hoe lang u de schemering wilt hebben. Dit bepaalt hoe lang de periode tussen dag en nacht duurt en wordt weergegeven in minuten. De standaardinstelling is 90 minuten, dus de RGBW-lampen zullen in die tijd van dag naar nacht of andersom vervagen.

Stel vervolgens de gewenste voedertijden in. De werkelijke voedertijden worden ingesteld in de getTime()-methode om de voeders gesynchroniseerd te houden met dag/nacht. Als u wilt dat uw vissen in plaats daarvan elke dag op hetzelfde tijdstip worden gevoerd, becommentarieert u de relatieve instellingen en gebruikt u de begininstellingen aan het begin van de code. Onthoud dat deze tijden vanaf middernacht in minuten zijn. Het gebruik van initiële, hardgecodeerde voedertijden kan de verlichting verstoren als de voedertijd valt tijdens de overgang tussen schemering en daglicht (bij zonsopgang en zonsondergang). De standaard voor de code is respectievelijk 15 minuten voor en na zonsondergang en zonsopgang. Indien gewenst kunnen extra voedertijden worden toegevoegd.

Stel vervolgens de tijd in waarop u de arduino wilt resetten. Dit zorgt ervoor dat geen van de timing overloopt en de klok opnieuw synchroniseert. Ik raad aan om dit halverwege de dag te doen, wanneer je weg bent, omdat het resetproces ervoor zorgt dat de lichten op volle sterkte gaan. Overdag zal dit geen probleem zijn voor de vissen, maar 's nachts of in de ochtend/avond kan de lichtflits uw vissen verstoren of het aanzien van het aquarium een paar seconden verpesten terwijl u ervan geniet.

Controleer ten slotte het aantal LED's in de strip die u heeft. Mijn strip heeft 60, maar u moet deze waarde bijwerken in de setup-code voor het aantal LED's dat u gebruikt.

Stap 7: De verlichting

De bliksem
De bliksem

Sluit je ledstrip aan als je dat nog niet hebt gedaan.

Stroom (rood) naar 5V, aarde (wit) naar aarde, signaal (groen) naar pin 6 (of waar je het ook op instelt). Zodra de arduino is gereset, zijn de lichten op volle helderheid totdat de ESP8266 de tijd naar de arduino stuurt en bepaalt waar deze zich in de verlichtingscyclus bevindt. Het is het beste om dit 's avonds of 's nachts op te zetten, omdat de lichtwisseling ingrijpender zal zijn. Als de lichten niet binnen 30 seconden veranderen, reset je de arduino. Mijn resetcode zou moeten werken, maar ik ben geen programmeur van beroep, dus er kunnen hier of daar nog een paar bugs zijn. Je kunt testen of de reset werkt door de resettijd in te stellen op een minuut nadat je de code opnieuw hebt geüpload en wacht (de resetseconde is willekeurig, dus het kan 1-2 minuten duren om daadwerkelijk te resetten) Je kunt hetzelfde trucje later doen aan om te controleren of de servo werkt door de voedingstijd te wijzigen. Zorg er wel voor dat u deze tijden terugzet voordat u het laat lopen.

Het standaard lichtschema is vrij eenvoudig:

'S Nachts zijn alle lichten uit, behalve blauw, dat op de laagste stand staat (2/255). Naarmate de zonsopgang nadert, neemt het blauw toe tot zijn volledige intensiteit (255), die het bereikt aan het begin van de schemering. Tijdens de schemering stijgen rood en groen van uit tot 255. Bij zonsopgang staan rood, blauw en groen allemaal op 255, maar het daglicht is wit, dus in de komende 2 minuten vervagen rood, blauw en groen en vervaagt wit in. De rest van de dag is wit op volle sterkte, tot 2 minuten voor zonsondergang, dan vervaagt het en wordt het weer vervangen door rood, blauw en groen. Bij zonsondergang gaat de verlichting opnieuw in de schemering, behalve dat rood en groen deze keer op volle intensiteit beginnen en uitdoven, en blauw op volle intensiteit achterlaten wanneer de nacht aanbreekt. Vanaf hier vervaagt het blauw langzaam terug naar zijn laagste waarde, die het om middernacht bereikt.

Er is een andere code aan het einde van de Arduino-schets voor andere verlichtingsmodi, dus speel gerust met de wiskunde om de verlichting anders te laten vervagen of om de kleuren tijdens verschillende perioden van de dag te veranderen. Onthoud dat de wiskunde in float-formaat wordt gedaan, maar de kleurwaarden moeten ints zijn, dus conversie tussen de twee is nodig met elke nieuwe verlichtingsberekening die u implementeert.

Stap 8: De onderdelen afdrukken

Als je de onderdelen voor deze Tier nog niet hebt afgedrukt, doe dat dan. De behuizing is ongeveer even groot als een middelgrote filtereenheid en het kostte me de hele nacht om te printen. Reinig de onderdelen, plaats de scheidingswand, met de groef naar boven en de afgeronde rand naar buiten gericht. De servo wordt op dezelfde manier geïnstalleerd als in Tier 1, en als u een Tier 1-systeem vervangt, zijn de hopper, het deksel en het invoerwiel identiek, dus u hoeft ze niet opnieuw af te drukken als ze werken.

De.zip-map bevat twee sets STL-bestanden, een voor de originele SM22-servomotor die ik gebruikte en een andere voor de veel algemenere SG90-servo. Beide bevatten de Fusion 360-bestanden als u een van de onderdelen wilt/moet wijzigen. De SM22 STL's passen zeker bij elkaar, aangezien zij degene zijn die ik heb gebruikt. Ik heb de SG90-onderdelen niet afgedrukt of getest.

Voor materialen raad ik het gebruik van voedselveilig plastic aan. Ik heb Raptor PLA van makergeeks gebruikt, dat in een heleboel kleuren wordt geleverd en supersterk is nadat je het 10 minuten hebt uitgegloeid. Dat kan worden gedaan door de onderdelen te koken, wat ik je aanraad om alleen het wiel te doen als het niet helemaal past, omdat door gloeien de onderdelen met ongeveer 0,3% krimpen.

Ik heb de behuizing op zijn kant geprint (met de bovenkant naar de zijkant en de open kant naar boven) Dit gebruikt veel minder ondersteuningsmateriaal dan andere oriëntaties. De hopper kan ondersteboven worden bedrukt om alle ondersteuningsmateriaal erop te vermijden. Het deksel van de trechter moet ook ondersteboven worden bedrukt, maar het grote deksel moet met de goede kant naar boven worden bedrukt.

Er is ook een 'eindstop'-stuk om de onderkant van de behuizing te ondersteunen. Nadat ik de feeder een paar weken op zijn plaats had gelaten, merkte ik dat deze begon door te zakken en te buigen door het gewicht van de voeding, en dat had invloed op het vermogen van de hopper om voedsel in het wiel te voeren. Lijm gewoon 1-2 eindstops aan de onderkant van de behuizing om alles waterpas te houden.

Stap 9: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Gebruik een protoboard om alles aan te sluiten. Ik heb jumperdraden gebruikt, dus ik hoefde niet zo veel te solderen, maar dit is waar je het meest zult solderen. Zolang de verbindingen allemaal hetzelfde zijn, zal het systeem werken zoals het deed op het breadboard. Ik heb header-pinnen aan elkaar gesoldeerd om power "rails" te maken voor aarde, 5V, 3.3V, evenals signaalpoorten voor de servo- en niet-power 3.3V-signalen naar de ESP8266 (RX, CH_PD en RST). Ik oriënteerde alle pinnen naar de onderkant van het protoboard, met de componenten aan de bovenkant.

Zodra u het protoboard compleet hebt, plaatst u het in de bovenste holte van de behuizing en sluit u de servomotor aan. De verlichtingskabels gaan uit de inkeping in het deksel van de behuizing en de voeding past in de onderste holte. De onderste holte is afgerond en heeft een lichte helling om water af te voeren dat op de een of andere manier in de behuizing kan komen, weg van de elektronica. Sluit de positieve en negatieve aansluitingen van de voeding aan op het systeem en voeg de zijafdekking toe.

Als je dit nog niet hebt gedaan voor je voeding, knip dan het uiteinde van de voedingskabel die niet in de muur past door en strip de draden voldoende zodat je ze in de juiste klemmen van de voeding kunt steken. Als je krimpuiteinden hebt die je op de uiteinden kunt plaatsen, raad ik aan ze te gebruiken, zo niet, dan is het blote koper in orde, zorg er dan voor dat er niets kortsluiting is! VERGEET NIET dat dit wordt aangesloten op het stopcontact van uw huis, WEES VEILIG EN WERK NOOIT MET HET SYSTEEM AANGESTOPT.

Vervolgens moet de lichtstrip aan de tank worden toegevoegd. Verwijder het deksel van uw tank en droog het volledig af. Zorg ervoor dat het oppervlak van het deksel schoon en droog is voordat u de lampjes toevoegt. De strip die ik heb heeft een zelfklevende achterkant, dit zal niet werken om de lichtstrip vast te zetten, maar het zal werken om ze langs de rand van het deksel te plaatsen (of waar je ze ook plaatst) Mijn tankdeksel had toevallig de juiste maat voor mijn strip, dus ik hoefde geen draden te verlengen. Zorg er wel voor dat alle blootliggende draden zijn bedekt met waterdichte materialen voordat u het deksel weer op de tank plaatst. Ik heb hete lijm gebruikt om de uiteinden te bedekken, maar dat werkt misschien niet op lange termijn. Zodra de lichten zijn gerangschikt zoals u ze wilt, plakt u ze superlijm op hun plaats. Ik moest extra lijm gebruiken in de hoeken omdat de ledstrip daar omhoog kwam. Laat de lijm een paar minuten drogen voordat je het deksel weer op de tank plaatst, om er zeker van te zijn dat er niets naar binnen druppelt. Zodra het deksel er weer op zit, sluit je gewoon de draden aan op de Arduino.

De feederconstructie is precies hetzelfde als de Tier 1-feeder. De servo past in zijn holte met het feederwiel eraan vastgelijmd. De zak van het invoerwiel moet naar de trechter wijzen wanneer de servo in de 0-positie staat (en in de 180-positie naar de tank draaien). Als u de optionele vibratiemotor gebruikt, soldeer er dan een paar stroomdraden aan en steek deze in de trechter, er is een holte in de servo-holte ervoor. Stuur de geleidingsdraden van de motor door hetzelfde pad als de servodraden en verbind ze met aarde en de motorpin op de Arduino. Heet lijm de trechter aan de basis.

Zodra alles is aangesloten, kunt u de voeding in de muur steken. De arduino moet zijn opstartvolgorde doorlopen en de lichten zullen veranderen wanneer het de tijd krijgt. Zo niet, reset het bord totdat het de tijd krijgt. Ik heb het deksel van de behuizing op zijn plaats gelijmd, maar de zijklep losgelaten, zodat ik toegang had tot de Arduino om hem opnieuw in te stellen of te herprogrammeren.

Gefeliciteerd! Je Tier 2 visvoeder is klaar! Bewonder de mooie verlichting en het vermogen om je vissen te voeren als je weg bent! Zorg ervoor dat u het systeem de komende dagen in de gaten houdt om er zeker van te zijn dat alles naar behoren werkt en dat uw vissen daadwerkelijk worden gevoerd.

Stap 10: Waar u eerst op moet letten:

Waar u eerst op moet letten
Waar u eerst op moet letten
Waar u eerst op moet letten
Waar u eerst op moet letten
Waar u eerst op moet letten
Waar u eerst op moet letten

Toen ik de mijne voor het eerst instelde, heb ik per ongeluk de servo op de verkeerde signaalpin aangesloten, zodat de vissen een aantal dagen niet werden gevoerd totdat ik de fout realiseerde (ik had ze 's nachts handmatig gevoerd als reactie op de volgende fout). Probeer de voedertijden in te stellen op wanneer u het meest waarschijnlijk in de buurt bent om te bevestigen dat uw vissen gevoerd zijn.

Een andere fout om op te letten is de reset. Als je bijvoorbeeld na zonsondergang thuiskomt en je tank nog op dagverlichting staat, is de kans groot dat de resetfunctie is mislukt en de arduino nooit de tijd heeft gekregen van de ESP8266. Dit betekent ook dat je vissen niet zijn gevoerd sinds de resettijd, dus je moet ze waarschijnlijk zelf voeren terwijl je op de resetknop op de Arduino drukt. Ik ben er 99% zeker van dat ik dit heb geëlimineerd, maar coderen is niet mijn beroep, dus let er goed op.

Zorg er ook voor dat u het voedsel in de trechter elke twee weken controleert, indien nodig bijvult en ervoor zorgt dat er niets bederft.

Als u op vakantie gaat, zorg er dan voor dat u een waterverversing en ander basisonderhoud van de tank uitvoert voordat u vertrekt. De feeder zorgt er alleen voor dat voer en verlichting niet het einde van je vis zijn als je te lang weg bent. U zou nooit meer vakantievoeders moeten gebruiken!

Aanbevolen: