Aquariumplanten hebben licht nodig om energie op te wekken via fotosynthese, terwijl veel vissen baat hebben bij een regelmatige lichtcyclus, maar hoe kun je ze kunstmatig verlichten met de doe-het-zelf-elektronica die je al hebt? hebben? Laten we een DIY-aquariumverlichtingssysteem bouwen met behulp van een Arduino, realtime klok en LED-strip.
Een LED-aquariumlamp gebruiken
Voordat we beginnen, is het vermeldenswaard dat de LED's die we in dit project gebruiken geen full-spectrum LED's zijn die daglicht nabootsen. Dit betekent dat ze niet alle lichtgolflengten leveren die gunstig zijn voor planten, waardoor ze worden niet geschikt voor aquariumplanten die veel licht nodig hebben en een kleine hoeveelheid energie verspillen die door de LED's.
Dat gezegd hebbende, voor beplante aquaria met weinig licht kan LED-verlichting zoals deze een uitstekende oplossing zijn keuze die een snellere en gezondere plantengroei biedt zonder de kosten die gepaard gaan met veel aquariumverlichting producten; je krijgt gewoon niet hetzelfde wattage.
Niet alleen de planten in uw aquarium hebben baat bij LED-verlichting: veel vissoorten genieten van een regelmatige lichtcyclus die imiteert dag en nacht om hun circadiane ritme te behouden, zodat ze kunnen rusten, voedsel zoeken en actief zijn zoals ze zouden zijn in het wild.
Om een LED-verlichtingssysteem te bouwen dat een dag-nachtcyclus voor de vissen en planten in uw aquarium aanstuurt, we zullen een Arduino, een real-time klok (RTC) en een LED-strip gebruiken - zoals kan worden gebruikt voor een breed scala van Arduino LED-verlichtingsprojecten.
Wat heb je nodig?
Je hebt maar een handvol onderdelen nodig om deze build te voltooien:
- 1x Arduino-microcontroller met SDA/SCL-pinnen (Uno, Leonardo, Micro, enz.; we gebruiken een Pro Micro)
- 1x DS3231 RTC-module
- 1x WS2812/WS2812B NeoPixel RGB LED-strip met IP65-classificatie of hoger (we gebruiken een 60 LED WS2812-strip van 1 meter die is afgedicht met siliconen; u kunt profiteren van het gebruik van meer LED's als u een tank van 20+ gallon heeft)
- 1x 12v AC naar DC voedingsadapter met vrouwelijke barrel connector
- 1x 1000uF condensator (optioneel)
- Diverse draden en krimpkousen
- Superlijm/dubbelzijdige tape
- 3D-printerfilament (optioneel)
U hebt ook enkele hulpmiddelen nodig om dit project te voltooien.
- Een soldeerbout
- Draadknippers/strippers
- Een heteluchtpistool
- Een 3D-printer (optioneel)
Bedrading van uw DIY-aquarium LED-lichtinstallatie
Het aansluiten van uw doe-het-zelf aquariumverlichting is eenvoudig, u hoeft slechts een paar aansluitingen te maken voordat u aan de slag kunt met het coderen van uw project. Het bovenstaande diagram toont alle verbindingen die u moet maken, maar we hebben dit in de onderstaande secties uitgesplitst.
De real-time klok bedraden
De DS3231 RTC in dit project fungeert als timer voor de LED-verlichting in ons aquarium. Deze module heeft vier pinnen die we zullen gebruiken: SCL, SDA, VCC en GND, die allemaal rechtstreeks kunnen worden aangesloten op onze Arduino Pro Micro.
- SCL naar 3 op Arduino
- SDA naar 2 op Arduino
- VCC naar 5V op Arduino
- GND naar GND op Arduino
Bedrading van de LED-strip
Het bedraden van uw LED-strip is ingewikkelder dan de RTC, omdat de LED's zich waarschijnlijk op enige afstand van de Arduino bevinden en u een aparte voedingsadapter moet gebruiken om de volledige helderheid uit uw LED's te halen. Het bovenstaande diagram laat zien hoe u uw LED NeoPixel-strip optimaal kunt aansluiten op uw Arduino en stroombron resultaten.
- DIN naar digitale pin 7 op Arduino
- GND naar GND op Arduino en negatieve (-) stroombronterminal
- VCC/5V+/12V naar positieve (+) stroombronaansluiting
- Het wordt ten zeerste aanbevolen om een condensator van 1000 uF te gebruiken over de negatieve (-) en positieve (+) stroombronaansluitingen om schade aan uw LED's te voorkomen
Naast het aansluiten van onze LED-strip op onze Arduino en 12V stroombron, gaan we ook onze NeoPixel-kloon om drie kleinere LED-strips te maken die met een lange kabel in een ketting worden verbonden. We zullen hiervoor een geïsoleerde drieaderige kabel gebruiken, samen met krimpkous om de verbindingen af te dichten. Onze LED-strip werd aan elk uiteinde geleverd met JST-connectoren, wat ons een handige manier bood om de strip van onze Arduino los te koppelen.
Uw DIY Arduino Aquarium NeoPixel Lights coderen
Het coderingselement van dit project is ingewikkelder dan de bedrading. Je kunt beginnen met een eenvoudig leeg Arduino-project, omdat we niets anders nodig hebben dan de bijbehorende functies.
De bibliotheken toevoegen
Voordat we code toevoegen, moeten we enkele bibliotheken installeren, en deze zijn allemaal te vinden in de Arduino IDE Library Manager.
- Draad.h: Deze bibliotheek wordt geleverd met de Arduino IDE en stelt u in staat om te communiceren met I2C-componenten, zoals onze RTC.
- Adafruit_NeoPixel.h: Deze bibliotheek voegt functies/klassen toe om NeoPixel LED's aan te sturen, maar het werkt net zo goed met onze reguliere WS2812 LED-strip.
- RTClib.h: Deze bibliotheek stelt ons in staat om onze DS3231 RTC-module te besturen.
#erbij betrekken //LED Strip-bibliotheek
#erbij betrekken
#erbij betrekken //RTC-bibliotheek
Globale variabelen toevoegen (optioneel)
We hebben globale variabelen aan onze code toegevoegd, zodat we het gedrag van onze verlichting met knoppen en andere inputs in toekomstige projecten kunnen veranderen. Dit is niet essentieel, maar het maakt het gemakkelijker om uw code te bewerken wanneer u wijzigingen moet aanbrengen. We hebben variabelen toegevoegd voor LED-helderheid en tint, samen met een variabele om de kleur van onze LED-strip op te slaan.
Declareren en initialiseren van LED-strip/RTC-objecten
Vervolgens moeten we onze LED-strip en RTC declareren als objecten die door onze Arduino kunnen worden gebruikt, gevolgd door ze te initialiseren binnen onze setup-lus.
Onze LED-strips kunnen worden aangegeven door eerst de gebruikte pin te definiëren en het aantal LED's op de strip in te stellen, maar u kunt de onderstaande regels gebruiken om de aangifte zelf te doen.
#define LED_PIN 7 // Zet onze ledstrip op pin 7
#define LED_COUNT 60 // Stelt het aantal NeoPixel LED's in
Adafruit_NeoPixel-strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Verklaart ons LED-stripobject
De RTC is gemakkelijker aan te geven en u hoeft alleen de onderstaande regel te gebruiken om deze aan de gang te krijgen; alle belangrijke instellingen worden standaard toegepast.
RTC_DS3231 rtc;
Zodra dit is voltooid, hoeven we alleen onze RTC te initialiseren met behulp van de volgende code in onze setup-klasse.
Serieel.begin (57600); //Begint onze seriële verbinding
#ifndef ESP8266
terwijl (!Serial); // Wacht tot de seriële poort verbinding heeft gemaakt
#stop als
als (! rtc.begin()) {
Serial.println("Kon RTC niet vinden");
Serieel.flush();
terwijl (1) vertraging (10);
} //Dit test om er zeker van te zijn dat onze RTC is aangesloten
De timerlus bouwen
Nu is het tijd om de hoofdlus voor uw aquarium LED-strips te bouwen. Dit wordt afgehandeld binnen de hoofdlus die bij uw lege Arduino-project is geleverd, en dit betekent dat het continu wordt uitgevoerd.
We beginnen de lus door de huidige tijd te controleren met onze realtime klok en een variabele in te stellen om deze op te slaan, zodat er overdag daglicht is. Zodra we een Datum Tijd variabel om mee te spelen, we kunnen het huidige uur en de minuut toewijzen om variabelen te scheiden, waardoor we onze verlichting met grote precisie kunnen regelen.
DateTime nu = rtc.now(); // Verzamelt de huidige tijd
int hh = nu.uur(); // Past de huidige our toe op een variabele
Hierna gebruikten we een reeks van als verklaringen om te bepalen of we onze lichten aan moeten doen. Deze als verklaringen controleren om te zien of het huidige uur gelijk is aan of groter is dan 9.00 uur en gelijk aan of kleiner dan 21.00 uur, waardoor we een venster van 9.00 uur tot 21.00 uur hebben om onze LED-verlichting aan te hebben.
Als aan deze voorwaarden is voldaan, codeer dan binnen de als statement stelt de helderheid en kleur van onze LED-strips in op de globale variabelen die we eerder hebben ingesteld, samen met het gebruik van a laten zien commando om de ledstrip bij te werken. Indien niet aan de voorwaarden wordt voldaan, anders statement wordt gebruikt om de helderheid van de LED's op 0 te zetten, waardoor ze 's nachts effectief worden uitgeschakeld.
strip.begin(); // Schakelt de LED-strip in
strip.show(); // Toont de LED-veranderingen van elke lusif (hh <= 8) {//Als de tijd gelijk is aan of kleiner is dan 8 uur, wordt de LED-strip gewist
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Als de tijd tussen 9.00 en 21.00 uur is, gaan de LED's aan
strip.setBrightness (255);
strip.fill (geelWit, 0, 59);
}
if (hh >= 21) {//Als de tijd gelijk is aan of groter is dan 21.00 uur, wordt de ledstrip gewist
strip.clear();
}
De volledige code
#include //LED Strip-bibliotheek
#erbij betrekken
#include //RTC-bibliotheek
#define LED_PIN 7 // Zet onze ledstrip op pin 7
#define LED_COUNT 60 // Stelt het aantal NeoPixel LED's in
Adafruit_NeoPixel-strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Verklaart ons LED-stripobject
uint32_t yellowWhite = strook. Kleur (255, 251, 201); // Creëert een lichte kleurvariabele
RTC_DS3231 rtc; // Verklaart ons RTC-object
ongeldige setup() {
Serieel.begin (57600); //Begint onze seriële verbinding
#ifndef ESP8266
terwijl (!Serial); // Wacht tot de seriële poort verbinding heeft gemaakt
#stop als
als (! rtc.begin()) {
Serial.println("Kon RTC niet vinden");
Serieel.flush();
terwijl (1) vertraging (10);
} //Dit test om er zeker van te zijn dat onze RTC is aangesloten
}
lege lus() {
DateTime nu = rtc.now(); // Verzamelt de huidige tijd
int hh = nu.uur(); // Past de huidige our toe op een variabele
strip.begin(); // Schakelt de LED-strip in
strip.show(); // Toont de LED-veranderingen van elke lus
if (hh <= 8) {//Als de tijd gelijk is aan of kleiner is dan 8 uur, wordt de LED-strip gewist
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Als de tijd tussen 9.00 en 21.00 uur is, gaan de LED's aan
strip.setBrightness (255);
strip.fill (geelWit, 0, 59);
}
if (hh >= 21) {//Als de tijd gelijk is aan of groter is dan 21.00 uur, wordt de ledstrip gewist
strip.clear();
}
vertraging (1000); //Vertraging voor stabiliteit
}
Uw LED-aquariumverlichting aanpassen
Onze LED-strip werd geleverd met een handige plakstrip, waardoor het ongelooflijk eenvoudig te bevestigen is aan de kap/deksel van onze tank. Hetzelfde resultaat kan worden bereikt met dubbelzijdig plakband of secondelijm, maar u moet voorzichtig zijn om ervoor te zorgen dat de lijm die u kiest de condensvorming kan overleven. U kunt ook een 3D-standaard printen voor uw nieuwe aquariumlamp als uw aquarium geen deksel heeft, en een hoes voor de andere componenten die u hebt gebruikt.
DIY Arduino-aquariumverlichting
Aquariumplanten en vissen hebben baat bij een regelmatige verlichtingscyclus. Hoewel ons licht niet het volledige spectrum heeft, biedt het nog steeds veel van het blauwe, groene en rode licht dat je planten nodig hebben. Wat echter het beste is, is dat dit project ongelooflijk betaalbaar, eenvoudig en leuk is om aan te pakken.
Automatiseer uw aquarium door te investeren in slimme accessoires die de noodzaak van handmatige interventie verminderen, waardoor uw vissen gezond en gelukkig blijven.
Lees volgende
- doe-het-zelf
- Arduino
- LED lichten
- Slimme woning
Samuel is een in het Verenigd Koninkrijk gevestigde technologieschrijver met een passie voor alles wat met doe-het-zelf te maken heeft. Met het starten van bedrijven op het gebied van webontwikkeling en 3D-printen, en vele jaren als schrijver werken, biedt Samuel een uniek inzicht in de wereld van technologie. Hij richt zich voornamelijk op doe-het-zelf-technische projecten en doet niets liever dan leuke en opwindende ideeën delen die je thuis kunt uitproberen. Buiten het werk is Samuel meestal te vinden op fietsen, pc-videogames spelen of wanhopig proberen te communiceren met zijn krab.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren