You are on page 1of 53

TRƯỜNG ĐẠI HỌC NHA TRANG

ĐỒ ÁN MÔN HỌC

Giáo viên hướng dẫn: Nhữ Khải Hoàn


Môn học : Kỹ Thuật Vi Xử Lý
Tên sinh viên: Phan Xuân Tỵ - Trần Minh Thành
Lớp: Điện – Điện Tử 20CDT1

Khánh Hòa, Tháng 4 Năm 2022


1
LỜI CẢM ƠN

Em xin gửi lời cảm ơn chân thành đến thầy Nhữ Khải Hoàn – giảng viên bộ môn
“Kỹ Thuật Vi Xử Lý” trong Khoa Điện – Điện Tử đã trang bị cho em những kiến thức,
kỹ năng cơ bản cần có để hoàn thành đề tài nghiên cứu này
Vì lý do Bluetooth không thể truyền đi xa nên em xin được sử dụng hình thức gửi
data giám sát về server mà module SIM 800A có sẵn. Đồng thời có thể truy cập được ở
bất cứ đâu trên mọi thiết bị.
Ngoài ra, em cũng thiết kế giao diện giao tiếp để người dùng tiện thao tác thông qua
web server một cách thân thiện, dễ hiểu và dễ thao tác.
Do thời gian còn hạn chế, cũng như mức độ rộng lớn của đề tài, nên dù đã cố gắng
hết sức nhưng phương án giải quyết bài toán của em chắc chắn không thể tránh khỏi
những thiếu sót. Em rất mong nhận được sự đóng góp ý kiến của quý thầy cô và bạn bè
để đề tài của em càng được hoàn thiện hơn.
Em xin chân thành cảm ơn!

2
TÓM TẮT

Đề tài nghiên cứu “Xây dựng mô hình tưới cây tự đông theo độ ẩm đất.” được thực
hiện tại trường Đại Học Nha Trang.
Đề tại được thực hiện theo những yêu cầu sau :

- Tổng quan về đề tài.


- Cơ sở lý thuyết Arduino, module SIM900A mini, cảm biến độ ẩm đất.
- Mô hình mạch nguyên lý, giải thuật và code điều khiển.
- Thi công mô hình hệ thống tưới cây tự động theo độ ẩm đất theo yêu cầu :
- Tự ổn định độ ẩm đất.
- Điều khiển và giám sát hệ thống thông qua bluetooth.
- Đánh giá kết quả đạt được và kiến nghị.

3
DANH SÁCH CÁC CHỮ VIẾT TẮT
PLC: ............................... Programmable logic controller.
AT: .................................. Attention.
GSM: ............................... Global System for Mobile Communications.
GPRS:............................... General Packet Radio Service.
GPS:.................................. Global Positioning System.
SMS: ................................ Short Message Service.
CR: ................................... Carriage return.
LF: .................................... Line Feed.
MT: ................................... Mobile Terminal.
TE: .................................... Terminal Equipment.
HTTP: ............................... Hypertext Transfer Protocol.
HTML: ............................. HyperText Markup Language.
IP: ..................................... Internet Protocol.
CSS: .................................. Cascading Style Sheets.
URL:.................................. Uniform Resource Locator.
PHP: ................................. Hypertext Preprocessor.
CMS:................................. Content management system.
IDE: .................................. Integrated Development Environment.
PVC:.................................. Polyvinyl clorua

4
Chương 1
MỞ ĐẦU
1.1 Đặt vấn đề
Hiện nay trên thế giới việc ứng dụng các công nghệ điều khiển vào trong sản xuất là
rất nhiều và cần thiết trong các ngành nghề kể cả trong nông nghiệp. Nhờ có ứng dụng
các công nghệ điều khiển hiện đại mà năng suất và chất lượng nông sản tăng lên đáng kể.
So với nước ta hiện nay thì 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 áp dụng vào thực tế. Trong nông nghiệp 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 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ế cho 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 để đư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 mưa, phun sương, vòi
nhỏ giọt bù áp, vòi không bù áp,..) có thông số khác nhau phục vụ cho các loại cây khác
nhau được chế tạo từ nhiều quốc gia khác nhau tiêu biểu như: Israel, Mỹ, Trung Quốc,..
Rất tiện cho người sử dụng lựa chọn phù hợp với nhu cầu sử dụng của mình. Việc thiết
kế, chế tạo một hệ thống tưới cây tự động sẽ giúp 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 và có thể giám sát thời gian tưới 1 cách cụ thể nhất.
Người lao động sẽ không cần quan tâm tới việc tưới cây mà cây vẫn sinh trưởng phát
triển tốt hơn nhờ việc tưới phù hợp và chính xác hơn. Đồng thời can thiệp vào nền nông
nghiệp nước ta hạn chế phụ thuộc vào điều kiện khí hậu tự nhiên.
Ngoài ra trên những tuyến đường ở khu vực trung tâm thành phố, chúng ta vẫn hay
bắt gặp hình ảnh các xe bồn chở nước tưới cây dọc đường gây cản trở, mất an toàn giao
thông.
Do đó đề tài “Thiết kế, chế tạo mô hình giám sát và điều khiển tưới cây tự động”
được chọn để giải quyết các vấn đề nêu trên.

5
1.2 Mục tiêu đề tài
Vận dụng kiến thức đã học để nghiên cứu và thực hiện: “Thiết kế, chế tạo mô hình
giám sát và điều khiển tưới cây” từ đó đưa vào ứng dụng trong thực tiễn. Giúp cho việc
tươi tiêu cây trồng ở nước ta có những phương án mới và đạt được hiệu quả cao.
Hệ thống tích hợp module gọi điện/SMS sử dụng mạng di động, xử lý dữ liệu. Hệ
thống sẽ thu nhận các tín hiệu của thiết bị đầu cuối (mobile), để thực hiện các lệnh điều
khiển tưới cây và phản hồi lại trạng thái của thiết bị được điều khiển.
Module SIM 800A GSM/GPRS/GPS có thể làm việc tại các ví trí có phủ sóng của
mạng điện thoại di động đang hoạt động trong nước như Viettel, Mobile Phone, Vina
Phone...
1.3 Nội dung đề tài
Vì thời gian có hạn cũng như mức độ rộng lớn của đề tài nên em chỉ thực hiện
nghiên cứu các vấn đề cơ bản như sau:
- Cơ sở lý thuyết Arduino, module SIM900A mini, cảm biến độ ẩm đất.
- Mô hình mạch nguyên lý, giải thuật và code điều khiển.
- Thi công mô hình hệ thống tưới cây tự động theo độ ẩm đất theo yêu cầu :
- Tự ổn định độ ẩm đất.
- Điều khiển và giám sát hệ thống thông qua bluetooth/Server
- Đánh giá kết quả đạt được và kiến nghị.
-

6
Chương 2
TỔNG QUAN
2.1 Tổng quan về hệ thống tưới cây
2.1.1 Hệ thống tưới là gì?
Hệ thống tưới là một công cụ để chuyền tải một lượng nước từ nguồn nước đến các
điểm khác nhau trên một phạm vi đất nào đó với mật độ bao phủ đồng đều cao phù hợp
cho từng giai đoạn sinh trưởng khác nhau của cây.
Ngày nay với sự phát triển của xã hội, khoa học công nghệ cụ thể là công nghệ ứng
dụng vào nông nghiệp cũng từng bước nâng cao. Lao động chân tay dần được thay thế
bằng máy móc và hệ thống tưới nước cũng là một trong số đó. Hệ thống tưới hay còn gọi
là hệ thống tưới tự động là một trong những hệ thống ứng dụng công nghệ tiên tiến nhất
hiện nay. Trước kia, để có nước canh tác người lao động phải tìm kiếm những nơi có
nguồn nước dồi giàu hoặc là phải dùng sức mình vận chuyển từng khối nước tới tưới cho
cây trồng thì ngày nay chỉ cần một nút bấm cây đã có nước để hấp thụ. Vừa giảm được
thời gian, giảm được nhân công lao động lại vừa có thể kiểm soát tiết kiệm cho nguồn
nước tránh khỏi việc hao phí nước.
2.1.2 Lịch sử phát triển của hệ thống tưới cây.
Vì vấn đề có thể cung cấp đủ nước đảm bảo độ ẩm cho cây trồng phát triển, cũng
như là tiết kiệm thời gian, tiết kiệm chi phí nhân công, tiết kiệm được nguồn nước nên hệ
thống tưới cây được ra đời và ngày càng hiện đại hơn:

7
Tưới thủ công bằng sức Tưới thủ công có hỗ trợ máy
người móc

Điều khiển tưới từ xa Tưới tự động

Robot tưới cây

Hình 2.1: Lịch sử phát triển quá trình tưới cây

8
2.1.3 Các phương pháp tưới được áp dụng hiện nay:
Tưới cây không chỉ đơn giản là hình thức tưới bình thường như chúng ta nghĩ mà nó
là một trong những biện pháp chủ yếu để sử dụng nước hợp lý, thích hợp cho từng loại
cây trồng, nhằm tăng năng suất lao động và tăng năng suất cho cây trồng.
Trong số những hệ thống tưới phổ biến, nổi bật lên ba hệ thống tưới tự động là tưới phun
sương, tưới phun mưa và tưới nhỏ giọt. Đặc điểm riêng của từng hệ thống như sau:
2.1.3.1 Hệ thống tưới phun sương
Hệ thố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 khiến dòng nước phun ra có dạng hạt rất nhỏ, khuất tán nhanh vào không khí. Vì
đặc tính đó nên tưới phun sương chịu ảnh hưởng rất lớn bởi gió, nên thường chỉ được lắp
đặt ở trong nhà kính, hoặc ở những nơi không chịu ảnh hưởng mạnh bởi các yếu tố khí
hậu. Tưới phun sương thường đượ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,… Ngoài ra
tưới phun sương còn được lắp trong các trang trại, nhà xưởng, quán café, giúp cho không
gian xung quanh luôn mát mẻ và dễ chịu.
Khi bốc hơi nhanh sương hấp thu nhiệt và do đó làm giảm nhiệt độ của môi trường
xung quanh từ 5 – 70C.

Hình 2.2: Hệ thống tưới phun sương.

9
 Ưu điểm:
- Cho phép khả năng kết hợp phân hóa học, thuốc khử trùng hòa tan vào nước
để rãi lên mặt vườn một cách đều và hiệu quả hơn.
- 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.
- Tiết kiệm nước tối ưu. Thỏa mãn yêu cầu sinh lý của cây trồng: không chỉ về
nước mà còn về dinh dưỡng cũng như bảo vệ lớp đất có bộ rễ cây hoạt động.
- Chống nóng, chống lạnh, điều hòa vi khí hậu, không gây ra hiện tượng sương
muối và giúp điều hòa khí hậu tốt hơn hẳn. Phù hợp với nhiều địa hình.
 Nhược điểm:
- Đòi hỏi người sử dụng phải có hiểu biết nhất định về kỹ thuật và quản lý để
vận hành.
- Chi phí đầu tư lớn.
- Nguồn nước phải đảm bảo sạch.
- Chịu ảnh hưởng lớn bởi gió và nhiệt độ.
2.1.3.2 Hệ thống tưới phun mưa
Đây là phương pháp tưới mới được phát triển rộng rãi trong vòng 40 năm nay.
Nguyên tắc chính của hệ thống tưới nước này là dùng máy bơm, ống dẫn nước và vòi
phun để 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 người nông dân tưới cây nhanh hơn, hiệu quả hơn, nâng
cao hiệu quả kinh tế. 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.

Hình 2.3: Hệ thống tưới phun mưa.


10
 Ưu điểm:
- Tưới phun mưa có thể thực hiện ở nhiều địa hình, không gây xói mòn trôi
màu, không phá vỡ cấu tượng của đất, không làm dập nát cây trồng vì có thể
thực hiện được mức tưới nhỏ, tưới nhiều lần với cường độ tùy ý, thích hợp
với từng loại cây trồng đất đai. đảm bảo mức nước cần tưới và độ phủ tương
đối đồng đều, bề mặt lá đều được tưới, làm sạch bụi bám trên lá rất hữu ích
cho cây sinh trưởng phát triển, cải tạo vi khí hậu khu vực tưới, tưới tự động
hoàn toàn và dễ dàng vận hành.
- Tưới phun mưa thuận tiện cho việc phòng trừ sâu bệnh và chống cỏ dại có
thể hòa lẫn các loại thuốc cùng với nước tưới cho cây trồng.
- Tưới phun mưa nâng cao hệ số sử dụng hữu ích của hệ thống tưới và sử dụng
nước trên đồng ruộng. Ở Mỹ hệ số sử dụng hữu ích khi tưới phun mưa là
0.67, còn phương pháp tưới khác là 0.56; ở Nhật hệ số sử dụng hữu ích khi
tưới phun mưa là 0.75 – 0.8 và phương pháp tưới khác là 0.65 – 0.7
- Tưới phun mưa còn làm tăng năng suất các loại cây trồng . Ở Italia khi tưới
phun mưa cho nho, người ta đã nhận thấy chất lượng nho tốt hơn, hàm lượng
đường trong nho tăng 2%. Ở Việt Nam, qua thí nghiệm phun tưới mưa tại đồi
chè 66 – Hợp tác xã Tiên Phú – Phù Ninh – Vĩnh Phúc cho thấy năng suất
chè tăng được 50% so với đối chứng không tưới.
 Nhược điểm:
- Vốn đầu tư chi phí ban đầu hơi cao.
- Lưu lượng nước và áp lực ngồn nước đòi hỏi cao để dẫn đến bơm, đường
ống, van phải lớn làm tăng giá thành, nguồn nước dự trữ phải lớn và ổn định.
- Vòi phun mưa rất dễ bị tắt nếu trong nước tưới có chứa nhiều tạp chất bởi vòi
phun mưa có những lỗ phun rất nhỏ.
- Khi phun mưa tổn thất bốc hơi lớn, đất được làm ẩm đều nên cỏ dại phát
triển mạnh.
- Không thích hợp ở vùng có gió mạnh.
Theo tài liệu của Tritrexop năm 1970 ở Tiệp Khắc 97% tưới bằng phương pháp tưới
phun; ở Dức 79%; ở Israel 90%; ở Anh 80%; Hungari 70%....

11
Ở Việt Nam hiện nay đang được áp dụng rất phổ biến phương pháp tưới phun mưa
cho các vùng chuyên canh rau ở Hà Nội, Hải Phòng, Đà Lạt... và các vùng trồng cây công
nghiệp ở Tây Nguyên.
2.1.3.3 Hệ thống 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. Tưới nhỏ giọt đã
có từ thời cổ đại với các bình đất sét đục lỗ cho nước thấm qua hay hệ thống ống dẫn đục
lỗ tại Đức (năm 1920) nhưng phải đến 1959, nhờ công sức của 2 cha con Simcha Blass
và Yeshayahu người Israel, phương pháp này mới được hoàn thiện.
Hệ thống tưới nhỏ giọt đơn giản bao gồm: bồn chứa nước, hệ thống ống dẫn và đầu
tưới nhỏ giọt hay dây nhỏ giọt.

Hình 2.4: Tưới nhỏ giọt


 Ưu điểm:
- Tiết kiệm nước do nước tưới được cấp trực tiếp cho cây trồng, không bị thất
thoát do bốc hơi và thấm sâu.
- Tưới nhỏ giọt còn có khả năng giữ độ ẩm đồng đều trong tầng đất canh tác
góp phần nâng cao năng suất cây trồng.
- Hiệu suất sử dụng nước tưới được tăng lên và đảm bảo đúng chế độ nước của
đất theo nhu cầu của từng cây trồng.

12
- Phạm vi tưới nước trên mặt đất nhỏ nên trên mặt đất phần lớn vẫn giữ được
khô, các loại cỏ dại sẽ không đủ độ ẩm để phát triển và giữ được thoáng khí.
 Nhược điểm:
- Đây là vấn đề chủ yếu trong sử dụng tưới nhỏ giọt, nghiêm trọng có thể làm
cho hệ thống tưới hoạt động không bình thường, ngừng hoạt động. Nguyên
nhân gây tắc có thể do phù sa trong nước, chất hữu cơ, vi sinh vật hoặc vật
lắng kết hóa học.
- Tưới nhỏ giọt không có khả năng làm mát cây và cải tạo vi khí hậu như tưới
phun mưa, không có khả năng rửa lá giúp cây quang hợp.
- Tưới nhỏ giọt cần có vốn đầu tư ban đầu, người đầu tư phải có trình độ tiến
cận kỹ thuật tưới.
- Khi tưới nhỏ giọt bị gián đoạn, cây trồng sẽ xấu đi nhiều so với phương pháp
tưới cây khác
2.1.4 Một số công trình nghiên cứu trước
2.1.4.1 Các nghiên cứu trong nước
 Hệ thống tưới của trường Cao đẳng Công Nhiệp Huế:
Hệ thống phun tự động đa năng của hai giảng viên trườ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 gồm 1 cảm biến đo nhiệt độ và 1 cảm biến đo độ ẩm đất 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 và nhiệt độ của không khí tại nhà màng báo hiệu cần
nước, tín hiệu sẽ đưa về bộ đ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ái vòi lắt đặt và tự ngừng trong 5
phút, khi cảm biến báo độ ẩm hoặc nhiệt độ đã đạt yêu cầu.
Một thuận lợi nữa là Hệ thống tưới phun đa năng này còn có thể sử dụng để phun
thuốc sâu cho cây hoa bằng cách, thay đấu nối từ nguồn nước tưới sang nguốn nước đã
hòa thuốc sâu. Hệ điều khiển thay vì tự động nhận tín hiệu sẽ được điều khiển bán tự
động bằng tay, mọi hoạt động của hệ thống sẽ chạy cơ chế tương tự.
Với các ưu điểm: tự động hóa, tiết kiệm công sức, tiết kiệm điện, thân thiện với môi
trường, dễ sử dụng… hệ thống tưới phun đa năng này còn cải thiện được hàng loạt các
nhược điểm của các phương pháp tưới truyền thống khác.  Đó là giảm bám bẩn, tắc

13
nghẽn ống tưới, làm mát toàn thân cây kịp thời, tự nhiên, không gây gãy đổ. Có thể tưới
rửa bẩn bám trên thân lá, hoa. Tiết kiệm nước và có giá thành thấp, dễ bảo dưỡng.
 Hệ thống tưới bằng điện thoại của nông dân trẻ Nguyễn Quốc Huy
Để chăm sóc khu vườn rộng hàng ngàn mét vuông của gia đình mình, giờ đây chàng
nông dân trẻ Nguyễn Quốc Huy (22 tuổi, ngụ tại thôn Đa Lộc, xã Xuân Thọ, thành phố
Đà Lạt, tỉnh Lâm Đồng) có thể ngồi cách xa hàng trăm km điều khiển hệ thống thiết bị
tưới nước hiện đại tự động, thông qua chiếc điện thoại thông minh.
Hệ thống bơm nước với các van điện từ đóng mở nhịp nhàng theo một chương trình
đặt trước sẽ lần lượt dẫn nước tới các béc phun nước dựng đều trên các luống rau, tưới đủ
nước lần lượt cho từng khu vực.
Chỉ bằng những tin nhắn từ điện thoại dù ở cách xa cả ngàn km, hệ thống thiết bị
của Huy sẽ tự động vận hành, làm những công việc như hút nước từ giếng lên bể chứa;
dẫn nước tới các bép phun đã chôn sẵn trên các luống cây trồng lần lượt từng khu vực;
tưới theo thời gian đã cài đặt từ hệ thống cho từng khu vực, tùy thuộc vào từng loại cây
trồng…
2.1.4.2 Các nghiên cứu của nước ngoài:
 Máy tự động dùng trong nông nghiệp.
Đầu những năm 80 Liên Xô đã chế tạo ra một loại mấy tự động dùng trong năm
nghiệp. Khi làm việc loại máy này có thể đo được độ ẩm đất, nhiệt độ không khí, sức
gió... có thể xác định được phương pháp tưới và tiến hành tưới cho cây trồng thông qua
một loại máy làm mưa nhân tạo.
 Robot tưới cây của hãng Droplet

14
Hình 2.5: Robot tưới cây của hãng Droplet.
Hãng robot Droplet giới thiệu robot tưới cây tích hợp những công nghệ 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 điều
chỉnh hướng vòi phun, lượng nước, tần suất nước để tự động tưới nước cho cây theo lịch
trình tự tính toán dựa trên phân tích của các dữ liệu đầu vào.Theo thông từ hãng sản xuất,
robot Droplet chẳng những có thể thay thế con người chăm sóc cây cối mà còn có thể
giúp tiết kiệm tới 90% lượng nước lãng phí trong quá trình tưới nước cho cây.
Về mặt kỹ thuật, 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. Tiếp theo,
người dùng cần điều chỉnh hướng vòi phun bằng tay đến mỗi cây và Droplet sẽ lưu từng
vị trí của các cây vào bộ nhớ của mình.
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 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.
 Hệ thống điều khiển tưới cây tự động của Israel.
Nói về công nghệ tưới thì không thể nói đến hệ thống tưới của Israel, đó là cả một
thành công về một nền nông nghiệp gặp nhiều khó khăn, một nền nông nghiệp đã vượt
qua được sự thiếu hụt về tài nguyên nước, nơi có lượng mưa thấp nhất thế giới, một vùng
đất được xem là khô cằn thế nhưng Israel đã chứng tỏ là một quốc gia đi đầu cho những
15
tiến bộ công nghệ không chỉ về nông nghiệp mà còn các lĩnh vực khác ảnh hưởng đến
toàn thế giới.
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 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.
Có 3 loại điều khiển: Điều khiển theo giờ tưới và điều khiển theo chu kỳ.
- Điều khiển theo giờ tưới: Hệ thống hoạt động đúng theo thời gian đồng hồ
yêu cầu
- Điều khiển theo chu kì tưới: Hệ thống hoạt động theo vòng lặp thời gian.
- Điều khiển bằng tay : người sử dụng có thể tưới cây hoặc ngừng tưới ngay
mà không cần đến thời gian đã hẹn, chỉ cần nhấn nút trực tiếp trên timer
Bộ điều khiển thời gian và van điện từ.
Bộ điều khiển tự động: dùng để cài đặt thời gian tưới tự động, như giờ hoạt
động, thời gian hoạt động, thời gian dừng hay chuyển đổi các vị trí tưới. Bộ cảm
biến mưa sẽ tự động ngừng tưới khi có mưa hay độ ẩm cao.
Van điện từ: là thiết bị nhận và truyền tín hiệu từ bộ điều khiển đến các đầu
tưới, để các đầu tưới hoạt động.

16
Hình 2.6: Bộ hẹn giờ và van điều khiển
Hoạt động của hệ thống tưới: Hệ thống được mặc định giờ tưới, đến giờ hoạt
động thì bộ điều khiển sẽ tự động truyền tín hiệu đến các van điện từ, các van sẽ tự
động mở ra và cung cấp nước cho các đầu phun. Thời gian tưới được cài đặt sẵn
theo ý muốn của người sử dụng.
Sau quá trình nghiên cứu, tìm hiểu thì em chọn cho đề tài phương án tưới cây bằng
phương pháp phun mưa, hình thức tưới trực tiếp bằng điện thoại và hẹn giờ trên web. Do
phương pháp phun mưa tối ưu trên nhiều địa hình, phù hợp với nhiều loại cây trồng đặc
biệt là nhưng cây hoa màu nông nghiệp với việc điều khiển tưới thông qua điện thoại di
động hoặc hẹn giờ trên web sẽ giúp được người điều khiển bớt đi thời gian cũng như
không gian. Chỉ cần kết nối mạng vào địa chỉ trang web thực hiện đặc lịch cho hệ thống
hay một cuộc gọi đến thì máy bơm sẽ được hoạt động bơm nước tưới cho cây trồng dù
cho người điều khiển có ở đâu đi chăng nữa thì cũng có thể tưới cây trồng của mình một
cách dễ dàng.
2.2 Tổng quan tập lệnh AT trong đề tài
2.1.1 Tập lệnh AT
Tập lệnh AT viết tắt là Attention các hướng dẫn được sử dụng để điều khiển một
modem. Là tập lệnh chuẩn được hỗ trợ bởi hầu hết các thiết bị di động như điện thoại di
17
động, GSM modem mà có hỗ trợ gửi và nhận tin nhắn tin nhắn dưới dạng SMS (Short
Message Service) và điều khiển cuộc gọi.
Từ các lệnh “AT” này, người lập trình có thể làm một số bước sau:
- Ban đầu đọc tin nhắn, viết tin nhắn và xóa tin nhắn.
- Thực hiện gửi tin nhắn SMS.
- Kiểm tra toàn bộ chiều dài nội dung tin nhắn.
- Thực hiện gọi điện, nghe máy, gác máy.
Trong khuôn khổ của đồ án này em chỉ tìm hiểu 1 số tập lệnh cơ bản phục vụ cho
việc làm đồ án của mình. Sau đây em xin giới thiệu 1 số tập lệnh cơ bản để cài đặt dùng
cho dịch vụ gọi điện bao gồm:
- Bước đầu tiên là công việc khởi tạo.
- Bước thứ hai là nhận, xử lý cuộc gọi và lấy thời gian thực từ nhà mạng của
sim.
- Bước làm cuối cùng là gửi tín hiệu đi.
2.2.2 Các thuật ngữ
<CR>: Carriage return (được dịch từ mã ASCII là $0D).
<LF>: Line Feed (được dịch từ mã ASCII là 0x0A)
MT : Mobile Terminal – Thiết bị đầu cuối mạng (ở đây là Module simA7).
TE : Terminal Equipment – Thiết bị đầu cuối (ở đây là máy tính giao tiếp được
dùng để giao tiếp với Module sim).
2.2.3 Cú pháp lệnh AT
Lệnh khởi đầu: luôn là “AT” hoặc “at”. Lệnh kết thúc là: ký tự <CR>. Thông
thường sau mỗi lệnh AT là một đáp ứng, cấu trúc của đáp ứng này là:
“<CR><LF><Response><CR><LF>” Cú pháp chính của lệnh AT có thể được phân chia
thành 3 loại : cú pháp có cấu trúc cơ bản, cú pháp có cấu trúc tham số S, cú pháp có cấu
trúc mở rộng.
Với các cú pháp nêu trên thì các lệnh có thể hoạt động ở nhiều chế độ khác nhau.
Các chế độ này được thống kê như sau:
Bảng 2.1: Các chế độ lệnh AT.
<Lệnh kiểm tra> AT+<x>=? Thống kê lại các tham số trong câu lệnh và các
giá trị có thể thiết lập cho tham số.
<Lệnh đọc> AT+<x>? Đọc nội dung tin nhắn được gửi đến, kiểm tra
18
giá trị tin nhắn về mặt dữ liệu.
<Lệnh thiết lập> AT+<x>=<…> Được sử dụng để thiết lập các giá trị cho tham
số.
<Lệnh thực thi> AT+<x> Thực thi nội dung tin nhắn được tiến hành bên
trong của Module sim

2.2.4 Một vài lệnh AT được sử dụng trong để tài.


Lệnh ATZ dùng thiết lập lại (reset) tất cả các tham số hiện tại theo mẫu được người
dùng định nghĩa. Lệnh trả về của modem là lệnh OK. Mẫu người dùng định nghĩa trước
đó được lưu trên bộ nhớ cố định. Nếu không thiết lập lại được theo mẫu của người dùng
định nghĩa thì nó sẽ reset lại theo đúng các tham số mặc định của nhà sản xuất. Bất cứ
lệnh AT cộng thêm nào trên cùng một dòng với lệnh ATZ đều không được thực hiện.
 Lệnh AT+CPIN?
Lệnh trả về một chuỗi ký tự chữ số cho biết một số mật khẩu có được yêu cầu hay
không.
Kiểm tra đến khi nào Ready để biết sim sẵn sàng hoạt động chưa nên chờ từ 5-10
giây trước khi làm việc.
 Lệnh AT+CLIP=1 : Hiển thị thông tin cuộc gọi đến
Thông tin nhận dạng đường dây gọi (CLI) của bên gọi khi nhận cuộc gọi bị kết thúc
trên thiết bị di động.

 Lệnh AT + CMGL: danh sách thư đã nhận trong chế độ văn bản.
Lệnh AT + CMGL liệt kê các tin nhắn nhận được trên modem GSM. Nó có thể
được sử dụng để nhận được tất cả các tin nhắn nhận được, tất cả các tin nhắn chưa đọc
hoặc tất cả các tin nhắn đã đọc.

Thông số
- <stat>: Trạng thái = "TẤT CẢ", "REC UNREAD" hoặc "REC READ"
- <index>: Số chỉ mục của thư
- <oa>: Địa chỉ người tạo
- <alpha>: Tên trình khởi tạo (nếu có trong danh bạ)
- <scts>: Tem thời gian trung tâm dịch vụ
19
- <data>: Nội dung của tin nhắn văn bản
- <CR>: ký tự ASCII 13
- <LF>: Ký tự ASCII 10
 Lệnh ATDxxxxx...: Cuộc gọi gốc đến số điện thoại nào đó.
Lệnh này có thể được sử dụng để thiết lập các cuộc gọi thoại, dữ liệu hoặc fax đi.
Với “xxxx...” là số điện thoại muốn gọi đi. Nó cũng phục vụ để kiểm soát các dịch vụ bổ
sung. Lưu ý: Lệnh này có thể bị hủy bỏ thường bằng cách nhận lệnh ATH hoặc ký tự
trong khi thực thi.
 Lệnh ATH : tắt máy
Ngắt kết nối cuộc gọi hiện tại với TE cục bộ từ dòng lệnh và kết thúc cuộc gọi
Tổng quan về WEBSERVER
- Ngày nay cùng với sự phát triển của IOT ngày càng có nhiều WEBSERVER miễn
phí đã được tạo ra miễn phí ( hoặc bỏ ra một khoản phí nhỏ để nâng cấp tính năng
sử dụng ). Các trang chủ này khá dễ dàng sử dụng qua phương thức/giao thức API.
Tiêu biểu như ThingsBoard - Open-source IoT Platform , Blynk IoT platform: for businesses
and developers , https://cloud.google.com/iot , Thinger.io – Open Source IoT Platform, Node-
RED (nodered.org)…
- API là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác. Nó
là viết tắt của Application Programming Interface – giao diện lập trình ứng
dụng. API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm
hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

 API thường ứng dụng vào đâu?

 Web API: là hệ thống API được sử dụng trong các hệ thống website. Hầu hết
các website đều ứng dụng đến Web API cho phép bạn kết nối, lấy dữ liệu hoặc
cập nhật cơ sở dữ liệu. Ví dụ: Bạn thiết kế chức nằng login thông Google,
Facebook, Twitter, Github… Điều này có nghĩa là bạn đang gọi đến API của.
Hoặc như các ứng dụng di động đều lấy dữ liệu thông qua API.
 API trên hệ điều hành: Windows hay Linux có rất nhiều API, họ cung cấp các
tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối. Nó
giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương tác trực
tiếp với hệ điều hành.
 API của thư viện phần mềm hay framework: API mô tả và quy định các hành
động mong muốn mà các thư viện cung cấp. Một API có thể có nhiều cách triển
khai khác nhau và nó cũng giúp cho một chương trình viết bằng ngôn ngữ này

20
có thể sử dụng thư viện được viết bằng ngôn ngữ khác. Ví dụ bạn có thể dùng
Php để yêu cầu một thư viện tạo file PDF được viết bằng C++.

Một số khái niệm khác:

 API hiện nay đều tuân thủ theo tiêu chuẩn REST và HTTP, tạo sự thân thiện dễ
sử dụng với nhà phát triển. Giúp người dùng dễ dàng truy cập, dễ hiểu hơn.
Web API hiện đại dùng cho các đối tượng cụ thể, chẳng hạn như mobile
developer với document, version khác nhau.

 API key: Đây là loại code (string) được truyền tải bởi các chương trình máy
tính gọi là API để xác định chương trình, nhà phát triển hoặc người dùng nó tới
trang web. Các API key được sử dụng với mục đích nhằm giới hạn, kiểm soát
sử dụng API. Chẳng hạn như ngăn chặn sự việc lạm dụng API.
API Key thường hoạt động như một mã định danh duy nhất và mã thông báo bí mật để
xác thực và thường sẽ có một bộ quyền truy cập trên API được liên kết với nó. Các API
Key có thể dựa trên hệ thống định danh duy nhất toàn cầu (UUID) để đảm bảo chúng sẽ
là duy nhất cho mỗi người dùng.

