Hệ thống điều chỉnh ánh sáng

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số giải pháp mới trong phát triển nông nghiệp thông minh (Trang 45)

Nếu cường độ ánh sáng thấp hơn mức cần thiết 35%, đèn hiệu sẽ tự động bật lên và nếu mức cần thiết đạt đến ngưỡng 60% thì đèn hiệu sẽ tắt.

Hình 3.5: Điều kiện hoạt động của rơ le điều khiển cường độ ánh sang

3.2.4. Hệ thống điều chỉnh máy bơm nước

Nếu các giá trị độ ẩm đất thấp hơn mức cần thiết 25%, máy bơm nước sẽ tự động bật lên và nếu mức cần thiết đạt đến ngưỡng 30%, thì máy bơm nước sẽ tắt.

Hình 3.6: Điều kiện hoạt động của rơ le điều khiển máy bơm (độ ẩm đất)

3.3. Xây dựng phần cứng

Do việc giám sát các điều kiện trong nhà kính ở các vị trí khác nhau sẽ dẫn tới dữ liệu cảm biến khác nhau đồng thời cũng ảnh hưởng tới việc điều khiển các thiết bị. Thông thường cảm biến DHT22 và cảm biến độ ẩm đất được lắp đặt bên trong nhà kính và nằm gần nhau để do được các điều kiện nhiệt độ,

độ ẩm không khí và độ ẩm đất gần với cây trồng để phản ánh chính xác môi trường sinh trưởng của cây trồng. Mật độ phân bố đồng thời 2 cảm biến này có thể cách nhau 10m. Thông thường người nông dân muốn cây trồng quang hợp liên tục cả ngày và đêm nên cảm biến ánh sáng có thể được lắp đặt ở phần trên mái để phản ánh về ngày đêm. Cảm biến ánh sáng được dùng trong mô hình này chỉ xuất đầu ra với 2 mức logic số 0&1, tức là chỉ nêu ra môi trường sáng hay tối rồi sẽ điều khiển bật/tắt hệ thống đèn led.

Hình 3.7: Mạng cảm biến không dây dựa vào Wi-Fi

Hình 3.9: Hình chiếu trước của trung tâm điều khiển

3.4. Xây dựng phần mềm

Các thiết bị được lắp đặt thành mô hình và chạy thử nghiệm thành công. Tất cả bộ cảm biến hoạt động tốt, thu thập dữ liệu từ môi trường có độ chính xác cao và người dùng có thể quan sát dữ liệu này thông qua LCD. Hệ thống chế độ này được điều khiển thành công bằng điện thoại thông minh thông qua ứng dụng Blynk.

Hình 3.11: Hệ thống điều khiển giao diện trên ứng dụng Blynk

Theo Hình 3.11 về hệ thống điều khiển, tôi đã lắp đặt 4 bộ trượt để cài đặt giá trị ngưỡng cho chế độ tự động, và các nút để hiển thị trạng thái hoạt dộng của các thiết bị led, bống sưởi, đền, giá nhiệt, máy bơm, quạt. Ví dụ, đối với bộ trượt đầu tiên, tôi cài đặt 2 giá trị ngưỡng là t - 2 và t + 2 với t là giá trị nhiệt độ không khí, được thu thấp từ bộ cảm biến DHT. Với điều kiện đó, nếu t >= t + 2, quạt làm mát tự động BẬT để giảm nhiệt độ bên trong nhà kính. Khi nhiệt độ đạt đến giá trị ngưỡng, quạt làm mát tự động TẮT. Tương ứng khi t <= t - 2, đèn gia nhiệt BẬT để tăng nhiệt độ bên trong nhà kính. Khi nhiệt độ đạt đến giá trị ngưỡng, đèn gia nhiệt tự động TẮT.

Ngoài ra, hệ thống có thể được điều khiển từ xa bằng 5 nút. M i nút có một chức năng để bật và tắt thiết bị.

Hình 3.12: Hiển thị dữ liệu đã thu thập từ các bộ cảm biến sử dụng SuperChart's Blynk

Người dùng có thể quan sát thông tin về nhà kính bằng cách sử dụng widget của superChart trên Blynk. Mặt khác, bộ chọn khoảng thời gian cho phép lựa chọn các khoảng thời gian cần thiết như 1 giờ, 6 giờ, 1 ngày,1 tuần, 1 tháng và tối đa 3 tháng. Dữ liệu của các bộ cảm biến sẽ được lưu như một CSV.

KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU TIẾP

Mạng cảm biến không dây thông minh được phát triển để theo dõi từ xa và tự động hóa việc điều chỉnh nhiệt độ, độ ẩm không khí và độ ẩm đất của nhà kính. Dữ liệu từ các bộ cảm biến được thu thập bằng nút cảm biến và so sánh với thiết lập ngưỡng của thông số tương ứng. Nếu thông số không nằm trong các hạn mức, thì nút cảm biết kích hoạt rơ le tương ứng với thông số sẽ được điều chỉnh. Dữ liệu từ các bộ cảm biến và thông tin điều chỉnh được gửi không dây bằng giao thức truyền thông Wi- Fi. Dữ liệu được tiếp nhận bằng nút điều phối 2 giây/lần và được gửi đến máy tính cá nhân bằng truyền thông nối tiếp với một tốc độ truyền 9600 baund/s. Dữ liệu được xem trong phần mềm giám sát nối tiếp trong máy tính cá nhân. Hệ thống đã được phát triển cho thấy mạng cảm biến không dây Wi-Fi cung cấp giải pháp linh hoạt và đáng tin cậy để phát triển hệ thống quản lý nhà kính tự động hóa. Hệ thống được phát triển thành công trong tự động hóa kiểm soát các thông số đã xem xét và rất hữu ích để nâng cao chất lượng tăng trưởng cây cối được trồng trong nhà kính.

Công việc này bao gồm nghiên cứu các thông số vi khí hậu khác nhau và các phạm vi về các cây trồng khác nhau để thiết lập các hạn mức ngưỡng chính xác để điều khiển. Do đó, nhiều nghiên cứu có thể được tiến hành các thông số cho các loại cây trồng khác nhau, chủ yếu được trồng trong nhà kính. Các thông số khác cần thiết để tăng trưởng cây cối cũng có thể được nghiên cứu và tự động hóa.

HƢỚNG PHÁT TRIỂN

Ngoài các yếu tố tự động hóa như trong luận văn đã nêu ra thì còn nhiều yếu tố khác ảnh hưởng tới sự phát triển và năng suất của cây trồng cần xem xét thêm như vấn đề độ dinh dưỡng, độ pH trong đất. Việc bón phân theo phương pháp truyền thống hiện nay vẫn còn nhiều hạn chế, đặc biệt là việc sử dụng phân hóa học trong canh tác. Việc phân tích nhu cầu dinh dưỡng của cây trồng cần nghiên cứu thêm.

Việc tưới tiêu trong nông nghiệp hiện nay vẫn còn chưa thực sự tối ưu. Trong tương lai có thể nghiên cứu kỹ về việc kết hợp tưới tiêu tự động không chỉ giải quyết

vấn đề về độ ẩm, nhiệt độ, ánh sáng mà còn cần xem xét vấn đề dinh dưỡng song song với việc tối ưu hóa trong tưới tiêu. Về vấn đề cỏ dại và sâu bệnh hại cũng cần được nghiên cứu căn cứ theo khu vực, thời tiết, các loại sâu bệnh hại theo mùa để từ đó người dùng có thể chủ động phòng ngừa.

Internet vạn vật trong nông nghiệp cũng cần được xét xét để sử dụng vào việc chống trộm, bảo quản nông sản trong nhà kho và trong quá trình vận chuyển tới người tiêu thụ.

TÀI LIỆU THAM KHẢO Tiếng Anh

[1] Guo Dengfeng, Xu Shan, Kun, “The Internet of Things hold up Smart Grid networking technology”, North China Electric, 2010.2, pp.59-63

