You are on page 1of 72

i

MỤC LỤC
MỤC LỤC..........................................................................................i
DANH MỤC CÁC HÌNH ẢNH......................................................iii
DANH MỤC CÁC TỪ VIẾT TẮT...................................................v
LỜI CẢM ƠN...................................................................................vi
MỞ ĐẦU.........................................................................................vii
CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG TƯỚI NƯỚC TỰ
ĐỘNG................................................................................................1
1.1. Khái niệm về hệ thống tự động..................................................................1
1.2. Vai trò của tự động hóa trong quá trình sản xuất.......................................1
1.3. Ứ ng dụ ng củ a tự độ ng hóa trong tướ i tiêu cho cây trồ ng.........................2
1.4. Các dạng chính của hệ thống tưới tự động.................................................2
1.5. Các nghiên cứu ở nước ngoài...................................................................11
1.6. Các nghiên cứu trong nước......................................................................12
1.7. Quy trình công nghệ.................................................................................12
1.8. Các vấn đề cần nghiên cứu bổ sung.........................................................13
1.9. Kết luận chương 1....................................................................................13
CHƯƠNG 2 THIẾT KẾ HỆ THỐNG TƯỚI NƯỚC TỰ ĐỘNG. .14
2.1 Xây dựng sơ đồ khối.................................................................................14
2.2 Chức năng của từng khối...........................................................................15
2.2.1. Khối vi điều khiển PIC 18F4520.......................................................15
2.2.2. Khối cảm biến nhiệt độ và độ ẩm.......................................................21
2.2.3. Khối hiển thị thời gian thực Ds1307..................................................25
2.2.4. Khối hiển thị LCD..............................................................................29
2.2.5. Khối nguồn sử dụng LM2576............................................................31
2.2.6. Khối tạo dao động..............................................................................32
2.3. Giao thức I2C...........................................................................................32
ii

2.3.1. Giới thiệu............................................................................................32


2.3.2. Đặc điểm giao tiếp I2C......................................................................32
2.3.3. Chế độ hoạt động (tốc độ truyền).......................................................34
2.3.4. Tín hiệu START và STOP.................................................................36
2.4. Lưu đồ thuật toán.....................................................................................37
2.5. Kết luận chương 2....................................................................................38
CHƯƠNG 3 MÔ HÌNH THỰC NGHIỆM VÀ KẾT QUẢ............39
3.1. Mô hình thực nghiệm...............................................................................39
3.1.1. Sơ đồ nguyên lí..................................................................................39
3.1.2. Sơ đồ mạch in và mạch thực tế..........................................................40
3.2. Đánh giá và kết luận.................................................................................42
3.2.1. Kết quả đạt được................................................................................42
3.2.2. Kết luận chương 3..............................................................................43
TÀI LIỆU THAM KHẢO...............................................................45
PHỤ LỤC........................................................................................46
iii

DANH MỤC CÁC HÌNH ẢNH


Hình 1. 1. Hệ thống tưới nước phun mưa .........................................................2
Hình 1. 2. Hệ thống tưới nước phun xương .....................................................2
Hình 1. 3. Hệ thống tưới nước nhỏ giọt ...........................................................2
Hình 1. 4. Hệ thống tưới nước cảnh quan, cây cỏ ............................................................................2

Hình 2. 1. Sơ đồ khối của hệ thống tưới nước tự động.....................................2


Hình 2. 2. Sơ đồ chân của PIC 18F4520 ..........................................................2
Hình 2. 3. Tổ chức bộ nhớ chương trình ..........................................................2
Hình 2. 4. Bộ nhớ dữ liệu RAM .......................................................................2
Hình 2. 5. Cảm biến LM35 ..............................................................................2
Hình 2. 6. Cảm biến HS1101 ...........................................................................2
Hình 2. 7. Chip cảm biến SHT10 .....................................................................2
Hình 2. 8. Cảm biến SHT10 .............................................................................2
Hình 2. 9. Sơ đồ chân của SHT10 ....................................................................2
Hình 2. 10. Sơ đồ ghép nối MCU với SHT10 ..................................................2
Hình 2. 11. Sơ đồ chân của Ds1307 .................................................................2
Hình 2. 12. Sơ đồ tổ chức bộ nhớ của Ds1307 .................................................2
Hình 2. 13. Tổ chức bộ nhớ của các thanh ghi thời gian của Ds1307 ..............2
Hình 2. 14. Khối hiển thị LCD .........................................................................2
Hình 2. 15. Sơ đồ chân của LM2576 ...............................................................2
Hình 2. 16. Kết nối thiết bị vào bus I2C ở chế độ chuẩn .................................2
Hình 2. 17. Trình tự truyền bit trên đường truyền.............................................2
Hình 2. 18. Tín hiệu Start và Stop ....................................................................2
Hình 2. 19. Lưu đồ thuật toán...........................................................................................................2

Hình 3. 1. Sơ đồ nguyên lí.................................................................................2


Hình 3. 2. Mạch in 2D.......................................................................................2
Hình 3. 3. Mạch khi được khởi tạo....................................................................2
iv

Hình 3. 4. Cài đặt thời gian...............................................................................2


Hình 3. 5. Cài đặt nhiệt độ, độ ẩm.....................................................................2
v

DANH MỤC CÁC TỪ VIẾT TẮT


Từ viết tắt Tiếng Anh Tiếng Việt
Cổng giao tiếp đồng
SSP Synchronous Serial Port
bộ
Giao diện ngoại vi
SPI Serial Peripheral Interface
nối tiếp
Chuẩn giao tiếp nối
I2C Inter- Intergrated Circuit
tiếp
Cổng giao tiếp song
PSP Parallel Slave Port
song
Thanh ghi chức
SFG Special Function Register năng đặc biệt của bộ
nhớ dữ liệu
Thanh ghi mục đích
GPR General Purpose Register
chung
Khối giao diện đồng
MSSP Master Synchronous Serial Port
bộ nối tiếp
Đồng hồ thời gian
RTC Real- Time Clock
thực
SQW/ Ngõ ra tạo xung
Square Wave/ Output Driver
OUT vuông của Ds1307
Màn hình hiển thị
LCD Liquid Crystal Display
LCD
vi

LỜI CẢM ƠN
Em xin chân thành cảm ơn quý thầy, cô trường Đại Học Công Nghiệp Hà
Nội đã tận tình dạy dỗ trong suốt những năm qua. Trong đó phải kể đến quý
thầy cô trong khoa Điện Tử đã tạo điều kiện cho em thực hiện đồ án tốt
nghiệp này.
Đặc biệt, em xin chân thành cảm ơn giáo viên hướng dẫn ThS. Xxx đã tận
tình giúp đỡ em trong quá trình lựa chọn đề tài và hỗ trợ em trong quá trình
thực hiện đề tài. Cung cấp cho em những kiến thức quý báu cũng như những
lời khuyên cực kỳ hữu ích. Tạo động lực cho em hoàn thành tốt nhiệm vụ của
mình.
Em xin cảm ơn những ý kiến đóng góp của các thầy cô giáo và các bạn
cho việc thực hiện đề tài này. Để hoàn thành em đã nỗ lực nghiên cứu, thiết
kế và chế tạo, nhưng do thời gian và kiến thức còn hạn chế nên không thể
tránh khỏi những thiếu sót, em rất mong nhận được những lời góp ý chân
thành từ thầy cô và các bạn để có thêm những hiểu biết và hoàn thiện hơn
trong quá trình làm việc sau này.
Em xin chân thành cảm ơn!
Sinh viên thực hiện

xxxxxxxxxxxxxxxx
vii

MỞ ĐẦU
Tính cấp thiết của đề tài
Nền nông nghiệp của nước ta là nền nông nghiệp vẫn còn lạc hậu cũng
như chưa có nhiều ứng dụng khoa học kĩ thuật được áp dụng vào thực tế. Rất
nhiều quy trình kĩ thuật trồng trọt, chăm sóc được tiến hành một cách thủ
công và không đảm bảo được đúng yêu cầu. Có thể nói trong nông học ngoài
những kỹ thuật trồng trọt, chăm sóc thì tưới nước là một trong các khâu quan
trọng nhất trong trồng trọt, để đảm bảo cây trồng sinh trưởng và phát triển
bình thường, tưới đúng và tươi đủ theo yêu cầu nông học của cây trồng sẽ
không sinh sâu bệnh, hạn chế thuốc trừ sâu cho sản phẩm an toàn, đạt năng
suất hiệu quả cao.
Mặt khác hiện nay nước ta đang trong giai đoạn công nghiệp hóa, hiện đại
hóa các thiết bị máy móc tự động được đưa vào phục vụ thay thế sức lao động
của con người. Vì vậy thiết bị tưới đang được nghiên cứu, thiết kế, chế tạo và
đưa vào thực tiễn ngày càng nhiều. Thiết bị tưới cũng rất đa dạng về chủng
loại (vòi phun nước, phun sương, vòi nhỏ giọt bù áp, dây tưới nhỏ giọt) có
thông số khác nhau phục vụ cho các loại cây trồng khác nhau được chế tạo từ
nhiều nước như Israel, Hàn Quốc, Đài Loan, Trung Quốc sẽ rất thuận tiện cho
người sử dụng lựa chọn phù hợp với nhu cầu của mình. Hệ thống tưới phun
đáp ứng độ ấm gốc, độ ẩm lả và không khí cho cây trồng phát triển tốt, hệ
thống tiết kiệm nước tạo điều kiện cho cây trồng hấp thụ dinh dưỡng không
gây rửa trôi, thoái hóa đất, không gây ô nhiễm môi trường. Hơn thế nữa, với
việc thiết kế một hệ thống tưới cây tự động sẽ giúp cho con người không phải
tưới cây, không phải tốn chi phí nhân công tưới nước cũng như giám sát thời
gian tưới cây, Với hệ thống này, việc tưới cây sẽ là tự động tùy theo nhiệt độ,
thời tiết nắng hay mưa, độ ẩm cao hay thấp, mùa nào trong năm . . . Tất cả các
điều kiện đó sẽ đưa vào hệ thống tính toán và đưa ra thời gian chính xác để
bơm nước. Người lao động sẽ không cần phải quan tâm đến việc tưới cây sẽ
viii

được sinh trưởng và phát triển tốt hơn nhờ việc tưới cây phù hợp và chính xác
hơn.
Lý do chọn đề tài
Hệ thống tưới tự động (tưới nhỏ giọt, phun sương . . .) là hệ thống thiết bị
tưới tốt nhất đáp ứng theo yêu cầu sinh trưởng cây trồng đang được ứng dụng
rộng ở các nước phát triển. Hệ thống tưới nước tự động là một hình thức tưới
nước hợp lý, tiết kiệm sức lao động và chi phí nhân công. Vốn đã rất phổ biến
tử nhiều nước trên thế giới. Tuy nhiên ở Việt Nam chỉ vài ba năm trở lại đây
việc vận dụng hệ thống này mới trở thành xu hướng. Hệ thống tưới nước tự
động cũng trở nên phổ biến hơn với người nông dân ở nông thôn cùng với quá
trình hiện đại hóa, nông nghiệp hóa nông thôn nhưng không phải người dân
nào cũng mạnh dạn đưa vào sử dụng vì chi phí đầu tư cao.
Mặt khác khoa học kỹ thuật phát triển mạnh mẽ đã làm thay đổi cuộc sống
con người, làm cho cuộc sống con người ngày càng trở nên tiện nghi và hiện
đại. Kỹ thuật điện tử phát triển con người đã tạo ra những thiết bị máy móc
hiện đại thay thế cho con người những công việc nặng nhọc và đòi hỏi độ
chính xác cao.
Ngành nông nghiệp nước ta hiện nay còn phụ thuộc nhiều vào khí hậu tự
nhiên và với những phương pháp canh tác truyền thống không mang lại năng
suất cao. Khi kinh tế xã hội phát triển thì nhu cầu con người càng được nâng
cao, đòi hỏi chất và lượng nâng cao. Do đó cần đến các thiết bị kỹ thuật tiên
tiến có khả năng đo đạc và điều khiển các thông số của môi trường như: nhiệt
độ, độ ẩm không khí, chất dinh dưỡng cung cấp phù hợp với từng giai đoạn
phát triển của cây trồng.
Xuất phát từ những vấn đề thực tiễn trên em đã nghiên cứu và tiến hành
thiết kế mô hình hệ thống tưới tự động
1

