Tạo ánh sáng hồ cá tự làm với Arduino
Cây thủy sinh cần ánh sáng để tạo ra năng lượng thông qua quá trình quang hợp, trong khi nhiều loài cá được hưởng lợi từ chu kỳ ánh sáng thường xuyên, nhưng làm thế nào bạn có thể cung cấp ánh sáng nhân tạo cho chúng bằng các công cụ điện tử tự làm mà bạn đã có? Hãy xây dựng hệ thống chiếu sáng hồ cá tự làm bằng Arduino, đồng hồ thời gian thực và dải đèn LED.
Mục Lục
Sử dụng đèn LED cho bể cá
Trước khi bắt đầu, cần lưu ý rằng đèn LED mà chúng tôi đang sử dụng trong dự án này không phải là đèn LED toàn phổ bắt chước ánh sáng ban ngày. Điều này có nghĩa là chúng không cung cấp tất cả các bước sóng ánh sáng có lợi cho cây trồng, khiến chúng không phù hợp với các cây thủy sinh có nhu cầu ánh sáng lớn và lãng phí một lượng nhỏ năng lượng do đèn LED tạo ra.
Điều đó nói rằng, đối với những bể cá trồng có yêu cầu ánh sáng yếu, đèn LED chiếu sáng như thế này có thể là một lựa chọn tuyệt vời giúp cây phát triển nhanh hơn và khỏe mạnh hơn mà không tốn kém chi phí đi kèm với nhiều sản phẩm chiếu sáng bể cá; bạn sẽ không nhận được cùng một công suất.
Không chỉ cây cối trong bể cá của bạn được hưởng lợi từ ánh sáng LED: nhiều loài cá tận hưởng chu kỳ ánh sáng đều đặn bắt chước ngày và đêm để duy trì nhịp sinh học của chúng, cho phép chúng nghỉ ngơi, tìm kiếm thức ăn và hoạt động bình thường. được trong tự nhiên.
Để xây dựng hệ thống chiếu sáng LED cung cấp chu kỳ ngày-đêm cho cá và thực vật trong bể cá của bạn, chúng tôi sẽ sử dụng Arduino, đồng hồ thời gian thực (RTC) và dải đèn LED — có thể được sử dụng rộng rãi đa dạng các dự án chiếu sáng Arduino LED.
Bạn cần gì?
Bạn chỉ cần một số bộ phận để hoàn thành bản dựng này:
-
1x vi điều khiển Arduino có chân SDA / SCL (Uno, Leonardo, Micro, v.v.; chúng tôi đang sử dụng Pro Micro)
-
1x mô-đun DS3231 RTC
-
1x Dải LED RGB NeoPixel 1x WS2812 / WS2812B với xếp hạng IP65 trở lên (chúng tôi đang sử dụng dải 60 LED 1 mét WS2812 đã được niêm phong bằng silicon; bạn có thể được lợi khi sử dụng nhiều đèn LED hơn nếu bạn có bình 20 lít trở lên)
-
Bộ chuyển đổi nguồn 1x 12v AC sang DC với đầu nối thùng nữ
-
Tụ điện 1x 1000uF (tùy chọn)
-
Các loại dây và miếng co nhiệt
-
Băng keo siêu dính / hai mặt
-
Dây tóc máy in 3D (tùy chọn)
Bạn cũng sẽ cần một số công cụ để hoàn thành dự án này.
-
Mỏ hàn
-
Máy cắt dây / máy thoát y
-
Súng nhiệt
-
Máy in 3D (tùy chọn)
Đấu dây Thiết lập đèn LED cho bể cá tự làm của bạn
Việc đấu dây ánh sáng cho bể cá tự làm của bạn rất đơn giản, chỉ với một vài kết nối để thực hiện trước khi bạn có thể bắt đầu viết mã cho dự án của mình. Sơ đồ trên cho thấy tất cả các kết nối bạn cần thực hiện, nhưng chúng tôi đã chia nhỏ điều này trong các phần bên dưới.
Lên dây đồng hồ thời gian thực
DS3231 RTC trong dự án này hoạt động như một bộ hẹn giờ cho đèn LED chiếu sáng trong bể cá của chúng tôi. Mô-đun này có bốn chân mà chúng tôi sẽ sử dụng: SCL, SDA, VCC và GND, tất cả đều có thể được kết nối trực tiếp với Arduino Pro Micro của chúng tôi.
-
SCL thành 3 trên Arduino
-
SDA thành 2 trên Arduino
-
VCC đến 5V trên Arduino
-
GND sang GND trên Arduino
Đấu dây dải LED
Việc đấu dây dải đèn LED của bạn phức tạp hơn RTC, vì các đèn LED có thể cách Arduino một khoảng cách và bạn cần sử dụng bộ chuyển đổi nguồn riêng để có được độ sáng đầy đủ từ đèn LED. Sơ đồ trên cho thấy cách bạn có thể kết nối dải LED NeoPixel với Arduino và nguồn điện để có kết quả tốt nhất.
-
DIN đến Chân số 7 trên Arduino
-
GND đến GND trên Arduino và Đầu cuối nguồn điện âm (-)
-
Đầu nối nguồn điện VCC / 5V + / 12V sang cực dương (+)
-
Chúng tôi khuyên bạn nên sử dụng tụ điện 1000uF trên các đầu nối Nguồn điện Âm (-) và Tích cực (+) để tránh làm hỏng đèn LED của bạn
Bên cạnh việc kết nối dải LED với nguồn điện 12V và Arduino, chúng tôi cũng sẽ sửa đổi bản sao NeoPixel của mình để tạo ra ba dải LED nhỏ hơn sẽ được kết nối thành một chuỗi bằng một sợi cáp dài. Chúng tôi sẽ sử dụng cáp ba lõi cách điện cho việc này, cùng với co nhiệt để bịt kín các mối nối. Dải đèn LED của chúng tôi đi kèm với các đầu nối JST ở mỗi đầu, cung cấp cho chúng tôi một cách thuận tiện để có thể tách dải khỏi Arduino của chúng tôi.
Mã hóa Đèn NeoPixel Hồ cá Arduino DIY của bạn
Yếu tố mã hóa của dự án này phức tạp hơn hệ thống dây điện. Bạn có thể bắt đầu với một dự án Arduino trống cơ bản, vì chúng tôi sẽ không cần bất kỳ thứ gì ngoài các chức năng đi kèm với nó.
Thêm thư viện
Trước khi thêm bất kỳ mã nào, chúng ta cần cài đặt một số thư viện và tất cả những thứ này có thể được tìm thấy trong Trình quản lý thư viện IDE Arduino.
- Wire.h: Thư viện này đi kèm với Arduino IDE và cho phép bạn giao tiếp với các thành phần I2C, như RTC của chúng tôi.
- Adafruit_NeoPixel.h: Thư viện này thêm các chức năng / lớp để điều khiển đèn LED NeoPixel, nhưng nó hoạt động tốt với dải đèn LED WS2812 thông thường của chúng tôi.
- RTClib.h: Thư viện này cho phép chúng tôi kiểm soát mô-đun DS3231 RTC của chúng tôi.
#include <Adafruit_NeoPixel.h> //LED Strip library
#include <Wire.h>
#include <RTClib.h> //RTC Library
Thêm các biến toàn cục (Tùy chọn)
Chúng tôi đã thêm các biến toàn cầu vào mã của mình để chúng tôi có thể thay đổi hành vi chiếu sáng của mình bằng các nút và các đầu vào khác trong các dự án trong tương lai. Điều này không cần thiết, nhưng nó sẽ giúp bạn chỉnh sửa mã của mình dễ dàng hơn khi bạn cần thực hiện thay đổi. Chúng tôi đã thêm các biến cho độ sáng và màu của đèn LED, cùng với một biến để lưu trữ màu sắc của dải đèn LED của chúng tôi.
Khai báo và khởi tạo đối tượng dải LED / RTC
Tiếp theo, chúng ta cần khai báo dải LED và RTC là các đối tượng có thể được sử dụng bởi Arduino của chúng ta, tiếp theo là khởi tạo chúng trong vòng lặp thiết lập của chúng ta.
Các dải LED của chúng tôi có thể được khai báo bằng cách xác định đầu tiên chân cắm đang được sử dụng và đặt số lượng đèn LED trên dải, nhưng sau đó bạn có thể sử dụng các dòng bên dưới để tự khai báo.
#define LED_PIN 7 // Sets our LED strip to pin 7
#define LED_COUNT 60 // Sets the NeoPixel LED count
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declares our LED strip object
RTC dễ khai báo hơn và bạn chỉ cần sử dụng dòng bên dưới để nó chạy; tất cả các cài đặt quan trọng được áp dụng theo mặc định.
RTC_DS3231 rtc;
Sau khi hoàn tất, chúng ta chỉ cần khởi tạo RTC của mình bằng cách sử dụng mã sau trong lớp thiết lập của chúng ta.
Serial.begin(57600); //Begins our serial connection#ifndef ESP8266
while (!Serial); // Wait for serial port to connect
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
} //This tests to make sure that our RTC is connected
Xây dựng vòng lặp hẹn giờ
Bây giờ, đã đến lúc xây dựng vòng lặp chính cho dải đèn LED hồ cá của bạn. Điều này được xử lý trong vòng lặp chính đi kèm với dự án Arduino trống của bạn và điều này có nghĩa là nó sẽ chạy liên tục.
Chúng tôi bắt đầu vòng lặp bằng cách kiểm tra thời gian hiện tại với đồng hồ thời gian thực của chúng tôi và đặt một biến để lưu trữ nó, đảm bảo rằng ánh sáng ban ngày được cung cấp vào ban ngày. Khi chúng tôi có một Ngày giờ để chơi với biến, chúng tôi có thể gán giờ và phút hiện tại cho các biến riêng biệt, cho phép chúng tôi kiểm soát ánh sáng của mình với độ chính xác cao.
DateTime now = rtc.now(); //Collects the current time
int hh = now.hour(); //Applies the current our to a variable
Sau đây, chúng tôi sử dụng một loạt nếu để xác định xem có bật đèn của chúng tôi hay không. Này nếu các câu lệnh kiểm tra xem giờ hiện tại bằng hoặc hơn 9 giờ sáng và bằng hoặc ít hơn 9 giờ tối, cung cấp cho chúng tôi khoảng thời gian từ 9 giờ sáng đến 9 giờ tối để bật đèn LED của chúng tôi.
Nếu các điều kiện này được đáp ứng, hãy mã trong nếu câu lệnh đặt độ sáng và màu sắc của dải đèn LED của chúng tôi thành các biến toàn cục mà chúng tôi đã đặt trước đó, cùng với việc sử dụng chỉ lệnh cập nhật dải LED. Nếu các điều kiện không được đáp ứng, một khác câu lệnh được sử dụng để đặt độ sáng của đèn LED thành 0, tắt chúng một cách hiệu quả vào ban đêm.
strip.begin(); //Turns on the LED strip
strip.show(); //Shows the LED changes from each loopif (hh <= 8) { //If the time is equal or less than 8AM, the LED strip is cleared
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //If the time is between 9AM and 9PM, the LEDs turn on
strip.setBrightness(255);
strip.fill(yellowWhite, 0, 59);
}
if (hh >= 21) { //If the time is equal or greater than 9PM, the LED strip is cleared
strip.clear();
}
Mã đầy đủ
#include //LED Strip library
#include
#include //RTC Library
#define LED_PIN 7 // Sets our LED strip to pin 7
#define LED_COUNT 60 // Sets the NeoPixel LED count
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Declares our LED strip object
uint32_t yellowWhite = strip.Color(255, 251, 201); //Creates a light color variable
RTC_DS3231 rtc; //Declares our RTC object
void setup() {
Serial.begin(57600); //Begins our serial connection
#ifndef ESP8266
while (!Serial); // Wait for serial port to connect
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
} //This tests to make sure that our RTC is connected
}
void loop() {
DateTime now = rtc.now(); //Collects the current time
int hh = now.hour(); //Applies the current our to a variable
strip.begin(); //Turns on the LED strip
strip.show(); //Shows the LED changes from each loop
if (hh <= 8) { //If the time is equal or less than 8AM, the LED strip is cleared
strip.clear();
}
if ((hh > 8) && (hh < 21)) { //If the time is between 9AM and 9PM, the LEDs turn on
strip.setBrightness(255);
strip.fill(yellowWhite, 0, 59);
}
if (hh >= 21) { //If the time is equal or greater than 9PM, the LED strip is cleared
strip.clear();
}
delay(1000); //Delay for stability
}
Lắp đèn LED cho bể cá của bạn
Dải đèn LED của chúng tôi đi kèm với một dải keo tiện dụng được đính kèm, giúp việc gắn nó vào nắp / nắp bể của chúng tôi vô cùng dễ dàng. Kết quả tương tự có thể đạt được với băng keo hai mặt hoặc keo siêu dính, nhưng bạn cần cẩn thận để đảm bảo rằng chất kết dính bạn chọn sẽ có thể tồn tại khi tích tụ hơi nước. Bạn cũng có thể in 3D giá đỡ cho đèn bể cá mới nếu bể của bạn không có nắp và hộp đựng cho các thành phần khác mà bạn đã sử dụng.
Đèn hồ cá Arduino tự làm
Cây cảnh và cá được hưởng lợi từ chu kỳ chiếu sáng thường xuyên. Mặc dù ánh sáng của chúng ta không phải là toàn phổ, nhưng nó vẫn cung cấp nhiều ánh sáng xanh lam, ánh sáng xanh lục và ánh sáng đỏ mà cây của bạn cần. Tuy nhiên, điều tốt nhất là dự án này có chi phí cực kỳ phải chăng, đơn giản và thú vị để thực hiện.
Đọc tiếp
Thông tin về các Tác giả