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

15 2K 14
Hệ thống tự động cho thủy canh

Đ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

• 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.

Hệ Thống Tự Động Cho Thủy Canh Phần cứng cần phải có cho hệ thống gồm: • • • • • • • • • • • • • • x Arduino UNO MEGA Duemilanove (bo mạch Arduino UNO) Giá: 290k x LCD display with I2C communication (màn hình LCD dòng, 20 ký tự) Giá: 145k x RTC module with I2C communication Giá: 40-60k x Relay Module opto-coupled to 250V/10A: Giá: 45k x Modules "Driver" LM-393 general purpose (Adapter giao tiếp bo mạch Arduino cảm biến độ ẩm, mực nước) x Soil Moisture Sensor (Hygrometer) KDQ11 (cảm biến độ ẩm) Giá: 193k x Water Level Sensor (Homemade) (cảm biến mực nước, hay cảm biến mưa) Giá: 70k x Buzzer piezoelectric (loa báo động) Giá: 15k x LEDs - 10mm, Green (đèn LED màu xanh lá) x LED - 10mm, Red (đèn LED màu đỏ) x LED - 10mm, Yellow (đèn LED màu vàng) x Resistors 150 Ohm 1/4 W (điện trở 150 ôm, 1/4w) x Water pump for aquarium, with filter system (127 or 220V) - 01 máy bơm hồ cá x Electric Power Cable, 127/220VAC - 10Amps - cáp nguồn điện Các phần cứng 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: Sơ đồ đấu nối (tiếp theo) Giải thích cách viết chút xíu: RTC Arduino: - GND GND +5 V +5 V Nghĩa là: chân GND RTC đấu với chân GND bo mạch Arduino (các bạn nhìn bo mạch có ghi chữ này) chân cực dương RTC đấu với cực dương 5V 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 ta xem qua phần code chương trình, hiệu chỉnh thông số như: mực nước, độ ẩm đất Khai báo chân đầu vào sensor (cảm biến độ ẩm): Trong hình trên: • • levelSensorPin = nghĩa chân đầu vào cảm biến mực nước/nước mưa A0 • • • • int moistureSensor1Pin = 1; moistureSensorPin = nghĩa chân đầu vào cảm biến độ ẩm đất A1 Một bo mạch UNO sử dụng tối đa 06 cảm biến độ ẩm đất từ chân A0 > A5 Arduino Khi bạn sửa lại code, khai báo sau: int moistureSensor2Pin = 2; int moistureSensor3Pin = 3; Kiểm tra đất bị khô, giá trị moistureSensorValue > 700 Bật đèn hiển thị LED màu đỏ: digitalWrite(drysoilLEDPin,HIGH) Đất ẩm vừa phải, giá trị moistureSensorValue nằm khoảng từ 300 đến 700 Bật đèn hiển thị LED màu xanh: digitalWrite(moistsoilLEDPin,HIGH); Nếu đất bị ướt (độ ẩm) giá trị moistureSensorValue < 300 Bật đèn hiển thị LED màu vàng: digitalWrite(soggyLEDPin,HIGH); Nếu đất bị khô, bật máy bơm bơm đến đạt độ ẩm qui định Các AC tùy chỉnh giá trị độ ẩm code trình bày theo ý Sau 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 thông thường ta phải lên kế hoạch Đối với 01 hệ thống Arduino thế, làm hệ thống Arduino nào, ta phải có kế hoạch, kế hoạch nên ghi giấy để ta dễ hình dung Thông thường kế hoạch gồm bước sau: Xác định mục tiêu hệ thống Viết nguyên lý hay mô tả cách hoạt động (algorithm) hệ thống Lựa chọn phần cứng Viết kịch code: Cần khởi tạo thông số cho hệ thống lệnh cần hệ thống thực lặp lặp lại Sơ đồ kết nối thiết bị với Arduino nào? Viết code (bao gồm test 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 hệ thống • Hệ thống trồng rau mầm có kiểm soát độ ẩm nhiệt độ B2: Nguyên lý / mô tả cách hoạt động hệ thống • • • Đo độ ẩm nhiệt độ môi trường • Đầu dò (cảm biến) nhiệt độ không khí độ ẩm không khí Ở ta có 02 loại đầu dò tương thích với Arduino: DHT11 DHT22 Sự khác biệt 02 đầu dò bạn xem tài liệu chi tiết đây: https://learn.adafruit.com/dht/overview • • • Máy bơm nước • • • Khai báo chân cắm Cảm biến nhiệt độ độ ẩm bo mạch Arduino > gắn chân A0 Nếu nhiệt độ > 30 độ C kích hoạt máy bơm tưới phun sương nhiệt độ = 28 độ C Nếu độ ẩm < 27,2 (g/m3) kích hoạt máy quạt gió B3: Chọn phần cứng Quạt hút gió Relay B4: Viết kịch code Khai báo độ ẩm cực đại, nhiệt độ cực đại, cực tiểu lặp lặp lại thao tác: o Lấy giá trị nhiệt độ o Lấy giá trị độ ẩm o Xử lý nhiệt độ > nhiệt độ cực đại qui định > bật máy bơm o Xử lý độ ẩm < độ ẩm qui định > bật quạt hút gió o Nghỉ 15 giây, o Đọc lại giá trị nhiệt độ, độ ẩm B5: Sơ đồ kết nối DHT11 < -> Arduino (xem tài liệu chi tiết kỹ thuật DHT11 đây: http://www.micro4you.com/files/sensor/DHT11.pdf) Pin - +5V Pin - A0 Pin - GND B6: Viết code, test thử hiệu chỉnh hệ thống Trong phần này, ta có sử dụng thư viện (library) cảm biến DHT11 Chi tiết sử dụng thư viện DHT11 đây:http://playground.arduino.cc/main/DHT11Lib Hoặc ACE download Xong giải nén file zip, copy vào thư mục libraries Arduino - Đoạn code bên chưa tối ưu hóa Chỉ nhằm mục đích minh họa cho viết -#include dht11 DHT11; // #define DHT11PIN // định nghĩa cảm biến nhiệt độ độ ẩm chân A0 // PIN definitions int DHT11PIN = 0; // định nghĩa cảm biến nhiệt độ độ ẩm chân A0 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 xác lập ban đầu void setup() { Serial.begin(115200); // xác lập tốc độ cổng serial = 115200; } // lặp lặp lại 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 vòng lặp nhiệt độ > nhiệt độ qui định while (temperatureSensorValue > temperature_max) { // 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 digitalWrite(pumpPin,LOW); digitalWrite(pumpLEDPin,LOW); // Thực vòng lặp độ ẩm > độ ẩm qui định while (humiditySensorValue > temperature_max) { // 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, quay trở lại dự án ban đầu > Hệ thống thủy canh tự động Cũng theo 06 bước 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 độ ẩm độ • Ổn định độ pH: Như ta biết độ pH thay đổi nếu: ta đo pH buổi trưa trời nắng nóng Tương tự ta đo pH vào buổi chiều tối, độ pH thay đổi Ngoài nhiệt độ dung dịch tăng cao khiến cho pH thay đổi Vậy ta đo độ pH điều chỉnh vào thời điểm nào?? • Nồng độ dung dịch: Ở dùng thang đo EC (ppm), đo tổng nồng độ dd bồn dd trồng, ko đo chi tiết Ca, K, P, N lại ppm Mình pha 02 bình dung dịch cốt A B, sau nồng độ dung dịch giảm, ta châm thêm (A+B) vào Nếu nồng độ dd tăng, 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 độ nhà kính nhiệt độ dung dịch Mình giới hạn xử lý nhiệt độ nhà kính • Tất thông tin thay đổi ghi nhận lưu vào sở liệu, hiển thị đồ thị Với mục tiêu trên, chia kế hoạch thành phần nhỏ để dễ làm • • • • Giai đoạn 1: Nhiệt độ độ ẩ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 sở liệu Phần nhiệt độ độ ẩm 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 hành • • • • • • Bo mạch Arduino Mega 2560 Nếu pH < 5.0 lệnh bơm dd cân chỉnh pH = 7.0 Nếu pH > 7.0 lệnh bơm dd cân chỉnh pH = 4.0 B3: Chọn phần cứng Trong phần cứng chuyển sang bo mạch Arduino Mega 2560, ko dùng Arduino UNO nữa, ROM UNO chứa 32kb lệnh thực thi pH Electrode Probe (Đầu đo pH với cổng kết nối BNC) Phidgets 1130 pH/ORP adapter Channels 5V Relay Module for Arduino SD Card Module Slot Socket Reader For Arduino 3.2" TFT LCD Shield • • • Dây nhảy đầu đực + đực, đực + 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, thị trường có sẵn kit pH dùng cho Arduino (của hãng Atlas Scientific) Link: http://www.ebay.com/itm/pH-Kit-Sensor-forArduino-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ọn mua pH/ORP adapter phải đọc tài liệu kỹ thuật công thức tính độ pH so với nhiệt độ nào? Có support thư viện dùng cho Arduino ko?? Ví dụ: Mình sử dụng Phidgets 1130 pH/ORP adapter cách tính độ pH 25 độ C sau: pH = 0.0178 * Giá trị cảm biến đo 1.889 (link tham khảo: http://www.phidgets.com/docs/1130_User_Guide#Measuring_the_pH) [...]... tả cách hoạt động (algorithm) của hệ thống Lựa chọn phần cứng 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 Sơ đồ kết nối các thiết bị với Arduino như thế nào? 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ì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... 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 2 3 4 5 6 Xác định mục tiêu của hệ thống Viết ra nguyên lý hay mô tả cách hoạt động (algorithm)... 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... 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 độ 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 • Đầ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... 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:... https://learn.adafruit.com/dht/overview • • • Máy bơm nước • • • 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 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 Quạt hút gió Relay B4: Viết kịch bản code Khai báo độ ẩm cực đại, nhiệt độ cực đại, cực tiểu lặp đi... ẩ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 • • • • • • Bo mạch Arduino Mega 2560 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... Shield • • • 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-forArduino-Solutions-Circuit-and-Sensor/190693458379? _trksid=p2047675.c100005.m1851&_trkparms=aid=222003&algo=SIC.FIT&ao=1&asc=22466&meid=6652619768889726372&pid=100005&p... _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) ... delay(2000); } Nào, quay trở lại dự án ban đầu > Hệ thống thủy canh tự động Cũng theo 06 bước 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,... 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 hệ thống • Hệ thống trồng rau mầm có kiểm soát độ ẩm nhiệt độ B2: Nguyên lý / mô tả cách hoạt động hệ thống • • • Đo... sau: Xác định mục tiêu hệ thống Viết nguyên lý hay mô tả cách hoạt động (algorithm) hệ thống Lựa chọn phần cứng Viết kịch code: Cần khởi tạo thông số cho hệ thống lệnh cần hệ thống thực lặp lặp lại

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan