.1 Lưu đồ thuật toán

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế CHẾ tạo mô HÌNH hệ THỐNG tưới RAU THÔNG MINH (Trang 55 - 75)

4.3 Chương trình điều khiển [4]

4.3.1 Các chương trình con

 Chương trình con cho hệ thống đã sẵn sàng.

Chương trình này có nhiệm vụ chính là sẽ gửi một tin nhắn về số điện thoại mà ta đã thiệt lập với nội dung là “Da san sang”.

Chương trình về hệ thống đã sẵn sàng

void sansang() {

mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("Da san sang"); delay(500);

mySerial.write(26);

Serial.print("Da gui tin nhan\n");

 Chương trình con về việc máy bơm tắt.

Chương trình con này có nhiệm vụ là nhắn tin về số điện thoại đã được thiết đặt với nội dung tin nhắn là “May bom da tat”

Chương trình con về máy bơm đã bật

void maybomtat() {

delay(500);

mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("May bom da tat"); delay(500);

mySerial.write(26);

}

Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh

Chương trình này sẽ báo đến số điện thoại được thiết đặt với nội dung là “He thong het nuoc”

Chương trình con về máy bơm lỗi

{

delay(500);

mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("He thong het nuoc"); delay(500);

mySerial.write(26); }

 Chương trình con về việc máy bơm đã bật

Chương trình con này sẽ gửi tin nhắn về số điện thoại đã được thiết lập với nội dung là “ May bom da bat”.

Chương trình về máy bơm đã bật

{

delay(500);

mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("May bom da bat"); delay(500);

mySerial.write(26); }

 Chương trình con về đọc giá trị cảm biến

Ở chương trình con này sẽ có nhiệm vụ đọc các giá trị của cảm biến nhiệt độ và độ ẩm và hiển thị lên LCD. Ở cảm biến độ ẩm ta cần phải phải tính tốn và chuyển đổi giá trị ảo của cảm biến thành giá trị thật để hiện lên LCD. Nếu khơng chuyển đổi thì kết quả hiển thị độ ẩm đất lên LCD sẽ bị ngược.

void cambien() { sensors.requestTemperatures(); lcd.setCursor(0,0); lcd.print("Nhietdo: "); lcd.setCursor(9,0); nhietdo = sensors.getTempCByIndex(0); lcd.print(sensors.getTempCByIndex(0)); // vì 1 ic nên dùng 0 lcd.write(1); lcd.print("C"); ////////////////////////

for(int i=0;i<=9;i++) /*Chúng ta sẽ tạo một hàm for để đọc 10 lần giá trị cảm biến,sau đó lấy giá trị trung bình để được giá trị chính xác nhất.*/

{

doc_cb += analogRead(cb); }

TBcb=doc_cb/10; //Tính giá trị trung bình

int phantramao = map(TBcb, 0, 1023, 0, 100); //Chuyển giá trị Analog thành giá trị %

int phantramthuc = 100 - phantramao; //Tính giá trị phần trăm thực, chuyển điện thế khô thành ẩm doam = phantramthuc; lcd.setCursor(11, 1); lcd.print(phantramthuc); if (phantramthuc < 100) { lcd.setCursor(13, 1); lcd.print(' ');

Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh } else if (phantramthuc < 10) { lcd.setCursor(12, 1); lcd.print(' '); } lcd.print('%'); delay (500); doc_cb=0;

 Chương trình con về kiểm tra tin nhắn.

Chương trình con này có nhiệm vụ là sẽ kiểm tra tin nhắn đến. Nếu tin nhắn đến có nội dung là “KT” thì hệ thống sẽ trả về tin nhắn với nội dung nhiệt độ và độ ẩm hiện tại của hệ thống. Ngồi ra, khơng nhất thiết là ghi in hoa nội dung tin nhắn gửi đi là “KT”. Vì trong chương trình chúng em đã viết 1 lệnh là sẽ in hoa các kí tự từ tin nhắn gửi đến. Để tránh trường hợp ghi sai cứ pháp và làm cho hệ thống không gửi các giá trị của cảm biến về điện thoại.

Chương trình kiểm tra tin nhắn

void CheckSMS() { if(mySerial.available()>0) { delay(100); while(mySerial.available()) { incomingByte = mySerial.read(); inputString += incomingByte; } delay(10); Serial.println(inputString);

inputString.toUpperCase(); if (inputString.indexOf("KT") > -1) { delay(1000); Serial.println("Sending SMS..."); delay(500); mySerial.println("AT+CMGS=\"+84777967757\""); delay(500); mySerial.print("Nhiet do:"); mySerial.print(nhietdo, 1); mySerial.print(" degreeC"); mySerial.println(" ,"); mySerial.print("Do am:"); mySerial.print(doam, 1); mySerial.print(" %"); delay(500); mySerial.write(26); Serial.println("Sent!"); } inputString = ""; delay(1000); } } 4.3.2 Chương trình chính

Chương trình chính thì sẽ các nhiệm vụ sau:

 Bật máy bơm khi nhiệt độ và độ ẩm ở dưới ngưỡng quy định.

Điều kiện để máy bơm được bật đó là phải đạt các điều kiện đó là: Nhiệt độ > 240C hoặc độ ẩm < 50 và máy bơm không bị lỗi và máy bơm đang ở trạng thái tắt.

Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh

Chương trình máy bơm bật:

if(((nhietdo>24) || (doam<60)) && !Error && !maybom )// {

digitalWrite(12, 1); time1 = millis(); maybombat(); maybom=1;

Serial.println("Bat may bom, cho 10s");

 Tắt máy bơm sau khi máy bơm đã bật và độ ẩm đạt ngưỡng quy định.

Sau khi máy bơm đã được bật thì máy bơm sẽ dừng cho tới khi được các điều kiện đó là: Nhiệt độ < 200C hoặc độ ẩm > 65 và trạng thái máy bơm đang được bật. Khi đủ các điều kiện này thì máy bơm sẽ tắt.

Chương trình máy bơm tắt:

}