[2] TongKe, Fan. "Smart agriculture based on cloud computing and IOT." Journal

of Convergence Information Technology 8.2 (2013):1-6.

[3] Li, Li, et al. "The applications of wifi-based wireless sensor network in internet of things and smart grid." Industrial Electronics and Applications (ICIEA),

2011 6th IEEE Conference on. IEEE, 2011.

[4] Dlodlo, Nomusa, and Josephat Kalezhi. "The internet of things in agriculture for sustainable rural development." Emerging Trends in Networks and

Computer Communications (ETNCC), 2015 International Conference on.

IEEE, 2015:1-5.

[5] Ray, Partha Pratim. "Internet of things for smart agriculture: Technologies, practices and future direction." Journal of Ambient Intelligence and Smart

Environments 9.4 (2017): 395-420.

[6] Powering for this project valuable: from

http://www.ti.com/power-management/non-isolated-dc-dc-switching- regulators/step-down-buck/buck-converter-integrated-switch/swift.html [7] Relay 8 channel information valuable from:

https://circuitglobe.com/relay.html [8] Esp8266 data sheet valuable from:

http://www.microchip.ua/wireless/esp01.pdf

[9] Data sheet and specifications of LCD 16x02 valuable from: https://www.openhacks.com/uploadsproductos/eone-1602a1.pdf [10] Datasheet I2C 1602 Serial LCD Module valuable from:

Tiếng Việt

[11] IoT ứng dụng trong nông nghiệp

https://tinhte.vn/threads/iot-ung-dung-trong-nong-nghiep.2785718/ [12] 4 cấu phần của Internet of Things:

http://khoahocphattrien.vn/cong-nghe/nhin-internet-of-things-qua-chuoi- cung-ung/20150926124923149p1c859.htm

[13] Internet of things là gì? :

http://iot.dtt.vn/InternetofThings.html [14] Các loại máy sưởi hồng ngoại cho nhà kính:

https://vi.decoratex.biz/teplica/vidy-infrakrasnyh-obogrevatelej/ [15] Lập trình Arduino - giới thiệu giao diện ArduinoIDE:

https://hourofcode.vn/lap-trinh-arduino-gioi-thieu-giao-dien-arduino-ide/ [16] Cài Đặt Arduino IDE:

https://www.stdio.vn/articles/cai-dat-arduino-ide-444 [17] Ứng dụng Blynk:

https://mechasolution.vn/Blog/blynk-la-gi [18] Màn hình text LCD1602 xanh dương:

https://hshop.vn/products/lcd-text-lcd1602-xanh-duong [19] Quạt thông gió nhà kính:

https://binhngan.com/quat-hut-cong-nghiep/quat-thong-gio-nha-kinh-quat-nha- mang/

[22] Các phần cứng lấy trong web: https://hshop.vn/

PHỤ LỤC

CODE

#define BLYNK_PRINT Serial #include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h> #include <SimpleTimer.h>

#include "DHT.h" //dht22

#include <BH1750FVI.h> // Sensor Library #include <Wire.h> // I2C Library

#include <LiquidCrystal_I2C.h> //LCD //khai bao cam bien

int light_sensor = 12; // cam bien anh sang chan D6 #define DHTPIN 13 // cam bien DHT22 chan D7 #define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE); //khai bao LCD

LiquidCrystal_I2C lcd(0x27,16,2); //khai bao dong co

int quat1 = 0;//D3 quat thong gio int quat2 = 2; //D4 quat hut am int den_led = 16; //D0

int den_tron = 14; //D5 int bom = 15; //D8

WidgetLED led1 (V10); //cho thong gio WidgetLED led2 (V11); //cho hut am WidgetLED led3 (V12); //cho den led WidgetLED led4 (V13); //cho den tron WidgetLED led5 (V14); // cho may bom //khai bao blynk

char auth[] = "a2c9d5ab22d34f07ae874964e69169cd"; //Token cua blynk char ssid[] = "tony"; //Ten wifi