CHƯƠNG 1
TỔNG QUAN VỀ HỆ THỐNG TƯỚI NƯỚC TỰ ĐỘNG
1.1. Khái niệm về hệ thống tự động
Hệ thống điều khiển tự động là hệ thống, bao gồm các phần tử tự động
nhằm điều khiển các quy trình xảy ra trong thiên nhiên, cuộc sống mà không
có sự tham gia trực tiếp của con người.
Hệ thống tự động xuất hiện ngày nay rất phổ biến:
- Hệ thống điều hòa không khí.
- Hệ thống tự động báo cháy.
- Hệ thống điều chỉnh độ ẩm.
- Hệ thống tưới nước tự động . . .
Trong môi trường sản xuất:
- Các máy tự động.
- Các đường dây sản xuất, lắp ráp tự động.
- Các robot, máy tính . . .
1.2. Vai trò của tự động hóa trong quá trình sản xuất
Tự động hóa đang được ứng dụng rộng rãi trong rất nhiều lĩnh vực khác
nhau: công nghiệp sản xuất, gia công cơ khí, dây chuyền lắp ráp tự động, ứng
dụng kiểm soát chất lượng… Các hệ thống điều khiển thường dùng để vận
hành quá trình sản xuất bao gồm servo, PLC, mạch điện tử, G code… Các hệ
điều khiển này có thể bao gồm việc điều khiển từ đơn giản đến các thuật toán
phức tạp, điều khiển những máy móc đơn giản cho đến những hệ thống công
nghiệp lớn.
Có rất nhiều nhân tố ảnh hưởng tới quá trình tự động hóa của một quốc
gia, hoặc một lĩnh vực. Trong đó, có thể kể đến những nhân tố quan trọng
như: Công nghệ số hóa, trình độ nhân sự, nguồn lực vốn... Để quá trình này
được diễn ra thuận lợi, cần hiểu rõ bản chất tự động hóa trong từng lĩnh vực,
từng quy trình sản xuất, từ đó ứng dụng tối ưu, giúp tăng năng suất, giảm chi
phí.
2

1.3. Ứng dụng của tự động hóa trong tưới tiêu cho cây trồng
Công trường thực vật là căn cứ địa sản xuất nông nghiệp của hiện đại
hóa. Toàn bộ quá trình đều có thể điều khiển tự động để giảm bớt sức người,
nâng cao sản lượng… Mặc dù tự động hóa ứng dụng từ rất lâu cho việc tưới
tiêu, song nó chỉ phát triển ở một số nước phát triển, còn đối với các nước
chậm phát triển tuy nền nông nghiệp chiếm tỉ lệ lớn nhưng việc ứng dụng tự
động hóa cho việc tưới cây vẫn còn rất chậm. Hiện nay, được sự trợ giúp của
nước ngoài các nước đang phát triển đã đưa dần tự động hóa vào đời sống và
sản xuất, đặc biệt là các nước Đông Nam Á nói chung và trong đó có Việt
Nam.
Ngày nay với sự phát triển mạnh mẽ của công nghệ chế tạo thiết bị tự
động hóa, kết hợp với thành tựu trong công nghệ vi điện tử và công nghệ
thông tin, đã cho phép tạo nên một giải pháp tự động hóa trong mọi lĩnh vực
không chỉ trên lĩnh vực nông nghiệp. Có thể nói tự động hóa trở thành xu
hướng tất yếu cho bất kì quốc gia, vùng lãnh thổ nào muốn phát triển kinh tế
trên Thế giới.
1.4. Các dạng chính của hệ thống tưới tự động
Về cơ bản hệ thống tưới nước tự động có 4 dạng chính:
- Tưới phun mưa:
Đây là hệ thống tưới nước tạo các tia nước bắn ra xung quanh nhờ đầu
phun tạo mưa, phun trực tiếp lên bề mặt lá cây. Hệ thống này giúp bà con
nông dân tưới cây nhanh hơn, hiệu quả hơn, nâng cao hiệu quả kinh tế.
Phương pháp này có tác dụng làm tăng độ ẩm cho đất và làm mát cho cây
trồng, tạo điều kiện kích thích cây trồng sinh trưởng và phát triển. Hệ thống
này được áp dụng phổ biến nhất do phù hợp với nhiều mô hình canh tác từ
hoa màu cho đến cây ăn quả, cây công nghiệp. Nước ra vòi phun, béc phun
theo dạng mưa, từng hạt, từng hạt có khả năng văng xa, tùy theo áp lực nước.
Ưu điểm: Tưới phun mưa có hiệu quả sử dụng rất cao vì hạn chế cao
độ tổn thất nước do bốc hơi vì tia phun ngắn.
3

 Cường độ tưới phun mưa và diện tích làm ướt có thể được điều chỉnh
cho phù hợp sự tăng trưởng của cây trồng. Không tạo nên dòng chảy trên mặt
đất. không phá vỡ cấu tượng đất do hạt mưa nhỏ.
 Cường độ tưới phun mưa và diện tích làm ướt có thể được điều chỉnh
cho phù hợp sự tăng trưởng của cây trồng. Cường độ tưới phun mưa và diện
tích làm ướt có thể được điều chỉnh cho phù hợp sự tăng trưởng của cây
trồng.
 Do toàn bộ hệ thống đường ống tưới phun mưa đặt ngầm nên tiết
kiệm đất. Thuận tiện việc chăm sóc, canh tác trên đồng ruộng. Mặt khác cũng
dễ dàng tự động hóa từng phần hoặc toàn phần hệ thống tưới phun mưa. Cũng
như việc cơ khí hoá và tự động hóa phần thiết bị điều khiển. Thiết bị tưới
phun mưa được điều khiển toàn bộ hệ thống từ xa theo chương trình lập sẵn.
Nên tiết kiệm sức lao động và nâng cao năng suất tưới.
 Nâng cao năng suất tưới và năng suất các khâu canh tác nông nghiệp
khác. Sử dụng áp lực làm việc loại trung bình và thấp. Đồng thời lưu lượng
tưới phun mưa yêu cầu nhỏ nên tiết kiệm năng lượng và nguồn nước. Có tác
dụng cải tạo vi khí hậu khu tưới. Hạn chế sâu bệnh, cỏ dại phát triển. Kết hợp
được tưới tưới phun mưa với phun thuốc trừ sâu, bón phân hóa học. Rất phù
hợp với các cây trồng mềm yếu (vườn hoa, vườn ươm, cây đang ra hoa, thụ
phấn).
 Thiết bị tưới phun sương cho phép người sử dụng có thể pha thêm
một số dung dịch an toàn chống lại sâu bệnh gây hại. Tuy nhiên, nếu phải
thường xuyên tiếp xúc với các chất này có thể ảnh hưởng đến sức khỏe con
người. Vì thế, sản phẩm này giúp đảm bảo sức khỏe của người dùng. Bên
cạnh đó, với mật độ phun đều, lượng nước và chất phòng ngừa sâu hại không
bị tồn đọng quá nhiều gây ngập úng hay dư thừa chất bảo vệ thực vật.
Nhược điểm:
4

 Các loại béc tưới phun mưa dễ bị tắc nghẽn (khi nước tưới có nhiều
tạp chất), nhất là đối với các vòi phun sương mù (Mist Sdrayer) có các lỗ tưới
phun mưa rất nhỏ.
 Yêu cầu trình độ nhất định trong thiết kế xây dựng và quản lý hệ
thống tưới phun mưa.
 Vốn đầu tư cho hệ thống tưới phun mưa ban đầu cao hơn so với các
kỹ thuật tưới cổ điển.
 Các đường ống tưới phun mưa và thiết bị hay hư hỏng, dễ bị mất mát,
phá hoại do con người và côn trùng tại mặt ruộng (điều này rất dễ xảy ra ở
Việt Nam).

Hình 1. 1. Hệ thống tưới nước phun mưa [2]


- Tưới phun sương:
Tưới phun sương là một hệ thống tưới nước chịu áp suất của máy bơm
tăng áp. Nguồn nước đưa vào được nén với áp suất cao qua những vòi được
thiết kế đặc biệt sẽ chuyển hóa thành dạng sương siêu mỏng với kích thước
hạt nhỏ, dễ khuếch tán vào môi trường xung quanh. Tưới phun sương thường
5

được lắp trong các khu vườn ươm giống, các vườn hoa trong nhà kính, trồng
rau hữu cơ, rau thủy canh, trồng hoa, tưới cảnh quan…
Ưu điểm:
 Có tác dụng ngăn bụi, điều hòa vi khí hậu, giúp không khí mát mẻ và
có thể tận dụng lúc tưới để phun các loại thuốc bổ trợ cho cây trồng. Kích
thước hạt nhỏ, mịn nên sẽ an toàn đối với hoa và cây trồng, không gây hại cho
cây.
 Nhắc đến thiết bị tưới phun sương là phải nhắc đến công dụng đầu
tiên của sản phẩm này là chống lãng phí nước. Nếu so với việc tưới thủ công
tốn khá nhiều nước, thì thiết bị này giúp người trồng trọt tiết kiệm được
nguồn tài nguyên quý giá và không thể thiếu đối với sự sống của cây trồng.
Cường độ tưới có thể điều chỉnh cho thích hợp với từng loại cây trồng, cộng
thêm thiết bị có thể tưới trên diện rộng, nên thiết bị này không chỉ chống lãng
phí nước mà còn tiết kiệm thời gian tưới cây.
 Lợi thế tiếp theo của thiết bị này là giúp cho người trồng trọt đỡ vất
vả, đỡ tốn công sức tưới hoặc thuê người tưới. Thay vì mất vài giờ đồng hồ
chỉ để tưới cây, trong khi thời gian là tiền bạc, chủ vườn cây có thể dành thời
gian đó để làm việc khác, hoặc ngồi ngắm nhìn khu vườn đang sai trĩu quả
hoặc đang trổ hoa đẹp mắt. Vừa tiết kiệm nước, vừa tiết kiệm công sức lao
động quả là thiết bị đáng phải xem xét để đầu tư.
 Thiết bị tưới phun sương cho phép người sử dụng có thể pha thêm
một số dung dịch an toàn chống lại sâu bệnh gây hại. Tuy nhiên, nếu phải
thường xuyên tiếp xúc với các chất này có thể ảnh hưởng đến sức khỏe con
người. Vì thế, sản phẩm này giúp đảm bảo sức khỏe của người dùng. Bên
cạnh đó, với mật độ phun đều, lượng nước và chất phòng ngừa sâu hại không
bị tồn đọng quá nhiều gây ngập úng hay dư thừa chất bảo vệ thực vật.
 Với sân vườn nhỏ, khách hàng có thể tự lắp ráp hệ thống tưới phun
sương tự động theo hướng dẫn ghi trên hộp, hoặc theo hướng dẫn của nhà
cung cấp. Đối với diện tích sân vườn lớn hơn, bạn vẫn có thể tự lắp ráp nhưng
6

tốt nhất là nên có sự hỗ trợ kỹ thuật từ phía người bán, vì họ có nhiều kinh
nghiệm và họ sẽ giúp bạn có được hệ thống tưới hiệu quả nhất. Tính năng tự
động không thể không nhắc đến khi nói về sản phẩm này. Người sử dụng chỉ
cần đứng ở đầu nguồn nước để mở vòi, hoặc lắp đặt hệ thống tưới tự động
hẹn giờ, lúc này thiết bị sẽ tưới theo đúng thời gian và lượng nước được cài
đặt sẵn.
 Không gây dòng chảy mặt: Các hạt sương có kích thước nhỏ, di
chuyển với vận tốc bé trong không khí.
 Độ ẩm đồng đều.
Nhược điểm:
 Hệ thống này nếu muốn tưới tự động thì bạn cần đầu tư chi phí để
mua bộ thiết bị hẹn giờ, cảm biến mưa, các vòi phun và đường ống tốt. Đặc
biệt đối với hệ thống lắp đặt ngầm, bạn càng cần có sản phẩm tốt để có thể sử
dụng lâu dài mà không tốn công thay thế bộ phận, chi tiết hay phải sửa lại
đường ống nếu ống dẫn không tốt. Tuy vốn đầu tư ban đầu lớn, nhưng điều đó
không có nghĩa chi phí trung bình cao vì hệ thống thiết bị tưới phun sương có
thể sử dụng từ 10 đến 20 năm. Nếu bạn lấy vốn ban đầu chia cho số năm sử
dụng, bạn sẽ thấy được thiết bị này vừa tiện lợi, lại vừa tốn ít chi phí trung
bình phải bỏ ra.
• Thiết bị sử dụng công nghệ hiện đại đòi hỏi người sử dụng phải có
kiến thức nhất định về sản phẩm, cũng như cách dùng. Với diện tích đất trồng
hay sân vườn lớn, bạn cần có bản thiết kế hoàn chỉnh trước khi bắt tay vào lắp
đặt, chưa kể đến bạn cần có thông tin cách sử dụng sao cho hiệu quả nhất.
Tuy nhiên, bạn cũng không cần quá lo lắng, vì đa phần các nhà cung cấp thiết
bị tưới phun sương uy tín đều có đội ngũ nhân viên kỹ thuật giàu kinh
nghiệm. Họ sẽ giúp đỡ bạn từ khâu thiết kế, lắp đặt, đến vận hành hệ thống
tưới tự động này.
7

