1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Hệ thống tự động cho thủy canh

15 2K 14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 867,83 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• 1 x Arduino UNO MEGA Duemilanove (bo mạch Arduino UNO). Giá: 290k • 1 x LCD display with I2C communication (màn hình LCD 4 dòng, 20 ký tự). Giá: 145k. • 1 x RTC module with I2C communication. Giá: 4060k. • 1 x Relay Module optocoupled to 250V10A: Giá: 45k. • 2 x Modules Driver LM393 general purpose (Adapter giao tiếp giữa bo mạch Arduino và cảm biến độ ẩm, mực nước) • 1 x Soil Moisture Sensor (Hygrometer) KDQ11 (cảm biến độ ẩm). Giá: 193k. • 1 x Water Level Sensor (Homemade) (cảm biến mực nước, hay cảm biến mưa). Giá: 70k. • 1 x Buzzer piezoelectric (loa báo động). Giá: 15k. • 2 x LEDs 10mm, Green (đèn LED màu xanh lá) • 1 x LED 10mm, Red (đèn LED màu đỏ) • 1 x LED 10mm, Yellow (đèn LED màu vàng) • 4 x Resistors 150 Ohm 14 W (điện trở 150 ôm, 14w) • 1 x Water pump for aquarium, with filter system (127 or 220V) 01 máy bơm hồ cá. • 1 x Electric Power Cable, 127220VAC 10Amps cáp nguồn điện.

Trang 1

Hệ Thống Tự Động Cho Thủy Canh

Phần cứng cần phải có cho hệ thống gồm:

• 1 x Arduino UNO MEGA Duemilanove (bo mạch Arduino UNO) Giá: 290k

• 1 x LCD display with I2C communication (màn hình LCD 4 dòng, 20 ký tự) Giá: 145k

• 1 x RTC module with I2C communication Giá: 40-60k

• 1 x Relay Module opto-coupled to 250V/10A: Giá: 45k

• 2 x Modules "Driver" LM-393 general purpose (Adapter giao tiếp giữa bo mạch Arduino và cảm biến độ ẩm, mực nước)

• 1 x Soil Moisture Sensor (Hygrometer) KDQ11 (cảm biến độ ẩm) Giá: 193k

• 1 x Water Level Sensor (Homemade) (cảm biến mực nước, hay cảm biến mưa) Giá: 70k

• 1 x Buzzer piezoelectric (loa báo động) Giá: 15k

• 2 x LEDs - 10mm, Green (đèn LED màu xanh lá)

• 1 x LED - 10mm, Red (đèn LED màu đỏ)

• 1 x LED - 10mm, Yellow (đèn LED màu vàng)

• 4 x Resistors 150 Ohm 1/4 W (điện trở 150 ôm, 1/4w)

• 1 x Water pump for aquarium, with filter system (127 or 220V) - 01 máy bơm hồ cá

• 1 x Electric Power Cable, 127/220VAC - 10Amps - cáp nguồn điện

Trang 2

Các phần cứng trên có thể tìm mua ở DIY Sài Gòn, địa chỉ: 702/14b Điện Biên Phủ Q10 (gần Ngã 7), HCM.

Sơ đồ đấu nối:

Trang 3

Sơ đồ đấu nối (tiếp theo)

Trang 5

Giải thích cách viết ở dưới chút xíu: RTC <-> Arduino:

Trang 6

-GND <-> -GND

+5 V <-> +5 V

Nghĩa là:

chân GND của RTC đấu với chân GND của bo mạch Arduino (các bạn nhìn trên bo mạch có ghi mấy chữ này) chân cực dương của RTC đấu với cực dương 5V của bo mạch arduino

Nối RTC với bo mạch Arduino:

RTC <-> Arduino:

-GND <-> -GND

+5 V <-> +5 V

SDA <-> A4

SCL <-> A5

Nối Relay với bo mạch Arduino:

Relay - Arduino:

-GND <-> -GND

+5 V <-> +5 V

IN <-> D7

Nối LCD <-> Arduino:

-GND <-> -GND

+5 V <-> +5 V

SDA <-> A4

SCL <-> A5

Nối loa BUZZER <-> Arduino:

-+ <-> D2

- <-> GND

LM-393 DRIVER (moisture sensor) <-> Arduino

-GND <-> -GND

+5 V <-> +5 V

OUT <-> A1

LM-393 DRIVER (water sensor level) <-> Arduino

-GND <-> -GND

+5 V <-> +5 V

OUT <-> A0

Other Components <-> Function <-> Arduino

-Red LED <-> Dry soil <-> D5

Yellow LED <-> Soggy soil <-> D3

Green LED <-> Moist soil <-> D4

Green LED <-> Water Pump <-> D6

Bây giờ ta sẽ xem qua phần code của chương trình, và hiệu chỉnh các thông số như: mực nước, độ ẩm của đất Khai báo chân đầu vào của sensor (cảm biến độ ẩm):

Trang 7

Trong hình trên:

levelSensorPin = 0 nghĩa là chân đầu vào của cảm biến mực nước/nước mưa là A0.

moistureSensorPin = 1 nghĩa là chân đầu vào của cảm biến độ ẩm đất là A1.

Một bo mạch UNO có thể sử dụng tối đa 06 cảm biến độ ẩm đất từ chân A0 > A5 của Arduino Khi đó bạn sửa lại code, khai báo như sau:

• int moistureSensor1Pin = 1;

• int moistureSensor2Pin = 2;

• int moistureSensor3Pin = 3;

Kiểm tra đất bị khô, nếu giá trị moistureSensorValue > 700 Bật đèn hiển thị LED màu đỏ: digitalWrite(drysoilLEDPin,HIGH)

Trang 8

Đất ẩm vừa phải, nếu giá trị moistureSensorValue nằm trong khoảng từ 300 đến 700 Bật đèn hiển thị LED màu xanh:

digitalWrite(moistsoilLEDPin,HIGH);

Trang 9

Nếu đất bị ướt (độ ẩm) nếu giá trị moistureSensorValue < 300 Bật đèn hiển thị LED màu vàng: digitalWrite(soggyLEDPin,HIGH);

Trang 10

Nếu đất bị khô, thì bật máy bơm và bơm đến khi nào đạt độ ẩm đã được qui định.

Trang 11

Các AC có thể tùy chỉnh các giá trị độ ẩm trong code như đã trình bày ở trên theo ý của mình Sau khi hiệu chỉnh, ta tiến hành nạp lại code cho bo mạch Arduino

Khi ta bắt đầu làm một cái gì đó thì thông thường ta phải lên kế hoạch Đối với 01 hệ thống Arduino cũng thế, khi làm bất kỳ một hệ thống Arduino nào, ta cũng phải có kế hoạch, và kế hoạch đó nên ghi ra giấy để ta dễ hình dung Thông thường thì kế hoạch đó gồm những bước căn bản sau:

1. Xác định mục tiêu của hệ thống

2. Viết ra nguyên lý hay mô tả cách hoạt động (algorithm) của hệ thống

3. Lựa chọn phần cứng

4. Viết kịch bản code: Cần khởi tạo những thông số gì cho hệ thống và những lệnh gì cần được hệ thống thực hiện lặp đi lặp lại

5. Sơ đồ kết nối các thiết bị với Arduino như thế nào?

6. Viết code (bao gồm test và kiểm tra lỗi)

Ví dụ: Tạo hệ thống tưới cho việc trồng rau mầm

B1: Xác định mục tiêu của hệ thống

• Hệ thống trồng rau mầm có kiểm soát độ ẩm và nhiệt độ

Trang 12

B2: Nguyên lý / mô tả cách hoạt động của hệ thống.

• Đo độ ẩm và nhiệt độ của môi trường hiện tại

• Nếu nhiệt độ > 30 độ C thì kích hoạt máy bơm tưới phun sương cho đến khi nhiệt độ = 28 độ C

• Nếu độ ẩm < 27,2 (g/m3) thì kích hoạt máy quạt gió

B3: Chọn phần cứng

• Đầu dò (cảm biến) nhiệt độ không khí và độ ẩm không khí Ở đây ta có 02 loại đầu dò tương thích với Arduino: DHT11 hoặc DHT22

Sự khác biệt 02 đầu dò thì bạn xem tài liệu chi tiết ở đây: https://learn.adafruit.com/dht/overview

• Máy bơm nước

• Quạt hút gió

• Relay

B4: Viết kịch bản code.

• Khai báo chân cắm giữa Cảm biến nhiệt độ và độ ẩm và bo mạch Arduino > được gắn ở chân A0

• Khai báo độ ẩm cực đại, nhiệt độ cực đại, cực tiểu

• lặp đi lặp lại thao tác:

o Lấy giá trị nhiệt độ hiện tại

o Lấy giá trị độ ẩm hiện tại

o Xử lý khi nhiệt độ hiện tại > nhiệt độ cực đại qui định > bật máy bơm

o Xử lý khi độ ẩm hiện tại < độ ẩm qui định > bật quạt hút gió

