1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo Đồ Án 1 Đề tài Điều khiển tưới và theo dõi nhiệt Độ vườn

20 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Điều Khiển Tưới Và Theo Dõi Nhiệt Độ Vườn
Tác giả Bùi Xuân Sơn
Người hướng dẫn Nguyễn Khánh Lợi
Trường học Trường Đại Học Bách Khoa – Đại Học Quốc Gia Tp. Hồ Chí Minh
Chuyên ngành Khoa Điện – Điện Tử
Thể loại báo cáo đồ án
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 737,8 KB

Nội dung

TÓM TẮT BÀI TẬP LỚN Đồ án em tìm hiểu về vi điều khiển Arduino Uno dựa trên vi mạch ATmega328P để thực hiện mô hình tưới cây thông qua cảm biến nhiệt độ môi trường DHT11 và cảm biến độ ẩ

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐẠI HỌC QUỐC GIA TP HỒ CHÍ

MINH

KHOA ĐIỆN – ĐIỆN TỬ

BÁO CÁO ĐỒ ÁN 1

ĐỀ TÀI: ĐIỀU KHIỂN TƯỚI VÀ THEO DÕI

NHIỆT ĐỘ VƯỜN

Giảng viên hướng dẫn: Nguyễn Khánh Lợi Sinh viên thực tập: Bùi Xuân Sơn

MSSV: 1914940 Lớp: DD19DV06

Thành phố Hồ Chí Minh – 2024

Trang 2

GVHD: Thầy Trương Quang Vinh

LỜI CẢM ƠN

Trong quá trình thực hiện bài báo cáo này, em đã nhận được sự hướng dẫn tận tình của Thầy Nguyễn Khánh Lợi Thầy là người đã dẫn dắt và giúp em nắm được những kiến thức nền tảng, kĩ năng cơ bản để thiết kế mạch điện Sự nhiệt tình trong việc truyền đạt kiến thức và hướng dẫn của thầy trong quá trình học tập và nghiên cứu đã tạo động lực để

em hoàn thành đồ án này

Em xin gửi lời cảm ơn sâu sắc nhất đến thầy Nguyễn Khánh Lợi đã giúp em hoàn thành tốt bài báo cáo này

Cuối cùng, bài báo cáo này tuy được biên soạn với nhiều công sức nhưng chắc chắn vẫn có những thiếu sót cần phải cải tiến Rất mong nhận được sự góp ý của thầy để bài báo cáo có thể hoàn thiện hơn

Xin trân trọng cảm ơn Thầy

Tp Hồ Chí Minh, ngày 25 tháng 05 năm 2024.

Trang 3

TÓM TẮT BÀI TẬP LỚN

Đồ án em tìm hiểu về vi điều khiển Arduino Uno dựa trên vi mạch ATmega328P để thực hiện mô hình tưới cây thông qua cảm biến nhiệt độ môi trường DHT11 và cảm biến

độ ẩm đất bằng điện dung, thông số và các chế độ vận hành được lập trình và cài đặt thông qua màn hình LCD1602 giao tiếp với vi xữ Sau đó dùng 1 module Relay kết nối với máy bơm thông qua chân trên MCU để thực hiện viêc tưới cây Em thiết kế 1 board mạch nhỏ dễ gắn và không chiếm không gian Sản phẩm làm ra sẽ đạt được các chức năng cơ bản và tiêu chí đã nêu ra, đồng thời tạo bước đệm cho nhóm chúng em có hướng phát triển và cải thiện sản phẩm có nhiều tính năng hơn, hoạt động tốt hơn và hoàn thiện hơn trong tương lai

Trang 4

MỤC LỤC

CHƯƠNG 1: GIỚI THIỆU 3

1.1 Tổng quan đề tài 3

1.2 Nhiệm vụ đề tài 3

CHƯƠNG 2: LÝ THUYẾT 4

2.1 Cấu trúc của bộ kit Arduino Uno R3 4

2.2 Thiết kế và thực hiện phần cứng 5

2.3 Thiết kế và thực hiện phần mềm 9

2.4 Kết quả thực hiện 14

2.5 Kết luận và hướng phát triển 15

2.5.1 Kết luận 15

2.5.2 Hướng phát triển 15

TÀI LIỆU THAM KHẢO 16

Trang 5

CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan đề tài

