.7 LCD kết nối với ArduinoUno R3

Một phần của tài liệu THIẾT kế CHẾ tạo mô HÌNH hệ THỐNG tưới RAU THÔNG MINH (Trang 47)

- Khối chấp hành:

Sau khi nhận được tín hiệu từ Aruino truyền tới thì sẽ có một thiết bị chấp hành để đóng cắt dịng điện mà và giữ được an tồn cho thiết bị phần điều khiển tránh trường hợp xảy ra sự cố hoặc ngược lại. Với yêu cầu đó chúng em sẽ sử dụng rơ-le 12V (xem Hình 3.8) là lựa chọn tối ưu và hợp lý nhất với nhiều ưu điểm sẵn có như: nhỏ gọn, giá thành thấp, dễ sử dụng …

- Khối chuyển đổi:

Để cấp nguồn được cho mơ-đun Sim800L thì phải hạ áp cho mơ-đun bởi vì nguồn vào của mơ-đun Sim chỉ là 4.2V vì thế nên chúng em sẽ sử dụng mô-đun hạ áp LM2596 để cấp nguồn vào cho mơ-đun Sim (xem Hình 3.9).

Hình 3.9: Mơ-đun hạ áp LM2596 - Khối nguồn :

 Nguồn cấp cho Arduino Uno R3, Rơ-le 12VDC

 Nguồn cấp cho cảm biến nhiệt độ, độ ẩm và LCD lấy từ chân 5V Arduino  Nguồn cấp cho mô-đun Sim800L được cấp từ LM2596 với điện áp 4.2V/2A  Nguồn cấp cho động cơ bơm là 220VAC

3.3 Các phần trong hệ thống

3.3.1 Mạch in

Hình 3.10 là hình ảnh mạch in mà chúng em đã thiết kế và vẽ trên phần mềm Altium

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

3.3.2 Phần mạch điều khiển

- Nguyên lý hoạt động:

Mạch điều khiển nhận giá trị từ cảm biến độ ẩm, nhiệt độ (độ ẩm < 60 % và nhiệt độ > 240C) làm cho rơ-le đóng tiếp điểm cấp điện áp cho Contactor và máy bơm bật đồng thời gửi về 1 tin nhắn về điện thoại “May bom bat” (Khi máy bơm đã bật nhưng cảm biến mưa khơng có tín hiệu thì hệ thống sẽ gửi một tin nhắn về số điện thoại đã được thiết đặt là “He thong het nuoc” và tắt máy bơm sẽ tắt). Khi hệ thống đọc giá trị của cảm biến nhiệt độ và độ ẩm một lần nữa. Nếu độ ẩm > 70 % và nhiệt độ < 200C thì lúc này mạch điều khiển sẽ gửi tín hiệu đến rơ-le và ngắn điện Contactor không nhận được điện và máy bơm tắt đồng thời sẽ gửi về điện thoại một tin nhắn là “May bom tat”. Xem Hình 3.11 để hiểu rõ hơn về nguyên lý hoạt động của mạch

- Các linh kiện có trong mạch

 Nguồn : Dùng Apdapter hạ áp 220VAC – 12VDC-2A.  Mô-đun hạ áp LM2596 : hạ áp xuống 4.2V-2A.

 Mô-đun Sim800L : nơi gắn sim trực tiếp và điều khiển qua điện thoại.  Rơ-le 12V : Đóng cắt khi nhận tín hiệu điều khiển.

 Cảm biến mưa : Cảm biến nước từ máy bơm để đưa tín hiệu về Arduino.  ArduinoUno R3 : Bộ xử lý trung tâm. Nhận các tín hiệu từ Mơ-đun Sim800L

và các cảm biến để xử lý và truyền tín hiệu đi để điều khiển Rơ-le.

3.3.3 Phần mạch động lực

Hình 3.12: Phần động lực

Nguyên lý hoạt động: Khi cấp nguồn trong tủ điện điều khiển bằng giá trị điện áp định

mức của Contactor vào hai đầu của cuộn dây quấn trên phần lõi từ cố định, thì lực từ tạo ra hút phần lõi từ di động hình thành mạch kín. Lúc này máy bơm sẽ hoạt động (xem Hình 3.12).

