QUAN ĐỀ TÀI
TÌM HIỂU VỀ CẤU TRÚC ARDUINO,CÁC THIẾT BỊ
Giới thiệu về Arduino Uno R3
1 Giới thiệu về Arduino a.Arduino là gì
Arduino là nền tảng mã nguồn mở lý tưởng cho việc phát triển các dự án điện tử Nó bao gồm bảng mạch lập trình (vi điều khiển) và phần mềm IDE, cho phép người dùng lập trình và tải mã máy tính lên bo mạch một cách dễ dàng.
Arduino đã trở thành lựa chọn phổ biến cho hàng nghìn dự án nhờ tính đơn giản và dễ tiếp cận Phần mềm của Arduino thân thiện với người mới bắt đầu, nhưng vẫn đủ linh hoạt cho những người dùng có kinh nghiệm Khác với nhiều bo mạch lập trình trước đây, Arduino cho phép tải mã mới thông qua cáp USB mà không cần phần cứng riêng biệt.
Arduino IDE sử dụng phiên bản đơn giản của C++, giúp việc học lập trình dễ dàng hơn b.Các phiên bản arduino
Hiện nay, có nhiều phiên bản Arduino được thiết kế để phục vụ cho các mục đích khác nhau, phù hợp với nhu cầu của người dùng Arduino Nano nổi bật với tính nhỏ gọn và tiện dụng, trong khi Arduino Mega 2560 thường được lựa chọn cho các dự án phức tạp cần nhiều chân I/O Tuy nhiên, phiên bản phổ biến nhất là Arduino UNO R3, được ưa chuộng nhờ sự cân bằng giữa hiệu suất và tính năng.
Hình 2.0: Một số loại arduino
Arduino UNO R3 là một bo mạch vi điều khiển phổ biến trong dòng sản phẩm Arduino, được phát hành vào năm 2011 và là phiên bản mới nhất thứ ba của bảng Arduino.
8 phép các nhà thiết kế kiểm soát và điều khiển các thiết bị mạch điện tử ngoại vi một cách trực quan c.Nguyên lý hoạt động
Arduino Uno R3 được kết nối trực tiếp với máy tính thông qua USB để giao tiếp với phần mềm lập trình IDE, tương thích với Windows, MAC hoặc Linux
Hệ điều hành Windows được ưa chuộng hơn cho việc sử dụng các ngôn ngữ lập trình như C và C++ trong môi trường phát triển tích hợp (IDE) Khi kết nối thành công, mạch sẽ được kích hoạt và bắt đầu hoạt động.
3 Cấu trúc và thông số Arduino UNO R3 a.Cấu trúc :
ATmega328 Microcontroller là vi điều khiển thuộc họ megaAVR, do hãng
ICSP, viết tắt của In Circuit Serial Programming, là chân lập trình nối tiếp giúp lập trình viên sử dụng các phương thức có sẵn trong firmware của Arduino.
Power LED Indicator báo nguồn của Arduino Đèn sáng thì có nguồn, đèn tắt thì mất nguồn
Digital I/O pins là những chân có giá trị nhị phân: HIGH (1) hoặc LOW
(0) Có các chân từ D0 đến D13 Một số chân có thể xuất xung PWM là
TX and RX LED’s báo có luồng dữ liệu truyền (Transmit – TX) và nhận
(Receive-RX) của Arduino qua cổng nối tiếp (Serial) với các thiết bị khác
AREF (Analog Reference) pin là chân cấp điện áp tham chiếu từ bên ngoài cho Arduino
Reset button để reset lại board mạch Arduino
USB cho phép kết nối với máy tính, thường dùng nạp mã code từ máy tính sang board mạch Arduino
Crystal Oscillator là thạch anh, có tần số 16MHz
Voltage Regulator là mạch ổn áp chuyển đổi nguồn vào thành 5V cấp cho
GND là chân ground, có hiệu điện thế 0V
Vin là nguồn đầu vào của board mạch Arduino
Analog Pins là các chân xử lý tín hiệu Analog khi kết nối với các thiết bị khác Có các chân được đánh số từ A0 đến A5
Power Button kết nối với nguồn cấp cho Arduino b.Thông số của Arduino UNO R3
Bước 1: Mở thư mục vừa giải nén
Click chuột phải vào File Setup chọn Run As Administrator
Bước 2: Tại cửa sổ:MathWorks Installer Click chuột chọn: Use a File Install Key Click chuột chọn:Next
Bước3: Tại cửa sổ License Agreement
- Click chọn:Yes - Click chọn:Next
Bước 4: Mở thư mục Crack Mở file Key_Matlab_2018a
Bước 5: Dán đoạn mã key vào khung I have the File
Installation - Chọn: Next để tiếp tục cài đặt
Bước 6: Tại cửa sổ Folder Selection
- Chọn Browse để chọn thư mục lưu cài đặt Matlab R2018a
* Thường để mặc định như hình * - Chọn: Next
- Click chuột vào ô nhỏ để chọn những Product cần cài đặt (Khuyến nghị cài hết)
Bước 8: Tại cửa sổ Installation Options - Chọn vào ô
Bước 9: Tại cửa sổ Confirmation - Chọn: Install -
Lưu ý: Cài đặt Matlab đã hoàn tất, nhưng cần phải crack để tận hưởng đầy đủ tính năng Tuy nhiên, do vấn đề bản quyền, chúng tôi không thể đưa phần crack vào báo cáo.
5 Cách kết nối Arduino vào Matlab
Bước 1: Truy cập vào https://www.mathworks.com/
Bước 2: Vào Thanh Search Support tìm Matlab Support Package for Arduino
Bước 3: Tải thư viện Matlab Support Package for Arduino Hardware/ Simulink
Support Package for Arduino Hardware
Bước 4: Mở Matlab và điều hướng đến file tải xuống trong phần Current Folder Nhấn chuột vào file đã tải về, sau đó làm theo hướng dẫn trên màn hình và nhấn Next cho đến khi hiển thị Finish để hoàn tất quá trình cài đặt Lưu ý rằng cần kết nối Arduino với máy tính để việc thêm thư viện diễn ra thành công.
Khi đã cài đặt xong thì ở phần Command windows ta gõ Arduino thì sẽ hiển thị thông tin của mạch:
6 Cách sử dụng GUI trong Matlab
Tại cửa sổ Command Window hãy tiến hành gõ lệnh dưới đây và nhấn Enter
Lập tức cửa sổ GUIDE Quick Start xuất hiện nên như hình phía dưới:
Tại tab Create New GUI thì cho phép bạn 4 sự lựa chọn sau:
- Blank GUI (Default): Là bạn lập trình giao diện trống, chưa có thứ gì cả
When starting to learn about GUI development, it is advisable to choose the Blank GUI (Default) option, as it provides a basic interface without any pre-defined elements Once you gain more knowledge and experience, you can explore other templates such as GUI with Uicontrols, GUI with Axes and Menu, and Modal Question Dialog, which offer more advanced features and layouts.
- Tab Open Existing GUI là nơi bạn có thể mở các GUI và bạn đã làm và lưu trước đó, file này có đuôi là fig
Nút Push Button cho phép bạn thực hiện một công việc khi nhấn chuột vào Để thay đổi tên, màu sắc và thuộc tính của công cụ này, bạn chỉ cần nhấp đúp chuột vào nó, và một cửa sổ mới có tên là Inspector sẽ xuất hiện.
Cửa sổ Inspector cho phép bạn tùy chỉnh các thuộc tính của đối tượng Tool, bao gồm màu sắc và kích thước chữ theo sở thích cá nhân Trường String dùng để hiển thị tên mà bạn mong muốn trên giao diện người dùng (GUI), giúp bạn dễ dàng nhận diện.
Ví dụ trên đó là “Nhập Tên tài khoản”, nó không ảnh hưởng đến trương trình (Code) mà bạn thực hiện
Chức năng của công cụ này cho phép bạn thay đổi đối tượng thành một đối tượng khác mà bạn mong muốn, chẳng hạn như chuyển đổi từ Static sang một dạng khác.
Text thành Push Button chẳng hạn
Tag đóng vai trò là định danh cho công cụ, cho phép bạn gọi và xử lý các chức năng trong lập trình Bạn có thể thay đổi tên tag nhưng cần đảm bảo không trùng với tên của các công cụ khác, vì tên phải duy nhất để tránh lỗi chương trình không nhận diện được công cụ nào Sau khi thực hiện thay đổi, chỉ cần tắt Inspector, chương trình sẽ tự động lưu lại các thiết lập đã thay đổi.
Sau khi ấn Run thì m.file sẽ hiện ra:
Sau đó tiến hành viết code trên m.file để điều khiển mô hình
Module Relay 5V 1 Kênh được dùng như một công tắc điện Nó dùng để điều khiển các thiết bị công suất lớn ( đèn, động cơ, …)
Module Relay 5V 1 Kênh là thiết bị có 1 rơ le hoạt động với điện áp 5VDC hoặc 12VDC, có khả năng chịu đựng hiệu điện thế lên đến 250VAC và dòng điện 10A Sản phẩm được thiết kế chắc chắn và có khả năng cách điện tốt, đảm bảo an toàn cho các ứng dụng điện.
+ Sử dụng điện áp nuôi DC 12V hay 5V DC.
Relay mỗi Relay tiêu thụ dòng khoảng 80mA
Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A
Có đèn báo đóng ngắt trên mỗi Relay
Có thể chọn mức tín hiệu kích 0 hoặc 1 qua jumper
Kích thước: 1.97 in x 1.02 in x 0.75 in (5.0 cm x 2.6 cm x 1.9 cm)
Khi dòng điện chạy qua cuộn dây, nam châm điện được kích hoạt, tạo ra từ trường thu hút tiếp điểm và đóng mạch Khi tắt nguồn, lò xo lắp trước tiếp điểm kéo nó trở lại vị trí ban đầu, tạo ra trạng thái hở mạch.
Làm các dự án nhà thông minh, vườn thông minh, cửa tự động Thiết kế nhiều mạch điện tử khác
Sơ đồ kết nối chân:
Hình 2.3 Sơ đồ kết nối chân giữa relay & Arduino
THIẾT KẾ, TÍNH CHỌN THIẾT BỊ ĐI KÈM YÊU CẦU TẢI CỦA HỆ THỐNG
Tính chọn động cơ bơm
1 Béc phun sương và lưu lượng tưới
Hệ thống tưới vườn cây trong nhà sử dụng 2 béc bơm phun sương có thông số như sau:
+ Lưu lượng nước 13-35 ml/phút = 0,8-2L/h
+Áp lực phun 20 – 70(kg/cm 3 )
+Đường kính lỗ phun : 0,1 mm
Chọn lưu lượng nước trung bình của béc là 2(lít/h) =0.002 m 3 /h = 0.00055(l/s)/béc/0.3m 2
Ta có lưu lượng tưới của hệ thống (Q)
= Số béc bơm * Lưu lượng mỗi béc
Diện tích đất tưới là :
2 Dựa vào lưu lượng nước và cột áp để tính chọn động cơ bơm a.Khái niệm:
Cột áp của máy bơm là chiều cao tối đa mà bơm có thể đẩy nước lên, phụ thuộc vào công suất và thiết kế của máy Đầu bơm lớn hơn sẽ tạo ra áp suất cao hơn, vì vậy người dùng cần chọn loại bơm có cột áp phù hợp với nhu cầu và mục đích sử dụng của mình.
Ta có công thức tính cột áp: H= H1 + H2 +H3
H1: Áp lực nước từ vị trí đặt bơm đến nơi xa nhất của hệ
H2: Cột áp phun nước tại đầu ra
Hình 3.2: Minh họa vị trí bơm
Có hệ số tỷ lệ: 1m đẩy cao = 5m ngang = 1:5
Trong đó : A Sức cản ma sát từ ống : 0.0003395
Q: Lưu lượng của hệ thống: 0.00396 (m 3 /h)
Dựa vào thông số cột áp và lưu lượng bơm của hệ thống tưới đã được tính toán, chúng ta có thể lựa chọn loại bơm mini 12v R385 với các thông số kỹ thuật phù hợp.
Công thức tính tốc độ định mức của động cơ:
- Ta biểu diễn tính toán ở bảng sau: t ω(t)
Bảng 3.1 Tốc độ mong muốn theo thời gian bơm tưới
Bảng 3.2 Tốc độ mong muốn theo thời gian bơm cấp
Tốc độ định mức 10000 vòng/phút
Khối lượng 100g Đường kính cánh khuấy 8mm
Lương lượng tối đa 1~2L/phút
+ Từ 10 đến 11: tốc độ quay của động cơ giảm về 𝜔 𝒎 = 0 rad/s
+ Từ 11 đến 12s: động cơ bơm cấp, độ lớn tốc độ quay của tăng dần lên
+ Từ 12s đến 19s: động cơ hoạt động ổn định với độ lớn tốc độ quay
+ Từ 19 đến 20: tốc độ quay của động cơ giảm về 𝜔 𝑚 = 0 rad/s và dừng
Áp dụng định luật II Newton để đưa ra phương trình cân bằng của hệ:
- Theo định luật II Newton ta có:
Mô men yêu cầu để quay trục rotor của động cơ được ký hiệu là 𝑑𝑡 Hiện tại, do chưa chọn động cơ, giá trị này sẽ được tạm thời bỏ qua Sau khi lựa chọn động cơ, chúng ta sẽ kiểm nghiệm lại Để thuận lợi cho việc tính toán, ngoại lực fL cũng sẽ được bỏ qua Công thức sơ bộ cho momen điện từ của động cơ được xác định như sau:
Với r=8mm=0.008m: bán kính của cánh quạt
M=0.1kg: Khối lượng của động cơ
- Lúc này ta tính toán mô men điện từ cần cung cấp để kéo tải trong từng giai đoạn như bảng sau:
Bảng 3.3 Momen điện từ của bơm tưới theo thời gian
Bảng 3.5 Momen điện từ của bơm cấp theo thời gian
- Từ các kết quả tính toán của mô men điện từ ta tính được công suất tức thời cần đáp ứng của tải thông qua biểu thức:
- Ta biểu diễn kết quả tính toán ở Bảng 3.6:
Bảng 3.6.Kết quả tính toán t(s) 𝑇𝑒𝑚
- Công suất đẳng trị Pdtbomtuoi :
- Công suất đẳng trị Pdtbomcap :
Các trạng thái hoạt động của động cơ:
3 Chọn phương án khởi động động cơ
Khởi động mềm là phương pháp sử dụng bộ biên đổi điện tử để điều chỉnh điện áp phần ứng Va của động cơ, tăng dần từ giá trị ban đầu Điện áp phần ứng được lập trình cho phép điều chỉnh theo quy luật tuyến tính hoặc phi tuyến, từ một giá trị xác định đến điện áp định mức.
Hình 3.4 Đồ thị mô tả khởi động mềm
4 Chọn phương pháp hãm dừng cho động cơ
Hãm động năng là quá trình mà động cơ hoạt động như một máy phát, trong đó năng lượng cơ học tích lũy từ trước được chuyển đổi thành điện năng, tạo ra mômen hãm.
Ta xét trường hợp hãm động năng kích từ độc lập:
Để thực hiện hãm động năng kích từ độc lập khi động cơ đang quay, ta cần ngắt kết nối phần ứng của động cơ khỏi lưới điện một chiều và kết nối với một điện trở hãm, trong khi mạch kích từ vẫn được giữ kết nối với nguồn như trước.
- Tại thời điểm ban đầu, tốc độ động cơ vẫn có giá trị 𝜔 ℎđ nên:
Hình 3.5.Sơ đồ mạch điện và đồ thị đặc tính cơ - điện của hãm động năng
Khi hãm động năng kích từ độc lập, việc tiêu thụ năng lượng từ lưới sẽ giảm thiểu Năng lượng chủ yếu được tạo ra từ động năng của động cơ, được tích lũy trong quá trình hoạt động.
5 Chọn phương pháp điều khiển tốc độ động cơ
Mô hình đã ứng dụng xung PWM để điều chỉnh tốc độ của động cơ bơm
Phương pháp điều xung PWM (Pulse Width Modulation) là kỹ thuật điều chỉnh điện áp đầu ra cho tải Cụ thể, phương pháp này điều chế điện áp bằng cách thay đổi độ rộng của chuỗi xung vuông, từ đó ảnh hưởng đến điện áp đầu ra.
PWM là phương pháp điều chế độ rộng xung, trong đó các tín hiệu PWM có cùng tần số nhưng khác nhau về độ rộng của sườn dương và sườn âm Ứng dụng của PWM rất đa dạng, đặc biệt trong việc điều khiển động cơ và các bộ xung áp, điều áp PWM không chỉ giúp điều chỉnh tốc độ động cơ mà còn đảm bảo sự ổn định trong quá trình hoạt động của nó.
PWM là công nghệ quan trọng trong các thiết bị điện tử, được sử dụng rộng rãi để điều khiển động cơ và ổn định tốc độ Trong lĩnh vực Robocon, PWM đóng vai trò then chốt trong việc điều khiển động cơ Một ứng dụng cụ thể của PWM là trong việc điều khiển tốc độ motor bơm thông qua phần mềm Matlab.
Cú pháp điều chế độ rộng xung: writePWMVoltage(mypi, pinNumber, voltage)
Code phần chỉnh tốc độ guide Matlab:
0global a; slider = get(hObject,'Value');
TOCDOBOM1 = slider*5; set(handles.edit1,'string',num2str(TOCDOBOM1 )); writePWMVoltage(a,'D9',TOCDOBOM1 ); guidata(hObject, handles);
Hình 4.1 Sơ đồ khối hệ thống
Khi hệ thống bắt đầu hoạt động, các cảm biến ánh sáng, nhiệt độ và độ ẩm đất sẽ thu thập dữ liệu và gửi về khối xử lý dữ liệu trung tâm để phân tích.
Khi độ ẩm dưới 50% hoặc nhiệt độ vượt quá 36°C, hệ thống sẽ tự động kích hoạt bơm tưới trong 10 giây, sau đó bơm nước từ nguồn bên ngoài trong 7 giây để cung cấp nước cho hồ cá.
+ Cảm biến ánh sáng sẽ gửi dữ liệu về khối nếu ánh sáng không đáp ứng hệ thống sẽ bật đèn
Trong trường hợp 2, hệ thống điều khiển qua Matlab Guide cho phép bật tắt bơm tưới theo tùy chọn, đồng thời có khả năng điều chỉnh lưu lượng từng bơm Hệ thống cũng giám sát nhiệt độ môi trường và tự động kích hoạt chế độ tưới làm mát khi nhiệt độ vượt quá 36 độ C.
Hình 4.2 Lưu đồ thuật toán hệ thống
Hình 4.3 Sơ đồ kết nối phần cứng với arduino b.Code arduino
This Arduino code initializes various components for a project involving light and soil moisture sensors It defines pins for a light sensor connected to digital pin 2 and analog pin A1, a soil moisture sensor on analog pin A0, and a relay on pin 5 Additionally, it sets up a DHT11 temperature and humidity sensor, specifying its output pin as digital pin 6 This configuration allows for effective monitoring and control of environmental conditions.
//const int DHTTYPE = DHT22; // DHT 22
//const int DHTTYPE = DHT21; // DHT 21
DHT dht(DHTPIN, DHTTYPE); //Khai báo thư viện chân cảm biến và kiểu cảm biến
// 2dco int enA = 9; int in1 = 8; int in2 = 7;
// Kết nối động cơ B int enB = 10; int in3 = 12; int in4 = 11; void setup(){
Serial.begin(9600); pinMode(cambien, INPUT); pinMode(LED, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
//code do am dat dieu khien bơm
The code initializes the serial communication at 9600 baud rate and configures the sensor pin as an input while setting the relay pin as an output It starts by setting the relay to a LOW state and configures the sensor pin with an internal pull-up resistor Additionally, it initializes the LCD display, activates the backlight, and sets the cursor position to the beginning, displaying the message "HETHONGTRONGCAY" for three seconds.
44 lcd.print("AH:"); //HUMIDITY ĐỌ ẨM lcd.setCursor(0,1); lcd.print("TEMP:"); //temperature nhiệt độ
// Thiết lập lập các chân điều khiển động cơ là OUTPUT pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);
{ //code hienthidoadat dieu khien dong co int doAm = analogRead (sensorPin); int phantram = map(doAm, 0 ,1023,1,100); int phantramthuc = 100 - phantram; int digital = digitalRead (sensorPin); //Đọc tín hiệu digital ở chân cảm biến
Serial print("Digital: "); Serial println(digital); //In ra màn hình delay (500); if ( digital == 0 ) //Nếu cảm biến ở mức 0 (mức thấp; có nước) { digitalWrite (relay, LOW); // Thì relay OFF, không bơm
} else // Ngược lại, nếu cảm biến ở mức 1 (mức cao, không có nước)
{ digitalWrite (relay, HIGH); // Thì relay ON, bơm nước
} lcd.setCursor(10, 0); lcd.print("SM:"); lcd.print(phantramthuc); lcd.setCursor(15,0); lcd.print("%"); delay(200);
//code hienthidoadat dieu khien dong co
// code phan hien thi doamnhietdo
{float doam = dht.readHumidity(); //Đọc độ ẩm float doC = dht.readTemperature(true); //Đọc nhiệt độ C if (isnan(doam) || isnan(doC))
Serial.println("Không có giá trị trả về từ cảm biến DHT"); return;
THIẾT KẾ HỆ THỐNG GIÁM SÁT CÂY TRỒNG
Nguyên lý hoạt động
Khi hệ thống hoạt động, các cảm biến ánh sáng, nhiệt độ và độ ẩm đất sẽ thu thập dữ liệu và truyền về khối xử lý dữ liệu trung tâm.
Khi độ ẩm dưới 50% hoặc nhiệt độ vượt quá 36°C, hệ thống sẽ tự động kích hoạt bơm tưới trong 10 giây, sau đó bơm cấp nước từ nguồn bên ngoài trong 7 giây để cung cấp nước cho hồ cá.
+ Cảm biến ánh sáng sẽ gửi dữ liệu về khối nếu ánh sáng không đáp ứng hệ thống sẽ bật đèn
Trong trường hợp 2, hệ thống điều khiển qua Matlab Guide cho phép bật tắt bơm tưới theo tùy chọn, đồng thời có khả năng điều chỉnh lưu lượng của từng bơm Hệ thống cũng giám sát nhiệt độ môi trường và tự động kích hoạt chế độ tưới làm mát khi nhiệt độ vượt quá 36 độ C.
Lưu đồ thuật toán
Hình 4.2 Lưu đồ thuật toán hệ thống
Hình 4.3 Sơ đồ kết nối phần cứng với arduino b.Code arduino
This Arduino code initializes various components for a project involving environmental monitoring It defines the pins for a light sensor, a soil moisture sensor, and a relay, while also specifying the DHT11 temperature and humidity sensor's output pin The light sensor is connected to digital pin 2 and analog pin A1, while the soil moisture sensor is linked to analog pin A0, and the relay is set to digital pin 5 The DHT11 sensor is configured on pin 6, allowing for the collection of temperature and humidity data.
//const int DHTTYPE = DHT22; // DHT 22
//const int DHTTYPE = DHT21; // DHT 21
DHT dht(DHTPIN, DHTTYPE); //Khai báo thư viện chân cảm biến và kiểu cảm biến
// 2dco int enA = 9; int in1 = 8; int in2 = 7;
// Kết nối động cơ B int enB = 10; int in3 = 12; int in4 = 11; void setup(){
Serial.begin(9600); pinMode(cambien, INPUT); pinMode(LED, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
//code do am dat dieu khien bơm
To initialize the system, start by setting the serial communication at 9600 baud rate Configure the sensor pin as an input to receive signals and the relay pin as an output to send signals Set the relay to a low state initially Additionally, configure the sensor pin with a pull-up resistor for stable readings Initialize the LCD display, enable the backlight, and display the message "HETHONGTRONGCAY" on the screen for 3 seconds.
44 lcd.print("AH:"); //HUMIDITY ĐỌ ẨM lcd.setCursor(0,1); lcd.print("TEMP:"); //temperature nhiệt độ
// Thiết lập lập các chân điều khiển động cơ là OUTPUT pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);
{ //code hienthidoadat dieu khien dong co int doAm = analogRead (sensorPin); int phantram = map(doAm, 0 ,1023,1,100); int phantramthuc = 100 - phantram; int digital = digitalRead (sensorPin); //Đọc tín hiệu digital ở chân cảm biến
Serial print("Digital: "); Serial println(digital); //In ra màn hình delay (500); if ( digital == 0 ) //Nếu cảm biến ở mức 0 (mức thấp; có nước) { digitalWrite (relay, LOW); // Thì relay OFF, không bơm
} else // Ngược lại, nếu cảm biến ở mức 1 (mức cao, không có nước)
{ digitalWrite (relay, HIGH); // Thì relay ON, bơm nước
} lcd.setCursor(10, 0); lcd.print("SM:"); lcd.print(phantramthuc); lcd.setCursor(15,0); lcd.print("%"); delay(200);
//code hienthidoadat dieu khien dong co
// code phan hien thi doamnhietdo
{float doam = dht.readHumidity(); //Đọc độ ẩm float doC = dht.readTemperature(true); //Đọc nhiệt độ C if (isnan(doam) || isnan(doC))
Serial.println("Không có giá trị trả về từ cảm biến DHT"); return;
The code sets the cursor position on the LCD display to show humidity and temperature readings It displays the humidity value at the fourth position with a percentage sign, and the temperature value at the sixth position followed by the letter "C" for Celsius.
// code phan hien thi doamnhietdo
{//code cb anh sang int value = digitalRead(cambien); int value1 = analogRead(cambien1);
Serial.print("Gia trị AO: ");
Serial.println(value1); if (value==1) digitalWrite(LED_BUILTIN, HIGH); else digitalWrite(LED_BUILTIN, LOW);
Serial.println();//Xuống dòng delay(500);{
// Cho các động cơ quay tốc độ tối đa analogWrite(enA, 255); analogWrite(enB, 255);
To activate Motor A, set in1 to HIGH and in2 to LOW, then wait for 3500 milliseconds Afterward, ensure in3 and in4 are LOW for another 3500 milliseconds Initialize the LCD, turn on the backlight, and display "PUMP 1 ACTIVE" on the first line and "PUMP 2 OFF" on the second line, pausing for 3000 milliseconds before proceeding.
To operate motor B, set in3 to HIGH and in4 to LOW, followed by a 1750 ms delay Next, ensure in1 and in2 are LOW for another 1750 ms delay Initialize the LCD, activate the backlight, and display "BOM 2 HOAT DONG" on the first line and "BOM 1 TAT" on the second line, with a delay of 1770 ms Finally, turn off all motor controls by setting in1, in2, in3, and in4 to LOW This process outlines the connection diagram for Arduino using MATLAB code.
'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout
The function `DUME_OpeningFcn` initializes the GUI by setting the output handle and updating the GUI data The `DUME_OutputFcn` retrieves the output handle for use in other functions A global variable `a` is defined to interface with an Arduino device, allowing control of digital pins The `BATBOMTUOI_Callback` function writes digital signals to specific pins on the Arduino and disables the button once activated.
The code enables and disables various controls for managing two types of pumps, "BOM TUOI" and "BOM CAP." When the "TAT BOM TUOI" button is pressed, it turns off specific digital pins and re-enables the "BAT BOM TUOI" button while disabling itself and the "TOC DO BOM TUOI" button Similarly, the "BAT BOM CAP" button activates a different set of digital pins, enabling the "TAT BOM CAP" and "TOC DO BOM CAP" buttons while disabling itself The "TAT BOM CAP" button also turns off its associated pins and re-enables the "BAT BOM CAP" button while disabling itself and the "TOC DO BOM CAP." The "TOC DO BOM TUOI" button adjusts a slider based on user input.
TOCDOBOMTUOI = slider*5; set(handles.edit1,'string',num2str(TOCDOBOMTUOI )); writePWMVoltage(a,'D9',TOCDOBOMTUOI );
50 set(hObject,'BackgroundColor',[.9 9 9]); end function TODOBOMCAP_Callback(hObject, eventdata, handles) global a; slider = get(hObject,'Value');
The TOCDOBOMCAP value is calculated by multiplying the slider input by 5, and this value is then converted to a string and displayed in edit2 The writePWMVoltage function is used to set the PWM voltage on pin D11 with the TOCDOBOMCAP value The guidata function updates the handles structure In the TODOBOMCAP_CreateFcn function, the background color of the object is set to a light gray if it matches the default color The edit1_Callback and edit1_CreateFcn functions ensure that the background color of edit1 is set to white on Windows systems Similarly, the edit2_Callback and edit2_CreateFcn functions are defined but lack specific implementations for handling the edit2 input.
The provided code snippet is a MATLAB function that monitors environmental temperature using an analog voltage input It begins by setting the background color of a graphical user interface element to white The function continuously reads the voltage from pin A1, converting it to temperature in Celsius If the temperature falls below 6°C, it displays a warning message and turns off a digital pin; if it exceeds 36°C, it shows a different warning and activates the pin The temperature data is plotted in real-time on a graph, with labeled axes for clarity The function updates the temperature display every second while ensuring that certain interface elements are enabled or disabled appropriately during the process.
52 while go set(handles.DOAMDAT,'Enable','off'); set(handles.NHIETDOMOITRUONG,'Enable','on'); voltage_analog=readVoltage(a,'A2');
SoilMoisture=(100-(voltage_analog*12)); disp(SoilMoisture); y=[y SoilMoisture] if SoilMoisture
80; writeDigitalPin(a,'D8',0); writeDigitalPin(a,'D10',0); set(handles.BATBOMTUOI,'Enable','on'); set(handles.TATBOMTUOI,'Enable','off'); set(handles.TOCDOBOMTUOI,'Enable','off');
In this code snippet, a digital pin is written to with a value of 0, and a string 'BOMTUOITAT' is set in a user interface element After a brief pause, soil moisture data is plotted on a graph, with the title 'Chart SoilMoisture' and labeled axes for time in seconds and soil moisture percentage The soil moisture value is displayed in another UI element, followed by another pause The code includes callback functions for various UI elements to ensure proper background color settings on different operating systems, enhancing user experience.
54 set(hObject,'BackgroundColor','white'); end e.Giao diện guide:
Hình 4.3 Giao Diện Guide Matlab
Bật bơm tưới sau đó điều chính mức bơm trên thanh slider Tương tự như vậy với bơm cấp
Hiển thị thông số nhiệt độ môi trường và biểu thị mức thay đổi nhiệt độ môi trường thông qua đồ thị
Khi nhiệt độ quá 36 0 đèn báo nhiệt độ cao sẽ báo hiệu
Nếu độ ẩm đất < 50% bơm tưới sẽ bật đến khi cảm biến độ ẩm đất >80% bơm tưới sẽ ngừng.
Code- Chương Trình
Hình 5.3 Bồn nước dự phòng & động cơ bơm (Ảnh minh họa)
Hình 5.4 Hồ cá thủy sinh ( Ảnh minh họa)
HÌNH ẢNH HỆ THỐNG & TỔNG KẾT
Hình 5.3 Bồn nước dự phòng & động cơ bơm (Ảnh minh họa)
Hình 5.4 Hồ cá thủy sinh ( Ảnh minh họa)
Hình 5.5 Bồn lọc (Ảnh minh họa)
Hình 5.6 Khối hiển thị & cảm biến
Hình 5.7 Hình ảnh vườn rau
Hình 5.8: Toàn bộ hệ thống
+ Có 2 chế độ: điều khiển thông qua Guide Matlab và tự động tưới
3 Kết quả chưa đạt được :
+ Nhiều khó khăn trong việc tìm tài liệu tham khảo và chưa tối ưu được khâu giám sát để tự động hóa mô hình tốt nhất
+ Báo cáo còn thiếu sót chưa đầy đủ nội dung
+ Kích thước nhỏ gọn phù hợp với các đối tượng yêu thích trồng cây muốn có một góc xanh trong nhà
+ Chi phí rẻ, dễ bảo dưỡng thay thế
+ Đề tài có thể phát triển và ứng dụng rộng rãi trong nền nông nghiệp nước nhà
+ Tốc độ phản hồi của các cảm biến vẫn còn chập chờn, chưa ổn định
Hệ thống giám sát hiện tại chỉ có khả năng theo dõi tưới nước và phản hồi các thông số độ ẩm và nhiệt độ qua màn hình LCD Để nâng cao tiện ích cho người dùng, đề tài nên phát triển tính năng giám sát các yếu tố phát triển của cây qua ứng dụng di động.
- Mô hình đã chạy ổn định nhưng đôi lúc còn bị nhiễu cảm biến độ ẩm
- Đạt được yêu cầu lúc đầu đề ra
Trong quá trình thực hiện đề tài, nhóm đã thu thập được nhiều kiến thức và kinh nghiệm quý báu từ việc học tập và nghiên cứu Dưới đây là những nhận xét của nhóm sau khi hoàn thành đồ án.
Phần cứng tương đối dễ tìm và có thể tái chế các vật dụng dùng trong nhà
Trong quá trình nghiên cứu và thực hiện đồ án, nhóm đã nắm vững các cơ sở lý thuyết liên quan đến Truyền động điện và Điều khiển truyền động điện.
Mặc dù nhóm em đã nỗ lực thực hiện đồ án, nhưng do hạn chế về hiểu biết và kỹ năng, nên không thể tránh khỏi những sai sót Chúng em rất mong nhận được đánh giá, phản hồi và những góp ý tích cực từ cô để có thể rút kinh nghiệm và hoàn thiện đồ án tốt hơn.
Chúng em xin gửi lời cảm ơn chân thành đến cô Đỗ Hoàng Ngân Mi vì sự hướng dẫn tận tình, giúp đỡ chúng em hoàn thành đồ án này.