Hiện nay để tiết kiệm thời gian cho việc chăm sóc vườn chung ta có thể ứng dụng hệ thống nhúng để tự động hóa quá trình này Hệ thống điều khiển tưới và theo dõi nhiệt độ vườn bằng kit ATmega328P Lý do chọn kit ATmega328P là vì dòng vi điều khiển này đang khá là phổ biến ở Việt Nam với giá thành rẻ, tốc độ xử lý cao Dùng Ardiuno Uno

để thông qua đó giao tiếp với các linh kiện điện tử như mô đun cảm biến nhiệt độ DHT11, cảm biến đo độ ẩm đất bằng điện dung V1.2 để đo độ ẩm cho đất, 1 màn hình LCD 1602 để hiện vừa đủ thông tin cần thiết và giao tiếp các mode tùy ý thông qua màn hình LCD và nút nhấn Cuối cùng là giao tiếp với máy bơm thông qua Relay để có thể tùy ý tắt mở máy bơm theo ý muốn

1.2 Nhiệm vụ đề tài

Yêu cầu: theo dõi nhiệt độ, độ ẩm không khí và độ ẩm đất hiển thị giá trị lên LCD, điều khiển máy bơm ở hai chế độ tự động và thủ công

- Tự động: Khi nhiệt độ, độ ẩm đất vượt qua khỏi một giá trị cụ thể được cài đặt trước thì máy bơm sẽ hoạt động trong khoảng thời gian nhất định, tránh tình trạng tưới quá lâu gây hao phí nước

- Thủ công: Máy bơm sẽ được điều khiển bằng một nút nhấn, máy bơm hoạt động thủ công tùy theo ý muốn của người sử dụng

Trang 6

CHƯƠNG 2: LÝ THUYẾT

2.1 Cấu trúc của bộ kit Arduino Uno R3

Hình 2.1: Cấu trúc Arduino Uno R3

Arduino Uno R3 có tổng cộng 20 chân GPIO (General Purpose Input/Output), trong đó bao gồm các chân số (digital pins), các chân PWM (Pulse Width Modulation), và các chân analog Dưới đây là danh sách các chân của Arduino Uno R3:

- Chân nguồn và đất:

5V: Nguồn 5V

3.3V: Nguồn 3.3V

GND: Đất (Ground)

- Chân số (Digital Pins):

D0 - D13: Các chân số từ 0 đến 13 Chú ý rằng chân D0 và D1 cũng được sử dụng cho giao tiếp serial (TX và RX)

- Chân PWM (Pulse Width Modulation):

- D3, D5, D6, D9, D10, D11: Các chân PWM có thể tạo ra tín hiệu PWM để điều khiển độ sáng của đèn LED, tốc độ của động cơ servo, và nhiều ứng dụng khác

- Chân analog:

- A0 - A5: Các chân analog từ A0 đến A5 Arduino Uno có 6 chân analog có thể được sử dụng để đọc giá trị từ các cảm biến analog hoặc điều chỉnh đầu ra analog

Trang 7

- Chân khác:

Vin: Đây là nguồn cung cấp ngoài, thường được sử dụng khi bạn cần cấp nguồn

từ một nguồn ngoài (thường là từ một pin DC hoặc một nguồn điện khác)

AREF: Đây là chân tham chiếu analog, thường được sử dụng khi bạn cần đọc giá trị analog với một tham chiếu tùy chỉnh

Reset: Chân này được sử dụng để reset board Arduino

Chân của Arduino Uno R3 được sắp xếp và gắn nhãn một cách rõ ràng, giúp người dùng dễ dàng kết nối và sử dụng cho các dự án khác nhau

- Ứng dụng: Những tính năng này làm cho vi điều khiển Arduino Uno R3 thích hợp cho một loạt các ứng dụng như điều khiển động cơ, kiểm soát các ứng dụng nâng cao, thiết bị

y tế và thiết bị cầm tay, máy tính và thiết bị ngoại vi chơi game, GPS, ứng dụng công nghiệp, PLC, biến tần, máy in, máy quét, hệ thống báo động, hệ thống liên lạc video, và HVACs

2.2 Thiết kế và thực hiện phần cứng

 Yêu cầu thiết kế

o Cảm biến nhiệt độ, độ ẩm không khí, độ ẩm đất tầm hoạt động trong khoảng nhiệt độ

từ 0 – 500C, độ ẩm từ 20 – 90%

