- Khối cảm biến
Cảm biến độ ẩm đất:
Dựa vào yêu cầu thiết kế, nhóm chúng em cần một loại cảm biến có khả năng đo độ ẩm đất 4W49, cảm biến độ ẩm đất điện dung… Trong quá trình nghiên cứu các loại cảm biến thì nhóm em đã quyết định chọn cảm biến độ ẩm đất E2000115 với ưu điểm
Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh
nhỏ gọn, giá thành thấp và dễ sử dụng. Trong sơ đồ nguyên lý Hình 3.3, cảm biến độ ẩm đất kết nối chân tín hiệu vào A2 của Arduino Uno R3.
Hình 3.3 Mơ-đun cảm biến độ ẩm đất kết nối với Arduino Uno R3. Cảm biến mưa:
Dựa vào yêu cầu thiết kế, nhóm chúng em cần một loại cảm biến có khả năng phát hiện được hệ thống có cịn nước hay khơng. Và sau khi tìm hiểu thì chúng em quyết định chọn cảm biến mưa. Vì giá thành rẽ, nhỏ gọn và dễ sử dụng (xem Hình 3.4).
Hình 3.4: Cảm biến mưa kết nối với Arduino Uno R3. Cảm biến nhiệt độ:
Dựa vào yêu cầu thiết kế, nhóm chúng em cần một loại cảm biến có khả năng đo nhiệt độ mơi trường. Hiện nay trên thị trường có khá nhiều loại cảm biến như: Mô-đun cảm biến nhiệt độ DHT12, cảm biến nhiệt độ LM35 … Trong quá trình nghiên cứu các loại cảm biến thì nhóm đồ án chúng em đã quyết định chọn cảm biến nhiệt độ DS18B20 (xem Hình 3.5) với ưu điểm nhỏ gọn, giá thành thấp và dễ sử dụng. Trong sơ đồ nguyên lý (xem Hình 3.6), cảm biến nhiệt độ kết nối chân tín hiệu vào D9 của Arduino Uno R3.
Hình 3.5: Cảm biến nhiệt độ
Thiết kế chế tạo mơ hình hệ thống tưới rau thơng minh
- Khối hiển thị:
Dựa theo yêu cầu thiết kế, đề tài của chúng em cần một thiết bị có khả năng hiển thị được nhiệt độ, độ ẩm đất. Với u cầu đó thì chúng em quyết định sử dụng LCD 16x2 là lựa chọn tối ưu nhất vì có đủ số dịng u cầu và đã được thư viện hỗ trợ giao tiếp.
Trong sơ đồ nguyên lý (xem Hình 3.7) thì LCD được kết nối 2 chân SCL và SDA vào chân A4 và A5 của Arduino Uno R3 để truyền dữ liệu qua giao thức I2C.
Hình 3.7: LCD kết nối với Arduino Uno R3. - Khối chấp hành: - 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 tố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\"");