char pass[] = "77107737"; //Pass wifi bool Connected2Blynk = false;

SimpleTimer timer; // Su dung timer int value_light_binary;

int value_soil_binary; float t;

float h;

void sendSensor() {

float h = dht.readHumidity(); //Doc gia tri do am float t = dht.readTemperature(); //Doc gia tri nhiet do int value_light = digitalRead(light_sensor);

int value_light_binary = map(value_light, 0, 1, 1, 0); int value_soil = analogRead(A0);

int value_soil_binary = map(value_soil, 0, 1023, 0, 100); delay(10); Blynk.virtualWrite(V0, t); Blynk.virtualWrite(V1, h); Blynk.virtualWrite(V2, value_light_binary); Blynk.virtualWrite(V3, value_soil_binary); int den_led = 16; //D0 if (value_light_binary == 1){ digitalWrite(den_led, HIGH); led3.off(); } else{ digitalWrite(den_led, LOW); led3.on(); } } void CheckConnection(){ Connected2Blynk = Blynk.connected(); if(!Connected2Blynk){

Blynk.connect(3333); // timeout set to 10 seconds and then continue without Blynk }

else{

Serial.println("Connected to Blynk server"); } } void setup() { Serial.begin(9600); WiFi.begin(ssid, pass);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP());

Blynk.config(auth); // in place of Blynk.begin(auth, ssid, pass);

Blynk.connect(3333); // timeout set to 10 seconds and then continue without Blynk Serial.println("set float");

float timeout = (millis() / 1000); while (Blynk.connect() == false) { if (((millis() / 1000) - timeout) > 5) { break;

} }

Serial.println("Connected to Blynk server");

timer.setInterval(5000L, CheckConnection); // check if still connected every 11 seconds

Serial.println("Program Start!");

timer.setInterval(1000L, sendSensor); //1s doc cam bien 1 lan

lcd.init(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print("Program Starting"); lcd.setCursor(0,1); lcd.print("---"); lcd.clear(); dht.begin();

pinMode(light_sensor,INPUT); // pinMode nhan tin hieu pinMode(quat1, OUTPUT); pinMode(quat2, OUTPUT); pinMode(den_led, OUTPUT); pinMode(den_tron, OUTPUT); pinMode(bom, OUTPUT); delay(2000); } void loop() { //code for DHT22 h = dht.readHumidity();

t = dht.readTemperature(); if (isnan(h) || isnan(t)) {

Serial.println("Failed to read from DHT sensor!"); return;

}

//code for light sensor

int value_light = digitalRead(light_sensor); value_light_binary = map(value_light, 0, 1, 1, 0);

//code for soil sensor

int value_soil = analogRead(A0);

value_soil_binary = map(value_soil, 0, 1023, 0, 100); if(Connected2Blynk){ Blynk.run(); } else{ if (t <= 30){ digitalWrite(quat1, HIGH); digitalWrite(den_tron, LOW); } else{ digitalWrite(quat1, LOW); digitalWrite(den_tron, HIGH); } if (h <= 80){ digitalWrite(quat2, HIGH); digitalWrite(den_tron,HIGH); } else{ digitalWrite(quat2, LOW); digitalWrite(den_tron,LOW); } if (value_light_binary == 1){ digitalWrite(den_led, HIGH); } else{ digitalWrite(den_led, LOW); } if (value_soil_binary <= 60){ digitalWrite(bom, LOW); } else{

digitalWrite(bom, HIGH); }

}

timer.run();

//display into LCD screen lcd.setCursor(0, 0);

lcd.print("T="); //for temp lcd.print(t);

lcd.setCursor(8, 0);

lcd.print("Hu="); //for humidity lcd.print(h);

lcd.setCursor(0, 1);

lcd.print("Lux="); // for light lcd.print(value_light_binary); lcd.setCursor(8,1);

lcd.print("Soi="); //for humidity lcd.print(value_soil_binary); lcd.print("%");

//display into screen Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(" %\t"); Serial.print("Light: "); Serial.print(value_light_binary); Serial.print("\t"); Serial.print("Soil: "); Serial.print(value_soil_binary); Serial.print(" %"); Serial.println();

Serial.print("Quat thong gio "); Serial.print(quat1); Serial.print(" %\t"); Serial.print("Quat hut am "); Serial.print(quat2); Serial.print(" %\t"); Serial.print("Den LED "); Serial.print(den_led); Serial.print(" %\t"); Serial.print("Bom "); Serial.print(bom); Serial.println(" %\t"); delay(2000);

}