Web API là gì?

Web API là một phương thức dùng để cho phép các ứng dụng khác nhau có thể giao
tiếp, trao đổi dữ liệu qua lại. Dữ liệu được Web API trả lại thường ở dạng JSON hoặc
XML thông qua giao thức HTTP hoặc HTTPS.

Những điểm nổi bật của Web API

Web API hỗ trợ restful đầy đủ các phương thức: Get/Post/put/delete dữ liệu. Nó giúp bạn
xây dựng các HTTP service một cách rất đơn giản và nhanh chóng. Nó cũng có khả năng
hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning,
content format.

Tự động hóa sản phẩm

Với web API, chúng ta sẽ tự động hóa quản lý công việc, cập nhật luồng công việc, giúp
tăng năng suất và tạo hiệu quả công việc cao hơn.

Khả năng tích hợp linh động

API cho phép lấy nội dung từ bất kỳ website hoặc ứng dụng nào một cách dễ dàng nếu
được cho phép, tăng trải nghiệm người dùng. API hoạt động như một chiếc cổng, cho
phép các công ty chia sẻ thông tin được chọn nhưng vẫn tránh được những yêu cầu không
mong muốn.
21
Cập nhật thông tin thời gian thực

API có chức năng thay đổi và cập nhật thay đổi theo thời gian thực. Với công nghệ này,
dữ liệu sẽ được truyền đi tốt hơn, thông tin chính xác hơn, dịch vụ cung cấp linh hoạt
hơn.

Có tiêu chuẩn chung dễ sử dụng

Bất kỳ người dùng, công ty nào sử dụng cũng có thể điều chỉnh nội dung, dịch vụ mà họ
sử dụng.

Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model
binder, IoC container, dependency injection, unit test.

Web API hoạt động như thế nào?

1. Đầu tiên là xây dựng URL API để bên thứ ba có thể gửi request dữ liệu đến
máy chủ cung cấp nội dung, dịch vụ thông qua giao thức HTTP hoặc HTTPS.
2. Tại web server cung cấp nội dung, các ứng dụng nguồn sẽ thực hiện kiểm tra
xác thực nếu có và tìm đến tài nguyên thích hợp để tạo nội dung trả về kết quả.
3. Server trả về kết quả theo định dạng JSON hoặc XML thông qua giao thức
HTTP/HTTPS.
4. Tại nơi yêu cầu ban đầu là ứng dụng web hoặc ứng dụng di động , dữ liệu
JSON/XML sẽ được parse để lấy data. Sau khi có được data thì thực hiện tiếp
các hoạt động như lưu dữ liệu xuống Cơ sở dữ liệu, hiển thị dữ liệu…

Ưu và nhược điểm của Web API

Mỗi một ứng dụng bất kỳ đều có những ưu nhược điểm riêng, hỗ trợ tốt cho các ứng
dụng. Vì vậy mà web API cũng không ngoại lệ:

1. Ưu điểm

 Web API được sử dụng hầu hết trên các ứng dụng desktop, ứng dụng mobile và
ứng dụng website.
 Linh hoạt với các định dạng dữ liệu khi trả về client: Json, XML hay định dạng
khác.
 Nhanh chóng xây dựng HTTP service: URI, request/response headers, caching,
versioning, content formats và có thể host trong ứng dụng hoặc trên IIS.

22
 Mã nguồn mở, hỗ trợ chức năng RESTful đầy đủ, sử dụng bởi bất kì client nào
hỗ trợ XML, Json.
 Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result,
filter, model binder, IoC container, dependency injection, unit test.
 Giao tiếp hai chiều được xác nhận trong các giao dịch, đảm bảo độ tin cậy cao.

2. Nhược điểm

Do web API còn khá mới nên chưa thể đánh giá nhiều về nhược điểm của mô hình nay.
Tuy nhiên, có hai nhược điểm dễ dàng nhận thấy:

 Web API chưa hoàn toàn phải là RESTful service, mới chỉ hỗ trợ mặc định
GET, POST
 Để sử dụng hiệu quả cần có kiến thức chuyên sâu, có kinh nghiệm backend tốt
 Tốn thời gian và chi phí cho việc phát triển, nâng cấp và vận hành
 Có thể gặp vấn đề về bảo mật khi hệ thống bị tấn công nếu không giới hạn điều
kiện kỹ.
-
2.4 Tổng quan về một số linh kiện được sử dụng trong đề tài.
2.4.1 Arduino nano
Board Arduino Nano  là một trong những phiên bản nhỏ gọn của board Arduino.

Hình 2.7: Vi điều khiển Arduino Nano.


Arduino Nano có đầy đủ các chức năng và chương trình có trên Arduino Uno
do cùng sử dụng MCU ATmega328P. Nhờ việc sử dụng IC dán của ATmega328P thay vì
IC chân cắm nên Arduino Nano có thêm 2 chân Analog so với Arduino Uno.
23
Arduino Nano được kết nối với máy tính qua cổng Mini - B USB và sử dụng chip CH340
để chuyển đổi USB sang UART thay vì dùng chip ATmega16U2 để giả lập cổng COM
như trên Arduino Uno hay Arduino Mega

Hình 2.8: Sơ đồ chân của Arduino Nano


Bảng 2.2: Thông số Arduino Nano.
Vi điều khiển ATmega328P-AU.

Điện áp hoạt động 5V – DC

Điện áp đầu 16 MHz

Dòng tiêu thụ 30mA

Điện áp vào khuyên dùng 7-12V – DC

Điện áp vào giới hạn 6-20V – DC

Số chân Digital I/O 14 (trong đó có 6 chân PWM)

Số chân Input Analog 8 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 40mA

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

Bộ nhớ flash 32 KB (ATmega328) với 2KB dùng bởi bootloader

SRAM 2 KB (ATmega328)

24
EEPROM 1 KB (ATmega328)

2.4.2 Giới thiệu về Module SIM 800A GSM/GPRS/GPS

Tính năng
Module SIM800A GSM GPRS Mini là phiên bản thay thế cho module SIM900A đã quá
đỗi quen thuộc. Module cải thiện về độ bền, độ ổn định và vẫn có các tính năng cơ bản
của một chiếc điện thoại như gọi điện thoại, nhắn tin, truy cập GPRS…

Mô-đun tích hợp nguồn xung và ic đệm được thiết kế nhỏ gọn nhưng vẫn giữ được các
yếu tố cần thiết của thiết kế như: mạch chuyển mức tín hiệu logic sử dụng Mosfet, IC
giao tiếp RS232 MAX232, mạch nguồn xung dòng cao, khe sim chuẩn và các đèn led báo
hiệu.

Thông số kỹ thuật:

 Sử dụng module GSM GPRS Sim800A.


 Nguồn cấp đầu vào: 5 – 18VDC, lớn hơn 1A.
 Mức tín hiệu giao tiếp: TTL (3.3-5VDC) hoặc RS232.
 Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao.
 Tích hợp IC chuyển mức tín hiệu RS232 MAX232.
 Tích hợp nguồn xung với dòng cao cung cấp cho Sim800A.
 Sử dụng khe Micro Sim.
 Thiết kế mạch nhỏ gọn, bền bỉ, chống nhiễu

25
 Kết nối theo kiểu USB-TTL:

 Pin3 là chân RxD kết nối với chân TxD của MCU/USB-TTL
 Pin4 là chân TxD kết nối với chân RxD của MCU/USB-TTL
 GND kết nối với chân GND của MCU/USB-TTL
 Pin1 ban đầu JUMP với Pin3 khi mua về
 Pin2 ban đầu JUMP với Pin4 khi mua về
 Pin6 là chân cấp nguồn cho MCU, nhưng sử dụng nguồn ngoài nên không dùng
chân này.

 Kết nối theo kiểu USB-RS232:

 JUMP 2 pin như mô tả trên hình để Enable.


 Kết nối với USB-RS232 với module sim qua 3 chân R-T-GND như trên hình.

Một số lệnh thông dụng để cấu hình và test cho module sim.

Lệnh cấu hình