3.3.4 Mạch hồn chỉnh

Hình 3.13: Sơ đồ hồn chỉnh - Nguyên Lý hoạt động của Hình 3.13:

Mơ hình được khởi động và vận hành như sau:

Đầu tiên ta cấp nguồn cho hệ thống, hệ thống sẽ sử dụng 2 nguồn điện đó là: nguồn 220V AC được lấy từ nguồn điện lưới để cấp điện cho mạch động lực. Nguồn 12V DC được lấy từ Apdapter để cấp nguồn cho mạch điều khiển. Sau khi ta đã cấp nguồn vào cho mạch điều khiển thì ta sẽ chờ 1 khoảng thời gian ngắn để hệ thống khởi động. Khi mạch điều khiển đã khởi động xong thì lúc này LCD sẽ hiển thị giá trị nhiệt độ và độ

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

ẩm mà các cảm biến đọc được. Đồng thời, mô-đun Sim800L cũng sẽ gửi một tin nhắn với nội dung “Da san sang”.

Để chọn chế độ tự động và chế độ bằng tay thì ta sẽ sử dụng cơng tắc 3 vị trị đã được nhóm thiết lập sẵn. Khi chọn chế độ tự động thì mạch điều khiển đọc các giá trị cảm biển của cảm biến nhiệt độ và độ ẩm. Nếu nhiệt độ > 24°C hoặc độ ẩm < 60%, rơ- le sẽ đóng tiếp điểm cấp điện cho Contactor và máy bơm sẽ được bật. Khi máy bơm đã bật nhưng cảm biến mưa lại khơng tác động thì lúc này mạch điều khiển sẽ nhắn về số điện thoại đã được thiệt đặt sẵn với nội dung là “He thong het nuoc” và máy bơm sẽ tắt và dừng hệ thống. Lúc này nếu muốn hệ thống hoạt động lại cần bổ sung thêm nước và khởi động lại hệ thống một lần nữa. Hệ thống sẽ tắt máy bơm khi độ ẩm > 70% hoặc nhiệt độ < 20°C khi đạt được một trong hai yêu cầu trên thì mạch điều khiển sẽ điều rơ- le và làm hở mạch từ đó ngắt điện Contactor và máy bơm sẽ tắt. Nếu chưa đạt được điều kiện (độ ẩm > 70% hoặc nhiệt độ < 20°C) thì hệ thống sẽ tiếp tục bơm nước. Nếu đã thỏa mãn điều kiện rồi thì máy bơm mới dừng. Và khi máy bơm tắt thì sẽ gửi về cho chúng ta một tin nhắn với nội dung “may bom tat”

Khi mạch điều khiển gặp sự cố, chúng ta có thể điều khiển mạch động lực bằng cách xoay cơng tắc 3 vị trí sang chọn chế độ bằng tay. Lúc này máy bơm sẽ bơm nước cho đến khi ta tắt thì máy bơm mới dừng (xem Hình 3.13).

3.4 Hình ảnh sản phẩm thực tế

3.4.1 Mạch điều khiển

- 1 Arduino. - 1 Mô-đun Sim800L. - 1 Mô-đun hạ áp LM2596. - 1 Cảm biến độ ẩm đất - 1 Cảm biến nhiệt độ - 1 Cảm biến mưa - 1 Rơ-le 3.4.2 Mạch động lực

Những linh kiện có trong mạch điều khiển ở Hình 3.15 gồm: - 1 Contactor

- 1 Aptomat

Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh 3.4.3 Mạch tổng quát Hình 3.16: Mạch tổng quát 3.4.4 Mơ hình thực tế Hình 3.16 là mơ hình thực tế mà chúng em đã hồn thành. Hình 3.17: Mơ hình thực tế

Chương 4: LẬP TRÌNH ĐIỀU KHIỂN

4.1 Quy trình cơng nghệ

