Ứng dụng vi điều khiển thiết kế Module tự động tưới cây
Tóm tắt
Ứng dụng thiết bị phần cứng và phần mềm Arduino là lựa chọn hàng đầu trong lĩnh vực
thiết kế các thiết bị tự động hóa với xu hướng gọn nhẹ, kinh phí đầu tư thấp mang lại hiệu quả
cao. Trong giới hạn bài viết này, chúng tôi trình bày kết quả nghiên cứu thiết kế một module vi xử
lý, tự động điều khiển máy bơm nước tưới cây kiểng thông qua thiết bị Arduino Nano và cảm biến
độ ẩm đất. Khi môi trường bên trong vùng đất đang trồng cây xanh có độ ẩm đất thấp, nghĩa là
cây xanh bị thiếu nước, độ ẩm giảm vượt ngưỡng đã được ấn định, cảm biến độ ẩm đất cho điện
thế đầu ra ở mức cao, hiển thị trên LCD, mạch vi xử lý Arduino kích hoạt rơle ở trạng thái đóng
(mức 1), máy bơm nước được cấp điện nguồn và bắt đầu hoạt động. Khi cây được tưới đủ nước,
độ ẩm tăng cao, cảm biến cho ra điện thế thấp, tín hiệu đầu ra từ Arduino ở trạng thái thấp (mức
0) rơle chuyển sang trạng thái ngắt mạch điện, máy bơm ngừng hoạt động.
Tóm tắt nội dung tài liệu: Ứng dụng vi điều khiển thiết kế Module tự động tưới cây
Tạp chí Khoa học Đại học Thủ Dầu Một Số 3(34)-2017 85 ỨNG DỤNG VI ĐIỀU KHIỂN THIẾT KẾ MODULE TỰ ĐỘNG TƯỚI CÂY Nguyễn Thanh Tùng(1) (1)Trường Đại học Thủ Dầu Một Ngày nhận bài 3/3/2017; Ngày gửi phản biện 20/3/2017; Chấp nhận đăng 30/6/2017 Email: nttung@tdmu.edu.vn Tóm tắt Ứng dụng thiết bị phần cứng và phần mềm Arduino là lựa chọn hàng đầu trong lĩnh vực thiết kế các thiết bị tự động hóa với xu hướng gọn nhẹ, kinh phí đầu tư thấp mang lại hiệu quả cao. Trong giới hạn bài viết này, chúng tôi trình bày kết quả nghiên cứu thiết kế một module vi xử lý, tự động điều khiển máy bơm nước tưới cây kiểng thông qua thiết bị Arduino Nano và cảm biến độ ẩm đất. Khi môi trường bên trong vùng đất đang trồng cây xanh có độ ẩm đất thấp, nghĩa là cây xanh bị thiếu nước, độ ẩm giảm vượt ngưỡng đã được ấn định, cảm biến độ ẩm đất cho điện thế đầu ra ở mức cao, hiển thị trên LCD, mạch vi xử lý Arduino kích hoạt rơle ở trạng thái đóng (mức 1), máy bơm nước được cấp điện nguồn và bắt đầu hoạt động. Khi cây được tưới đủ nước, độ ẩm tăng cao, cảm biến cho ra điện thế thấp, tín hiệu đầu ra từ Arduino ở trạng thái thấp (mức 0) rơle chuyển sang trạng thái ngắt mạch điện, máy bơm ngừng hoạt động. Từ khóa: Tưới cây tự động, Cảm biến độ ẩm đất Abtract DESIGN MODULE AUTOMOTIVE PUMP WATER FOR PLANTS FROM APPLY ARDUINO EQUIPMENT Apply hardware and software Arduino Nano is the best choice in design of automotive equipment with a tendency to compact, low investment cost but that brings high effect. Within this article, the author presents the results of the design of a microprocessor module, which automotive controls water pumps for plants through Arduino Nano equipment and land humidity sensors. When the environment inside the soil is planted with low soil moisture, the trees are dehydrated, the humidity decreases beyond the set threshold, the humidity sensor for the high output voltage, the Arduino Nano microprocessor activates the relay in the closed state (level 1), the water pump is powered and starts operating. When the plants are watered enough, the humidity rises, the sensor outputs a low voltage, the output signal from the Arduino Nano microprocessor is in low state (level 0) the relay switches to the cut-off state, the pump stops working. 1. Tổng quan 1.1 Giới thiệu Cuộc cách mạng công nghiệp 4.0 tác động mạnh mẽ đến việc hình thành các dự án nghiên cứu, đầu tư và xây dựng nhằm phát triển nhiều lĩnh vực như: kỹ thuật, công nghiệp, nông nghiệp, xử lý tác động môi trường, chống biến đổi khí hậu, phát triển năng lượng xanh Nguyễn Thanh Tùng Ứng dụng vi điều khiển thiết kê modonle tự động tưới cây 86 Một trong những thành tố đó là việc phát triển công nghệ vi xử lý, tự động hóa. Vi xử lý là một khái niệm kỹ thuật không thể thiếu cho sự phát triển công nghiệp mang tính hiện đại, với những cái tên „„điện thoại thông minh‟‟, „„ngôi nhà thông minh‟‟, „„thành phố thông minh‟‟ Trong bài viết này, chúng tôi giới thiệu một thiết bị cơ bản và thông dụng với giá thành rẻ, phần mềm miễn phí đã và đang được các nhà nghiên cứu, giảng viên, sinh viên và học sinh trên thế giới sử dụng để chế tạo ra rất nhiều các ứng dụng vi xử lý có hiệu quả cao. 1.2 Thiết bị Arduino Nano Thiết bị Arduino là phần cứng vi xử lý có khả năng chạy độc lập khi được nạp code. Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng khác nhau, trong đề tài này tác giả sử dụng Arduino Nano cho thiết kế Module điểu khiển tưới cây. Do Arduino Nano có kích thước nhỏ gọn, cách sử dụng và sơ đồ nối chân cũng tương tự như các phiên bản khác của Arduino. Hình 1. Hình ảnh mạch Arduino Nano Arduino Nano ra đời nhằm đáp ứng nhu cầu thu gọn kích thước (Hình 1) nhưng vẫn giữ nguyên sức mạnh của Arduino với vi điều khiển ATmega328P – SMD, toàn bộ board mạch có khả năng cắm trực tiếp vào breadboard. Thông số kỹ thuật của Arduino Nano được tóm tắt trong bảng 1. Bảng 1. Thông số của thiết bị Arduino Nano Vi điều khiển ATmega328P Điện áp hoạt động 5V Điện áp vào khuyên dùng 7-12V Điện áp vào giới hạn 6-20V Digital I/O pin 14 (trong đó 6 pin có khả năng băm xung) PWM Digital I/O Pins 6 Analog Input Pins 6 Cường độ dòng điện trên mỗi I/O pin 20 mA Cường độ dòng điện trên mỗi 3.3V pin 50 mA Flash Memory 32 KB (ATmega328P); 0.5 KB được sử dụng bởi bootloader SRAM 2 KB (ATmega328P) EEPROM 1 KB (ATmega328P) Tốc độ 16 MHz Tạp chí Khoa học Đại học Thủ Dầu Một Số 3(34)-2017 87 Chiều dài 68,6 mm Chiều rộng 53,4 mm Trọng lượng 25 g Khác với Arduino Uno sử dụng cổng USB type B, Arduino Nano lại sử dụng một cổng nhỏ hơn có tên là Mini USB. Vì sử dụng cổng này nên kích thước board (về chiều cao) cũng giảm đi khá nhiều. 1.3 Phần mềm Arduino Môi trường phát triển tích hợp Arduino là một ứng dụng đa nền tảng được viết bằng Java, được dẫn xuất cho ngôn ngữ lập trình xử lý và các dự án lắp ráp. Nó được thiết kế để làm nhập môn lập trình cho các nhà lập trình và những người mới sử dụng khác không quen thuộc với phát triển phần mềm, bao gồm một trình soạn thảo mã với các tính năng như làm nổi bật cú pháp, khớp dấu ngặc khối chương trình, và thụt đầu dòng tự động, và cũng có khả năng biên dịch và tải lên các chương trình vào bo mạch với một nhấp chuột duy nhất. Một chương trình hoặc mã viết cho Arduino được gọi là "sketch". Chương trình Arduino được viết bằng C hoặc C++. Arduino đi kèm với một thư viện phần mềm được gọi là "Wiring" từ dự án lắp ráp ban đầu, cho hoạt động đầu vào/đầu ra phổ biến trở nên dễ dàng hơn nhiều. Người sử dụng chỉ cần định nghĩa hai hàm để thực hiện một chương trình điều hành theo chu kỳ: Setup(): hàm chạy một lần duy nhất vào lúc bắt đầu của một chương trình dùng để khởi tạo các thiết lập. Loop(): hàm được gọi lặp lại liên tục cho đến khi bo mạch được tắt đi. Khi bật điện bảng mạch Arduino, reset hay nạp chương trình mới, hàm setup() sẽ được gọi đến đầu tiên. Sau khi xử lý xong hàm setup(), Arduino sẽ nhảy đến hàm loop() và lặp vô hạn hàm này cho đến khi bạn tắt điện bo mạch Arduino. Arduino IDE sử dụng GNU toolchain và AVR libc để biên dịch chương trình, và sử dụng avrdude để tải lên các chương trình vào bo mạch chủ. Do nền tảng Arduino sử dụng vi điều khiển Atmel, môi trường phát triển của Atmel, AVR Studio hoặc Atmel Studio mới hơn, cũng có thể được sử dụng để phát triển phần mềm cho các Arduino. Hình 2. Giao diện của Arduino lúc khởi động Nguyễn Thanh Tùng Ứng dụng vi điều khiển thiết kê modonle tự động tưới cây 88 Hình 3. Hình ảnh giao diện Arduino khi viết code 1.4 Cảm biến đo độ ẩm đất Cảm biến độ ẩm đất, trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu ra sẽ là mức cao (5V), độ nhạy cao chúng ta có thể điều chỉnh được bằng biến trở. Phần đầu đo được cắm vào đất để phát hiện độ ẩm của đất, khi độ ẩm của đất đạt ngưỡng thiết lập, đầu ra DO sẽ chuyển trạng thái từ mức thấp lên mức cao. Nhờ thế, chúng ta có thể sử dụng Analog hoặc Digital của Arduino để đọc giá trị từ cảm biến. Khi module cảm biến độ ẩm phát hiện, khi đó sẽ có sự thay đổi điện áp ngay tại đầu vào của IC so sánh LM393. IC này nhận biết có sự thay đổi nó sẽ đưa ra một tín hiệu 0V để báo hiệu và thay đổi như thế nào sẽ được tính toán để đọc độ ẩm đất. Cảm biến độ ẩm đất có 4 chân: Vcc, GND, 2 ngõ ra là D0 (cho giá trị trả về mức logic 0 hoặc 1) và A0, chúng ta có thể dùng 1 trong 2 chân này. Sơ đồ nối chân của Cảm biến đo độ ẩm đất với Arduino Nano như bảng 2. Bảng 2. Sơ đồ nối chân của Arduino Nano với Cảm biến độ ẩm đất Cảm biến độ ẩm đất Arduino Nano Vcc 3.3V hay 5V GND GND D0 2 A0 A0 Tạp chí Khoa học Đại học Thủ Dầu Một Số 3(34)-2017 89 Hình 4. Sơ đồ mạch IC LM393 và cảm biến độ ẩm đất 1.5. Rơ-le (Relay) đóng ngắt mạch 1 kênh 5V Rơ-le là thiết bị đóng ngắt cơ bản, nó được sử dụng rất nhiều trong các thiết bị điện, điện tử phục vụ cuộc sống hàng ngày. Rơ-le bình thường gồm có 6 chân. Trong đó có 3 chân để kích, 3 chân còn lại nối với đồ dùng điện công suất cao. Ba chân dùng để kích gồm: chân cấp hiệu điện thế dương Vcc (5V), chân cấp điện thế âm GND, chân tín hiệu S, nhận tín hiệu đầu ra từ thiết bị Arduino Nano. Khi chân này có điện thế cao thì rơ-le được kích, ngược lại thì không. Ba chân còn lại nối với thiết bị điện công suất cao (máy bơm nước): COM - chân nối với 1 chân bất kỳ của thiết bị điện, nhưng tốt nhất nên mắc vào đây chân lửa (nóng) nếu dùng hiệu điện thế xoay chiều và cực dương nếu là hiệu điện một chiều; ON hoặc NO (thường mở) - chân này sẽ được nối với chân lửa (nóng) nếu dùng điện xoay chiều và cực dương của nguồn nếu dòng điện một chiều; OFF hoặc NC (thường đóng) - chân này bạn sẽ nối chân lạnh (trung hòa) nếu dùng điện xoay chiều và cực âm của nguồn nếu dùng điện một chiều. Thiết bị rơ-le trong đề tài này sử dụng có các thông số: điện áp nuôi DC 5V, tiêu thụ dòng khoảng 80mA, điện thế đóng ngắt tối đa: AC 250V-10A hoặc DC 30V-10A, kích thước 53mm (chiều dài), 28,3mm (chiều rộng); 19,3mm (cao). Hình 5. Sơ đồ mạch Rơ-le 1 kênh 5V Nguyễn Thanh Tùng Ứng dụng vi điều khiển thiết kê modonle tự động tưới cây 90 1.6. Màn hình hiển thị LCD Màn hình tinh thể lỏng hay LCD (Liquid crystal display) là loại thiết bị hiển thị cấu tạo bởi các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kính lọc phân cực. Chúng có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm năng lượng. Trong đề tài này, tác giả chọn thiết bị LCD cấu hình 16x2 (chiều ngang 16 ký tự, chiều dọc gồm 2 hàng), cấp điện 5VDC tích hợp với mạch I2C còn lại 4 chân ra gồm: Vcc, GND, SDA (chân A4), SCL (chân A5) được trình bày qua sơ đồ Hình 6. Hình 6. Sơ đồ nối chân giữa LCD-I2C và Arduino Nano 2. Thực hành 2.1. Nguyên lý hoạt động của Module Khi Cảm biết độ ẩm đất có độ ẩm thấp hơn ngưỡng định sẵn, chỉ số điện thế đầu ra của nó ở mức cao, đèn LED báo hiệu màu xanh sáng và kèm theo dòng tin “EMPTY WATER”, nghĩa là cây trồng đang thiếu nước, cần tưới cây. Khi đó mạch Arduino Nano nhận tín hiệu và cho kết quả sau khi xử lý là đầu ra kích hoạt Rờ le ở mức cao (mức 1), máy bơm nước hoạt động. Sau thời gian bơm tưới, cây nhận lượng nước tăng lên, chỉ số điện thế đầu ra từ cảm biến độ ẩm đất giảm, ngược lại độ ẩm tăng lên vượt ngưỡng mức cao, đèn LED màu đỏ sáng và kèm dòng tin “ENOUGH WATER”, nghĩa là cây đã đủ nước. Khi đó mạch Arduino cho kết quả mức thấp (mức 0) Rờ le ngắt mạch và máy bơm thôi hoạt động. Quy trình bơm tưới của Module sẽ lặp lại nếu như độ ẩm đất lại tiếp tục chuyển sang trạng thái vượt mức ngưỡng thấp. 2.2. Viết code điều khiển Module Để tiến hành viết code cho Arduino nói chung, chúng ta cần phải khai báo các yếu tố như: Cách nối chân nhập và xuất tính hiệu, các chân cấp điện, thư viện phù hợp cho cảm biến, biến analog hay digital, void setup, vòng lặp void loop, tốc độ truy xuất dữ liệu, cách hiển thị màn hình laptop hay LCD, tần suất lấy đọc dữ liệu, độ trễ (delay)Dưới đây là nội dung của code được viết để nạp cho Arduino Nano điều khiển các thiết bị: // Cách nối chân: // Cảm biến - Arduino nano, AO-A1, DO-D4, GND-âm, VCC-5V. // LCD-I2C – Arduino nano, SDL-A5, SDA-A4 // Khai báo các biến #include LiquidCrystal_I2C lcd (0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); Tạp chí Khoa học Đại học Thủ Dầu Một Số 3(34)-2017 91 #define den 11 // Chân đèn LED int CBDoAm=A0; //Nối chân ra của cảm biến đo độ ẩm với chân A1 const int D0 = 2; float Doamdat; //Biến độ ẩm đất void setup() { Serial.begin(9600); //Mở cổng Serial ở mức 9600 pinMode (D0, INPUT); pinMode (A0, INPUT); pinMode (12, OUTPUT); pinMode(den,OUTPUT); } void loop() { Doamdat=analogRead(CBDoAm); int value = analogRead(A0); // Ta sẽ đọc giá trị hiệu điện thế của cảm biến // Giá trị được số hóa thành 1 số nguyên có giá trị trong khoảng từ 0 đến 1023 delay(5000); lcd.begin(16,2); // bat buoc co lcd.print("VOLT INDEX:"); lcd.setCursor(13,0); lcd.print(value); if(Doamdat <350) { digitalWrite(den, HIGH); lcd.backlight(); lcd.setCursor(0,1); lcd.print("ENOUGH WATER"); digitalWrite (12, LOW); } else { digitalWrite (12, HIGH); digitalWrite (den, LOW); lcd.backlight(); lcd.setCursor(1,1); lcd.print ("EMPTY WATER"); } } 2.3. Sơ đồ khối liên kết các khối trong Module Theo hình dưới đây chúng ta có thể quan sát sơ đồ khối kết nối chân của thiết bị phần cứng (Arduino Nano) và các thiết bị khác trong Module. Trong khi đó mạch Arduino Nano Nguyễn Thanh Tùng Ứng dụng vi điều khiển thiết kê modonle tự động tưới cây 92 được cấp điện ngoài bằng một bộ nguồn chuyển đổi điện từ AC sang DC (Adaptor) có giá trị đầu ra 15VDC được cấp vào chân VIN. Các mạch khác như Cảm biến độ ẩm đất (Sensor), màn hình tinh thể lỏng (LCD) và Rờ le (Relay) đều dùng điện 5V từ mạch này. Hình 7. Sơ đồ khối nối giữa các thiết bị trong Module Mô tơ (Motor) bơm nước có thể dùng loại sử dụng dòng điện xoay chiều (AC) công suất lớn hay dòng điện một chiều (DC) công suất nhỏ tùy theo yêu cầu bơm tưới của khu vườn. Code được viết và nạp vào mạch vi xử lý Arduino Nano dựa vào hệ thống dây cáp qua ngỏ (USB) nối với máy vi tính (PC). 2.4. Quy trình hoạt động của Module tự động tưới cây Sau khi áp dụng các kỹ thuật lập trình và công đoạn viết code kết thúc, chúng ta cắm Board mạch Arduino Nano vào máy tính bằng cổng USB Mini. Mở Menu File, xem xét các chế độ tùy chọn kiểu board mạch Tools/Board/Arduino Nano và Processor: “ATmega 328”; chân Port (COM6) và upload, biên dịch phần code vừa viết. Nếu không có lỗi về code phần mềm sẽ báo (Done Compiling), nạp code vào mạch bằng lệnh nút Verify bên trái màn hình. Sau khi nạp code nếu quy trình được chấp nhận, các đèn LED trên mạch nhấp nháy trong 2 giây, mạch bắt đầu hoạt động độc lập, lúc này chúng ta có thể ngắt cổng USB Mini ra khỏi máy tính. Tuy nhiên, cần nhớ cấp nguồn thường xuyên và phù hợp điện thế cho các mạch Arduino Nano, mạch cảm biến thông qua ngỏ V-IN, mạch rơ-le và máy bơm nước được cấp điện riêng. Trong đề tài này chúng tôi sử dụng bơm phun sương công suất 30W, điện thế cung cấp là 24VDC, nguồn cung cấp là Adaptor AC/DC. Hai đầu của cảm biến độ ẩm đất (Hình 8) được cắm sâu trong đất, bên cạnh gốc cây đặt trong vùng trung tâm của khu vườn thực nghiệm. Khi trời nắng gắt, nước bốc hơi nhiều, cây khô nước dần và độ ẩm của đất giảm nhanh xung quanh vị trí đặt cảm biến đến khi hạ thấp hơn ngưỡng đã ấn định (350), màn hình LCD báo dòng Tạp chí Khoa học Đại học Thủ Dầu Một Số 3(34)-2017 93 “EMPTY WATER”, đèn LED màu xanh sáng lên, mạch Arduino xử lý tín hiệu và nó phát xung ra cao (mức 1) ở chân 13. Tín hiệu xung kích này được cấp cho chân IN của Rơ-le 5V làm cho nó chuyển sang trạng thái đóng, mạch nguồn máy bơm 24VDC được đóng lại, máy bơm được cấp điện và bắt đầu bơm nước tưới cho hệ thống cây xanh thông qua các béc phun sương trong khu thực nghiệm. Sau thời gian cây xanh được tưới nước, đất ướt dần, độ ẩm tăng dần xung quanh nơi đặt cảm biến và điện thế đầu ra ở chân D0 của cảm biến cũng dần giảm về mức thấp (mức 0) khi độ ẩm cao vượt ngưỡng cao đã ấn định, đèn LED tắt và màn hình LCD báo tin “ENOUGH WATER”, lúc này Rơ-le mất tín hiệu kích từ chân IN và nó chuyển sang trạng thái ngắt điện, máy bơm mất điện nguồn ngưng hoạt động, công việc tưới cây kết thúc. Cứ như thế quy trình sẽ lặp lại khi đất tiếp tục bị khô nước, độ ẩm thấp quá ngưỡng ấn định. Hình 8. Hình ảnh các thành phần của Module điều khiển 2.5. Kết quả thực nghiệm Qua quá trình viết code, lắp ráp phần cứng, nạp code và kiểm tra chạy thử nghiệm thực tế cho thấy thiết bị đã hoạt động độc lập đúng chức năng theo thiết kế (theo 2.1 và 2.4). Thiết bị có độ chính xác, độ nhạy cao khi thay đổi độ ẩm đất, độ ẩm thấp hơn 30% mạch tự động bơm nước, phun sương vào vùng thực nghiệm có chậu kiểng đang được cắm cảm biến. Sau khi bơm nước độ ẩm tăng lên vượt quá 70% máy bơm lại ngừng hoạt động. TÀI LIỆU THAM KHẢO [1] Nguyễn Đức Quý, Nguyễn Văn Dung (2006), Độ ẩm đất và tưới nước hợp lý cho cây trồng, NXB Lao động Xã hội. [2] Lê Phú Hiếu (2014), Giáo trình lập trình C ++ , Trường Đại học Mở Thành phố Hồ Chí Minh. [3] Phạm Văn Ất (2012), C++ và lập trình hướng đối tượng, NXB Khoa học và Kỹ thuật. [4] Maik Schmidt (2011), Arduino-A quisk Star Guide, The Pragmatic Bookshelf, USA. [5] [6]
File đính kèm:
- ung_dung_vi_dieu_khien_thiet_ke_module_tu_dong_tuoi_cay.pdf