o Công suất hệ thống điều khiển thấp dưới 5W Tuổi thọ trên 5 năm

 Phân tích thiết kế

o Phương án 1:

Thành phần phần cứng Thông số kỹ thuật

DHT11

Điện áp hoạt động: 3.3 -5 VDC

Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)

Đo tốt ở nhiệt độ: 0-50°C, sai số ± 2°C

Đo tốt ở độ ẩm: 20-90%RH, sai số 5%

Soil Moisture sensor v1.2

Điện áp hoạt động: 3.3~5.5VDC

Điện cực phủ sơn chống ăn mòn cho độ bền và độ ổn định cao

Điện áp xuất ra chân Analog: 0~3VDC

Chuẩn giắc cắm: PH2.54-3P

Trang 8

LCD 16x02 Điện áp hoạt động: 3.3V.

Hoạt động ở nhiệt độ -20 đến 70°C

 Ưu điểm:

- Giá thành dễ tiếp cận (dòng F1 chi có giá dao động trong khoảng 60 đến 80 nghìn đồng), có hỗ trợ nhiều tài liệu, thông dụng với các mô hình nhỏ, công suất tiêu thụ thấp

- Nhiều chân giao tiếp, giao tiếp với nhiều chuẩn thông dụng

- Bộ nhớ vừa đủ dùng trong các ứng dụng học tập, lập trình

- sử dụng Arduino IDE (Integrated Development Environment), một phần mềm miễn phí và mã nguồn mở được phát triển bởi Arduino.cc Arduino IDE cung cấp một giao diện đơn giản và dễ

sử dụng để viết, biên dịch và tải chương trình vào board Arduino

 Khuyết điểm:

- Độ chính xác của cảm biến nhiệt độ độ ẩm môi trường không cao (sai số lớn)

- Thang đo phần trăm độ ẩm đất do người lập trình tự thiết kế, không thể hiện sự chính xác khi so với thiết bị của nhà sản xuất khác

o Phương án 2:

Thành phần phần cứng Thông số kỹ thuật

DHT22

Điện áp hoạt động: 3.3-6VDC

Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)

Đo tốt ở nhiệt độ: -40-80°C, sai số

± 0.5 °C

Đo tốt ở độ ẩm: 0-100%RH, sai số 2-5%

Tín hiệu có thể truyền tối đa 20m Cảm biến độ ẩm đất đầu dò chống ăn mòn Điện áp hoạt động: 3.3~12VDC

Tích hợp đầu dò chống ăn mòn cho độ bền và độ ổn định cao

Tín hiệu đầu ra:

Trang 9

Analog: theo điện áp cấp nguồn tương ứng

Digital: High hoặc Low, có thể điều chỉnh độ ẩm mong muốn bằng biến trở thông qua mạch so sánh LM393 tích hợp

Chiều dài dây cảm biến: 1m

Hoạt động ở nhiệt độ -20 đến 70°C

 Ưu điểm:

- Độ chính xác cao, công suất tiêu thụ thấp, hoạt động tốt ở những điều kiện khắc nghiệt hơn yêu cầu

- Độ bền tốt hơn, có thể sử dụng liên tục trong thời gian dài

 Khuyết điểm

- Giá thành đắt gấp 2, 3 lần phương án 1

 Lựa chọn phương án 1 sẽ cho độ chính xác cao phù hợp với yêu cầu của đề tài

 Sơ đồ khối:

Hình 2.2: Sơ đồ khối

 Tính toán và vẽ sơ đồ mạch chi tiết:

Trang 10

Hình 2.3 : Sơ đồ mạch chi tiết trên proteus.

Trang 11

 Sơ đồ mach in PCB :

Hình 2.4: Sơ đồ mạch in PCB

2.3 Thiết kế và thực hiện phần mềm

 Yêu cầu đặt ra cho phần mềm

o Có khả năng đọc dữ liệu từ cảm biến và hiển thị lên màn hình LCD

o Hiển thị được các chế độ vận hành thông qua LCD và nút nhấn

o Thiết lập ngưỡng độ ẩm đất để điều khiển bơm tùy theo mong muốn người sử dụng

 Phân tích

o Yêu cầu 1: Khả năng đọc dữ liệu từ cảm biến và hiển thị lên màn LCD

 Đối với DHT11: sử dụng thư viện có sẵn để đọc dữ liệu từ cảm biến, dữ liệu được chuyển lên màn hình LCD

 Đối với cảm biến đo độ ẩm đất bằng điện dung: dữ liệu đưa vào từ cảm biến là dữ liệu analog, chuyển analog thành dữ liệu xử lí được, sau đó chuyển thành thang đo phần trăm

và xuất ra màn hình LCD

Trang 12

o Yêu cầu 2,3: Điều chỉnh các giá trị ngưỡng nhờ vào các nút bấm, từ đó điều chỉnh hành vi của máy bơm và hiển thị trạng thái ra LCD

 Vẽ sơ đồ giải thuật chi tiết và giải thích

Hình 2.5: Sơ đồ giải thuật

 Giải thích:

o Hiển thị được các chế độ vận hành thông qua LCD và nút nhấn và thiết lập ngưỡng độ

ẩm đất để điều khiển bơm tỳ theo mong muốn người sử dụng

 Khi mới khởi động chương trình, hệ thống vào mode 0 Bơm được tắt Các thông số được hiển thị lên LCD Hệ thống tiến hành kiểm tra độ ẩm đất Nếu:

- Độ ẩm đất > S: tắt máy bơm

- Độ ẩm đất < S: tiến hành kiểm tra nhiệt độ Nếu nhiệt độ > T thì bật máy bơm Ngược lại thì tắt máy bơm

Trang 13

 Khi ấn nút Mode button, hệ thống chuyển sang chế độ cài đặt (Mode 1)

 Hệ thống sẽ đọc trạng thái các nút nhấ n và thực hiện như sau:

- Nút tăng/ giảm Nhiệt độ dùng để tăng/ giảm giá trị nhiệt độ T Sau khi điều chỉnh được giá trị mong muốn thì nhấn xác nhận, để lưu và trở về Mode 0

- Nút tăng/ giảm Độ ẩm dùng để tăng / giảm giá trị độ ẩm S Sau khi điều chỉnh được giá trị mong muốn thì nhấn xác nhận, để lưu và trở về Mode 0

 Code chương trình

#include "DHT.h"

#define DHTPIN

#define DHTTYPE DHT11

DHT dht ( DHTPIN, DHTTYPE ) ;

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd ( 0x 27 , 16 , 2 ;  // set the LCD address to 0x27 for

a 16 chars and 2 line display

const int NB1 = 2

const int NB2 = 3

const int NB3 = 4

const int NB4 = 5

const int NB5 = 6

const int NB6 = 7

const int Relay = 9

int Mode = 0 , NDD = 30 , DADT = 0 , DADD = 50 ;

Trang 14

unsigned long lastDebounceTime [ ] = { 0 , 0 , 0 , 0 , 0 , 0 ;  // Debounce time for each button

const unsigned long debounceDelay = 50 ;      // Debounce delay time

void setup ()

  lcd init () ;

  lcd backlight () ;

  dht begin () ;

  pinMode ( NB1, INPUT_PULLUP ) ;

  pinMode ( NB2, INPUT_PULLUP ) ;

  pinMode ( NB3, INPUT_PULLUP ) ;

  pinMode ( NB4, INPUT_PULLUP ) ;

  pinMode ( NB5, INPUT_PULLUP ) ;

  pinMode ( NB6, INPUT_PULLUP ) ;

  pinMode ( Relay, OUTPUT ) ;

}

void loop () {

  float t = dht readTemperature () ;

  DADT = map ( analogRead ( A0 ) , 0 , 1023 , 100 , 0 ;

  checkButton ( NB1, 0 , toggleMode ) ;

  if Mode == 0

    if t > NDD + 0.5 )

      if DADT < DADD + 0.5 ) {

        digitalWrite ( Relay, HIGH ) ;

Trang 15

      } else

        digitalWrite ( Relay, LOW )

      }

    } else

      digitalWrite ( Relay, LOW )

    }

    displayData ( t, NDD, DADT, DADD ) ;

  } else

    lcd setCursor ( 0 , 0 )

    lcd print ( "NDD:" )

    lcd setCursor ( 4 , 0 )

    lcd print ( NDD ) ;

    lcd setCursor ( 8 , 0 )

    lcd print ( "DADD:" ) ;

    lcd setCursor ( 13 , 0 ;

    lcd print ( DADD )

    checkButton ( NB2, 1 , decrementNDD ) ;

    checkButton ( NB3, 2 , incrementNDD ) ;

    checkButton ( NB4, 3 , decrementDADD )

    checkButton ( NB5, 4 , incrementDADD )

    checkButton ( NB6, 5 , saveSettings ) ;

  }

}