Đầu tiên ta cấp nguồn cho hệ thống, hệ thống sẽ sử dụng 2 nguồn điện đó là: nguồn 220V AC được lấy từ nguồn điện lưới để cấp điện cho mạch động lực. Và nguồn 12V DC được lấy từ Apdapter để cấp nguồn cho mạch điều khiển. Sau khi ta đã cấp nguồn vào cho mạch điều khiển thì ta sẽ chờ 1 khoảng thời gian ngắn để mạch điều khiển hoạt động. Khi mạch điều khiển đã khởi động xong thì lúc này LCD sẽ hiển thị nhiệt độ cũng như độ ẩm mà các cảm biển đọc được. Đồng thời lúc này mô-đun Sim800L sẽ gửi một tin nhắn với nội dung là “Da san sang”.

Để bắt đầu chọn chế độ tự động và chế độ bằng tay thì ta sẽ sử dụng cơng tắc 3 vị trị mà chúng em đã thiết lập sẵn. Khi chọn chế độ tự động thì mạch điều khiển đọc các giá trị cảm biển của cảm biến nhiệt độ và độ ẩm. Nếu nhiệt độ > 24°C hoặc độ ẩm < 60% làm rơ-le đóng tiếp điểm cấp điện cho Contactor và máy bơm sẽ được bật. Khi máy bơm đã bật nhưng cảm biến mưa lại khơng tác động thì lúc này mạch điều khiển sẽ nhắn về số điện thoại đã được thiệt đặt sẵn với nội dung là “He thong het nuoc” và máy bơm sẽ tắt. Hệ thống sẽ tắt máy bơm khi độ ẩm > 70% hoặc nhiệt độ < 20°C, sau khi đạt được một trong hai điều kiện trên thì mạch điều khiển sẽ điều rơ-le và làm hở mạch từ đó ngắt điện Contactor và máy bơm sẽ tắt. Nếu chưa đạt được điều kiện (độ ẩm > 70% hoặc nhiệt độ < 20°C) thì hệ thống sẽ tiếp tục bơm nước. Nếu đã thỏa mãn điều kiện rồi thì máy bơm mới dừng. Và khi máy bơm tắt thì sẽ gửi về cho chúng ta một tin nhắn với nội dung “may bom tat”

Trong trường hợp mạch điều khiển gặp sự cố thì chúng ta vẫn hồn tồn có thể điều khiển hệ thống bằng chế độ bằng tay. Khi đã chọn chế độ điều khiển bằng tay thì máy bơm sẽ bật cho đến khi nào ta xoay cơng tắc vào vị trí chính giữa thì máy bơm sẽ tắt

4.2 Lưu đồ thuật toán

Khi hệ thống đã được cấp điện thì lúc này mơ-đun sẽ khởi tạo và đồng thời về với số điện thoại đã được thiết lập sẵn với nội dung “Da san sang”. Sau đó mạch điều khiển sẽ đọc các giá trị được trả về của các cảm biến như: cảm biến độ ẩm và cảm biến nhiệt độ. Sau đó, các giá trị này sẽ hiển thị lên LCD. Ngồi cách nhìn lên LCD để lấy được thơng tin của độ ẩm và nhiệt độ của hệ thống thì chúng ta cịn cách đó là chúng ta sẽ gửi một tin nhắn với số điện thoại đã thiết lập với cú pháp là “KT” thì ngay lập tức hệ thống sẽ trả về cho chúng ta thông tin về nhiệt độ và độ ẩm hiện tại của hệ thống. Sau khi hệ

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

thống đã hoạt động thì hệ thống sẽ kiểm tra điều khiển để máy bơm được bật đó là nhiệt độ > 240C hoặc là độ ẩm < 60%. Nếu sai thì hệ thống sẽ đi lại phần đọc giá trị cảm biến. Nếu như máy bơm đã được bật nhưng mà cảm biến mưa không được tác động thì lúc này hệ thống đã hết nước và mô-đun Sim800L sẽ gửi về tin nhắn với nội dung là “He thong het nuoc” và “May bom tat”. Cịn nếu mà cảm biến mưa được tác động thì máy bơm sẽ dừng khi đạt được một trong hai điều kiện đó là: nhiệt độ dưới 200C và độ ẩm đạt trên 70% thì máy bơm sẽ tắt (xem Hình 4.1)

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);

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(" ");

Một phần của tài liệu THIẾT kế CHẾ tạo mô HÌNH hệ THỐNG tưới RAU THÔNG MINH (Trang 47)

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

(75 trang)