o Nghỉ 15 giây,

o Đọc lại giá trị nhiệt độ, và độ ẩm hiện tại

B5: Sơ đồ kết nối.

DHT11 < -> Arduino (xem tài liệu chi tiết kỹ thuật về DHT11 ở đây: http://www.micro4you.com/files/sensor/DHT11.pdf)

-Pin 1 - +5V

Pin 2 - A0

Pin 4 - GND

B6: Viết code, test thử và hiệu chỉnh hệ thống.

Trong phần này, ta có sử dụng thư viện (library) của cảm biến DHT11 Chi tiết sử dụng thư viện DHT11 ở

đây:http://playground.arduino.cc/main/DHT11Lib

Hoặc các ACE có thể download ở đây Xong giải nén file zip, copy vào thư mục libraries của Arduino

- Đoạn code bên dưới chưa được tối ưu hóa Chỉ nhằm mục đích minh họa cho bài viết

#include <dht11.h>

dht11 DHT11;

// #define DHT11PIN 0 // định nghĩa cảm biến nhiệt độ và độ ẩm ở chân A0

// PIN definitions

int DHT11PIN = 0; // định nghĩa cảm biến nhiệt độ và độ ẩm ở chân A0

Trang 13

int pumpLEDPin = 6;

int pumpPin = 7; // máy bơm

int fanPin = 8; // quạt hút gió

int fanLEDPin = 9;

int temperature_min = 15; // khai báo nhiệt độ tối thiểu

int temperature_max = 30; // khai báo nhiệt độ tối đa

int humidity_min = 28; // khai báo độ ẩm tối thiểu

int humidity_max = 28; // khai báo độ ẩm tối đa

float humiditySensorValue;

float temperatureSensorValue;

// Khởi tạo các xác lập ban đầu

void setup()

{

Serial.begin(115200); // xác lập tốc độ ở cổng serial = 115200; }

// lặp đi lặp lại các thao tác điều khiển sau

void loop()

{

Serial.println("\n");

// kiểm tra đầu dò có hoạt động ko??

int chk = DHT11.read(DHT11PIN);

Serial.print("Read sensor: ");

switch (chk)

{

case DHTLIB_OK: // đầu dò hoạt động tốt

Serial.println("OK");

break;

case DHTLIB_ERROR_CHECKSUM: // đầu dò bị lỗi checksum Serial.println("Checksum error");

break;

case DHTLIB_ERROR_TIMEOUT: // đầu dò bị lỗi timeout Serial.println("Time out error");

break;

default:

Serial.println("Unknown error");

break;

}

// đọc độ ẩm không khí

humiditySensorValue = (float)DHT11.humidity;

// đọc nhiệt độ

temperatureSensorValue = (float)DHT11.temperature;

// Thực hiện vòng lặp nếu nhiệt độ hiện tại > nhiệt độ qui định

while (temperatureSensorValue > temperature_max)

{

// ra lệnh mở máy bơm

digitalWrite(pumpPin,HIGH);

digitalWrite(pumpLEDPin,HIGH);

// chờ 10 giây

delay(10000);

// đọc lại nhiệt độ

temperatureSensorValue = (float)DHT11.temperature;

}

// tắt máy bơm

Trang 14

digitalWrite(pumpLEDPin,LOW);

// Thực hiện vòng lặp nếu độ ẩm hiện tại > độ ẩm qui định

while (humiditySensorValue > temperature_max)

{

// ra lệnh mở máy quạt hút gió

digitalWrite(fanPin,HIGH);

digitalWrite(fanLEDPin,HIGH);

// chờ 10 giây

delay(10000);

// đọc lại độ ẩm

humiditySensorValue = (float)DHT11.humidity;

}

// tắt máy quạt hút gió

digitalWrite(fanPin,LOW);

digitalWrite(fanLEDPin,LOW);

delay(2000);

}

Nào, bây giờ mình quay trở lại cái dự án ban đầu của mình > Hệ thống thủy canh tự động Cũng theo 06 bước căn bản nhé

B1: Xác định mục tiêu > Hệ thống thủy canh tự động: ổn định độ pH từ 6.2-6.5; nồng độ dung dịch, nhiệt độ và ẩm độ.

• Ổn định độ pH: Như ta biết là độ pH sẽ thay đổi nếu: ta đo pH giữa buổi trưa trời nắng nóng Tương tự nếu ta đo pH vào buổi chiều tối, độ pH cũng thay đổi Ngoài ra nếu nhiệt độ của dung dịch tăng cao cũng khiến cho pH cũng thay đổi

Vậy ta sẽ đo độ pH và điều chỉnh vào thời điểm nào??

• Nồng độ dung dịch: Ở đây mình sẽ dùng thang đo EC (ppm), đo tổng nồng độ dd trong bồn dd đang trồng, ko đo chi tiết là Ca, K, P, N còn lại bao nhiêu ppm Mình sẽ pha 02 bình dung dịch cốt A và B, sau đó nếu nồng độ dung dịch giảm, thì ta châm thêm (A+B) vào Nếu nồng độ dd tăng, thì ta bơm thêm nước vào để làm loãng, giảm nồng độ đến ngưỡng qui định

• Nhiệt độ: Có 02 loại nhiệt độ: nhiệt độ trong nhà kính và nhiệt độ dung dịch Mình sẽ giới hạn chỉ xử lý nhiệt độ nhà kính

• Tất cả thông tin thay đổi đều được ghi nhận và lưu vào cơ sở dữ liệu, được hiển thị bằng đồ thị

Với các mục tiêu trên, mình sẽ chia kế hoạch ở trên thành những phần nhỏ để dễ làm

• Giai đoạn 1: Nhiệt độ và độ ẩm

• Giai đoạn 2: Ổn định độ pH

• Giai đoạn 3: Nồng độ dung dịch

• Giai đoạn 4: Lưu thông tin vào cơ sở dữ liệu

Phần nhiệt độ và độ ẩm mình bỏ qua nha, qua giai đoạn 2: ổn định độ pH

B2: Mô tả nguyên lý hoạt động - Ổn định độ pH.

• Dùng cảm biến pH để đọc giá trị pH hiện hành

• Nếu pH < 5.0 thì ra lệnh bơm dd cân chỉnh pH = 7.0

• Nếu pH > 7.0 thì ra lệnh bơm dd cân chỉnh pH = 4.0

B3: Chọn phần cứng Trong phần cứng này mình sẽ chuyển sang bo mạch Arduino Mega 2560, ko dùng Arduino UNO nữa, vì ROM của UNO

chỉ chứa được 32kb lệnh thực thi

• Bo mạch Arduino Mega 2560

• pH Electrode Probe (Đầu đo pH với cổng kết nối BNC)

• Phidgets 1130 pH/ORP adapter

• 4 Channels 5V Relay Module for Arduino

• SD Card Module Slot Socket Reader For Arduino

• 3.2" TFT LCD Shield

Trang 15

• Dây nhảy đầu đực + đực, đực + cái.

• Bộ nguồn DC 9V/1A Power Supply For Arduino

• Aquarium Peristaltic dosing pump (Máy bơm dung dịch cân chỉnh pH)

Ngoài ra, trên thị trường có sẵn bộ kit pH dùng cho Arduino (của hãng Atlas Scientific) Link: http://www.ebay.com/itm/pH-Kit-Sensor-for-Arduino-Solutions-Circuit-and-Sensor/190693458379?

_trksid=p2047675.c100005.m1851&_trkparms=aid=222003&algo=SIC.FIT&ao=1&asc=22466&meid=6652619768889726372&pid=100005&p rg=9735&rk=1&rkt=6&sd=200779540715&rt=nc

Một chú ý khi chọn mua pH/ORP adapter là phải đọc tài liệu kỹ thuật công thức tính độ pH so với nhiệt độ như thế nào? Có support thư viện dùng cho Arduino ko??

Ví dụ: Mình đang sử dụng Phidgets 1130 pH/ORP adapter thì cách tính độ pH ở 25 độ C như sau: pH = 0.0178 * Giá trị cảm biến đo được -

1.889 (link tham khảo: http://www.phidgets.com/docs/1130_User_Guide#Measuring_the_pH )

Ngày đăng: 24/12/2015, 17:15

HÌNH ẢNH LIÊN QUAN

Sơ đồ đấu nối: - Hệ thống tự động cho thủy canh
u nối: (Trang 2)
Sơ đồ đấu nối (tiếp theo).. - Hệ thống tự động cho thủy canh
u nối (tiếp theo) (Trang 3)
5. Sơ đồ kết nối các thiết bị với Arduino như thế nào? - Hệ thống tự động cho thủy canh
5. Sơ đồ kết nối các thiết bị với Arduino như thế nào? (Trang 11)
B5: Sơ đồ kết nối. - Hệ thống tự động cho thủy canh
5 Sơ đồ kết nối (Trang 12)

TỪ KHÓA LIÊN QUAN

w