void toggleMode () {

  Mode = !Mode;

  lcd clear () ;

Trang 16

void decrementNDD () {

  NDD ;

  if NDD <= 20 )

    NDD = 40 ;

  }

}

void incrementNDD () {

  NDD++;

  if NDD > 45 ) {

    NDD = 20 ;

  }

}

void decrementDADD ()

  DADD ;

  if DADD <= 20 ) {

    DADD = 40 ;

  }

}

void incrementDADD ()

  DADD++;

}

Trang 17

void saveSettings () {

  lcd setCursor ( 2 , 1 )

  lcd print ( " > DaLuu < " )

}

void checkButton ( int pin , int index , void * action)())

  int reading = digitalRead ( pin )

  if reading == LOW && ( millis () - lastDebounceTime [index] ) >

debounceDelay )

    lastDebounceTime [index] = millis () ;

    while ( digitalRead ( pin ) == LOW ) {}

    action () ;

  }

}

void displayData ( float , int NDD , int DADT , int DADD)

  lcd setCursor ( 0 , 0 )

  lcd print ( "NDT:" )

  lcd setCursor ( 4 , 0 )

  lcd print ( t, 0 )

  lcd setCursor ( 0 , 1 )

  lcd print ( "NDD:" )

  lcd setCursor ( 4 , 1 )

  lcd print ( NDD ) ;

  lcd setCursor ( 8 , 0 )

  lcd print ( "DADT:" ) ;

  lcd setCursor ( 13 , 0 ;

  lcd print ( DADT )

  lcd setCursor ( 8 , 1 )

Trang 18

  lcd print ( "DADD:" ) ;

  lcd setCursor ( 13 , 1 ;

  lcd print ( DADD )

2.4 Kết quả thực hiện

Trong phần này, sinh viên mô tả:

 Trình bày cách thức đo đạc, thử nghiệm

- Dùng cảm biến nhiệt độ, độ ẩm DHT11 để đo nhiệt độ, độ ẩm môi trường và so sánh với thông số có sẵn (google, máy điều hòa trong phòng, )

- Dùng cảm biến độ ẩm đất bằng điện dung để đo độ ẩm Dữ liệu xuất ra là tín hiệu điện

áp, từ đó xác định điện áp khi khô và khi hoàn toàn là nước để nhận lại được giá trị điện

áp tương ứng Từ đó quy chuẩn ra thang đo phần trăm để xuất ra màn hình LCD cũng như cài đặt thông số setup

 Trình bày số liệu đo đạc

Trang 19

Hình 2.6: Kết quả thi công

2.5 Kết luận và hướng phát triển

2.5.1 Kết luận

 Ưu điểm:

- Mạch chạy hoàn chỉnh, chạy đúng các thông số đã cài đặt

- Giá thành của hệ thống tương đối rẻ, phù hợp để lắp đặt trong nhà

- Hiển thị đúng các giá trị như nhiệt độ, độ ẩm môi trường, độ ẩm đất bằng điện dung lên LCD

 Khuyết điểm:

- Do phần cứng được lắp đặt trên breadboard nên độ ổn định chưa cao.

- Cảm biến có độ sai số lớn nên độ chính xác vẫn chưa cao

- Mạch hoạt động với máy bơm công suất nhỏ nên chỉ mang tính tương đối

2.5.2 Hướng phát triển

- Thiết lập thêm một chế độ vận hành thủ công bằng tay để tưới cây mà không cần phải thông qua độ ẩm hay nhiệt độ môi trường

- Mở rộng mô hình tưới tiêu bằng nhiều máy bơm và máy bơm công suất lớn để áp dụng lên thực tế, tạo thành 1 sản phẩm hoàn chỉnh có thể đưa vào thương mại

- Viết một ứng dụng nhỏ trên điện thoại, sau đó dùng mạch WIFI để giao tiếp với hệ thống, sau đó chuyển dữ liệu lên ứng dụng trên điện thoại và cài đặt thông số cũng như

có thể quan sát và theo dõi dữ liệu từ vườn cây từ xa

Trang 20

TÀI LIỆU THAM KHẢO

1 Michael McRoberts (2010) Beginning Arduino.Seed Studio

Ngày đăng: 02/12/2024, 20:14

w