(1) Lệnh tắt chức năng ECHO cho AT command, cú pháp: ATE0.
(2) Lệnh báo các số điện thoại khi gọi đến, cú pháp: AT+CLIP=1
(3) Lệnh lưu 2 cú pháp (1) và (2) trên: AT&W
(4) Lệnh cấu hình chức năng truyền nhận SMS dưới dạng TEXT: AT+CMGF=1
(5) Lệnh thông báo khi có SMS tới(không hiển thị nội dung tin nhắn): AT+CNMI=2,1.
Lệnh AT+CNMI=2,2 lệnh hiển thị trực tiếp nội dung tin nhắn.
(6) Lệnh lưu 2 cú pháp (4) và (5) trên: AT+CSAS
Lệnh AT, cú pháp: AT. Kết quả trả về là OK.

Test cuộc gọi với xxx là số điện thoại muốn gọi

Cú pháp ATDxxx;
Test hủy cuộc gọi

Cú pháp: ATH
Test gửi tin nhắn với xxx là số điện thoại cần gửi theo 3 bước:

(1) AT+CMGS=”xxx”
(2) Gửi chuối SMS cẩn gửi.
(3) 1A(Gửi lệnh kết thúc).
Test nhận tin nhắn

Cú pháp: AT+CMGR=1
Các lệnh trên áp dụng cho các loại module sim khác nhau: SIM800L, SIM800A,
SIM900, etc…
26
Cảm Biên Nhiệt Độ, Độ Ẩm Không Khí.
Trong đề án này em xin sử dụng cảm biến nhiệt độ độ ẩm là AHT20.

Tính năng
AHT20 là một cảm biến nhiệt độ và độ ẩm mới được thiết kế với kích thước vô cùng nhỏ
gọn. Cảm biến xuất ra tín hiệu kỹ thuật số đã hiệu chỉnh và tích hợp giao tiếp I2C để bạn
dễ dàng kết nối với Vi điều khiển.

Thông số kỹ thuật:

 Model: AHT20
 Điện áp cấp: 2-5.5VDC
 Phạm vi đo (độ ẩm): 0-100% RH
 Phạm vi đo (nhiệt độ): -40 ~ + 85 ° C
 Độ ẩm chính xác độ ẩm: ± 2% RH (25 ° C)
 Độ chính xác nhiệt độ: ± 0.3 ° C
 Độ phân giải:
 Nhiệt độ: 0.01 ° C
 Độ ẩm: 0.024% RH
 Giao tiếp: I2C

Cảm Biên Nhiệt Độ, Độ Ẩm Không Khí.

27
 SMS-V2 Cảm Biến Độ Ẩm Đất có thể được sử dụng để phát hiện độ ẩm của đất hoặc phát hiện
nếu có nước xung quanh cảm biến, rất dễ sử dụng, chỉ cần cắm nó vào đất và sau đó đọc giá trị
analog đầu ra và giao tiếp với vi điều khiển.
 Bề mặt đầu dò cảm biến được chế tạo bằng kim loại, có thể kéo dài tuổi thọ của nó.

Chức năng cảm biến Độ ẩm

Thiết bị SMS-V2

Điện áp cấp 3.3 ~ 5VDC

Điện áp đầu ra 0 ~ 2.3VDC

<20mA
Dòng điện

Analog
Ngõ ra

Module Thời Gian Thực DS3231

DS3231 là một mạch thời gian thực cho Raspberry Pi nhưng nó cũng có thể được sử
dụng cho Arduino. IC RTC DS3231 tự điều chỉnh 3.3V và 5V, cung cấp pin dự phòng
cho thời gian liên tục, tiêu thụ điện năng thấp. Các chức năng đồng hồ hoàn chỉnh bao
gồm thời gian giây, phút, giờ, ngày, ngày, tháng và năm và cung cấp giá trị đến 2100.
28
Mạch thời gian này có hai báo thức lịch, đầu ra 1Hz và 32.768kHz và giao tiếp I2C ở tốc
độ cao lên đến 400kHz.

Thông số kỹ thuật:

 Nhiệt độ: -40 ~ +85°C, độ chính xác thời gian ở ± 5ppm (± 0.432 giây/ngày)
 Công suất thấp
 Có đầy đủ các chức năng lịch đồng hồ bao gồm giây, phút, giờ, ngày, tháng và
năm, giá trị cho đến năm 2100
 Đầu ra 1Hz và 32,768kHz
 Có nút Reset để chỉnh thời gian về ban đầu
 Giao tiếp  I2C (400kHz)
 Điện áp cấp: 2.3 ~ 5.5 VDC
 Pin Out:

Module Relay

Module Relay 5V 10A cấu tạo đơn giản, không có opto cách ly, kích thước khá nhỏ gọn
so với các loại khác. Module relay 5V 10A là Module kích hoạt relay gồm 1 rơ le hoạt
động tại điện áp 5VDC, kích trạng thái đóng mở ở múc cao. Được sử dụng để đóng
ngắt tải với công suất phù hợp, đầu ra có thường đóng, thường mở dễ sử dụng và tiết
kiệm chi phí.

 Điện áp : 5VDC
29
 Kích mức cao
+ Tiếp điểm relay 220V 10A ( Lưu ý tiếp điểm , không phải điện áp ra)
+ NC : Thường đóng
+ NO: Thường mở
+ COM: Chân chung
 Ký hiệu nguồn:
+ VCC, GND là nguồn nuôi Relay
+ In là chân tín hiệu điều khiển

Chương 3
VẬT LIỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨU

30
Sơ Đồ Kết Nối Phần Cứng Của Mô Hình

31
Tóm tắt vai trò của từng linh kiện trong hệ thống:

Hệ thống gồm

Arduino đóng vai trò xử lý trung tâm:

- Thực hiện thu thập dữ liệu từ các sensor : độ ẩm, Nhiệt độ, thời gian, độ ẩm đất.
- Xử lý theo thuật toán mong muốn và đưa ra quyết định Tưới / Không tưới thông
qua chân D4 để đóng/ cắt relay.
- Gửi data về độ ẩm, Nhiệt độ, Độ ẩm đất sang cho Module Sim800A gửi lên
Server.
- Gửi cảnh báo nhiệt độ, Độ ẩm đất khi vượt ngưỡng qua SIM800A.

Module SIM800A Giao tiếp với Arduino để gửi SMS và data lên server.

1. Thực Hiện Gửi data lên sever :

Tiến Hành kết nối theo sơ đồ phần cứng giữa Arduino và Sim800A :

Tạo dashbards cho hệ thống bằng cách truy cập vào https://demo.thingsboard.io/

Tạo một new device  make public và lấy Acess token

Như đã nói ở phần trước, Các trang web này hoạt động theo giao thức API, HTTP mục đích lấy
access token nhằm mục đích giúp sim 800A gửi data theo cú pháp đến sever hợp lệ.

25
Tiến hành nạp code mẫu cho arduino với Acess token:
// This sketch demonstrates connecting and sending telemetry
// using ThingsBoard SDK and GSM modem, such as SIM900
//
// Hardware:
// - Arduino Uno
// - SIM900 Arduino shield connected to Arduino Uno

// Select your modem:


#define TINY_GSM_MODEM_SIM800
// #define TINY_GSM_MODEM_SIM808
// #define TINY_GSM_MODEM_SIM900
// #define TINY_GSM_MODEM_UBLOX
26
// #define TINY_GSM_MODEM_BG96
// #define TINY_GSM_MODEM_A6
// #define TINY_GSM_MODEM_A7
// #define TINY_GSM_MODEM_M590
// #define TINY_GSM_MODEM_ESP8266

#include <TinyGsmClient.h>
#include <SoftwareSerial.h>
#include "ThingsBoard.h"

// Your GPRS credentials


// Leave empty, if missing user or pass
const char apn[] = "internet";
const char user[] = "";
const char pass[] = "";

// See https://thingsboard.io/docs/getting-started-guides/helloworld/
// to understand how to obtain an access token
#define TOKEN "hyc3BmwKsDqVkdXuKaQs"
#define THINGSBOARD_SERVER "demo.thingsboard.io"
#define THINGSBOARD_PORT 80

// Baud rate for debug serial


#define SERIAL_DEBUG_BAUD 115200

// Serial port for GSM shield


SoftwareSerial serialGsm(7, 8); // RX, TX pins for communicating with modem

#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(serialGsm, Serial);
TinyGsm modem(debugger);

27
#else
// Initialize GSM modem
TinyGsm modem(serialGsm);
#endif

// Initialize GSM client


TinyGsmClient client(modem);