Hình 1. 2. Hệ thống tưới nước phun xương [2]


- Tưới nhỏ giọt:
Tưới nhỏ giọt là hệ thống tưới nước đưa nước đến từng gốc cây, nước
sẽ được tưới trực tiếp lên bề mặt của đất chứ không phải phun trên bề mặt lá.
Từ đây hạn chế đến tối đa việc bốc hơi của nước, giúp cây thu đủ chất dinh
dưỡng để phát triển. Nước ra từ các đầu vòi theo dạng từng giọt, từng giọt
một tưới trực tiếp vào gốc cây thích hợp cho việc tưới không gian lớn cho cây
ăn quả, cây lâu năm.
Ưu điểm
 Đảm bảo cung cấp độ ẩm đồng đều cho đất canh tác, ngoài ra còn
điều hòa được các yếu tố như nhiệt độ, chế độ không khí, nước, thức ăn,
quang hơp của cây…

 Tưới nhot giọt giúp tiết kiệm nước một cách tối đa, giảm đến mức
thấp nhất sự hao hụt về nước do thấm ra đất hay bốc hơi.
 Tránh hiện tượng xói mòn, rửa trôi đất, tập trung muối về 1 nơi khiến
đất không đồng đều về dinh dưỡng.
8

 Là bước đệm cho cơ giới hóa, tự động hóa trong nông nghiệp, năng
suất lao động tăng lên đáng kể nhưng lại ít tốn nhân công và giảm thời gian
lao động chân tay bởi vì thao tác bón phân hay bơm thuốc bảo vệ thực vật dễ
dàng kết hợp cùng quá trình tưới.
 Tưới nhỏ giọt ít phụ thuộc vào cấu trúc địa hình, không phá vỡ kết cấu của
đất, thích hợp với mọi điều kiện địa hình ở nước ta.
 Tiết kiệm năng lượng, giảm chi phí vận hành.
 Góp phần ngăn chặn cỏ dại, sâu bệnh do chỉ đủ nước cho gốc cây chứ
không phung phí ra các vùng xung quanh.
 Và đặc biệt, hệ thống tưới nhỏ giọt luôn duy trì độ ẩm ở mức độ tốt nhất,
phù hợp với từng loại cây trồng, do đó, tăng năng suất cây và giúp cây đạt
chất lượng vượt trội.
Nhược điểm:
 Dễ bị tắc ngẽn do rong rêu, bùn, chất cặn trong dinh dưỡng hay
nguồn nước, do đó nguồn dung dịch đi qua ống tưới cần có bộ lọc trước khi
đến cây trồng.
 Không thể làm mát cây và tăng khả năng quang hợp của lá nhưng các
hệ thống tưới khác.
Chi phí ban đầu khá cao.
 Đòi hỏi người đầu tư phải am hiểu về kỹ thuật tưới nhỏ giọt mới vận
hành được.
 Nếu quá trình tưới nhỏ giọt bị gián đoạn chất lượng cây trồng sẽ
xuống cấp cực kỳ nhanh so với những cách tưới khác.

Như vậy, sau khi so sánh những ưu – nhược điểm của hệ thống tưới nhỏ giọt
bạn có thể chọn cho mình cách tưới tiêu hợp lý nhất tùy vào loài cây và khả
năng tài chính của bạn.
Có 2 hệ thống tưới nước nhỏ giọt phổ biến:
9

 Tưới nhỏ giọt dọc luống: Được áp dụng đầu tiên trong nông nghiệp
có lẽ là hình thức tưới nhỏ giọt dọc luống. Với khả năng nhân rộng cao, chủ
vườn chỉ cần lắp đặt một đường ống nước và đặt dọc theo các luống cây. Mỗi
gốc cây sẽ lắp thêm một béc để dòng nước chảy nhỏ giọt ra từ từ.
 Tưới nhỏ giọt quanh gốc: Từ phương pháp tưới nhỏ giọt dọc luống
cũ, các nhà khoa học đã nghiên cứu và cải tạo thành tưới nhỏ giọt quấn quanh
gốc. Phương pháp này phù hợp để sử dụng cho những loại cây trồng có nhu
cầu cao về lượng nước, nhưng việc áp dụng các biện pháp tưới phun sương lại
không phù hợp.

Hình 1. 3. Hệ thống tưới nước nhỏ giọt [2]

- Tưới cảnh quan, tưới cỏ:


Hệ thống tưới tự động được hiểu đơn giản là có thể hoạt động mà
không cần sự tác động của con người. Mọi hệ thống tưới nhỏ giọt, phun mưa,
10

tưới cảnh quan, sân vườn đều có thế áp dụng tưới tự động thống tưới tự động
thông qua các thiết bị điện tử như bộ hẹn giờ và các thiết bị cơ khí khác. . .
Việc áp dụng hệ thống tưới tự động có thể làm tăng chi phí ban đầu
nhưng về lâu dài các năm sau chi phí để chăm sóc cây trồng sẽ giảm thiểu tối
đa do giảm thiểu về nhân công lao động, tiền điện, tiền nước.
Ưu điểm
 So với việc tưới cây thủ công thì hệ thống tưới cảnh quan tự động
giúp tiết kiệm được 60% lượng nước. Chính điều này đã giúp giảm chi phí
tiền nước hàng tháng của mỗi gia đình, mỗi công ty. Đồng thời cũng giúp
giảm được sức lực chăm sóc của con người. Không chỉ vậy, đặc điểm của hệ
thống này đó là được lắp đặt cố định nên nó sẽ giúp đảm bảo tuổi thọ lâu dài
cho các thiết bị tưới tiêu.
 Bên cạnh đó, hệ thống tưới cảnh quan còn giúp bạn tiết kiệm được
nhiều thời gian chăm sóc cây, từ đó có thêm thời gian để tập trung vào những
việc khác trong cuộc sống. Khu vườn của bạn sẽ trở nên tươi mới, sống động
hơn nếu được lắp đặt hệ thống tưới cảnh quan tự động. Từ đó công trình sân
vườn do bạn tâm huyết chăm sóc sẽ trở nên ấn tượng và thu hút hơn rất nhiều.
Điều này cũng giúp con người thư thái và thoải mái hơn khi ngắm những loại
cây cảnh ưa thích. Vì hệ thống này có bộ cảm biến và tắt tự động vì vậy nó
giảm lượng bụi bẩn, ô nhiễm vào nguồn nước từ các dòng chảy, giúp bảo vệ
môi trường trong lành hơn.
Nhược điểm:
 Nhược điểm của hệ thống tưới cảnh quan tự động là chi phí đầu tư
ban đầu khá cao so.
 Để vận hành hệ thống hoạt động tốt và hiệu quả thì cần người có kỹ
thuật chuyên môn, am hiểu nguyên lý hoạt động của hệ thống tưới tự động
11

Hình 1. 4. Hệ thống tưới nước cảnh quan, cây cỏ [2]


1.5. Các nghiên cứu ở nước ngoài
Ở nước ngoài đã có nhiều nghiên cứu ứng dụng về hệ thống tưới cây tự
động: Đầu những năm 80, Liên Xô (cũ) đã chế tạo ra một loại máy tự động
ứng dụng trong nông nghiệp. Khi làm việc loại máy này có thể quan sát được
độ ẩm của thổ nhưỡng, nhiệt độ không khí, sức gió… Nó có thể xác định
được phương pháp tưới và tiến hành tưới cho cây trồng, nhờ một loại máy
làm mưa nhân tạo khác. Hãng robot Droplet giới thiệu robot tưới cây tích hợp
những công nghệ tự động mới nhất, điện toán đám mây và một số dịch vụ kết
nối khác cho phép Droplet có khả năng tự động ngắm hướng vòi phun, lượng
nước và tần suất tưới để tự động tưới nước cho cây theo những lịch trình tự
tính toán dựa trên phân tích các dữ liệu đầu vào. Droplet là 1 chiếc vòi phun
tự động có khả năng tự điều chỉnh hướng dòng nước phun ra từ ống đến thân
cây trong bán kính 9,14 mét. Trước khi robot tự động vận hành, người dùng
chỉ cần khai báo tên của các loại cây có mặt trong vườn thông qua điện thoại,
máy tính bảng, được kết nối không dây với robot. Dựa trên thông tin về tên
các loại cây, Droplet sẽ tự tra cứu thông tin trên mạng nhằm xác định lượng
12

nước cũng như tần số tưới cho phù hợp với từng loại cây. Bên cạnh đó,
Droplet cũng tự tra cứu dữ liệu về tình hình thời tiết của địa điểm làm việc để
xác định mưa/nắng nhằm đưa ra lịch làm việc thích hợp. Bộ điều khiển tưới
cây tự động Israel dễ dàng được lập trình theo yêu cầu tưới của người sử
dụng. Chỉ cần vài thao tác lập trình, cung cấp cho hệ thống một nguồn nước
đầu vào và dẫn các đầu tưới đến các vị trí cần tưới là đã hoàn tất việc lắp đặt
hệ thống tưới tự động theo công nghệ tưới tiên tiến.
1.6. Các nghiên cứu trong nước
Ở nước ta đã có nhiều nghiên cứu và ứng dụng hệ thống tự động vào
trong cuộc sống. Người dân đã sáng tạo ra các hệ thống bán tự động giúp tiết
kiệm sức lao động, hiệu quả mang lại cao hơn so với tưới thủ công. Tuy nhiên
hệ thống này còn nhiều nhược điểm cần khắc phục để mang lại hiệu quả cao
nhất có thể. Ở các trường đại học chuyên ngành kĩ thuật đã có nhiều đề tài về
hệ thống tưới nước tự động do sinh viên thực hiện. Tuy nhiên vẫn còn nhiều
mặt hạn chế cần khắc phục.
Hệ thống tưới phun tự động đa năng- một công trình khoa học của 2
giảng viên rường Cao đẳng Công nghiệp (CĐCN) Huế: Tiến sĩ Lê Văn Luận
và thạc sĩ Lê Đình Hiếu. Các thiết bị chính của hệ thống tưới phun đa năng
này gồm có 1 cảm biến đo nhiệt độ và 1 cảm biến đo độ ẩm của đất được cài
đặt tại nhà màng trồng hoa, hệ điều khiển được lập trình trên PLC-S7- 1200.
Khi các cảm biến cho thông số độ ẩm của đất hoặc nhiệt độ không khí tại nhà
màng báo hiệu cần nước, tín hiệu này sẽ đưa đến hộp điều khiển PLC. Tại đây
các chức năng sẽ được điều khiển tự động để nhận nước và đưa tưới tự động
tưới phun theo các vòi phun lắp đặt, và sẽ tự ngừng trong đúng 5 phút, khi
cảm biến báo độ ẩm hoặc nhiệt độ đã đạt yêu cầu.
1.7. Quy trình công nghệ
- Cảm biến đo độ ẩm, nhiệt độ truyền dữ liệu đến bộ điều khiển để tưới nước
một cách tự động (khô thì tưới, thừa nước thì ngừng luôn duy trì độ ẩm ở mức
13

ổn định để cây phát triển nhanh). Có thể điều khiển tưới thước bằng tay khi
cần thiết.
- Cảm biến đo mức nước truyền dữ liệu đến bộ điều khiển để xác định xem có
cần bơm nước vào bình hay không (cạn thì bơm, đầy thi tự ngắt). Có thể điều
khiển máy bơm bằng tay khi cần thiết.
- Cảm biến đo áp nước trên đường ống từ máy bơm lên bể nước truyền dữ
liệu đến bộ điều khiển để xem áp suất nước có quả tải đường ống không.
- Khi nước được tưới ở đâu thì sẽ có đèn báo hiệu ở vị trí đó.
1.8. Các vấn đề cần nghiên cứu bổ sung
Các nghiên cứu ở trên đã được ứng dụng trong thực tiễn. Tuy nhiên, do
giá thành quá cao nên nhiều người chưa có điều kiện để sử dụng các thiết bị
đó. Vì vậy, em đã thực hiện nghiên cứu hệ thống tưới sử dụng cảm biến độ
ẩm của không khí để quyết định thời gian tưới cho cây trồng. Hệ thống chế
tạo đơn giản, chi phí thấp dễ sửa chữa…
1.9. Kết luận chương 1
Qua những thông tin về nền nông nghiệp, công nghiệp của Việt Nam và
của các nước phát triển trên thế giới nên trên. Chúng ta thấy rằng không áp
dụng công nghệ cao vào sản xuất nông nghiệp ở Việt Nam là một thiếu sót rất
lớn đối với một đất nước chủ yếu về nông nghiệp. Tuy nhiên để áp dụng công
nghệ hiện đại như ở Israel hay Nhật Bản vào nền nông nghiệp nước ta ngay
lúc này là điều rất khó khăn vì những hệ thống đó đòi hỏi phải đầu tư rất cao
với những người nông dân ở Việt Nam. Từ thực tế đó chúng em thấy rằng
mình hoàn toàn có thể học hỏi và thiết kế những hệ thống tự động hóa đơn
giản trong nông nghiệp với giá thành rẻ hơn nhưng vẫn đáp ứng được yêu cầu
của một hệ thống thông minh. Qua quá trình khảo sát tại một số khu vườn và
thực tế trồng trọt tại gia đình, để tài của em làm là “Thiết kế hệ thống tưới
nước tự động sử dụng vi điều khiển PIC 18F4520". Đây là một đề tài có tính
ứng dụng rất thực tế. Nội dung thiết kế chi tiết sẽ được trình bày ở các chương
tiếp theo.
14

CHƯƠNG 2
THIẾT KẾ HỆ THỐNG TƯỚI NƯỚC TỰ ĐỘNG
2.1 Xây dựng sơ đồ khối
Theo những gì đã trình bày ở trên và khảo sát thực tế. Em đưa ra sơ đồ
khối của hệ thống như sau

Hình 2. 1. Sơ đồ khối của hệ thống tưới nước tự động

Trong sơ đồ khối trên gồm các khối:


- Khối điều khiển trung tâm PIC18F4520: Điều khiển toàn bộ chức năng
của mạch, nhận dữ liệu giải mã tín hiệu nhiệt độ, độ ẩm. Đưa hiển thị
lên LCD sau đó đưa ra tín hiệu điều khiển bật/ tắt máy bơm.
- Khối cảm biến: SHT10 và module thời gian thực Ds1307. Xác định giá
trị nhiệt độ, độ ẩm và thời gian.
- Khối hiển thị LCD: Là LCD 2 dòng 16 kí tự để hiển thị nhiệt độ, độ ẩm
trong môi trường, thời gian.
- Khối nguồn LM2576: Là khối cơ bản nhất, tạo ra điện áp ổn định, cung
cấp nguồn nuôi cho toàn bộ linh kiện trong mạch.
- Khối dao động thạch anh: Cung cấp xung cho vi điều khiển PIC
18F4520 hoạt động.
15

2.2 Chức năng của từng khối


2.2.1. Khối vi điều khiển PIC 18F4520

Hình 2. 2. Sơ đồ chân của PIC 18F4520 [3]


Các chức năng:
- Chân 1->7: Port A (RA) là các port I/O.
- Chân 33->40: Port B (RB) là các port I/O.
- Chân 15->18: và chân 23->26: Port C (RC) là các chân I/O.
- Chân 19->22 và chân 27->30: Port D (RD) là các chân I/O.
- Chân 12 và 31: Nối mass
- Chân 11 và 32: Nối nguồn
2.2.1.1. Một vài thông số về PIC 18F4520
Bộ vi điều khiển ghi tắt là Micro- controller là mạch tích hợp trên một chip
có thể lập trình được, dùng để điều khiển hoạt động của hệ thống. Theo các
tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin,
xử lí thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó.
Trong các thiết bị điện và điện tử các bộ vi điều khiển điều khiển hoạt động
của TV, máy giặt, điện thoại…Trong hệ thống sản xuất tự động, bộ vi điều
16

khiển sử dụng trong robot, các hệ thống đo lường giám sát, các hệ thống càng
thông minh, hiện đại thì vai trò của vi điều khiển càng ngày càng quan trọng.
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như: 6811 của
Motorola, 8051 của Intel, Z8 của Zilog, PIC của Microchip Technology…
Trong đề tài này nghiên cứu về PIC 18f4520 vì nó có nhiều ưu điểm hơn
các loại vi điều khiển khác như: ADC 10 bit, PWM 10 bit, EEPROM 256
Byte, Comparater…ngoài ra nó còn được các trường đại học trên thế giới, đặc
biệt là các nước Châu Âu hầu hết xem PIC là một môn học trong bộ môn vi
điều khiển. Nói vậy các bạn cũng thấy sự phổ biến rộng rãi của nó. Ngoài ra
PIC còn được rất nhiều nhà sản xuất phần mềm tạo ra các ngôn ngữ hõ trợ
cho việc lập trình ngoài ngôn ngữ Assembly như: MPLAB, CCSC, HTPIC…
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài
đến 83 cấu trúc lệnh.
- Hầu hết các cấu trúc lệnh chỉ mất một chù kì máy, ngoại trừ lệnh rẽ
nhánh chương trình mất hai chu kì máy.
- Tốc độ làm việc: Xung clock đến 40MHz, tốc độ thực thi lệnh 125ns.
- Bộ nhớ chương trình (Flash Program Memory) là 32 Kbyte.
- Bộ nhớ dữ liệu SRAM là 1536 byte.
- Bộ nhớ dữ liệu EEFROM là 256 byte.
- 5 port vào/ ra (PORTA, PORTB, PORT C, PORT D, PORT E).
- 4 bộ Timer (Timer 0, Timer 1, Timer 2, Timer 3).
- 1 capture/ compare/ PWM modules.
- 1 enhanced capture/ compare/ PWM modules.
- Các chuẩn giao tiếp nối SSP (Synchronous Serial Port), SPI (Serial
Peripheral Interface), I2C (Inter- Intergrated Circuit).
- Chuẩn giao tiếp USART nối với 9 bit địa chỉ.
- Cổng giao tiếp song song PSP (Parrallel Slave Port).
- 13 kênh chuyển đổi ADC 10 bit.
17

Bên cạnh đó là một vài đặc tính khác nhau của vi điều khiển như:
- Bộ nhớ Flash với khả năng ghi xóa 100.000 lần.
- Bộ nhớ EEFROM với khả năng ghi xóa 1.000.000 lần.
- Flash/ dữ liệu bộ nhớ EEFROM có thể lưu trữ hàng trăm năm.
- Khả năng tự nạp chương trình với sự điều khiển của phần phềm.
- Watchdog Timer với bộ dao động trong.
- Chức năng bảo mật mã chương trình.
- Chế độ Sleep.
- Có thể hoạt động với nhiều dạng Oscillator khác nhau.
2.2.1.2. Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC18F4520 gồm có bộ nhớ chương
trình (program memory), bộ nhớ dữ liệu RAM (Data RAM) và bộ nhớ dữ
liệu EEPROM (Data EERPROM).
Bộ nhớ chương trình: Dòng vi điều khiển Pic18xxxx là thiết bị với 21 bit
bộ đếm chương trình PC (Program counter) có thể quản lý 2Mbyte bộ nhớ
chương trình. Với Pic18F4520 có 32Kbytes bộ nhớ Flash có thể lưu trữ
lên tới 16,384 câu lệnh đơn, dòng Pic này có hai vector ngắt: Reset vector
có địa chỉ 0000H và Interrupt vector ở địa chỉ 0008H và 0018H.
18

Hình 2. 3. Tổ chức bộ nhớ chương trình [3]


 Bộ nhớ dữ liệu
Pic18Fxxxx là họ Statis Ram mỗi thanh ghi bộ nhớ dữ liệu có 12 bit địa
chỉ, cho phép truy nhập tới 4096 bytes dữ liệu bộ nhớ. Không gian bộ nhớ
chia làm 16 bank gồm 256 byte mỗi bank Pic18F4520 như sơ đồ phía sau. Bộ
nhớ dữ liệu bao gồm: thanh ghi chức năng đặc biệt (SFR), thanh ghi mục đích
chung (GPR). Thanh ghi SFR dùng để điều khiến trạng thái và chức năng
thiết bị ngoại vi, trong khi thanh ghi GPR dùng để lưu trữ hoặc làm vùng nhớ
tạm thời đang hoạt động của các ứng dụng.
Theo cấu trúc lệnh và kiến trúc dòng Pic18Fxxxx cho phép các bank hoạt
động đồng thời. Toàn bộ bộ nhớ dữ liệu có thể cho phép truy nhập có hướng,
vô hướng hay địa chỉ có chỉ số, đặc điểm chung của các thanh ghi là cho phép
xử lý trong một chu kì đơn. Pic 18Fxxxx cung cấp một AccessBank gồm 256
byte bộ nhớ cho phép truy cập nhanh SFRs và phần Bank GPR nếu không sử
dụng BSR.
19

Hình 2. 4. Bộ nhớ dữ liệu RAM [3]


2.2.1.3. Các cổng xuất nhập của PIC18F4520
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua
quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ
ràng. Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tuỳ
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập
và số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều
khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên
cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn
có thêm chức năng khác để thế hiện sự tác động của các đặc tính ngoại vi nêu
bên trên đối với thế giới bên ngoài. Chức năng của từng chân xuất nhập trong
mỗi cổng hoàn toàn có thế được xác lập và điều khiển được thông qua các
thanh ghi SFR liên quan đến chân xuất nhập đó.
Vi điều khiển PIC18F4520 có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD và PORTE. Cấu trúc và chức năng của từng cổng
xuất nhập như sau:
- PORTA:
PORTA (RA) bao gồm 6 pin I/O (pin 2,3,4,5,6,7). Đây là các chân “hai
chiều" (bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O
20