BLYNK_WRITE(V15) // Slide dieu khien nhiet do threshold {

int pinValue = param.asInt();

Serial.print("Slider temperature value is: "); Serial.println(pinValue); if (t <= pinValue){ digitalWrite(quat1, HIGH); digitalWrite(den_tron, LOW); led1.off(); led4.on(); } else { digitalWrite(quat1, LOW); digitalWrite(den_tron, HIGH); led1.on(); led4.off(); } }

BLYNK_WRITE(V16){ // Slide dieu khien do am threshold int pinValue = param.asInt();

Serial.print("Slider humidity value is: "); Serial.println(pinValue); if (h <= pinValue){ digitalWrite(quat2, HIGH); digitalWrite(den_tron, HIGH); led2.off(); led4.off(); } else { digitalWrite(quat2, LOW); digitalWrite(den_tron, LOW); led2.on(); led4.on(); } }

//BLYNK_WRITE(V17){ // Slide dieu khien anh sang threshold // int pinValue = param.asInt();

// Serial.print("Slider light value is: "); // Serial.println(pinValue);

// if (value_light_binary <= pinValue){ // digitalWrite(den_led, LOW); // led3.on();

// } // else { // digitalWrite(den_led, HIGH); // led3.off(); // } //}

BLYNK_WRITE(V18){ // Slide dieu khien may bom threshold int pinValue = param.asInt();

Serial.print("Slider pump value is: "); Serial.println(pinValue); if (value_soil_binary <= pinValue){ digitalWrite(bom, LOW); led4.on(); } else { digitalWrite(bom, HIGH); led4.off(); } }

BLYNK_WRITE(V5){ // Slide dieu khien quat thong gio

int virtualPin = param.asInt(); // assigning incoming value from pin V15 to a variable Serial.print("V5 Switch value is: ");

Serial.println(virtualPin); if (virtualPin == 1){ digitalWrite(quat1, HIGH); led1.off(); } else { digitalWrite(quat1, LOW); led1.on(); } }

BLYNK_WRITE(V6){ // Slide dieu khien bong suoi int virtualPin = param.asInt();

Serial.print("V6 Switch value is: "); Serial.println(virtualPin); if (virtualPin == 1){ digitalWrite(den_tron, HIGH); led4.off(); } else { digitalWrite(den_tron, LOW); led4.on();

} }

BLYNK_WRITE(V7){ // Slide dieu khien quat hut am int virtualPin = param.asInt();

Serial.print("V7 Switch value is: "); Serial.println(virtualPin); if (virtualPin == 1){ digitalWrite(quat2, HIGH); led2.off(); } else { digitalWrite(quat2, LOW); led2.on(); } }

BLYNK_WRITE(V8){ // Slide dieu khien den led int virtualPin = param.asInt();

Serial.print("V8 Switch value is: "); Serial.println(virtualPin); if (virtualPin == 1){ digitalWrite(den_led, HIGH); led3.off(); } else { digitalWrite(den_led, LOW); led3.on(); } }

BLYNK_WRITE(V9){ // Slide dieu khien may bom int virtualPin = param.asInt();

Serial.print("V9 Switch value is: "); Serial.println(virtualPin); if (virtualPin == 1){ digitalWrite(bom, HIGH); led5.off(); } else { digitalWrite(bom, LOW); led5.on(); } }

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số giải pháp mới trong phát triển nông nghiệp thông minh (Trang 45)