// Initialize ThingsBoard instance


ThingsBoardHttp tb(client, TOKEN, THINGSBOARD_SERVER,
THINGSBOARD_PORT);

// Set to true, if modem is connected


bool modemConnected = false;

void setup() {
// Set console baud rate
Serial.begin(SERIAL_DEBUG_BAUD);

// Set GSM module baud rate


serialGsm.begin(115200);
delay(3000);

// Lower baud rate of the modem.


// This is highly practical for Uno board, since SoftwareSerial there
// works too slow to receive a modem data.
serialGsm.write("AT+IPR=9600\r\n");
serialGsm.end();
serialGsm.begin(9600);

// Restart takes quite some time


// To skip it, call init() instead of restart()

28
Serial.println(F("Initializing modem..."));
modem.restart();

String modemInfo = modem.getModemInfo();


Serial.print(F("Modem: "));
Serial.println(modemInfo);

// Unlock your SIM card with a PIN


//modem.simUnlock("1234");
}

void loop() {
delay(1000);

if (!modemConnected) {
Serial.print(F("Waiting for network..."));
if (!modem.waitForNetwork()) {
Serial.println(" fail");
delay(10000);
return;
}
Serial.println(" OK");

Serial.print(F("Connecting to "));
Serial.print(apn);
if (!modem.gprsConnect(apn, user, pass)) {
Serial.println(" fail");
delay(10000);
return;
}

modemConnected = true;

29
Serial.println(" OK");
}

// Uploads new telemetry to ThingsBoard using HTTP.


// See https://thingsboard.io/docs/reference/http-api/#telemetry-upload-api
// for more details

Serial.println("Sending temperature data...");


tb.sendTelemetryFloat("temperature",32.54+0.03*random(1,100) );

Serial.println("Sending humidity data...");


tb.sendTelemetryFloat("humidity", 51.23);
Serial.println("Sending Soil Humidity data...");
tb.sendTelemetryFloat("Soil Humidity", 89.23);
}

Khi kết nối lần đầu tiên thành công Các biến arduino send cho thingsboard sẽ được note
lại và có thể sử dụng được:

30
Bây giờ chúng ta có thể tiến hành thiết kế giao diện cho dashboard này :

Giao diện giám sát đạt được như sau

31
Sau khi sever đã ok có thể tiến hành chỉnh lại code cho chức năng SMS cảnh báo độ ẩm.

Sơ đồ thuật toán :

32
Điều Chỉnh lại code theo sơ đồ trên :
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include "RTClib.h"
#define TINY_GSM_MODEM_SIM800
RTC_DS3231 rtc;
#include "AHT20.h"
AHT20 AHT;
33
#include <Wire.h>
#include <TinyGsmClient.h>
#include <SoftwareSerial.h>
#include "ThingsBoard.h"
// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[] = "internet";
const char user[] = "";
const char pass[] = "";
// See https://thingsboard.io/docs/getting-started-guides/helloworld/
// to understand how to obtain an access token
#define TOKEN "j9jxH3be4ThAODL62UEv" // ACCESS TOKEN from Dashboard
#define THINGSBOARD_SERVER "demo.thingsboard.io" // link from Dashboard

#define THINGSBOARD_PORT 80
#define CB_do_am A0
// Baud rate for debug serial
#define SERIAL_DEBUG_BAUD 115200

// Serial port for GSM shield


SoftwareSerial serialGsm(7, 8); // RX, TX pins for communicating with modem
#ifdef DUMP_AT_COMMANDS
#include <StreamDebugger.h>
StreamDebugger debugger(serialGsm, Serial);
TinyGsm modem(debugger);
#else
// Initialize GSM modem
TinyGsm modem(serialGsm);
#endif

// Initialize GSM client


TinyGsmClient client(modem);

// Initialize ThingsBoard instance


ThingsBoardHttp tb(client, TOKEN, THINGSBOARD_SERVER, THINGSBOARD_PORT);
34
// Set to true, if modem is connected
bool modemConnected = false;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"};

int gio, phut, thoigian;


int h_pre = 0, do_am_dat, do_am_nguong = 100;
float humi, temp;
String RxBuff = ""; // Khai bao bo dem nhan du lieu
int Index_Rxdata = -1; // vi tri cua chuoi nhan duoc
const String myphone = "03******";// nhập số điện thoại của người sử dụng
//const int PWR_KEY = 4;
const int status_led = 13;
void Gsm_Init(); // Cau hinh Module Sim800C
void Gsm_MakeCall(String phone); // Ham goi dien
void Gsm_MakeSMS(String phone, String content); // Ham nhan tin
void tinhieu_cambien();

void setup() {
Serial.begin(9600);
Serial.setTimeout(100);
AHT.begin();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
35
}

// When time needs to be re-set on a previously configured device, the


// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
pinMode(status_led, OUTPUT); //Khai bao ngo ra chan dieu khien relay
digitalWrite(status_led, LOW); //Khoi tao trang thai ngo ra ban dau
pinMode(4, OUTPUT);
//pinMode(5, OUTPUT);
//pinMode(6, OUTPUT);
digitalWrite(4, LOW);
//digitalWrite(5, HIGH);
//digitalWrite(6, HIGH);

//pinMode(2, INPUT_PULLUP); //D4 is output, connect LED on board


//attachInterrupt(0, tinhieu_cambien, FALLING);