if(digitalRead(12))

if(((nhietdo<20) || (doam>70)) && maybom )// {

digitalWrite(12, 0);

Serial.println("Dat do am, tat may"); maybom=0;

maybomtat(); }

 Hệ thống bị lỗi sẽ báo về điện thoại là hệ thống hết nước

Hệ thống nhận biết được hệ thống bị lỗi bằng cách sẽ kiểm tra cảm biến mưa và trạng thái của máy bơm. Nếu cảm biến mưa không được tác động và trạng thái máy bơm là bật thì lúc này hệ thống sẽ tắt máy bơm và gửi tin nhắn về điện thoại với nội dung hệ thống hết nước.

CheckRainSensor();///chú ý CheckSMS();

if(digitalRead(12))

if((millis()-time1)>10000)

if(!CheckRainSensor() && maybom) {

Error=1;

digitalWrite(12,0);

Serial.println("Da tat may bom"); maybom=0;

maybomloi();

 Hiển thị lên màn hình máy tính các giá trị về độ ẩm, nhiệt độ và trạng thái máy bơm và cảm biến mưa (On hay Off)

Các lệnh hiển thị này sẽ hiển thị các giá trị của cảm biến và trạng thái của máy bơm từ để chúng ta có thể xem được các cảm biến hay máy bơm có hoạt động ổn định hay khơng. Nếu phần tử nào hư hay khơng hoạt động ta có thể biết được và tiến hành thay thế hay sửa chữa

Chương trình hiển thị lên màn hình máy tính:

cambien(); Serial.print("Nhiet do: "); Serial.print(nhietdo); Serial.print(" "); Serial.print("D o am: "); Serial.print(doam); Serial.print(" "); Serial.print("May bom ");

if(digitalRead(12)) Serial.print("ON"); else Serial.print("OFF"); Serial.print(" ");

Thiết kế chế tạo mơ hình hệ thống tưới rau thông minh

Serial.print("CB mua: ");

if(!digitalRead(6)) Serial.print("ON"); else Ser;ial.println("OFF");

4.3.3 Chương trình tổng quát #include <LiquidCrystal_I2C.h> #include <LiquidCrystal_I2C.h> #include <SoftwareSerial.h> #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000, };

// Chân nối với Arduino #define ONE_WIRE_BUS 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); LiquidCrystal_I2C lcd(0x27,16,2); SoftwareSerial mySerial(3, 2);//tx,rx int relay = 12;

int cb = A2; //Chân cảm biến ở chân Analog: A0 int doc_cb, TBcb;

int luu; int mua= 11; float nhietdo=0; float doam=0; int time1; bool Error=0; bool maybom=0; String inputString; char incomingByte; void setup() { Serial.begin(9600); Serial.println("Initializing..."); mySerial.begin(9600);//SIM mySerial.println("AT"); delay(100); updateSerial(); mySerial.println("AT+CMGF=1"); // Configuring TEXT mode updateSerial();

mySerial.println("AT+CNMI=1,2,0,0,0");

// Decides how newly arrived SMS messages should be handled mySerial.println("AT+CMGDA=\"DEL ALL\"");

updateSerial(); Serial.print("\n");

Serial.println("HE THONG DA SAN SANG!"); sansang();

Thiết kế chế tạo mơ hình hệ thống tưới rau thông minh

pinMode (cb, INPUT); //Tín hiệu vào từ cảm biến pinMode (mua, INPUT); pinMode (relay, OUTPUT); //Tín hiệu xuất ra từ relay digitalWrite (relay, LOW); lcd.init(); // khoi tao lcd lcd.backlight(); // bat den lcd lcd.print("Nhiet do: "); // in ra man nhietdo

lcd.createChar( 1,degree) ; lcd.setCursor(0,1);

// thiết lập vị trí con trỏ ở hàng đầu tiên lcd.print("Do am : "); } void sansang() { mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("Da san sang"); delay(500);

mySerial.write(26);

Serial.print("Da gui tin nhan\n"); }

{

delay(500);

while (Serial.available()) {

mySerial.write(Serial.read());

//Forward what Serial received to Software Serial Port }

while(mySerial.available()) {

Serial.write(mySerial.read());

//Forward what Software Serial received to Serial Port } } void maybomtat() { delay(500); mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("May bom da tat"); delay(500); mySerial.write(26); } void maybomloi() { delay(500); mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh

mySerial.print("He thong het nuoc"); delay(500); mySerial.write(26); } void maybombat() { delay(500); mySerial.println("AT+CMGS=\"+84357770321\""); delay(500);

mySerial.print("May bom da bat"); delay(500); mySerial.write(26); } void cambien() { sensors.requestTemperatures(); lcd.setCursor(0,0); lcd.print("Nhietdo: "); lcd.setCursor(9,0); nhietdo = sensors.getTempCByIndex(0); lcd.print(sensors.getTempCByIndex(0)); // vì 1 ic nên dùng 0 lcd.write(1); lcd.print("C"); for(int i=0;i<=9;i++)

//*Chúng ta sẽ tạo một hàm for để đọc 10 lần giá trị cảm biến,sau đó lấy giá trị trung bình để được giá trị chính xác nhất.*/

doc_cb += analogRead(cb); }

TBcb=doc_cb/10; //Tính giá trị trung bình int phantramao = map(TBcb, 0, 1023, 0, 100); //Chuyển giá trị Analog thành giá trị %

int phantramthuc = 100 - phantramao;

//Tính giá trị phần trăm thực, chuyển điện thế khơ thành ẩm doam = phantramthuc; lcd.setCursor(11, 1); lcd.print(phantramthuc); if (phantramthuc < 100) { lcd.setCursor(13, 1); lcd.print(' '); } else if (phantramthuc < 10) { lcd.setCursor(12, 1); lcd.print(' '); } lcd.print('%'); delay (500); doc_cb=0; } bool CheckRainSensor() {

Thiết kế chế tạo mơ hình hệ thống tưới rau thông minh } void CheckSMS() { if(mySerial.available()>0) { delay(100); while(mySerial.available()) { incomingByte = mySerial.read(); inputString += incomingByte; } delay(10); Serial.println(inputString); inputString.toUpperCase(); if (inputString.indexOf("KT") > -1) { delay(1000); Serial.println("Sending SMS..."); delay(500); mySerial.println("AT+CMGS=\"+84357770321\""); delay(500); mySerial.print("Nhiet do:"); mySerial.print(nhietdo, 1); mySerial.print(" degreeC"); mySerial.println(" ,"); mySerial.print("Do am:"); mySerial.print(doam, 1);

mySerial.print(" %"); delay(500); mySerial.write(26); Serial.println("Sent!"); } inputString = ""; delay(1000); } } void loop() { CheckRainSensor();///chú ý CheckSMS(); if(digitalRead(12)) if((millis()-time1)>10000)

if(!CheckRainSensor() && maybom) {

Error=1;

digitalWrite(12,0);

Serial.println("Da tat may bom"); maybom=0; maybomloi(); } cambien(); Serial.print("Nhiet do: "); Serial.print(nhietdo); Serial.print(" ");

Thiết kế chế tạo mơ hình hệ thống tưới rau thông minh

Serial.print("Do am: "); Serial.print(doam); Serial.print(" ");

Serial.print("May bom ");

if(digitalRead(12)) Serial.print("ON"); else Serial.print("OFF"); Serial.print(" ");

Serial.print("CB mua: ");

if(!digitalRead(6)) Serial.print("ON"); else Serial.println("OFF"); if(((nhietdo>24) || (doam<60)) && !Error && !maybom )

{

digitalWrite(12, 1); time1 = millis(); maybombat(); maybom=1;

Serial.println("Bat may bom, cho 10s"); }

if(digitalRead(12))

if(((nhietdo<20) || (doam>70)) && maybom ) {

digitalWrite(12, 0);

Serial.println("Dat do am, tat may"); maybom=0;

maybomtat(); }

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Kết luận

Sau thời gian nổ lực học tập, tìm hiểu dưới sự hướng dẫn của GVHD: Ths. Phạm Duy Dưởng, đồ án “ Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh” đã hồn thành đúng thời gian qui định, giải quyết được các yêu cầu đặt ra lúc ban đầu:

 Tìm hiểu về mơ-đun Sim800L.  Tìm hiểu về cảm biến mưa.  Tìm hiểu về cảm biến độ ẩm.  Tìm hiểu về cảm biến nhiệt độ.  Tìm hiểu về LCD.

 Thiết kế mạch in.

 Chương trình điều khiển.  Báo cáo.

 Mơ hình thực tế.  Ưu điểm của đề tài:

Đề tài hệ thống tưới rau thơng minh có khó nhiều ưu điểm và có thể nói đến 2 ưu điểm nổi trội nhất và được nhiều người quan tâm hiện nay đó là:

 Tiết kiệm được nguồn nước từ đó giúp bảo vệ được môi trường.

 Hạn chế được công sức của con người và tiết kiệm được thời gian cho con người. Ngồi ra cịn nâng cao được năng suất của vườn rau.

Ngồi ra hệ thống cịn có các ưu điểm khác như:  Mạch nhỏ gọn.

 Sóng điện thoại bao phủ khắp nơi nên có thể điều khiển ở bất kỳ đâu.  Có độ ổn định và độ tin cậy cao hơn các phương pháp điều khiển khác.  Có thể giám sát được hệ thống dễ dàng thông qua tin nhắn.

 Hạn chế

Thiết kế chế tạo mơ hình hệ thống tưới rau thông minh

 Những nơi khơng có sóng điện thoại thì mơ-đun sim khơng nhận được tín hiệu.  Chưa diệt được sâu bện và tự bón phân cho cây trồng.

 Thiết kế và chế tạo mơ hình nên các thiết bị vẫn chỉ ở mức là mơ hình nên chưa được thật sự tối ưu về đề tài.

 Khi hệ thống hết tiền thì sẽ khơng gửi được tin nhắn.  Hướng khắc phục các hạn chế:

 Đăng ký sử dụng các gói ưu đãi tin nhắn theo tháng của các nhà mạng như Viettel, Mobifone, Vinaphone … Từ đó giảm được chi phí nạp thẻ cào vào sim.

 Nên tìm hiểu và hồn chỉnh mơ hình để tối ưu nhất có thể và đưa vào thực tiễn.

Hướng phát triển của đề tài

- Mơ hình có thể được nâng cấp, tùy chỉnh và ứng dụng để xây dựng trong một hệ thống tưới rau lớn, tưới cây cảnh,…

- Có thể áp dụng vào hệ thống báo cháy và tự chữa cháy bằng cách kết hợp với các cảm biến khói và nhiệt độ.

- Có thể sử dụng cảm biến độ ẩm để đưa ra các cảnh báo ở những kho chứa lương thực, thuốc men khi độ ẩm vượt quá mức qui định.

- Thiết kế ngôi nhà thông minh với các thiết bị được điều khiển các thiết bị thông qua tin nhắn điện thoại.

- Có thể kết hợp giữa điều khiển qua mơ-đun Sim800L với điều khiển qua mạng wifi để có thể khắc phục được những nhược điểm của nhau hình thành một hệ thống hồn hảo.

- Có thể viết một app điện thoại để điều khiển hệ thống.

Do hạn chế về thời gian cũng như về kiến thức còn hạn chế nên khơng thể tránh được những thiếu sót trong q trình thực hiện đề tài. Rất mong nhận dược những ý kiến, góp ý và những đáng giá của quý thầy cô.

TÀI LIỆU THAM KHẢO [1] https://drive.google.com/file/d/16kSkAAFr1OXV4nZBRYLeDSrvt3f3DFn Y/view [6/21/2022 9:08 AM] [2] https://mualinhkien.vn/huong-dan-su-dung-module-sim800l-module-gsm- nhan-tin-va-goi-dien-gia-re [6/21/2022 9:11 AM] [3] https://www.youtube.com/ [6/21/2022 9:12 AM] [4] http://arduino.vn/bai-viet/588-software-serial-giao-tiep-giua-arduino-va- nhieu-mach-serial-khac-truyen-tai-trung-gian [6/21/2022 9:12 AM] [5] http://arduino.vn/ [6/21/2022 9:12 AM]

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế CHẾ tạo mô HÌNH hệ THỐNG tưới RAU THÔNG MINH (Trang 55 - 75)

Tải bản đầy đủ (PDF)

(75 trang)