này được điều khiến bởi thanh ghi TRISA (địa chi 92H). Muốn xác lập chức
năng của một chân trong PORTA là input, ta "set" bit điều khiến tương ứng
với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của
một chân trong PORTA là output, ta "clear" bit điêu khiến tương ứng với
chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn tương tự đối với các
PORT và các thanh ghi điều khiến tương ứng TRIS (đối với PORTA là
TRISA, đối với PORTB là TRISB, đổi với PORTC là TRISC, đối với
PORTD là TRISD, đổi với PORTE là TRISE).
Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào
analog, ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP
(Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA bao gồm:
+ PORTA (địa chi 80H): chức giá trị các pin trong PORTA.
+ TRISA (địa chi 92H): điều khiển xuất nhập.
+CMCON (địa chỉ B4H): thanh ghi điều khiển bộ so sánh điện áp.
+ CVRCON (địa chỉ B5H): thanh ghi điều khiến bộ so sánh điện áp.
+ ADCON1 (địa chỉ ClH): thanh ghi điều khiển bộ ADC.
- PORTB:
PORTB(RB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá
trình. Nạp chương trình cho vi điều khiến với nhiều chế độ khác nhau.
PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích
hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi liên quan đến PORTB bao gồm:
+ PORTB (địa chỉ 81H): chứa giả trị các pin trong PORTB.
+ TRISB (địa chi 93H): điều khiển xuất nhập.
- PORTC:
PORTC (RC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương
ứng là TRISB. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so
21

sánh, bộ Timer1, bộ PWM và các chuân giao tiếp nối tiếp I2C, SPI, SSP,
USART.
Các thanh ghi liên quan đến PORTC:
+ PORTC (địa chi 82H): chứa giá trị các pin trong PORTC.
+ TRISC (địa chi 94H): điều khiến xuất nhập.
- PORTD:
PORTD (RD) gồm 8 chân I/O. Thanh ghi điều khiến tương ứng là TRISD.
PORTD còn là cổng xuất dữ liệu của chân giao tiếp PSP (Parallel Slave Port).
Các thanh ghi liên quan đến PORTD bao gồm:
+ PORTD (địa chỉ 83H): chứa giá trị các pin trong PORTD.
+ TRISD (địa chỉ 95H): điều khiển xuất nhập.
- PORTE:
PORTE (RE) gồm 3 chân I/O. Thanh ghi điều khiến xuất nhập tương ứng
là TRISE. Các chân của PORTE có ngõ vào analog. Bên cạnh đó PORTE còn
là các chân điều khiển của chuẩn giao tiếp PSP.
Các thanh ghi liên quan đến PORTE bao gồm:
+ PORTE (địa chỉ 85h): chứa giá trị các chân trong PORTE.
+ TRISE (địa chỉ 96h): điều khiển xuất nhập và xác lập các thông số cho
chuẩn giao tiếp PSP.
+ ADCON1(địa chỉ C1H): thanh ghi điều khiển khối ADC.
2.2.2. Khối cảm biến nhiệt độ và độ ẩm.
2.2.2.1. Một số cảm biến nhiệt đô và độ ẩm thông dụng
Hiện nay trên thị trường có rất nhiều cảm biến do nhiệt độ và độ ẩm như:
- LM35, LM335…: Cảm biến đo nhiệt độ.
22

Hình 2. 5. Cảm biến LM35 [4]


LM35 là một cái cảm biến nhiệt độ giá rẻ (tầm 26k) thường được tiêu
dùng mang thể được sử dụng để đo nhiệt độ (theo °C). Nó với thể đo nhiệt độ
chính xác hơn so với một điện trở nhiệt (thermistor) cùng tầm giá. Cảm biến
này tạo ra điện áp có đầu ra cao hơn các cặp nhiệt điện và có thể ko cần điện
áp đầu ra được khuếch đại.

Hình 2. 6. Cảm biến HS1101 [5]

HS1101 là cảm biến có độ chính xác cao.


- DHT11, DHT22, SHT11…: Tích hợp cả cảm biến nhiệt độ và độ ẩm
- Cảm biến HS1101 là cảm biến điện dung. Khi độ ẩm thay đổi, điện
dung của HS1101 thay đổi. Do vậy, để đo được độ ẩm người ta thiết kế
mạch đo điện dung của HS1101.
- Trong thực tế, người ta thường ghép nối HS1101 và IC NE555. Khi đó
giá trị điện dung của HS1101 thay đổi thì làm thay đổi tần số đầu ra của
23

IC555. Như vậy chỉ cần đo tần số đầu ra là có thể đo được điện dung
của HS1101.

Hình 2. 7. Chip cảm biến SHT10 [5]


SHT10 có độ sai số nhỏ, phù hợp với khảo sát ở những nơi cần độ chính xác
cao như nhà máy, phòng thí nghiệm. Trong phạm vi để tài, thì để có thể mang
lại độ chính xác cao và mang lại kết quả cao nhất thì em sẽ sử dụng cảm biến
SHT10.
2.2.2.2. Cảm biến SHT10
Cảm biến độ ẩm, nhiệt độ không khi SHT10 được sử dụng trong các
ứng dụng nông nghiệp đòi hỏi độ bên, độ chinh xác và độ ổn đinh cao, cấu tạo
gồm cảm biến SHT10 phia trong, bên ngoài là lớp vỏ bảo vệ cảm biến khỏi
các tác động vật lý từ môi trường như bụi, nước. Cảm biến độ ẩm, nhiệt độ
không khi SHT10 khuyến cáo chỉ được dùng để đo độ ẩm và nhiệt độ không
khí, không sử dụng cảm biến trong môi trường nước ngập cảm biến hoặc chôn
dưới đất, tránh để nước xịt trực tiếp vào cảm biến vì có thể làm hư cảm biến.
Cảm biến nhiệt độ, độ ẩm SHT10 được thiết kế với đầu dò không thấm nước.
Tích hợp chip cảm biển nhiệt độ, độ ẩm SHT10. SHT10 có độ tin cậy cao, có
thể đo nhiệt độ môi trường xung quanh và độ ẩm không khí tương đổi chính
xác.
24

Hình 2. 8. Cảm biến SHT10 [6]


Một số thông số kĩ thuật
- Cảm biến SHT10 đo nhiệt độ, độ ẩm ở 2 chế độ:
+ Chế độ 1: Đo nhiệt độ 12 bít, độ ẩm 8 bít.
+ Chế độ 2: Đo nhiệt độ 14 bít, đo độ ẩm 12 bít. Đây là chế độ thường được
sử dụng
+ Sai số độ ẩm: ±3
+ Sai số nhiệt độ: ±0.4
+ Điện áp cung cấp: 2.4 – 5.5VDC.
+ Dải đo độ ẩm: 0 – 100% RH.
+ Độ chính xác độ ẩm: ± 4.5% RH.
+ Dải đo nhiệt độ: -40 – 123.80 C.
+ Độ chính xác nhiệt độ: ± 0.40 C.
+ Tốc độ truyền: 9600 mặc định (người dùng có thể đặt), dữ liệu 8 bit, 1 điểm
dừng, không có độ chẵn lẻ.
+ Công suất tối đa: 0.2W
+Tín hiệu ngõ ra: Digital.
+Kích thước: Đường kính 14mm, dài 50mm, chiều dài cáp: 0.5 mét
Sơ đồ chân và chức năng của các chân của SHT10:
25

Hình 2. 9. Sơ đồ chân của SHT10 [7]


- Tên chân chức năng:
+ Chân 1 (GND): Chân mass
+ Chân 2 (DATA): Chân dữ liệu nối tiếp 2 chiều
+ Chân 3 (SCK): Chân chuỗi xung Clock
+ Chân 4 (VDD): Điện áp cung cấp
+ Chân NC: Không kết nối
- Chức năng của các chân:
+ Chân 1 (GND): Điện áp cung cấp của SHT10 phải nằm trong khoảng 2.4 ->
5.5V. Điện áp cung cấp yêu cầu là 3.3VDC. Cung cấp điện vào chân VDD và
GND phải nối với tụ 100nF.
+ Chân 2 (DATA): Chuyển dữ liệu vào và ra của cảm biến.
+ Chân 3 (SCK): Đồng bộ giao tiếp giữa Micro-Controller và SHT10.
Sơ đồ ghép nối với vi xử lí:

Hình 2. 10. Sơ đồ ghép nối MCU với SHT10 [7]


26

2.2.3. Khối hiển thị thời gian thực Ds1307


DS1307 là chip đồng hồ thời gian thực (RTC: Real-time clock), khái
niệm thực ở đây được dùng với ý nghĩa tuyệt đối mà con người đang sử dụng,
tính hằng giờ, phút, giấy... DS1307 là một sản phẩm của Dallas
Semiconductor (một công ty thuộc Maxim Integrated Products). Chip này có
8 bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm.
Ngoài ra DS1307 còn có 1 thanh ghi điều khiến ngõ ra phụ và 56 thanh ghi
trống có thể dùng như RAM. DS1307 xuất hiện ở 2 gói SOIC và DIP 8 chân.
Thông số kĩ thuật:
- Điện áp làm việc: 3.3V đến 5V.
- Bao gồm 1 IC thời gian thực DS1307.
- Các thành phần cần thiết như thạch anh 32768kHz, điện trở pull-up và
tụ lọc nguồn đều được tích hợp trên board.
- LED báo nguồn.
- Có sẵn pin dự phòng duy trì thời gian khi mất điện.
- 5-pin bao gồm giao thức I2C sẵn sàng giao tiếp: INT (QWO), SCL,
SDA, VCC và GND.
- Dễ dàng thêm một đồng hồ thời gian thực để dự án của bạn
- Nhỏ gọn và dễ dàng để lắp thêm vào bo mạch hoặc test board

2.2.3.1. Sơ đồ chân Ds1307


27

Hình 2. 11. Sơ đồ chân của Ds1307 [8]


- Các chân của DS1307 được mô tả như sau:
+ X1 và X2: Là 2 ngõ kết nối với thạch anh 32768HZ làm nguồn tạo dao
động cho chip.
+ VBAT: Cực dương của một nguồn pin 3V nuôi chip.
+ GND: Chân mass chung cho cả pin 3V và Vcc.
+ Vcc: Nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều
khiển. Nếu Vcc không được cấp nguồn nhưng VBAT được cấp thị DS1307
vẫn hoạt động (nhưng không ghi và đọc được).
+ SOW/OUT: Một ngõ ra phụ tạo xung vuông (Square Wave/ Output Driver),
tần số của xung được tạo có thể lập trình. Chân này hầu như không liên quan
đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống
chân này khi nối mạch.
+ SCL và SDA: là 2 đường giao xung nhịp và dữ liệu của giao diện I2C.
+ Thông thường khi kết nối với mạch điện thật thì 2 chân SCL và SDA sẽ
được nổi với 2 điện trở kéo lên 10k.
2.2.3.2. Cấu tạo bên trong của DS1307
Cấu tạo bên trong của DS1307 bao gồm một số thành phần như mạch
nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ
địa chỉ và các thanh ghi (hay RAM).
Sử dụng Ds1307 chủ yếu là để ghi/đọc các thanh ghi trong chip. Vì thế
có 2 vấn để cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh
28

ghi này thông qua giao diện I2C. Bộ nhớ DS1307 có tất cả 64 thanh ghi 8 bit
được đánh địa chỉ từ 0 đến 63 từ 00H đến 3FH theo hệ hexa). Tuy nhiên thực
chất chỉ có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ" (RTC) còn lại
56 thanh ghi bỏ trống có thể dùng chứa biến tạm như RAM nếu muốn. Bảy
thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm: giây
(SECOND), phút (MINUTES), giờ (HOURS), thứ (DAY), ngày (DATE),
tháng (MONTH) và năm (YEAR). Việc ghi giá trị vào 7 thanh ghi này tương
đương với việc “cài đặt" thời gian khởi động cho RTC. Việc đọc giá trị từ 7
thanh ghi là đọc thời gian thực mà chip tạo ra.
2.2.3.3. Sơ đồ tổ chức bộ nhớ của Ds1307

Hình 2. 12. Sơ đồ tổ chức bộ nhớ của Ds1307 [8]

Hình 2. 13. Tổ chức bộ nhớ của các thanh ghi thời gian của Ds1307 [8]
Tổ chức của các thanh ghi thời gian:
- Thanh ghi giây (SECONDS):
29

+ Thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của Ds1307 có địa chỉ là
0x00.
+ Bốn bit thấp của thanh ghi này chứa mà BCD 4 bit của chữ số hàng đơn vị
của giá trị giây. Do giá trị cao nhất của chữ số hàng chục là 5 (không có giây
60) nên chi cần 3 bit (các bit SECOND là 6:4) là có thể mà hóa được (số 5=
101). Bit cao nhất (bit 7) là 1 điều khiển có tên CH (Clock halt - treo đông
hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa đồng
hồ không hoạt động. Vì vậy, nhiết thiết phải reset bit này xuống 0 ngay từ
đầu.
- Thanh ghi phút (MINUTES):
+ Có địa chỉ 0x01H chứa giá trị phút của đồng hồ.
+ Tương tự như thanh ghi SECONDS chi có 7 bit của thanh ghi này được
dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0.
- Thanh ghi giờ (HOURS):
+ Đây là thanh ghi phức tạp nhất trong các thanh ghi thời gian. Có địa chỉ là
0x02H.
+ Trước hết 4bit thấp của thanh ghi này được dùng cho chữ số hàng đơn vị
của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h
và 24h. Bit 6 xác lập hệ thống giờ. Nếu bit 6 = 0 thì hệ thống 24h được chọn
khi đó 2 bit cao 4 và 5 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá
trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 (= 10 binary) nên
2 bit 4 và 5 là đủ để mã hóa. Nếu bit 6 bằng 1 thì hệ thống 12h được chọn, với
trường hợp này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 chỉ
buổi trong ngày (AM hoặc PM). Bit 5 = 0 là AM, bit 5 = 1 là PM. Bit 7 luôn
bằng 0.
- Thanh ghi thứ (DAY):
+ Nằm ở địa chi 0x03H.
+ Thanh ghi DAY chi mang giá trị từ 1 đến 7 tương ứng từ chủ nhật đến thứ 7
trong 1 tuần. Vì thế chỉ có 3 bit thấp trong thanh ghi này có nghĩa.
30

- Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong 1 tháng
(1 đến 31), MONTH chứa tháng trong 1 năm (1 đến 12) và YEAR chứa năm
(00 đến 99). Thanh ghi YEAR của DS1307 chỉ dùng cho 100 năm, nên giá trị
năm chỉ có 2 chữ số, phần đầu của năm do người dùng tự thêm vào (ví dụ
20xx). Ngoài các thanh ghi trong bộ nhớ, DS1307 còn có một thanh ghi năm
riêng khác gọi là con trỏ địa chỉ hay thanh ghi địa chỉ (Address Register). Giá
trị của thanh ghi này là địa chỉ của thanh ghi trong bộ nhớ mà người dùng
muốn truy cập.
2.2.4. Khối hiển thị LCD

Hình 2. 14. Khối hiển thị LCD [9]


Ngày nay, thiết bị hiên thị LCD (Liquid Crystal Display) được sử dụng
rất nhiều các ứng dụng của vi điều khiển. LCD có rất nhiều ưu điểm so với
các dạng hiển thị khác. Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ,
số và kí tự đồ họa) dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao
tiếp khác nhau, tốn rất ít tài nguyên và giá thành rẻ...
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau
những thông dụng nhất là LCD 16x2.
31

LCD 16x2 giao tiếp theo phương pháp song song kết hợp mã lệnh với
chân điều khiển.
Chức năng các chân:
+ Vss: Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của
mạch điều khiển.
+ VDD: Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC = 5V của mạch điều khiển.
+ VEE: Điều chỉnh độ tương phản của LCD.
+ RS: Chân chọn thanh ghi (Registor select). Nối chân RS với mức logic "0"
(GND) hoặc mức logic "1" (VCC) để chọn thanh ghi. Logic "0": Bus DB0 ->
DB7 sẽ nối với thanh ghi lệnh I của LCD (ở chế độ “ghi" – write) hoặc nối
với bộ đếm địa chỉ của LCD (ở chế độ “đọc" - read). Logic "1": Bus DB0 ->
DB7 sẽ nối với thanh ghi DR bên trong LCD. Chân chọn chế độ đọc/ghi
(Read/Write). Nổi chân R/W với mức logic "0" để LCD hoạt động ở chế độ
ghi, hoặc R/W nối với logic "1" để LCD ở chế độ đọc.
+ R/W: Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên 9. bus DB0
-> DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chấn E. Chế
độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào (chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high- to- low transition) của tín hiệu chân E.
Chế độ đọc: Dữ liệu được LCD xuất ra DB0> DB7 khi phát hiện sườn lên
(low - to- high transition) ở chân E và được LCD giữ ở bus đến khi nào chân
E xuống mức thấp.
+ DB0 ->DB7: Tám đường của bus dữ liệu dùng để trao đối thông tin với
MPU.
Có 2 chế độ sử dụng 8 đường bus này:
+Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường với bit MSB là bit DB7.
+ Chế độ 4 bit: Dữ liệu được truyền trên 4 đường từ DB4 -> DB7 bit MSB là
bit DB7.
+A: Nguồn dương cho đèn nền.
32

+ A: GND cho đèn nền.


2.2.5. Khối nguồn sử dụng LM2576
LM2576 là loại IC nguồn switching rất thông dụng trên thị trường có
khả năng hoạt động được với điện áp đầu vào lên tới 40V đổi với các loại
thông thường hoặc tới 57V đổi với loại LM2576HV (đuôi "HV" kèm theo có
nghĩa là High Voltage tức điện áp cao).
Họ LM2576 có rất nhiều loại với các mức điện áp đầu ra khác nhau,
như LM2576 (3.3V), LM2576 (5V), LM2576 (12V) và còn có loại có khả
năng điều chỉnh điện áp đầu ra là LM2576ADJ. Ngoài ưu điểm so về dải điện
áp đầu vào so với các IC ổn định điện áp tuyến tính thông thường như
KA7805, KA7812... Họ LM2576 còn có khả năng cho dòng đầu ra lớn hơn
nhiều lên tới 3A dòng tải là lựa chọn phù hợp cho nhiều ứng dụng cần ổn áp
dòng lớn như Led driver, motor DC... Họ LM2576 có 5 chân với các chức
năng sau:

Hình 2. 15. Sơ đồ chân của LM2576 [10]


2.2.6. Khối tạo dao động
Khối cấp xung là khối thiết yếu để cho vi điều khiển hoạt động với tụ
thạch anh 20MHZ (có thể thay đổi theo yêu cầu) được mắc cùng với 2 tụ ổn
định 15pF.
33

Hai ngõ ra được mắc vào hai chân 13 (OSCI) và 14 (OSC2) để cung
cấp xung cho vi điều khiển làm việc.
2.3. Giao thức I2C
2.3.1. Giới thiệu
Đầu năm 1980 Phillips Semiconductor đã phát triển một chuẩn giao
tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter-
Intergrated Circuit. Đây là đường Bus giao tiếp giữa các IC với nhau. I2C
mặc dù được phát triển bởi Phillips, nhưng nó đã được rất nhiều nhà sản xuất
IC trên thế giới sử dụng. I2C trở thành một chuẩn công nghệ cho các giao tiếp
điều khiển, có thể kể ra đây một vài tên tuổi ngoài Phillips như: Texas
Intrument (TI), MaximDallas, Analog Device, National Semiconductor... Bus
I2C được sử dụng là bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau
như các loại vi điều khiển 8051, PIC, AVR, ARM…chip nhớ như: RAM tĩnh
(Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC)…
2.3.2. Đặc điểm giao tiếp I2C
Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp I2C:
- Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC
nào trên mạng I2C
- Không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao
tiếp UART. Vì vậy, tốc độ truyền dữ liệu có thể được điều chỉnh bất cứ
khi nào cần thiết
- Cơ chế đơn giản để xác thực dữ liệu được truyền
- Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên
bus I2C
34

- Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối
đơn giản với hai đường bus chung

Hình 2. 16. Kết nối thiết bị vào bus I2C ở chế độ chuẩn [11]
Cả hai đường bus I2C (SDA, SCL) đều hoạt động như các bộ lái cực
máng hở (open drain). Nó có nghĩa là bất kỳ thiết bị / IC trên mạng I2C có thể
lái SDA và SCL xuống mức thấp, nhưng không thể lái chúng lên mức cao. Vì
vậy, một điện trở kéo lên (khoảng 1 kΩ đến 4,7 kΩ) được sử dụng cho mỗi
đường bus, để giữ cho chúng ở mức cao (ở điện áp dương) theo mặc định.
Lý do sử dụng một hệ thống cực máng hở (open drain) là để không xảy
ra hiện tượng ngắn mạch, điều này có thể xảy ra khi một thiết bị cố gắng kéo
đường dây lên cao và một số thiết bị khác cố gắng kéo đường dây xuống thấp.
Như hình về ta thấy có thể có rất phiều thiết bị (ICs) cùng được kết nối
vào một bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị
bởi môi thiết bị sẽ được nhận ra bởi một địa chỉ duy nhất với một quan hệ chủ
tớ (Master/Slave) tồn tại trong thời gian kết nối. Mỗi thiết bị có thể hoạt động
35

như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt
động truyền hay nhận còn phụ thuộc vào việc thiết bị đó là chủ hay tớ.
Một thiết bị hay một IC khi kết nối với bus I2C ngoài một địa chỉ (duy
nhất) để phân biệt nó còn được cấu hình là thiết bị chủ hay tớ. Sở dĩ có sự
phân biệt này là bởi vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị
chủ. Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa 2
thiết bị chủ - tớ giao tiếp thì thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ
giữ vai trò bị động trong việc giao tiếp.
2.3.3. Chế độ hoạt động (tốc độ truyền)
Các bus I2C có thể hoạt động ở ba chế độ, hay nói cách khác các dữ
liệu trên bus I2C có thể được truyền trong ba chế độ khác nhau.
- Chế độ tiêu chuẩn (Standard mode)
-Chế độ nhanh (Fast mode) - Chế độ cao tốc High-Speed (HS) mode
• Chế độ tiêu chuẩn:
- Chế độ tiểu chuẩn ban đầu được phát hành vào đầu những năm 80. Nó
có tốc độ dữ liệu tối đa là 100kbps.
- Nó sử dụng 7 bit địa chỉ và 112 bit địa chỉ tớ.
• Chế độ tăng cường hoặc chế độ nhanh:
- Tốc độ dữ liệu tối đa được tăng lên đến 400 kbps.
- Để ngăn chặn gai tiếng ổn, ngõ vào của thiết bị Fast mode là Schmitt -
triggered.
- Chân SCL và SDA của một thiết bị tớ I2C ở trạng thái trở kháng cao
khi không cấp nguồn.
• Chế độ cao tốc:
- Chế độ này được tạo ra chủ yếu để tăng tốc độ dữ liệu lên đèn 36 lần
so với chế độ tiêu chuẩn.
- Nó cung cấp 1.7Mbps (với Cb = 400pF) và 3.4Mbps (Cb= 100pF).
Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:
- Một chủ một tớ (one master - one slave).
36

- Một chủ nhiểu tớ (one master- multi slave).


- Nhiều chủ nhiều tớ (multi master - multi slave)
Dù ở chế độ nào, một giao tiếp I2C đều dựa vào quan hệ chủ/tớ. Giả thiết
thiết bị A muốn gửi dữ liệu đến thiết bị B, quá trình được thực hiện như sau:
- Thiết bị A (chủ) xác định đúng địa chỉ của thiết bị B (tớ), cùng với việc xác
định địa chỉ, thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bị tớ. Thiết bị
A gửi dữ liệu đến thiết bị B.
- Thiết bị A kết thúc quá trình truyển dữ liệu. Khi A muốn nhận dữ liệu từ B,
quá trình diễn ra như trên, chỉ khác là A sẽ nhận dữ liệu từ B. Trong giao tiếp
này, A là chủ còn B là tớ. Chi tiết việc thiết lập một giao tiếp giữa 2 thiết bị sẽ
được mô tả trong các mục dưới đây.
• Trình tự truyền bit trên đường truyền:

Hình 2. 17. Trình tự truyền bit trên đường truyền [11]


- Thiết bị chủ tạo ra một điều kiện Start. Điều kiện này thông báo cho tất
cả các thiết bị tớ lắng nghe dữ liệu trên đường truyền.
- Thiết bị chủ gửi địa chỉ của thiết bị tở mà thiết bị chủ muốn giao tiếp và
cờ đọc / ghi dữ liệu (nếu có thiết lập lên 1 byte tiếp theo được | truyền
từ thiết bị tử đến thiết bị chủ, nếu có thiết lập xuống 0 thì byte tiếp theo
truyền từ thiết bị chủ đến thiết bị tớ).
37

- Khi thiết bị tớ trên bus I2C có địa chỉ đúng với địa chỉ mà thiết chủ gửi
sẽ phản hồi lại bằng một xung ACK.
- Giao tiếp giữa thiết bị chủ và tớ trên bus dữ liệu bắt đầu. Cả chủ và thể
nhận hoặc truyền dữ liệu tùy chọn vào việc truyền thông là đọc hay ghi.
Bộ truyền gửi 8 bit dữ liệu tới bộ nhận, bộ nhận trả lời với một bit
ACK.
- Để kết thúc quá trình giao tiếp, thiết bị chủ tạo ra một điều kiện Stop.
2.3.4. Tín hiệu START và STOP.

Hình 2. 18. Tín hiệu Start và Stop [11]

START và STOP là những điều kiện bắt buộc phải có khi một thiết bị
chủ muốn thiết lập giao tiếp với một thiết bị nào đó trên bus I2C. START là
điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOP báo hiệu kết
thúc một giao tiếp. Hình dưới đây mô tả điều kiện START và STOP.
Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và
SCL đều ở mức cao (SDA = SCL = HIGH). Lúc này bus I2C được coi là rỗi
(“bus free”), sẵn sàng cho một giao tiếp. Hai điều kiện START và STOP là
không thể thiếu trong việc giao tiếp giữa các thiết bị I2C với nhau.
38

Tín hiệu START: một sự chuyển đổi trạng thái từ cao xuống thấp trên
đường SDA trong khi đường SCL đang ở mức cao (cao = 1, thấp = 0) báo
hiệu một tín hiệu START.
Tín hiệu STOP: một sự chuyển đổi trạng thái từ mức thấp lên cao trên
đường SDA trong khi đường SCL đang ở mức cao. Cả hai tín hiệu START và
STOP đều được tạo ra bởi thiết bị chủ. Sau tín hiệu START, bus I2C coi như
đang trong trạng thái làm việc (“busy”). Bus I2C sẽ rỗi, sẵn sàng cho một giao
tiếp mới sau khi nhận tín hiệu STOP từ phía thiết bị chủ.
Sau khi có một tín hiệu START, trong quá trình giao tiếp, khi có một
tin hiệu START lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tục
trong trạng thái bận. Tín hiệu START và lặp lại START (Repeated START)
đều có chức năng giống nhau là khởi tạo một giao tiếp.
 Truyền dữ liệu: Mỗi xung clock có một bit dữ liệu được truyền. Mức
tín hiệu SDA chỉ được thay đổi khi xung clock đang ở mức thấp và ổn định
khi xung clock ở mức cao. Thiết bị tớ có thể lấy mẫu dữ liệu khi xung clock ở
mức cao.
39

2.4. Lưu đồ thuật toán

Hình 2. 19. Lưu đồ thuật toán


Khi hệ thống bắt đầu hoạt động, nút Set_BT ở trạng thái nhả. Khi nút
Set_BT được nhấn (SET_BT=0), hệ thống sẽ hoạt động theo chương trình cài
đặt thời gian. Ngược lại nút Set_BT không được nhấn, hệ thống sẽ hoạt động
theo chương trình chính. Hệ thống cập nhật giá trị ngày, giá trị giờ, giá trị
nhiệt độ, độ ẩm từ cảm biến SHT10, nếu giá trị thời gian bằng với giá trị thời
gian cài đặt sẽ kiểm tra tiếp giá trị nhiệt độ, độ ẩm. Ngược lại, giá trị thời gian
khác với giá trị thời gian cài đặt sẽ quay lại kiểm tra giá trị ngày. Nếu giá trị
nhiệt độ, độ ẩm không đạt sẽ thực hiện bơm trong thời gian t phút (t phút sẽ
được cài đặt). Nếu giá trị nhiệt độ, độ ẩm đạt sẽ quay lại vòng lặp lấy giá trị
giờ, phút, nhiệt độ, độ ẩm.

2.5. Kết luận chương 2


Dựa trên những lí thuyết căn bản về thiết kế mạch ta tiến hành xây
dựng sơ đồ khối của hệ thống. Từ sơ đồ khối đó, ta tiến hành phân tích hoạt
40

động và chức năng của từng khối. Bên cạnh đó chúng ta cũng cần tìm hiểu
thêm về các giao thức truyền dữ liệu của vi điều khiển PIC 18F4520 với các
thiết bị ngoại vi như: Giao thức I2C, RS232… để phục vụ cho việc viết
chương trình cho mạch điện ở chương tiếp theo.
41

CHƯƠNG 3
MÔ HÌNH THỰC NGHIỆM VÀ KẾT QUẢ
3.1. Mô hình thực nghiệm
3.1.1. Sơ đồ nguyên lí

Hình 3. 1. Sơ đồ nguyên lí
Sơ đồ nguyên lí gồm 7 khối: Khối nguồn, khối thời gian thực, khối nút
nhấn, khối vi điều khiển, khối cảm biến, khối LCD, khối thiết bị (máy bơm).
Khi mạch được cấp điện áp 12VDC, khối cảm biến và khối thời gian thực sẽ
lấy các giá trị nhiệt độ, độ ẩm và thời gian đưa về khối vi điều khiển để xử lí.
Sau khi nhận dữ liệu từ các khối hỗ trợ, vi điều khiển tiến hành so sánh các
giá trị thời gian, nhiệt độ, độ ẩm với các giá trị tương ứng được nhập từ 4 nút
nhấn ở khối Button. Sau khi kiểm tra và tính toán các giá trị trên, nếu thỏa mã
điều kiện cài đặt, vi điều khiển sẽ phát tín hiệu cho khối thiết bị (ở đây là máy
bơm), khi máy bơm nhận được tín hiệu của vi điều khiển sẽ thực hiện bơm
nước tự động trong khoảng thời gian cài đặt tại khối nút nhấn. Tất cả các giá
trị thời gian, nhiệt độ, độ ẩm và các bước cài đặt cho hệ thống sẽ được hiển
thị trên LCD 16x2.
42

3.1.2. Sơ đồ mạch in và mạch thực tế


3.1.2.1. Sơ đồ mạch in
Mạch PCB được vẽ trên phần mềm Altium 17.0.11, đây là phần mềm
khá mạnh về thiết kế mạch hiện nay và được rất nhiều công ty sử dụng.
Altium Designer cung cấp một ứng dụng kết hợp tất cả công nghệ và
chức năng cần thiết cho việc phát triển sản phẩm điện tử hoàn chỉnh, như thiết
kế hệ thống ở mức bo mạch và FPGA, phát triển phần mềm nhúng cho FPGA
và các bộ xử lý rời rạc, bố trí mạch in (PCB)… Altium Designer thống nhất
toàn bộ các quá trình lại và cho phép bạn quản lý được mọi mặt quá trình phát
triển hệ thống trong môi trường tích hợp duy nhất. Khả năng đó kết hợp với
khả năng quản lý dữ liệu thiết kế hiện đại cho phép người sử dụng Altium
Designer tạo ra nhiều hơn những sản phẩm điện tử thông minh, với chi phí
sản phẩm thấp hơn và thời gian phát triển ngắn hơn. Thực ra điều này khiến
Altium khá nặng nề, nhiều chức năng người dùng không dùng đến.

Hình 3. 2. Mạch in 2D
43

3.1.2.2. Mạch thực tế

Hình 3. 3. Mạch khi được khởi tạo


Mạch điện khi được nạp chương trình sẽ hiển thị thời gian thực tế, thời
gian kiểm tra nhiệt độ, độ ẩm và thời gian duy trì hoạt động của thiết bị (máy
bơm).

Hình 3. 4. Cài đặt thời gian


44

Khi thời gian của mạch chưa được cập nhật so với thực tế, ta tiến hành
cài đặt thời gian thông qua nút Set_BT.

Hình 3. 5. Cài đặt nhiệt độ, độ ẩm


Cài đặt nhiệt độ và độ ẩm để cảm biến SHT10 khi nhận giá trị nhiệt độ,
độ ẩm thực tế sẽ gửi tín hiệu cho vi điều khiển. Sau khi tiếp nhận tín hiệu vi
điều khiển sẽ so sánh với nhiệt độ, độ ẩm cài đặt. Nếu nhiệt độ, độ ẩm thỏa
mãn với điều kiện ban đầu máy bơm sẽ hoạt động.
3.2. Đánh giá và kết luận
3.2.1. Kết quả đạt được
Về phần cứng:
- Tìm hiểu được về vi điều khiển PIC, để có thể tạo thành một mạch điện
hoàn chỉnh vi điều khiển cần được ghép thêm với các thiết bị ngoại vi bên
ngoài như bộ nhớ và các thiết bị khác. Trong đề tài này các thiết bị
- Có thêm nhiều kiến thức về các linh kiện như: điện trở, tụ điện…cũng
như cách thiết kế mạch trên phần mềm Altium Designer và làm mạch thủ
công.
Về phần mềm:
- Thiết kế mạch điện trên cơ sở lí thuyết của chương 2 và mô phỏng
45

được mạch điện thông qua phần mềm Proteus. Phần mềm bao gồm 2 chương
trình: ISIS cho phép mô phỏng mạch và ARES dùng để vẽ mạch in. Proteus là
công cụ mô phỏng cho các loại vi điều khiển khá tốt, nó hỗ trợ các dòng vi
điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430,
ARM7/LPC2000 ... các giao tiếp I2C, SPI, CAN, USB, Ethenet... ngoài ra
còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả. Proteus là bộ
công cụ chuyên về mô phỏng mạch điện tử.
- Viết chương trình cho hệ thống dựa trên phần mềm CCS. Đây là trình
biên dịch bằng ngôn ngữ C cho dòng vi điều khiển PIC đang được sử dụng
phổ biến hiện nay hơn một số trình biên dịch khác vì nó là sự tích hợp của 3
trình biên dịch riêng biệt cho 3 dòng PIC khác nhau: PCB cho dòng PIC 12-
bit opcodes, PCM cho dòng PIC 14-bit opcodes, PCH cho dòng PIC 16 và 18-
bit. Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình
bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là
PCWH Compiler Ver 3.227. Giống như nhiều trình biên dich C khác cho PIC,
CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử
dụng PIC trong các dự án. Các chương trình điều khiển sẽ được thực hiện
nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lạp trình
cấp cao – Ngôn ngữ C Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết
nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản
trợ giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xủa lý, cấu
trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng…
Bên cạnh đó, đi sâu vào tìm hiểu giao thức I2C- là chuẩn giao tiếp
ngoại vi cho rất nhiều loại IC khác nhau như: PIC, AVR, ARM…
Thiết kế được hệ thống đơn giản và đã chạy thực nghiệm trong thực tế.
3.2.2. Kết luận chương 3
Đề tài có tính ứng dụng khá nhiều trong cuộc sống:
- Tiết kiệm nước: Với việc sử dụng cảm biến đo nhiệt độ và độ ẩm.
46

Người sử dụng có thể thiết lập được thời gian máy bơm hoạt động để tưới
nước trong một khoảng thời gian hợp lí.
- Tiết kiệm thời gian: Với khả năng hoạt động độc lập và không cần
nhiều sự tác động của con người. hoàn toàn có thể tự vận hành. Với các hệ
thống có khả năng “cảm nhận” nhiệt độ hoặc độ ẩm thì nó hoàn toàn có khả
năng đáp ứng đúng lúc và kịp thời nhu cầu của cây trồng dù trời mưa hay
nắng.
- Thêm nữa, hệ thống này giúp giảm thiểu tối đa nhân công và số lượng
người lao động nếu ứng dụng trên một diện tích tưới lớn.
Do việc thiết kế chỉ dừng lại ở mô hình nên chưa áp dụng được một số
công nghệ mới, hiện đại: Trí tuệ nhân tạo (AI), IOT…
 Hướng phát triển
Đề tài có thể phát triển thêm không chỉ tự động tưới mà chúng ta có thể
theo dõi và điều khiển hệ thống qua Internet, module SIM hoặc máy tính để
có thể điều khiển hệ thống từ xa chỉ cần các thiết bị được kết nối với mạng
Internet, thuận tiện cho việc điều khiển hệ thống khi đi công tác để đảm bảo
hệ thống có thể hoạt động một cách tối ưu nhất.
Vì lí do thời gian và những lí do khách quan nên đồ án được thực hiện
vẫn còn nhiều khiếm khuyết. Em rất mong nhận được những ý kiến đóng góp
quý báu của thầy cô.
47

TÀI LIỆU THAM KHẢO


[1] Vũ Trung Kiên – Phạm Văn Chiến – Nguyễn Văn Tùng [2014], Giáo
trình vi điều khiển PIC, Nhà xuất bản khoa học và kĩ thuật Hà Nội.
[2] Các hệ thống tưới nước tự động
https://sites.google.com/site/caitiennongnhiep/cong-nghe-tuoi-nho-giot/cach-
lua-chon-he-thong-tuoi-nho-giot
[3] Microchip, Datasheet PIC18F4520.
https://ww1.microchip.com/downloads/en/DeviceDoc/39631E.pdf
[4] Cảm biến LM35
https://hshop.vn/products/cam-bien-nhiet-do-lm35-2
[5] Cảm biến Hs1101
http://hotro.banlinhkien.vn/t/cam-bien-do-am-hs1101-cach-su-dung/120
[6] Cảm biến SHT10
https://nshopvn.com/product/cam-bien-nhiet-do-do-am-cjmcu-sht10-loai-tot/
[7] Sensirion, Datasheet SHT10.
https://www.sparkfun.com/datasheets/Sensors/SHT1x_datasheet.pdf
[8] Dallas, Datasheet Ds1307.
https://www.sparkfun.com/datasheets/Components/DS1307.pdf
[9] Khối hiển thị LCD
https://toc.123doc.net/document/1411121-so-do-khoi-khoi-hien-thi-lcd.htm
[10] Datasheet LM2576
http://entertech.vn/tin-tuc/huong-dan-su-dung-ic-nguon-lm2576/
[11] Giao thức I2C
http://arduino.vn/bai-viet/1053-giao-tiep-i2c-voi-nhieu-module
[12] http://dammedientu.vn/altium-designer-17-0-11-build-656-moi-nhat-full-
crack-bid20-html/
48

PHỤ LỤC
#include <main.h>
#include <define_18f4520.h>
#use i2c(Master, sda = PIN_C4, scl=PIN_C3)
#include <sht.c>
#include <ds1307.c>
#define Slave_add 0x68 //Dia chi thanh ghi Ds1307
#define Read 1
#define Write 0
#define temp_add 10 //Dia chi eeproom nhiet do
#define humi_add 15 //Dia chi eeproom do am
#define hour_add 1 //Dia chi eeproom gio kiem tra
#define minute_add 2 //Dia chi eeproom phut kiem tra
#define time_set_start_add 20 // Dia chi eeprom thoi diem bat dau kiem tra
nhiet do , do am
#define time_turn_on_pump_add 25 //Dia chi eeproom bat may bom trong
bao lau

//Define for BUTTON


#define Set_BT RC0
#define Next_BT RC1
#define Up_BT RC2
#define Down_BT RD0
#define TRIS_Set_BT TRISC0
#define TRIS_Next_BT TRISC1
#define TRIS_Up_BT TRISC2
#define TRIS_Down_BT TRISD0
49

//Define for Pump Machine


#define May_Bom RC5
#define TRIS_May_Bom TRISC5

//Define for Led test


#define Led_test RD2
#define TRIS_Led_test TRISD2

//Define For LCD


#define LCD_ENABLE_PIN PIN_B3
#define LCD_RS_PIN PIN_B5
#define LCD_RW_PIN PIN_B4
#define LCD_DATA4 PIN_B2
#define LCD_DATA5 PIN_B1
#define LCD_DATA6 PIN_B0
#define LCD_DATA7 PIN_D7

#include <lcd.c>

signed int8 sec,min,hrs,day,month,yr,dow;


int8 time_turn_on_pump = 1; // Turn on pump in 10 minute
Signed int process_control = 0 ;
float nhiet_do = 10,do_am = 10;
float temp_point = 0 ,humi_point = 0 ;
signed int hrs_point,min_point;
int16 display = 0,time_set_start = 0 ,time_set_finish = 0 ;
int16 minute_number[12] =
{44640,84960,129600,172800,217440,260640,305280,349920,393120,43776
0,480960,525600};
50

// Tong so phut tinh tu 1 thang 1, vi du : het thang 2,tinh tu 1/1 da troi qua
84960 phut
boolean flag_turn_on_pump = 0;
int32 time_work;

void display_time();
void display_tem();
void main_ini();
void write_float_eeporm(long int n, float data);
float read_float_eeprom(long int n);
void write_int32_eeporm(long int n, int32 data);
int32 read_int32_eeprom(long int n);
void control_input_value_int(int8 *input_value);
void set_time();
void control_input_value_float(float *input_value);
void set_conditon_turn_on_pump();
void check_turn_on_pump();
void check_turn_off_pump();
void check_before_start();

void main()
{
main_ini();
lcd_init();
lcd_gotoxy(1,1);
lcd_putc(" Duc Quynh ");
delay_ms(2000);
ds1307_init();// khoi tao DS1307
51

// ds1307_set_date_time(6,5,20,5,22,48,0);
ds1307_get_date(day,month,yr,dow);
ds1307_get_time(hrs,min,sec);
if (Set_BT == 0 )
{
set_time(); // Set time by BUTTON
}
delay_ms(2);
SHT_Init(SHT_14_12_BIT);
check_before_start();

while(TRUE)
{
ds1307_get_date(day,month,yr,dow);
ds1307_get_time(hrs,min,sec);
// delay_us(1);
display++;
///display= 30 ; //Test chi hien thi do am
if (display < 40)display_time(); // 2s hien thi thoi gian
if (display >= 40) // 2s hien thi nhiet do , do am
{
display_tem();
if (display >= 80)display = 0;
}
SHT_ReadTemHumi(&nhiet_do,&do_am);
check_turn_on_pump();
check_turn_off_pump();
if (Set_BT == 0 )
{
52

set_conditon_turn_on_pump();
}
if (Up_BT == 0 )
{
Led_test =1 ;
May_Bom=1;
}
if(Down_BT == 0)
{
Led_test = 0 ;
May_Bom=0;
}

}
}

void display_time()
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Time: %d:%d:%d ",hrs,min,sec);
if (flag_turn_on_pump ==0)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"Check:%d:%dIn%d ",hrs_point,min_point,
time_turn_on_pump );
}
else
{
53

lcd_gotoxy(1,2);
printf(lcd_putc,"%d-%d/Remain: %Lu ",hrs_point,min_point,
(time_turn_on_pump- time_work-1) );
}

}
void display_tem()
{
lcd_gotoxy(1,1);
printf(lcd_putc," T:%2.1f/H:%2.1f ",nhiet_do,do_am);
lcd_gotoxy(1,2);
printf(lcd_putc,"Set:%2.1f&%2.1f ",temp_point,humi_point);
}
void main_ini()
{
//Set Pin OF LCD is Output
TRISB3 = 0 ;
TRISB5 = 0 ;
TRISB4 = 0 ;
TRISB2 = 0 ;
TRISB1 = 0 ;
TRISB0 = 0 ;
TRISD7 = 0 ;

TRIS_Led_test = 0 ;
TRIS_May_Bom = 0 ;

TRIS_Up_BT = 1;
54

TRIS_Down_BT = 1;
TRIS_Set_BT = 1;
TRIS_Next_BT = 1;

//Turn off led and pump machine


Led_test = 0 ;
May_Bom=0;

// Read eeprom
temp_point = read_float_eeprom(temp_add);
humi_point = read_float_eeprom (humi_add);
hrs_point = read_EEPROM (hour_add);
min_point = read_EEPROM (minute_add);
time_turn_on_pump = read_EEPROM (time_turn_on_pump_add);

}
void write_float_eeporm(long int n, float data)
{
int i;
for (i=0;i<4;i++)
{
write_eeprom(i+n,*((int8*)&data + i));
}
}
float read_float_eeprom(long int n)
{
int i;int8 read_data = 0;
float data;
55

for(i=0;i<4;i++)
{
read_data = read_EEPROM(i+n);
*((int8*)&data + i ) = read_EEPROM(i+n);
}
return(data);
}
void write_int32_eeporm(long int n, int32 data)
{
int i;
for (i=0;i<4;i++)
{
write_eeprom(i+n,*((int8*)&data + i));
}
}
int32 read_int32_eeprom(long int n)
{
int i;int8 read_data = 0;
int32 data;
for(i=0;i<4;i++)
{
read_data = read_EEPROM(i+n);
*((int8*)&data + i ) = read_EEPROM(i+n);
}
return(data);
}
void control_input_value_int(int8 *input_value)
{
int8 control_value = *input_value;
56

if (Up_BT == 0 )
{delay_ms(200);control_value = control_value + 1 ;}
if (Down_BT == 0 )
{delay_ms(200);control_value = control_value -1 ;}
*input_value = control_value;

}
void set_time()
{
lcd_gotoxy(1,1);
lcd_putc("Set Time : ");
delay_ms(1000);
while(Set_BT == 0){delay_ms(100);}
while(TRUE)
{
switch(process_control)
{
case 0: //Set date
lcd_gotoxy(1,1);
printf(lcd_putc,"Set date: %d ",day);
control_input_value_int(&day);
if (day > 31)day = 1;
if (day == 0 ) day= 31;
break;
case 1: //Set month
lcd_gotoxy(1,1);
printf(lcd_putc,"Set month: %d ",month);
control_input_value_int(&month);
if (month>12) month = 1;
57

if (month < 1) month = 12;


break;
case 2: //Set Year
lcd_gotoxy(1,1);
printf(lcd_putc,"Set Year: %d ",yr);
control_input_value_int(&yr);
if (yr > 50) yr = 20;
if (yr < 20) yr = 50;
break;
case 3: //Set Hour
lcd_gotoxy(1,1);
printf(lcd_putc,"Set Hour: %d ",hrs);
control_input_value_int(&hrs);
if (hrs > 23) hrs = 0 ;
if (hrs < 0) hrs = 23 ;
break;
case 4: //Set Minute
lcd_gotoxy(1,1);
printf(lcd_putc,"Set Minute: %d ",min);
control_input_value_int(&min);
if (min >59) min = 0;
if (min <0) min = 59;
break;
}
if (Next_BT == 0 )
{
while(Next_BT == 0)delay_ms(100);
process_control++;
if (process_control == 5)
58

{
process_control = 0;
ds1307_set_date_time(day,month,yr,5,hrs,min,0);
break;
}
}
if (Set_BT == 0 )
{
while(Set_BT == 0)delay_ms(100);
process_control--;
if (process_control < 0){process_control = 0;}
}
}
}
void control_input_value_float(float *input_value1)
{
float control_value = *input_value1;
if (Up_BT == 0 )
{delay_ms(100);control_value = control_value + 0.1 ;}
if (Down_BT == 0 )
{delay_ms(100);control_value = control_value - 0.1 ;}
*input_value1 = control_value;

}
void set_conditon_turn_on_pump()
{
lcd_gotoxy(1,1);
lcd_putc("Set time turn ");
lcd_gotoxy(1,2);
59

lcd_putc("on the pump ");


delay_ms(2000);
while(Set_BT == 0){delay_ms(100);}
while(TRUE)
{
switch(process_control)
{
case 0: //Set temperature
lcd_gotoxy(1,1);
printf(lcd_putc,"Set temperature: ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%f ",temp_point);
control_input_value_float(&temp_point);
if (temp_point > 80) temp_point = -20 ; // De nhiet do cai dat
chi nam trong : -20 -> 80, co the sua
if (temp_point <-20) temp_point = 80 ;
break;
case 1: //Set humidity
lcd_gotoxy(1,1);
printf(lcd_putc,"Set humidity: ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%f ",humi_point);
control_input_value_float(&humi_point);
if (humi_point > 100) humi_point = 0 ;
if (humi_point <0) humi_point = 100 ;
break;
case 2: //Set Hour
lcd_gotoxy(1,1);
printf(lcd_putc,"Set Hour: %d ",hrs_point);
60

lcd_gotoxy(1,2);
printf(lcd_putc," ");
control_input_value_int(&hrs_point);
if (hrs_point > 23) hrs_point = 0 ;
if (hrs_point < 0) hrs_point = 23 ;
break;
case 3: //Set Minute
lcd_gotoxy(1,1);
printf(lcd_putc,"Set Minute: %d ",min_point);
lcd_gotoxy(1,2);
printf(lcd_putc," ");
control_input_value_int(&min_point);
if (min_point >59) min_point = 0;
if (min_point<0) min_point =59;
break;
case 4: // Set time turn on Pump
lcd_gotoxy(1,1);
printf(lcd_putc,"Time turn on Pump ");
lcd_gotoxy(1,2);
printf(lcd_putc," %d ",time_turn_on_pump);
control_input_value_int(&time_turn_on_pump);
break;
}
if (Next_BT == 0 )
{
while(Next_BT == 0)delay_ms(100);
process_control++;
if (process_control == 5)
{
61

process_control = 0;
write_float_eeporm(temp_add, temp_point);
delay_ms(1);
write_float_eeporm(humi_add, humi_point);
delay_ms(1);
write_eeprom(hour_add , hrs_point);
delay_ms(1);
write_eeprom(minute_add , min_point);
delay_ms(1);
write_eeprom(time_turn_on_pump_add, time_turn_on_pump);
lcd_gotoxy(1,1);
printf(lcd_putc,"Set done ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
May_Bom = 0;
Led_test =0 ;
flag_turn_on_pump = 0 ;
delay_ms(1000);
break;
}
}
if (Set_BT == 0 )
{
while(Set_BT == 0)delay_ms(100);
process_control--;
if (process_control < 0){process_control = 0;}
}
}
62

}
void check_turn_on_pump()
{
if (hrs == hrs_point && min == min_point && sec < 5)
{
if (nhiet_do > temp_point || do_am < humi_point)
{
May_Bom = 1;
Led_test =1 ;
if (month == 1 )
{
time_set_start = (day-1) * 24 * 60 + hrs * 60 + min;
}
else
{
time_set_start = minute_number[month-2] + (day-1) * 24 * 60 + hrs *
60 + min;
}

if (flag_turn_on_pump ==0)
{
write_int32_eeporm (time_set_start_add, time_set_start);
}
flag_turn_on_pump = 1;
}

}
}
void check_turn_off_pump()
63

if (flag_turn_on_pump == 1 )
{
if (month == 1 )
{
time_set_finish = (day-1) * 24 * 60 + hrs * 60 + min;
}
else
{
time_set_finish = minute_number[month-2] + (day-1) * 24 * 60 + hrs *
60 + min;
}
time_work = time_set_finish-time_set_start;

if ((time_set_finish-time_set_start) > (time_turn_on_pump-1))


{
May_Bom = 0;
Led_test =0 ;
flag_turn_on_pump = 0 ;
lcd_gotoxy(12,2);
printf(lcd_putc," ");
}
}
}
void check_before_start()
{
time_set_start = read_int32_eeprom(time_set_start_add);
if (month == 1 )
64

{
time_set_finish = (day-1) * 24 * 60 + hrs * 60 + min;
}
else
{
time_set_finish = minute_number[month-2] + (day-1) * 24 * 60 + hrs *
60 + min;
}

if ((time_set_finish-time_set_start) > (time_turn_on_pump-1))


{
May_Bom = 0;
Led_test =0 ;
flag_turn_on_pump = 0 ;
}
else
{
May_Bom = 1;
Led_test =1 ;
flag_turn_on_pump = 1 ;
}
}

You might also like