GSM_Init();
//GSM_MakeCall(myphone);
//GSM_MakeSMS(myphone,"I'm a test");

}
void loop() {
delay(1000);
int ret = AHT.getSensor(&humi, &temp);
if (ret) // GET DATA OK
{
float nhiet_do = (temp);
float huminity = 100.0 * (temp);
}
else // GET DATA FAIL
{
36
Serial.println("GET DATA FROM ATH20 FAIL");
}
if (!modemConnected) {
Serial.print(F("Waiting for network..."));
if (!modem.waitForNetwork()) {
Serial.println(" fail");
delay(10000);
return;
}
Serial.println(" OK");

Serial.print(F("Connecting to "));
Serial.print(apn);
if (!modem.gprsConnect(apn, user, pass)) {
Serial.println(" fail");
delay(10000);
return;
}

modemConnected = true;
Serial.println(" OK");
}

// Uploads new telemetry to ThingsBoard using HTTP.


// See https://thingsboard.io/docs/reference/http-api/#telemetry-upload-api
// for more details

Serial.println("Sending temperature data...");


tb.sendTelemetryFloat("temperature", nhiet_do );

Serial.println("Sending humidity data...");


tb.sendTelemetryFloat("humidity", huminity );
DateTime now = rtc.now();
int h = now.hour();
int p = now.minute();
37
// Serial.println(h);
// Serial.println(p);
Serial.println(gio);
// Serial.println(phut);
//------------------------ check độ ẩm đất sau mỗi giờ và gửi thông tin cho người sử
dụng-------------------------
if ((h == (h_pre + 1)) | h == 0) // khi h hiện tại thay đổi or tại 0h
{
do_am_dat = analogRead(CB_do_am);
h_pre = h; //lưu giá trị h hiện tại.
if (do_am_dat <= nguong_do_am)
{
digitalWrite(4, HIGH);
String content_sms;
content_sms = "Do Am Qua Thap, Se thuc hien tuoi cay";) // gửi tin nhắn khi vượt ngưỡng
GSM_MakeSMS(myphone, content_sms);
}
}
//-----------------------Thực hiện ct hẹn giờ-----------------------
if (((h * 60 + p) >= (gio * 60 + phut)) & ((h * 60 + p) <= (gio * 60 + phut + thoigian)) & (!
digitalRead(4)))
{
digitalWrite(4, HIGH); // Dong Relay de bat den // Bat bong den

String content_sms;
content_sms = "Bom da duoc Bat";
GSM_MakeSMS(myphone, content_sms);

}
if (Serial.available()) { //Khi co tin nhan gui den module sim thi tien hanh doc va dieu
khien
serialEvent_GSM();
}
}
38
void tinhieu_cambien() {
GSM_MakeCall(myphone);
bool statusLed = !digitalRead(status_led);
digitalWrite(status_led, statusLed);
}
//----Ham phuc vu ngat khi nhan tin nhan SMS ve SIM800L------
void serialEvent_GSM() {
while (Serial.available()) { //Doi den khi co du lieu nhan ve
char inChar = (char)Serial.read(); //Doc 1 byte du lieu vua nhan
RxBuff += inChar; //Ghi byte do vao bo dem RxBuff
if (RxBuff.length() >= 128) {
RxBuff = "";
}
}

int i;

Index_Rxdata = RxBuff.indexOf("BATDEN"); // Tim vi tri cua chuoi "sw1on" trong


bo dem nhan RxBuff
if (Index_Rxdata >= 0) // Neu
{

Index_Rxdata = -1; //
RxBuff = ""; // Xoa bo dem
digitalWrite(4, HIGH); // Dong Relay de bat den // Bat bong den
if (digitalRead(4)) {
String content_sms;
content_sms = "Den da duoc Bat";
GSM_MakeSMS(myphone, content_sms);
}
}
Index_Rxdata = RxBuff.indexOf("TIMER"); // Tim vi tri cua chuoi "sw1on" trong bo
dem nhan RxBuff
if (Index_Rxdata >= 0) // Neu tim thay "LAMP_ON" trong
RxBuff
39
{
String h = RxBuff.substring(RxBuff.indexOf("R") + 1, RxBuff.indexOf("H"));
String p = RxBuff.substring(RxBuff.indexOf("H") + 1, RxBuff.indexOf("P"));
String d = RxBuff.substring(RxBuff.indexOf("P") + 1);
gio = h.toInt();
phut = p.toInt();
thoigian = d.toInt();
String str = "Den se bat vao luc:" + String(gio) + String('h') + String(phut) + String('p') + "
trong " + String(thoigian) + " phut" ;
//
//Serial.println(str);
Index_Rxdata = -1; //
RxBuff = ""; // Xoa bo dem
String content_sms;
content_sms = str;
GSM_MakeSMS(myphone, content_sms);
}
Index_Rxdata = RxBuff.indexOf("SETDOAM"); // Tim vi tri cua chuoi "sw1on" trong
bo dem nhan RxBuff
if (Index_Rxdata >= 0) // Neu tim thay "LAMP_ON" trong
RxBuff
{
String do_am = RxBuff.substring(RxBuff.indexOf("SETDOAM") + 1);
do_am_dat = do_am.toInt();
String str = "set do am dat:" + String(do_am_dat) + " /1024" ;//set độ ẩm đặt theo thang đo
ADC max =1024
//
//Serial.println(str);
Index_Rxdata = -1; //
RxBuff = ""; // Xoa bo dem
String content_sms;
content_sms = str;
GSM_MakeSMS(myphone, content_sms);
}

40
Index_Rxdata = RxBuff.indexOf("TATDEN"); // Tim vi tri cua chuoi "sw1on" trong
bo dem nhan RxBuff
if (Index_Rxdata >= 0) // Neu tim thay "LAMP_ON" trong
RxBuff
{
Index_Rxdata = -1; //
RxBuff = ""; // Xoa bo dem
digitalWrite(4, LOW); // Dong Relay de bat den // Bat bong den
if (!digitalRead(4)) {
String content_sms;
content_sms = "Den da duoc Tat";
GSM_MakeSMS(myphone, content_sms);
}
}

Index_Rxdata = RxBuff.indexOf("KIEMTRA"); // Gui tin nhan bao trang thai cua cac relay
dieu khien
if (Index_Rxdata >= 0) {
String content_sms;
if (digitalRead(4)) {
content_sms = "Den dang Bat";
GSM_MakeSMS(myphone, content_sms);
} else {
content_sms = "Den dang Tat";
GSM_MakeSMS(myphone, content_sms);
}

}
RxBuff = "";
}
//-----Cau hinh module GSM------------
void GSM_Power_On() {
digitalWrite(4, HIGH); // Du chan PWR_KEY len cao it nhat 1s
delay(1500); // o day ta de 1,5s
digitalWrite(4, LOW); // Du chan PWR_KEY xuong thap
41
delay(100); // cac ban xem trong Hardware designed sim800C de
hieu ro hon
}
void GSM_Init() {
Serial.println("ATE0"); // Tat che do phan hoi (Echo mode)
delay(2000);
Serial.println("AT+IPR=9600"); // Dat toc do truyen nhan du lieu 9600 bps
delay(2000);
Serial.println("AT+CMGF=1"); // Chon che do TEXT Mode
delay(2000);
Serial.println("AT+CLIP=1"); // Hien thi thong tin nguoi goi den
delay(2000);
Serial.println("AT+CNMI=2,2"); // Hien thi truc tiep noi dung tin nhan
delay(2000);
}
void GSM_MakeCall(String phone) {
Serial.println("ATD" + phone + ";"); // Goi dien
delay(10000); // Sau 10s
Serial.println("ATH"); // Ngat cuoc goi
delay(2000);
}
void GSM_MakeSMS(String phone, String content) {
Serial.println("AT+CMGS=\"" + phone + "\""); // Lenh gui tin nhan
delay(3000); // Cho ky tu '>' phan hoi ve
Serial.print(content); // Gui noi dung
Serial.print((char)26); // Gui Ctrl+Z hay 26 de ket thuc noi dung tin
nhan va gui tin di
delay(5000); // delay 5s

Viết App ứng dụng tự gửi tin nhắn đến SIM 800A

42
Vì lý do mã AT rất rườm rà và khó nhớ. Nên Em xin phép được viết một app nhỏ để thực hiện việt gửi tin
nhắn đến SIM800 bằng http://ai2.appinventor.mit.edu/ . Nội dung giao diện và block được thể hiện
như bên dưới.

Phần giao diện của app

43
Phần Block của app cần gửi những câu lệnh mà arduino muốn nhận được.

25
Chương 5
KẾT LUẬN VÀ KIẾN NGHỊ

Sau quá trình nghiên cứu, thiết kế và chế tạo và vận hành điều khiển tưới cây, đề tài
đã thực hiện được một số kết quả:
- Hoàn thành tìm hiểu về các phương pháp giám sát và điều khiển tưới cây tự
động.
- Hoàn tất việc thiết kế, xây dựng phần cơ khí mô hình tưới cây tự động.
- Xây dựng giải thuật điều khiển tự động mô hình tưới với 2 mode tưới là hẹn
giờ tưới cây trên web server với giao diện đơn giản, có các thông số về ẩm
độ, nhiệt độ để tiện giám sát cho khu vườn nhỏ và gọi điện để trực tiếp điều
khiển tưới cây.
- Xây dựng mạch điều khiển để giám sát và điều khiển tưới cây tự động.
- Thiết bị có khả năng vận hành theo thông số đã cài đặt.
- Khảo nghiệm và đánh giá mô hình.
5.2 Kiến nghị
Để điều khiển hẹn giờ trên web một cách tối ưu hơn cùng với việc nên phát triển
giao diện web có thể thiết kế sinh động thêm với nhiều tính năng có thể điều khiển thẳng
máy bơm trên web. Việc điều khiển trên web ổn định hoặc thêm chức năng thì phải phụ
thuộc vào tốc độ truyền dự liệu từ sim lên server. Khắc phục việc mạng 2G và GSM để
điều khiển k bị gián đoạn khi chuyển từ chế độ này sang chế độ kia.
Do hạn chế về thời gian và kinh phí nên thiết bị chỉ dừng lại ở mức độ mô hình
giám sát và điều khiển tưới cây. Vì thế nên mô hình máy chỉ mang tính chất khảo
nghiệm, vân hành , phương thức điều khiển và đánh giá. Vì vậy, cần chế tạo sản phẩm
hoàn chỉnh với quy mô lớn hơn và sử dụng công nghệ chế tạo hiện đại để mô hình có thể
đạt được hiệu quả cũng như năng suất làm việc tối ưu nhất

25
Tài liệu tham khảo

 Tài liệu tiếng việt


[1] Nguyễn Ngọc Cần, Kỹ thuật điều khiển tự động, Nhà xuất bản Đại học Quốc Gia
Thành Phố Hồ Chí Minh.
[2] Phan Quốc Phô - Nguyễn Đức Chính, Giáo trình cảm biến, NXB Khoa học và kỹ
thuật – 2000.
 Tài liệu tiếng Anh
[1] SIM800-Series_AT-Command-Manual_V1.09.pdf
[2] Arduino Cookbook – Michael Margolis
[3] AT Command Reference and Applications User’s Guid

26

You might also like