Plantele de acvariu au nevoie de lumină pentru a crea energie prin fotosinteză, în timp ce mulți pești beneficiază de un obișnuit ciclu de lumină, dar cum le puteți oferi iluminare artificială cu instrumentele electronice DIY pe care le aveți deja avea? Să construim un sistem de iluminat pentru acvariu DIY folosind un Arduino, un ceas în timp real și o bandă LED.
Folosind o lumină LED pentru acvariu
Înainte de a începe, este de remarcat faptul că LED-urile pe care le folosim în acest proiect nu sunt LED-uri cu spectru complet care imită lumina zilei. Aceasta înseamnă că ele nu oferă toate lungimile de undă luminoase care sunt benefice plantelor, redându-le nepotrivit pentru plantele de acvariu cu nevoi mari de lumină și care irosesc o cantitate mică din energia produsă de LED-uri.
Acestea fiind spuse, pentru acvariile plantate cu cerințe de lumină scăzută, iluminarea cu LED-uri ca aceasta poate fi excelentă alegere care oferă o creștere mai rapidă și mai sănătoasă a plantelor, fără costul pe care îl implică multe iluminare pentru acvariu produse; pur și simplu nu vei obține aceeași putere.
Nu doar plantele din acvariul dvs. beneficiază de iluminare cu LED: multe specii de pești se bucură de un ciclu regulat de lumină care imită ziua și noaptea pentru a-și păstra ritmul circadian, permițându-le să se odihnească, să caute hrană și să fie activi așa cum ar fi în sălbăticie.
Pentru a construi un sistem de iluminare cu LED care să alimenteze un ciclu zi-noapte pentru peștii și plantele din acvariu, vom folosi un Arduino, un ceas în timp real (RTC) și o bandă LED - așa cum poate fi folosit pentru o mare varietate de Proiecte de iluminat LED Arduino.
De ce ai nevoie?
Ai nevoie doar de câteva piese pentru a finaliza această construcție:
- 1x Microcontroler Arduino cu pini SDA/SCL (Uno, Leonardo, Micro etc.; folosim un Pro Micro)
- 1x modul DS3231 RTC
- 1x bandă LED NeoPixel RGB WS2812/WS2812B cu rating IP65 sau mai mare (folosim o bandă WS2812 de 1 metru de 60 LED, care a fost sigilată cu silicon; ați putea beneficia de utilizarea mai multor LED-uri dacă aveți un rezervor de peste 20 de galoane)
- 1 adaptor de alimentare de 12 V AC la DC cu conector femel tip cilindru
- 1x condensator 1000uF (opțional)
- Fire asortate și piese termocontractabile
- Superglue/bandă cu două fețe
- Filament de imprimantă 3D (opțional)
Veți avea nevoie și de câteva instrumente pentru a finaliza acest proiect.
- Un fier de lipit
- Dispozitive de tăiat/decapare sârmă
- Un pistol termic
- O imprimantă 3D (opțional)
Conectarea luminii LED pentru acvariu DIY
Conectarea luminii acvariului dvs. de bricolaj este simplă, cu doar câteva conexiuni de făcut înainte de a începe să vă codificați proiectul. Diagrama de mai sus arată toate conexiunile pe care trebuie să le faceți, dar am defalcat acest lucru în secțiunile de mai jos.
Conectarea ceasului în timp real
DS3231 RTC din acest proiect acționează ca un temporizator pentru iluminarea LED din acvariul nostru. Acest modul are patru pini pe care îi vom folosi: SCL, SDA, VCC și GND, toți putând fi conectați direct la Arduino Pro Micro.
- SCL la 3 pe Arduino
- SDA la 2 pe Arduino
- VCC la 5V pe Arduino
- GND la GND pe Arduino
Cablajul benzii LED
Cablarea benzii LED este mai complicată decât RTC, deoarece LED-urile sunt probabil să fie la o anumită distanță de Arduino și trebuie să utilizați un adaptor de alimentare separat pentru a obține luminozitatea completă de la LED-urile dvs. Diagrama de mai sus arată cum vă puteți conecta banda LED NeoPixel la Arduino și la sursa de alimentare pentru cel mai bun lucru rezultate.
- DIN la pinul digital 7 pe Arduino
- GND la GND pe Arduino și terminalul negativ (-) sursă de alimentare
- VCC/5V+/12V la terminalul sursei de alimentare pozitive (+).
- Este foarte recomandat să utilizați un condensator de 1000uF la bornele sursei de alimentare negative (-) și pozitive (+) pentru a preveni deteriorarea LED-urilor.
Pe lângă conectarea benzii LED la sursa noastră de alimentare Arduino și 12V, vom modifica și Clona NeoPixel pentru a crea trei benzi LED mai mici care vor fi conectate într-un lanț cu un cablu lung. Pentru aceasta, vom folosi un cablu izolat cu trei miezuri, împreună cu termocontractabil pentru a etanșa îmbinările. Banda noastră LED a venit cu conectori JST la fiecare capăt, oferindu-ne o modalitate convenabilă de a face posibilă detașarea benzii de pe Arduino.
Codarea luminilor dvs. DIY Arduino Aquarium NeoPixel
Elementul de codificare al acestui proiect este mai complicat decât cablarea. Puteți începe cu un proiect de bază Arduino gol, deoarece nu vom avea nevoie de nimic în afara funcțiilor care vin cu acesta.
Adăugarea bibliotecilor
Înainte de a adăuga orice cod, trebuie să instalăm câteva biblioteci, iar toate acestea pot fi găsite în Arduino IDE Library Manager.
- Wire.h: Această bibliotecă vine cu Arduino IDE și vă permite să comunicați cu componente I2C, cum ar fi RTC-ul nostru.
- Adafruit_NeoPixel.h: Această bibliotecă adaugă funcții/clase pentru a controla LED-urile NeoPixel, dar funcționează la fel de bine cu banda noastră obișnuită cu LED-uri WS2812.
- RTClib.h: Această bibliotecă ne permite să controlăm modulul nostru DS3231 RTC.
#include //Biblioteca LED Strip
#include
#include //Biblioteca RTC
Adăugarea de variabile globale (opțional)
Am adăugat variabile globale la codul nostru, astfel încât să putem schimba comportamentul iluminatului nostru cu butoane și alte intrări în proiecte viitoare. Acest lucru nu este esențial, dar va facilita editarea codului atunci când trebuie să faceți modificări. Am adăugat variabile pentru luminozitatea și nuanța LED-urilor, împreună cu o variabilă pentru a stoca culoarea benzii noastre LED.
Declararea și inițializarea obiectelor LED Strip/RTC
Apoi, trebuie să declarăm banda LED și RTC ca obiecte care pot fi utilizate de Arduino, urmate de inițializarea lor în bucla noastră de configurare.
Benzile noastre cu LED-uri pot fi declarate definind mai întâi pinul utilizat și setând numărul de LED-uri de pe bandă, dar apoi puteți folosi liniile de mai jos pentru a face declarația în sine.
#define LED_PIN 7 // Setează banda noastră LED la pinul 7
#define LED_COUNT 60 // Setează numărul de LED NeoPixel
Banda Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declară obiectul nostru cu bandă LED
RTC este mai ușor de declarat și trebuie doar să utilizați linia de mai jos pentru a-l pune în funcțiune; toate setările importante sunt aplicate implicit.
RTC_DS3231 rtc;
Odată ce acest lucru este finalizat, trebuie doar să ne inițializam RTC folosind următorul cod din clasa noastră de configurare.
Serial.begin (57600); //Începe conexiunea noastră în serie
#ifndef ESP8266
în timp ce (!Serial); // Așteptați conectarea portului serial
#endif
dacă (! rtc.begin()) {
Serial.println("Nu am putut găsi RTC");
Serial.flush();
în timp ce (1) întârziere (10);
} //Acest test testează pentru a ne asigura că RTC-ul nostru este conectat
Construirea buclei temporizatorului
Acum, este timpul să construiți bucla principală pentru benzile cu LED-uri din acvariu. Acest lucru este gestionat în bucla principală care a venit cu proiectul tău Arduino gol și asta înseamnă că va rula continuu.
Începem bucla verificând ora curentă cu ceasul nostru în timp real și setând o variabilă pentru a o stoca, asigurându-ne că lumina zilei este furnizată în timpul zilei. Odată ce avem un DateTime variabilă cu care să ne jucăm, putem aloca ora și minutul curent unor variabile separate, permițându-ne să ne controlăm iluminarea cu mare precizie.
DateTime acum = rtc.now(); //Colectează ora curentă
int hh = acum.ora(); //Aplică curentul our unei variabile
În continuare, am folosit o serie de dacă declarații pentru a stabili dacă să ne aprindem luminile. Aceste dacă declarațiile verifică pentru a vedea dacă ora curentă este egală sau mai mare de 9:00 și este egală sau mai mică de 21:00, oferindu-ne o fereastră între 9:00 și 21:00 pentru a avea luminile LED aprinse.
Dacă aceste condiții sunt îndeplinite, codificați în dacă declarația setează luminozitatea și culoarea benzilor noastre LED la variabilele globale pe care le-am setat mai devreme, împreună cu utilizarea unui spectacol comanda pentru a actualiza banda LED. Dacă nu sunt îndeplinite condițiile, an altfel declarația este utilizată pentru a seta luminozitatea LED-urilor la 0, stingându-le efectiv în timpul nopții.
strip.begin(); //Aprinde banda LED
strip.show(); //Afișează modificările LED-urilor de la fiecare buclăif (hh <= 8) { //Dacă ora este egală sau mai mică de 8AM, banda LED este ștearsă
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Dacă ora este între 9:00 și 21:00, LED-urile se aprind
strip.setBrightness (255);
strip.fill (galbenAlb, 0, 59);
}
if (hh >= 21) { //Dacă ora este egală sau mai mare decât 21:00, banda LED este ștearsă
strip.clear();
}
Codul complet
#include //Biblioteca LED Strip
#include
#include //Biblioteca RTC
#define LED_PIN 7 // Setează banda noastră LED la pinul 7
#define LED_COUNT 60 // Setează numărul de LED NeoPixel
Banda Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declară obiectul nostru cu bandă LED
uint32_t yellowWhite = bandă. Culoare (255, 251, 201); //Creează o variabilă de culoare deschisă
RTC_DS3231 rtc; //Declară obiectul nostru RTC
void setup() {
Serial.begin (57600); //Începe conexiunea noastră în serie
#ifndef ESP8266
în timp ce (!Serial); // Așteptați conectarea portului serial
#endif
dacă (! rtc.begin()) {
Serial.println("Nu am putut găsi RTC");
Serial.flush();
în timp ce (1) întârziere (10);
} //Acest test testează pentru a ne asigura că RTC-ul nostru este conectat
}
void loop() {
DateTime acum = rtc.now(); //Colectează ora curentă
int hh = acum.ora(); //Aplică curentul our unei variabile
strip.begin(); //Aprinde banda LED
strip.show(); //Afișează modificările LED-urilor de la fiecare buclă
if (hh <= 8) { //Dacă ora este egală sau mai mică de 8AM, banda LED este ștearsă
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //Dacă ora este între 9:00 și 21:00, LED-urile se aprind
strip.setBrightness (255);
strip.fill (galbenAlb, 0, 59);
}
if (hh >= 21) { //Dacă ora este egală sau mai mare decât 21:00, banda LED este ștearsă
strip.clear();
}
întârziere (1000); //Întârziere pentru stabilitate
}
Montarea iluminatului LED pentru acvariu
Banda noastră LED a venit cu o bandă adezivă la îndemână atașată, ceea ce face incredibil de ușor să o atașați la capota/capacul rezervorului nostru. Același rezultat poate fi obținut cu bandă cu două fețe sau superclei, dar trebuie să fiți atenți pentru a vă asigura că adezivul pe care îl alegeți va putea supraviețui acumulării condensului. De asemenea, puteți imprima 3D un suport pentru noua voastră lumină de acvariu dacă rezervorul nu are capac și o carcasă pentru celelalte componente pe care le-ați folosit.
Lumini pentru acvariu Arduino DIY
Plantele și peștii de acvariu beneficiază de un ciclu regulat de iluminare. Deși lumina noastră nu este cu spectru complet, ea oferă totuși o mare parte din lumina albastră, lumina verde și lumina roșie de care au nevoie plantele tale. Cel mai bine, totuși, este că acest proiect este incredibil de accesibil, simplu și distractiv de preluat.
Automatizați-vă acvariul investind în accesorii inteligente care vor reduce nevoia de intervenție manuală, păstrându-vă peștii sănătoși și fericiți.
Citiți în continuare
- bricolaj
- Arduino
- Lumini cu leduri
- Casă inteligentă
Samuel este un scriitor de tehnologie din Marea Britanie cu o pasiune pentru toate lucrurile bricolaj. După ce a început afaceri în domeniile dezvoltării web și imprimării 3D, împreună cu munca de scriitor timp de mulți ani, Samuel oferă o perspectivă unică asupra lumii tehnologiei. Concentrându-se în principal pe proiecte tehnologice de bricolaj, nu îi place nimic mai mult decât să împărtășească idei distractive și interesante pe care le poți încerca acasă. În afara serviciului, Samuel poate fi găsit de obicei mergând cu bicicleta, jucând jocuri video pe computer sau încercând cu disperare să comunice cu crabul lui.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona