Professional Documents
Culture Documents
Từ trước tới nay nông nghiệp là một trong những lĩnh vực ít được áp dụng công nghệ nhất.
Đặc biệt là ở những quốc gia đang phát triển và chậm phát triển, nông nghiệp gần như chỉ phụ thuộc
vào kinh nghiệm của những người nông dân về đặc tính của cây trồng, về thời tiết… Chính vì vậy,
năng suất và hiệu suất canh tác gần như được để ngỏ, mang tính “may, rủi”.
Trong khi đó, trước những thách thức về biến đổi khí hậu, gia tăng dân số nhanh chóng, vấn
đề đảm bảo đủ lương thực là một trong những thách thức mang tính toàn cầu. Cộng thêm nhu cầu tự
trồng, tự chăm sóc đảm bảo có thực phẩm sạch đang là xu hướng của cư dân thành thị hay các khu đô
thị. Ngành nông nghiệp phải tìm kiếm những phương thức tốt hơn để gia tăng hiệu quả sản xuất. Cách
duy nhất chính là áp dụng công nghệ mới vào hoạt động sản xuất, canh tác.
Do đó là một sinh viên ngành Điện tử-Viễn thông, cần nắm bắt được sự phát triển không ngừng
của khoa học - kĩ thuật, những tiến bộ công nghệ và những ý tưởng mới lạ để có thể ứng dụng vào
cuộc sống hiệu quả hơn, bên cạnh đó sâu xa hơn là thúc đẩy sự phát triển của nền nông nghiệp nước
nhà nói chung và nông nghiệp tiểu canh hộ gia đình, khu đô thị nói riêng, nắm bắt và đi cùng với xu
thế phát triển đó, em đã chọn đề tài “Xây dựng mô hình hệ thống tự động chăm sóc cây trồng tưới tiêu
thông minh, giám sát điệu kiện môi trường cây trồng từ xa và điều khiển thông qua smart phone” để
làm đề tài cho đồ án tốt nghiệp đại học của sinh viên.
Qua những năm tháng học tập và rèn luyện tại Đại học Quy Nhơn, nhận được sự chỉ bảo và
giảng dạy nhiệt tình của quý thầy cô khoa Kỹ Thuật-Công nghệ, khoa mà em đã gắn bó suốt 4,5 năm
qua, đã truyền đạt cho em những kiến thức vô cùng quý báu về lý thuyết và thực tiễn trong suốt thời
gian học ở giảng đường. Cùng với sự nỗ lực của bản thân và với sự tìm tòi nghiên cứu tài liệu hay là
có sự giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác đã góp phần giúp em hoàn
thành đồ án tốt nghiệp đại học này.
Từ những kết quả đạt được này, em xin chân thành cảm ơn: Thầy giảng viên hướng dẫn thạc
sĩ Nguyễn Đức Thiện đã hướng dẫn và góp ý kiến quý báu giúp em hoàn thành đồ án tốt nghiệp đại
học này và cùng với đó là các thầy, cô khoa Kỹ Thuật-Công nghệ, Đại học Quy Nhơn đã nhiệt tình
giảng dạy và truyền đạt những kiến thức quý báu, quan trọng và cần thiết cho em trong suốt quá trình
học tập tại trường.
Do kiến thức còn thiếu xót, hạn hẹp nên không tránh khỏi những sai sót trong cách xây dựng
và thực hiện đồ án tốt nghiệp đại học này. Em rất mong nhận được sự thông cảm và đóng góp ý kiến
của quý thầy cô để em tiếp thu thêm để làm cho đồ án tốt nghiệp đại học của em đạt được kết quả tốt
hơn nữa. Em xin chân thành cảm ơn!
NHẬN XÉT
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
CHƯƠNG 1: MỞ ĐẦU
Từ trước tới nay nông nghiệp là một trong những lĩnh vực ít được áp dụng công nghệ nhất.
Đặc biệt là ở những quốc gia đang phát triển và chậm phát triển, nông nghiệp gần như chỉ phụ thuộc
vào kinh nghiệm của những người nông dân về đặc tính của cây trồng, về thời tiết… Chính vì vậy,
năng suất và hiệu suất canh tác gần như được để ngỏ, mang tính “may, rủi”.
Trong khi đó, trước những thách thức về biến đổi khí hậu, gia tăng dân số nhanh chóng, vấn
đề đảm bảo đủ lương thực là một trong những thách thức mang tính toàn cầu. Ngành nông nghiệp phải
tìm kiếm những phương thức tốt hơn để gia tăng hiệu quả sản xuất. Cách duy nhất chính là áp dụng
công nghệ mới vào hoạt động sản xuất, canh tác.
Trong bối cảnh ngày nay xã hội càng lo ngại về chất lượng cũng như an toàn thực phẩm. Điều
then chốt trong việc đánh tan lo ngại này, và góp phần thúc đẩy nâng cao chất lượng sản phẩm nông
nghiệp, là việc nâng cao tính minh bạch, chuyên nghiệp, và khoa học của chuỗi sản xuất nông nghiệp.
IoT đóng vai trò lớn trong việc giúp sự minh bạch và chuyên nghiệp này trở nên đáng tin cậy hơn. Có
thể lấy vài ví dụ như việc lắp đặt thẻ cảm ứng vào tai lợn để theo dõi và thu thập dữ liệu về quá trình
chăn nuôi; hay việc quản lí điều kiện môi trường cây trồng, yếu tố dinh dưỡng trong cây trồng, quy
trình tự động hóa trong việc chăm sóc cho đến xử lý, đóng gói, bán sỉ và lẻ, giúp từng khuôn thịt khi
đến tay người dùng đều kèm theo một hồ sơ quản lý được lưu trữ đáng tin cậy giúp toàn bộ quy trình
sản xuất trở nên minh bạch hơn.
Chính vì vậy, người tiêu dùng sản phẩm nông nghiệp cũng nên chờ mong vào ứng dụng IoT
và việc đưa các ứng dụng IoT vào ngành nông nghiệp sẽ giúp minh chứng rõ nhất cho việc IoT đem
lại hiệu quả to lớn như thế nào. Đó chính là lý do mà nông nghiệp là lĩnh vực đang được quan tâm đầu
tư và được nhiều startup lựa chọn để gọi vốn.
Mục đích tổng thể của nghiên cứu là: thiết kế, xây dựng mô hình vườn giám sát điều kiện môi
trường cây trồng, tự động bơm tưới thông minh, điều khiển từ xa thông qua smart phone phù hợp với
cây trồng trong nhà tại các khu đô thị hay các khu vườn quy mô vừa và nhỏ. Với các mục tiêu cụ thể:
- Tự động: hệ thống vườn điều khiển bơm tưới thông minh có chức năng tự động, giảm thiểu tối đá
sức ảnh hưởng từ sức lao động.
- Năng suất, hiệu quả: có năng suất khá cao, hiệu quả lớn, khi cây được chăm sóc theo nhu cầu của
chính cây trồng dựa trên các yếu tố của môi trường trồng như nhiệt độ, độ ẩm hay độ ẩm trong đât.
- Tiết kiệm được thời gian: Giảm thiểu tối đa công sức và thời gian chăm sóc cho con người.
- Kinh tế: Mô hình vườn thông minh được thiết kế với các bộ phận, linh kiện và công nghệ tối giản
nhất nhằm vừa có thể đáp ứng được yêu cầu và vừa tiết kiệm chi phí để làm sao cho mô hình vừa có
hiệu quả vừa không gây tốn kém kinh tế.
Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối Internet viết tắt là IoT (
Internet of Things) là một kịch bản của thế giới, khi mà mỗi đồ vật, con người được cung cấp một định
danh của riêng mình, và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy
nhất mà không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính. IoT đã
phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và Internet. Nói đơn giản là
một tập hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới bên ngoài để thực
hiện một công việc nào đó.
Một vật trong IoT có thể là một người với một trái tim cấy ghép; một động vật ở trang trại với
bộ chip sinh học; một chiếc xe với bộ cảm ứng tích hợp cảnh báo tài xế khi bánh xe xẹp hoặc bất kỳ
vật thể tự nhiên hay nhân tạo nào mà có thể gán được một địa chỉ IP và cung cấp khả năng truyền dữ
liệu thông qua mạng lưới. Cho đến nay, IoT là những liên kết máy-đến-máy (M2M) trong ngành sản
xuất, công nghiệp năng lượng, kỹ nghệ xăng dầu. Khả năng sản phẩm được tích hợp máy-đến-máy
thường được xem như là thông minh.
• Thông minh
Sự thông minh và tự động trong điều khiển thực chất không phải là một phần trong ý tưởng về
IoT. Các máy móc có thể dễ dàng nhận biết và phản hồi lại môi trường xung quanh (ambient
intelligence), chúng cũng có thể tự điều khiển bản thân (autonomous control) mà không cần đến kết
nối mạng. Tuy nhiên, trong thời gian gần đây người ta bắt đầu nghiên cứu kết hợp hai khái niệm IoT
và autonomous control lại với nhau. Tương lai của IoT có thể là một mạng lưới các thực thể thông
minh có khả năng tự tổ chức và hoạt động riêng lẻ tùy theo tình huống, môi trường, đồng thời chúng
cũng có thể liên lạc với nhau để trao đổi thông tin, dữ liệu.
Việc tích hợp trí thông minh vào IoT còn có thể giúp các thiết bị, máy móc, phần mềm thu
thập và phân tích các dấu vết điện tử của con người khi chúng ta tương tác với những thứ thông minh,
từ đó phát hiện ra các tri thứcmới liên quan tới cuộc sống, môi trường, các mối tương tác xã hội cũng
như hành vi con người.
Các thực thể, máy móc trong IoT sẽ phản hồi dựa theo các sự kiện diễn ra trong lúc chúng
hoạt động theo thời gian thực. Một số nhà nghiên cứu từng nói rằng một mạng lưới các sensor chính là
một thành phần đơn giản của IoT.
Trong một thế giới mở, IoT sẽ mang tính chất phức tạp bởi nó bao gồm một lượng lớn các
đường liên kết giữa những thiết bị, máy móc, dịch vụ với nhau, ngoài ra còn bởi khả năng thêm vào
các nhân tố mới.
• Kích thước
Một mạng lưới IoT có thể chứa đến 50 đến 100 nghìn tỉ đối tượng được kết nối và mạng lưới
này có thể theo dõi sự di chuyển của từng đối tượng. Một con người sống trong thành thị có thể bị bao
bọc xung quanh bởi 1000 đến 5000 đối tượng có khả năng theo dõi.
Trong IoT, vị trí địa lý chính xác của một vật nào đó là rất quan trọng. Hiện nay, Internet chủ
yếu được sử dụng để quản lý thông tin được xử lý bởi con người. Do đó những thông tin như địa điểm,
thời gian, không gian của đối tượng không mấy quan trọng bởi người xử lý thông tin có thể quyết định
các thông tin này có cần thiết hay không, và nếu cần thì họ có thể bổ sung thêm. Trong khi đó, IoT về
lý thuyết sẽ thu thập rất nhiều dữ liệu, trong đó có thể có dữ liệu thừa về địa điểm, và việc xử lý dữ
liệu đó được xem như không hiệu quả. Ngoài ra, việc xử lý một khối lượng lớn dữ liệu trong thời gian
ngắn đủ để đáp ứng cho hoạt động của các đối tượng cũng là một thách thức hiện nay.
ARM đã "nhanh chân" trong việc nhận ra rằng, ổ đĩa có xu hướng sử dụng các bộ vi điều
khiển 32-bit là giải pháp cho những người có ý định thực hiện một số quyết định của riêng họ theo một
cách tự động. Gary tin rằng, khả năng của các bộ vi điều khiển này ngày càng tăng, điều này có nghĩa
là người dùng có thể làm những điều mà trước đây là bất khả.
Trong 5 năm tiếp theo, bạn sẽ thấy ngày càng có nhiều thiết bị trên thị trường. Những thách
thức đang diễn ra là quản lý dữ liệu và chuyển sang IPv6 (IPv6 đã sẵn sàng và chạy với địa chỉ đã
được cấp phát. IPv4 đã cạn kiệt và 2011 chỉ còn lại những địa chỉ cuối cùng).
Axel Pawlik, Giám đốc Quản lý của RIPE NCC lý giải tại sao IPv6 cần thiết cho tương lai
của IoT, với IPv6 chúng ta sẽ có lượng địa chỉ phong phú và điều này sẽ mở ra khả năng gán địa chỉ
cho mỗi thiết bị (gadget) và chip. Các giải pháp sẽ dễ dàng và đơn giản hơn, rõ ràng hơn, có thể phục
hồi đến từng mục địa chỉ riêng, và phạm vi phát triển vô cùng to lớn.
Lan Pearson, nhà tương lai học với thành tích ấn tượng tại những hãng như BT, Canon và
Fujitsu cho rằng, những gì mà chúng ta thấy ở đây là chưa có tiền lệ hội tụ và phát triển nhanh chóng,
không giống như bất kỳ điều gì chúng ta từng thấy trước đó. Động lực cho việc này chính là áp lực
hướng đến công nghệ mới, để giúp chúng ta tạo ra những chiếc máy tính nhanh hơn, những ổ đĩa có
tốc độ quay nhanh hơn....
Theo Gartner, Inc. (một công ty nghiên cứu và tư vấn công nghệ), sẽ có gần 26 tỷ thiết bị trên
IoT vào năm 2020. ABI Research ước tính rằng hơn 30 tỷ thiết bị sẽ được kết nối không dây với "Kết
nối mọi thứ" (Internet of Everything) vào năm 2020. Theo một cuộc khảo sát và nghiên cứu gần đây
được thực hiện bởi Dự án Internet Pew Research, một phần lớn các chuyên gia công nghệ đã hưởng
ứng tham gia sử dụng Internet of Things với 83% đồng ý quan điểm cho rằng Internet / Cloud of
Things, nhúng và tính toán đeo (và các hệ thống năng động, tương ứng) sẽ có tác động rộng rãi và
mang lại lợi ích đến năm 2025. Như vậy, rõ ràng là IoT sẽ bao gồm một số lượng rất lớn các thiết bị
được kết nối với Internet.
Tích hợp với mạng Internet có nghĩa rằng thiết bị này sẽ sử dụng một địa chỉ IP như là một
định danh duy nhất. Tuy nhiên, do sự hạn chế không gian địa chỉ của IPv4 (cho phép 4,3 tỷ địa chỉ duy
nhất), các đối tượng trong IOT sẽ phải sử dụng IPv6 để phù hợp với không gian địa chỉ cực kỳ lớn cần
thiết. Các đối tượng trong IoT sẽ không chỉ có các thiết bị có khả năng cảm nhận xung quanh, mà còn
cung cấp khả năng truyền động (ví dụ, củ hoặc khóa điều khiển thông qua Internet). Ở một mức độ
lớn, tương lai của Internet of Things sẽ không thể không có sự hỗ trợ của IPv6; và do đó việc áp dụng
toàn cầu của IPv6 trong những năm tới sẽ rất quan trọng cho sự phát triển thành công của IOT trong
tương lai.
Khả năng kết nối vào mạng của thiết bị nhúng với CPU, bộ nhớ giới hạn và năng lượng bền
bỉ. IoT được ứng dụng trong hầu hết các lĩnh vực. Hệ thống như vậy có thể có nhiệm vụ thu thập
thông tin trong các thiết lập khác nhau, từ các hệ sinh thái tự nhiên cho các tòa nhà và các nhà máy, do
đó việc tìm kiếm các ứng dụng trong lĩnh vực cảm biến môi trường và quy hoạch đô thị.
Mặt khác, hệ thống IoT cũng có thể thực hiện các hành động, không chỉ cảm nhận mọi thứ
xung quanh. Hệ thống mua sắm thông minh, ví dụ, có thể theo dõi thói quen người dùng cần ở một
cửa hàng bằng cách theo dõi điện thoại di động của họ. Người dùng sau đó có thể được cung cấp các
cập nhật trên sản phẩm yêu thích của họ,hoặc thậm chí là vị trí các mục mà họ cần, hay tủ lạnh của họ
cần. Tất cả đã tự động chuyển vào điện thoại, ví dụ bổ sung các cảm biến trong các ứng dụng phản
ứng lại với nhiệt độ môi trường, điện và quản lý năng lượng,cũng như hỗ trợ hành trình của các hệ
thống giao thông vận tải.
Tuy nhiên, các ứng dụng của IoT không chỉ giới hạn trong lĩnh vực này. Tường hợp sử dụng
chuyên ngành khác của IoT cũng có thể tồn tại. Một cái nhìn tổng quan về một số lĩnh vực nổi bật nhất
được cung cấp ở đây. Dựa trên các miền ứng dụng, sản phẩm IoT có thể chia thành năm loại khác
nhau: thiết bị đeo thông minh, nhà thông minh, thành phố thông minh, môi trường thông minh, và
doanh nghiệp thông minh. Các sản phẩm và giải pháp IoT trong mỗi thị trường có đặc điểm khác
nhau.
Hình 2.3: Ứng dụng của IoT
IoT có ứng dụng rộng vô cùng, có thể kể ra một số thứ như sau:
Một trong những vấn đề với IoT đó là khả năng tạo ra một ứng dụng IoT nhanh chóng. Để
khắc phục, hiện nay nhiều hãng, công ty, tổ chức trên thế giới đang nghiên cứu các nền tảng giúp xây
dựng nhanh ứng dụng dành cho IoT. Đại học British Columbia ở Canada hiện đang tập trung vào một
bộ toolkit cho phép phát triển phần mềm IoT chỉ bằng các công nghệ/tiêu chuẩn Web cũng như giao
thức phổ biến. Công ty như ioBridge thì cung cấp giải pháp kết nối và điều khiển hầu như bất kì thiết
bị nào có khả năng kết nối Internet, kể cả đèn bàn, quạt máy...
Broadcom mới đây cũng đã giới thiệu hai con chip có mức tiêu thụ điện thấp và giá rẻ dành
cho các thiết bị "Internet of things". SoC đầu tiên, BCM4390, được tích hợp một bộ thu phát sóng Wi-
Fi 802.11 b/g/n hiệu suất cao để có thể dùng với các vi điều khiển 8 hoặc 16-bit. Broadcom nói rằng
sản phẩm này có thể dùng trong các nồi nấu ăn thông minh, bóng đèn, hệ thống an ninh cũng như các
thiết bị gia dụng có khả năng điều khiển và quản lý từ xa. SoC thứ hai, BCM20732, thì được tích hợp
bộ thu phát tín hiệu Bluetooth và nhắm đến những máy móc như bộ đo nhịp tim, bộ đo bước chạy,
thiết bị cảnh báo khi có vật gì đến gần hoặc ổ khóa cửa thông minh. Broadcom cũng đã đóng góp các
tập lệnh phần mềm hỗ trợ cho cả công nghệ Bluetooth thường và Bluetooth Smart vào dự án Android
Open Source (AOSP). Hiện bản mẫu của hai con chip nàyđang được giao đến đối tác phần cứng và dự
kiến sẽ được sản xuất đại trà trong quý 4 năm nay.
• Quản lý hạ tầng
Giám sát và kiểm soát các hoạt động của cơ sở hạ tầng đô thị và nông thôn như cầu, đường
ray tàu hỏa, trên và trang trại là một ứng dụng quan trọng của IoT. Các cơ sở hạ tầng IoT có thể được
sử dụng để theo dõi bất kỳ sự kiện hoặc những thay đổi trong điều kiện cơ cấu mà có thể thỏa hiệp an
toàn và làm tăng nguy cơ. Nó cũng có thể được sử dụng để lập kế hoạch hoạt động sửa chữa và bảo trì
một cách hiệu quả, bằng cách phối hợp các nhiệm vụ giữa các nhà cung cấp dịch vụ khác nhau và
người sử dụng của các cơ sở này. Thiết bị IoT cũng có thể được sử dụng để kiểm soát cơ sở hạ tầng
quan trọng như cầu để cung cấp truy cập vào tàu. Cách sử dụng của các thiết bị iốt để theo dõi và hạ
tầng hoạt động có khả năng cải thiện quản lý sự cố và phối hợp ứng phó khẩn cấp, và chất lượng dịch
vụ, tăng lần và giảm chi phí hoạt động trong tất cả các lĩnh vực cơ sở hạ tầng liên quan. Ngay cả các
lĩnh vực như quản lý chất thải đứng được hưởng lợi từ tự động hóa và tối ưu hóa có thể được đưa vào
bởi IoT.
• Y tế
Thiết bị IoT có thể được sử dụng để cho phép theo dõi sức khỏe từ xa và hệ thống thông báo
khẩn cấp. Các thiết bị theo dõi sức khỏe có thể dao động từ huyết áp và nhịp tim màn với các thiết bị
tiên tiến có khả năng giám sát cấy ghép đặc biệt, chẳng hạn như máy điều hòa nhịp hoặc trợ thính tiên
tiến, cảm biến đặc biệt cũng có thể được trang bị trong không gian sống để theo dõi sức khỏe và thịnh
vượng chung là người già, trong khi cũng bảo đảm xử lý thích hợp đang được quản trị và hỗ trợ người
dân lấy lại mất tính di động thông qua điều trị là tốt. Thiết bị tiêu dùng khác để khuyến khích lối sống
lành mạnh, chẳng hạn như, quy mô kết nối hoặc máy theo dõi tim mạch, cũng là một khả năng của
IoT.
Thiết bị IoT có thể được sử dụng để giám sát và kiểm soát các hệ thống cơ khí, điện và điện tử
được sử dụng trong nhiều loại hình tòa nhà (ví dụ, công cộng và tư nhân, công nghiệp, các tổ chức,
hoặc nhà ở). Hệ thống tự động hóa, như các tòa nhà tự động hóa hệ thống, thường được sử dụng để
điều khiển chiếu sáng, sưởi ấm, thông gió, điều hòa không khí, thiết bị, hệ thống thông tin liên lạc, giải
trí và các thiết bị an ninh gia đình để nâng cao sự tiện lợi, thoải mái, hiệu quả năng lượng và an ninh.
• Giao thông
Các sản phẩm IoT có thể hỗ trợ trong việc tích hợp các thông tin liên lạc, kiểm soát và xử lý
thông tin qua nhiều hệ thống giao thông vận tải. Ứng dụng của IoT mở rộng đến tất cả các khía cạnh
của hệ thống giao thông, tức là xe, cơ sở hạ tầng, và người lái xe hoặc sử dụng. Năng động, tương tác
giữa các thành phần của một hệ thống giao thông vận tải cho phép truyền thông giữa nội và xe cộ, điều
khiển giao thông thông minh, bãi đậu xe thông minh, hệ thống thu phí điện tử, quản lý đội xe, điều
khiển xe, an toàn và hỗ trợ đường bộ.
Còn rất nhiều các ứng dụng từ nhỏ đến lớn khác mà IoT có thể tạo nên và đề tài cũng đang
ứng dụng IoT vào nghiên cứu và xây dựng mô hình IoT trong nông nghiệp.
2.1.4. Một số tác nhân cản trở sựu phát triển của IoT
Ở mức cơ bản nhất, Internet là một mạng dùng để nối thiết bị này với thiết bị khác. Nếu chỉ
riêng có kết nối không thôi thì không có gì đảm bảo rằng các thiết bị biết cách nói chuyện nói nhau. Ví
dụ, bạn có thể đi từ Việt Nam đến Mỹ, nhưng không đảm bảo rằng bạn có thể nói chuyện với người
Mỹ.Để các thiết bị có thể giao tiếp với nhau, chúng sẽ cần một hoặc nhiều giao thức (protocols), có thể
xem là một thứ ngôn ngữ chuyên biệt để giải quyết một tác vụ nào đó. Chắc chắn bạn đã ít nhiều sử
dụng một trong những giao thức phổ biến nhất thế giới, đó là HyperText Transfer Protocol (HTTP) để
tải web. Ngoài ra chúng ta còn có SMTP, POP, IMAP dành cho email, FTP dùng để trao đổi file.
Những giao thức như thế này hoạt động ổn bởi các máy chủ web, mail và FTP thường không
phải nói với nhau nhiều, khi cần, một phần mềm biên dịch đơn giản sẽ đứng ra làm trung gian để hai
bên hiểu nhau. Còn với các thiết bị IoT, chúng phải đảm đương rất nhiều thứ, phải nói chuyện với
nhiều loại máy móc thiết bị khác nhau. Đáng tiếc rằng hiện người ta chưa có nhiều sự đồng thuận về
các giao thức để IoT trao đổi dữ liệu. Nói cách khác, tình huống này gọi là "giao tiếp thất bại", một
bên nói nhưng bên kia không thèm (và không thể) nghe.
Như đã nói ở trên, thay vì giao tiếp trực tiếp với nhau, các thiết bị IoT hiện nay chủ yếu kết
nối đến một máy chủ trung tâm do hãng sản xuất một nhà phát triển nào đó quản lý. Cách này cũng
vẫn ổn thôi, những thiết bị vẫn hoàn toàn nói chuyện được với nhau thông qua chức năng phiên dịch
của máy chủ rồi. Thế nhưng mọi chuyện không đơn giản như thế, cứ mỗi một mạng lưới như thế tạo
thành một subnetwork riêng, và buồn thay các máy móc nằm trong subnetwork này không thể giao
tiếp tốt với subnetwork khác.
Lấy ví dụ như xe ô tô chẳng hạn. Một chiếc Ford Focus có thể giao tiếp cực kì tốt đến các
dịch vụ và trung tâm dữ liệu của Ford khi gửi dữ liệu lên mạng. Nếu một bộ phận nào đó cần thay thế,
hệ thống trên xe sẽ thông báo về Ford, từ đó hãng tiếp tục thông báo đến người dùng. Nhưng trong
trường hợp chúng ta muốn tạo ra một hệ thống cảnh báo kẹt xe thì mọi chuyện rắc rối hơn nhiều bởi
xe Ford được thiết lập chỉ để nói chuyện với server của Ford, không phải với server của Honda, Audi,
Mercedes hay BMW. Lý do cho việc giao tiếp thất bại? Chúng ta thiếu đi một ngôn ngữ chung. Và để
thiết lập cho các hệ thống này nói chuyện được với nhau thì rất tốn kém, đắt tiền.
Một số trong những vấn đề nói trên chỉ đơn giản là vấn đề về kiến trúc mạng, về kết nối mà
các thiết bị sẽ liên lạc với nhau (Wifi, Bluetooth, NFC,...). Những thứ này thì tương đối dễ khắc phục
với công nghệ không dây ngày nay. Còn với các vấn đề về giao thức thì phức tạp hơn rất nhiều, nó
chính là vật cản lớn và trực tiếp trên còn đường phát triển của Internet of Things.
Cách duy nhất để các thiết bị IoT có thể thật sự giao tiếp được với nhau đó là khi có một động
lực kinh tế đủ mạnh khiến các nhà sản xuất đồng ý chia sẻ quyền điều khiển cũng như dữ liệu mà các
thiết bị của họ thu thập được. Hiện tại, các động lực này không nhiều. Có thể xét đến ví dụ sau: một
công ty thu gom rác muốn kiểm tra xem các thùng rác có đầy hay chưa. Khi đó, họ phải gặp nhà sản
xuất thùng rác, đảm bảo rằng họ có thể truy cập vào hệ thống quản lý của từng thùng một. Điều đó
khiến chi phí bị đội lên, và công ty thu gom rác có thể đơn giản chọn giải pháp cho một người chạy xe
kiểm tra từng thùng một.
NodeMCU được tạo ra ngay sau khi ESP8266 ra mắt. Vào ngày 30 tháng 12 năm 2013,
Espressif Systems đã bắt đầu sản xuất ESP8266. ESP8266 là một Wi-Fi SoC (System on Chip) tích
hợp với một lõi Tensilica Xtensa LX106, được sử dụng rộng rãi trong các ứng dụng IoT . NodeMCU
bắt đầu vào ngày 13 tháng 10 năm 2014, khi cam kết tệp đầu tiên của phần mềm nodemcu đến
GitHub. Hai tháng sau, dự án mở rộng bao gồm một nền tảng phần cứng mở khi nhà phát triển Huang
R đã tạo ra tệp gerber của một bảng ESP8266, đặt tên devkit v0.9. Cuối tháng đó, Tuan PM đã chuyển
thư viện khách hàng MQTT (MQ Telemetry Transport or Message Queue Telemetry Transport) từ
Contiki sang nền tảng SoC của ESP8266 và cam kết dự án NodeMCU, sau đó NodeMCU đã có thể hỗ
trợ giao thức IQ của MQTT, sử dụng Lua để truy cập vào môi giới MQTT. Một bản cập nhật quan
trọng được thực hiện vào ngày 30 Tháng Một 2015, khi Devsaurus chuyển các u8glib cho dự án
NodeMCU, cho phép NodeMCU dễ dàng kết nối LCD, màn hình, màn hình OLED, thậm chí màn
hình VGA.
Vào mùa hè năm 2015, những người sáng tạo đã từ bỏ dự án phần mềm và một nhóm các nhà
đóng góp độc lập nhưng đã dành riêng. Đến mùa hè năm 2016, NodeMCU bao gồm hơn 40 mô-đun
khác nhau. Do hạn chế nguồn lực, người dùng cần chọn các mô đun có liên quan đến dự án của họ và
xây dựng một phần mềm phù hợp với nhu cầu.
Như vậy:
ESP8266 được định nghĩa là một chip Wi-Fi chi phí thấp với đầy đủ giao thức TCP / IP và vi
điều khiển (MCU).
Hình 2.4: ESP8266
NodeMCU là một nền tảng IoT nguồn mở . Nó bao gồm phần mềm chạy trên ESP5266 Wi-Fi
SoC của Espressif Systems và phần cứng dựa trên mô đun ESP-12. Thuật ngữ "NodeMCU" mặc định
đề cập đến là bộ công cụ phát triển.
NodeMCU/ESP8266 cung cấp một giải pháp mạng Wi-Fi hoàn chỉnh và khép kín, cho phép
nó lưu trữ các ứng dụng hoặc để offload tất cả các chức năng mạng Wi-Fi từ ứng dụng của tiến trình
khác.
Khi NodeMCU/ESP8266 lưu trữ ứng dụng, và khi nó là bộ xử lý ứng dụng duy nhất trong
thiết bị thì nó có thể khởi động trực tiếp từ một đèn flash bên ngoài. Thiết bị đã tích hợp bộ nhớ cache
để cải thiện hiệu suất của hệ thống trong các ứng dụng như vậy, và để giảm thiểu yêu cầu bộ nhớ.
Ngoài ra, thiết bị phục vụ như một bộ chuyển đổi Wi-Fi, truy cập internet không dây có thể
được thêm vào bất kỳ thiết kế vi điều khiển nào dựa trên với kết nối đơn giản thông qua giao diện
UART hoặc CPU giao diện cầu AHB.
ESP8266 trên board xử lý và lưu trữ các khả năng cho phép nó được tích hợp với các cảm
biến và các thiết bị ứng dụng cụ thể thông qua các GPIO của nó với sự phát triển tối thiểu ở phía trước
và tải tối thiểu trong thời gian chạy. Với mức độ tích hợp chip cao, bao gồm: chuyển đổi ăng ten
balun, chuyển đổi quản lý năng lượng, nó đòi hỏi các mạch bên ngoài tối thiểu và toàn bộ giải pháp
bao gồm mô đun đầu cuối, được thiết kế với diện tích PCB tối thiểu.
Các tính năng cung cấp hệ thống tinh vi bao gồm: chuyển đổi bối cảnh nhanh / ngủ thành năng
lượng VoIP, thích ứng cho hoạt động năng lượng thấp, xử lý tín hiệu trước, và kích hoạt tính năng hủy
bỏ và radio co-existence cho các cellular, Bluetooth, DDR, LVDS, LCD.
ESP8266 được thiết kế cho điện thoại di động, thiết bị điện tử đeo và ứng dụng Internet of
Things với mục đích đạt được tiêu thụ điện năng thấp nhất với sự kết hợp của một số kỹ thuật độc
quyền tiên tiến. Kiến trúc tiết kiệm năng lượng hoạt động ở 3 chế độ: chế độ hoạt động, chế độ ngủ và
chế độ ngủ sâu.
Bằng cách sử dụng các kỹ thuật quản lý năng lượng tiên tiến và logic để tắt chức năng không
yêu cầu và để điều khiển chuyển đổi giữa chế độ ngủ và hoạt động, ESP8266 tiêu thụ ít hơn 12uA ở
chế độ ngủ và ít hơn 1.0mW (DTIM = 3) hoặc nhỏ hơn 0.5mW (DTIM = 10) ở kết nối với điểm truy
cập.
Khi ở chế độ ngủ, chỉ có đồng hồ hiệu chỉnh thời gian thực và cơ quan giám sát vẫn hoạt
động. Thời gian thực đồng hồ có thể được lập trình để đánh thức ESP8266 ở bất kỳ khoảng thời gian
yêu cầu nào.
ESP8266 có thể được lập trình để đánh thức khi phát hiện một điều kiện cụ thể.
Tính năng đánh thức tối thiểu này của ESP8266 có thể được sử dụng bởi thiết bị di động
SOCs, cho phép vẫn ở chế độ chờ nguồn năng lượng thấp cho đến khi cần Wi-Fi.
Để đáp ứng nhu cầu điện năng của thiết bị điện tử di động và đeo được, ESP8266 có thể được
lập trình để giảm công suất ra của PA để phù hợp với các yêu cầu ứng dụng khác nhau.
ESP- chúng được gọi chung là "ESP-xx modules". Để tạo thành một hệ thống phát triển khả
thi chúng đòi hỏi các thành phần bổ sung, đặc biệt là bộ tiếp hợp TTL-USB (đôi khi được gọi là cầu
nối USB-to-UART) và nguồn điện 3,3 volt bên ngoài. Các nhà phát triển Novice ESP-8266 khuyến
khích xem xét các bảng phát triển Wi-Fi lớn hơn ESP8266 như NodeMCU bao gồm cầu USB-
toUART và một kết nối Micro-USB cùng với bộ điều chỉnh công suất 3,3 volt đã được tích hợp sẵn
trong bảng. Khi phát triển dự án hoàn thành, chúng ta có thể không cần các thành phần này và có thể
xem xét sử dụng các mô-đun ESP-xx rẻ hơn như là một sức mạnh thấp hơn.
Bảng 2.1: Các loại module ESP
ESP- 11 Misc 4x3 dice No None Yes 14.2 × 14.7 Not FCC
06 approved
ESP- 14 2 2x8 DIL Yes Ceramic Yes 20.0 × 16.0 Not FCC
07 mm castellated + U.FL approved
connector
ESP- 14 2 2x8 DIL Yes PCB Yes 24.0 × 16.0 FCC and CE
12 mm castellated trace approved[14]
ESP- 20 2 2x8 DIL Yes PCB Yes 24.0 × 16.0 4 MiB Flash
12E mm castellated trace
ESP- 20 2 2x8 DIL Yes PCB Yes 24.0 × 16.0 FCC and CE
12F mm castellated trace approved.
Improved
antenna
performance.
4 MiB Flash
- ESP 12-CORE
- USB TO UART
Hình 2.8: Sơ đồ nguyên lí khối USB TO UART trong nodeMCU
- POWER
- IO CONN
- IP cameras
Cảm biến – sensor: xuất phát từ chữ “ sense” nghĩa là giác quan – do đó nó như các giác quan
trong cơ thể con người. Nhờ cảm biến mà mạch điện, hệ thống điện có thể thu nhân thông tin từ bên
ngoài. Từ đó, hệ thống máy móc, điện tử tự động mới có thể tự động hiển thị thông tin về đại lượng
đang cảm nhận hay điều khiển quá trình định trước có khả năng thay đổi một cách uyển chuyển theo
môi trường hoạt động.
Để dễ hiểu có thể so sánh cảm nhận của cảm biến qua 5 giác quan của người như sau:
5 giác quan Thay đổi môi trường Thiết bị cảm biến
Thị giác Ánh sáng, hình dạng, kích Cảm biến thu hình, cảm biến
thước, vị trí xa gần, màu sắc. quang.
Áp suất, nhiệt độ, cơn đau, Nhiệt trở, cảm biến tiệm cận,
Xúc giác tiếp xúc, tiệm cận, ẩm, khô. cảm biến độ rung động.
Bảng 2.2: So sánh cảm nhận của cảm biến qua 5 giác quan
Cảm biến là thiết bị dùng để cảm nhận biến đổi các đại lượng vật lý và các đại lượng không có
tính chất điện cần đo thành các đại lượng điện có thể đo và xử lý được.
Các đại lượng cần đo (m) thường không có tính chất điện (như nhiệt độ, áp suất, ...) tác động
lên cảm biến cho ta một đặc trưng (s) mang tính chất điện (như điện tích, điện áp, dòng điện hoặc trở
kháng) chứa đựng thông tin cho phép xác định giá trị của đại lượng đo. Đặc trưng (s) là hàm của đại
lượng cần đo (m): s = F(m)
• Các đặc trưng của bộ cảm biến: Một cảm biến được sử dụng khi đáp ứng các tiêu chí kỹ thuật xác
định.
- Mức tuyến tính: Khoảng giá trị được biến đổi có hệ số biến đổi cố định
- Dải biến đổi: Khoảng giá trị biến đổi sử dụng được
- Ảnh hưởng ngược: Khả năng gây thay đổi môi trường
- Mức nhiễu ồn: Tiếng ồn riêng và ảnh hưởng của tác nhân khác lên kết quả
- Độ trôi: Sự thay đổi tham số theo thời gian phục vụ hoặc thời gian tồn tại (date).
- Độ trễ: Mức độ đáp ứng với thay đổi của quá trình
- Độ tin cậy: Khả năng làm việc ổn định, chịu những biến động lớn của môi trường như sốc các loại
- Điều kiện môi trường: Dải nhiệt độ, độ ẩm, áp suất,... làm việc được
• Phạm vi ứng dụng:
Công nghiệp
Nông nghiệp.
Dân dụng
Giao thông.
Vũ trụ
Quân sự
Các bộ cảm biến được phân loại theo các đặc trưng cơ bản sau đây:
- Nhiệt điện
- Quang điện
- Quang từ
- Điện từ
- Từ điện
- Nhiệt từ...
Âm thanh:
- Phổ
Điện:
Từ:
- Độ từ thẩm ...
Quang:
- Tốc độ truyền
Cơ:
- Vị trí
- Lực, áp suất
Mô men:
Nhiệt:
- Nhiệt độ
- Thông lượng
Bức xạ:
- Kiểu
- Năng lượng
- Cường độ ...
- Độ nhạy
- Độ chính xác
- Độ phân giải
- Độ chọn lọc
- Độ tuyến tính
- Dải tần
- Độ trễ
- Độ ổn định
- Tuổi thọ
- Công nghiệp
- Nông nghiệp
- Dân dụng
- Giao thông
- Vũ trụ
- Quân sự
Phân loại theo thông số của mô hình mạch điện thay thế :
+ Cảm biến thụ động được đặc trưng bằng các thông số R, L, C, M .... tuyến tính hoặc phi tuyến.
Các bộ cảm biến đóng vai trò cực kì quan trọng trong lĩnh vực đo lường và điều khiển. Chúng
cảm nhận và đáp ứng theo các kích thích thường là các đại lượng không điện, chuyển đổi các đại
lượng này thành các đại lượng điện và truyền các thông tin về hệ thống đplường điều khiển, giúp
chúng ta nhận dạng, đánh giá, và điều khiển mọi biến trạng thái của đối tượng.
a. Giới thiệu:
DHT11 là cảm biến nhiệt độ và độ ẩm. Nó ra đời sau và được sử dụng thay thế cho dòng
SHT1x ở những nơi không cần độ chính xác cao về nhiệt độ và độ ẩm.
Hình 2.14: Cảm biến DHT11
• Kích thước
DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 dây.
- Thông số kỹ thuật:
+ Do độ ẩm: 20%-95%
+ Sai số độ ẩm ±5%
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2 bước:
+ Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
+ Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt độ đo được.
Hình 2.17: Gửi tín hiệu Start hoạt động trong DHT11
+ MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng thời gian >18ms.
Trong Code mình để 25ms. Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm.
+ MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
+ Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us mà chân DATA ko được
kéo xuống thấp nghĩa là ko giao tiếp được với DHT11.
+ Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong 80us. Bằng việc giám
sát chân DATA, MCU có thể biết được có giao tiếp được với DHT11 ko. Nếu tín hiệu đo được
DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT.
+ DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó:
+ Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và nhiệt độ là chính xác, nếu
sai thì kết quả đo không có nghĩa.
+ Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU, tương
ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm.
Bit 0:
Bit 1:
Hình 2.19: Đọc dữ liệu Bit 1
Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên 1. Nếu
chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1. Do đó trong lập trình ta bắt
sườn lên của chân DATA, sau đó delay 50us. Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị
đo được là 1 thì giá trị đo được là 1. Cứ như thế ta đọc các bit tiếp theo.
a. Giới thiệu
Cảm biến độ ẩm đất: trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu ra sẽ là mức cao
(5V), độ nhạy cao chúng ta có thể điều chỉnh được bằng biến trở. Cảm biến độ ẩm đất có thể sử dung
tưới hoa tự động khi không có người quản lý khu vườn của bạn hoặc dùng trong những ứng dụng
tương tự như trồng cây. Độ nhạy của Cảm biến phát hiện độ ẩm đất có thể tùy chỉnh được (Bằng cách
điều chỉnh chiết áp màu xanh trên board mạch)
Phần đầu đo được cắm vào đất để phát hiện độ ẩm của đất, khi độ ầm của đất đạt ngưỡng thiết
lập, đầu ra DO sẽ chuyển trạng thái từ mức thấp lên mức cao.
+ IC so sánh : LM393
+ VCC: 3.3V-5V
+ GND: 0V
+ Cảm biến độ ẩm đất rất nhạy với độ ẩm môi trường xung quanh, thường được sử dụng để phát hiện
độ ẩm của đất.
+ Khi độ ẩm đất vượt quá giá trị được thiết lập, ngõ ra của module D0 ở mức giá trị là 0V.
+ Ngõ ra D0 có thể được kết nối trực tiếp với vi điều khiển như (Arduino,PIC,AVR,STM), để phát
hiện cao và thấp, và do đó để phát hiện độ ẩm của đất.
+ Đầu ra Analog AO có thể được kết nối với bộ chuyển đổi ADC, bạn có thể nhận được các giá trị
chính xác hơn độ ẩm của đất.
d. Ứng dụng
- Nông nghiệp:
Đo độ ẩm của đất là rất quan trọng cho nông nghiệp ứng dụng để giúp nông dân quản lý của
họ các hệ thống tưới tiêu hiệu quả hơn. Biết được chính xác độ ẩm của đất trên đồng ruộng của họ,
không chỉ nông dân có thể sử dụng ít nước để trồng một vụ, họ cũng có thể tăng sản lượng và chất
lượng của cây trồng bằng cách cải thiện quản lý độ ẩm của đất trong giai đoạn phát triển cây trồng
quan trọng.
Ở khu vực đô thị và ngoại ô , cảnh quan và bãi cỏ ở đang sử dụng cảm biến độ ẩm của đất để
giao tiếp với bộ điều khiển thủy lợi. Kết nối một cảm biến độ ẩm đất với một đồng hồ thủy sinh đơn
giản sẽ biến nó thành một bộ điều khiển thủy lợi "thông minh" để ngăn ngừa các chu trình tưới khi đất
đã ướt, ví dụ như sau sự kiện mưa gần đây.
Các sân gôn sử dụng cảm biến độ ẩm của đất để tăng hiệu quả của hệ thống tưới tiêu nhằm
ngăn ngừa quá nước tưới và phân bón và các hóa chất khác vào đất.
- Nghiên cứu:
Cảm biến độ ẩm của đất được sử dụng trong nhiều ứng dụng nghiên cứu, ví dụ như trong khoa
học nông nghiệp và làm vườn trong đó có quy hoạch thủy lợi, nghiên cứu khí hậu , hoặc khoa học môi
trường bao gồm chất tan nghiên cứu giao thông vận tải và các cảm biến như phụ trợ cho hô hấp đất đo.
Các thiết bị tương đối rẻ và đơn giản mà không cần nguồn điện có sẵn để kiểm tra xem các
nhà máy có đủ độ ẩm để phát triển. Sau khi chèn một que thăm dò vào trong đất trong khoảng 60 giây,
một mét cho biết nếu đất quá khô, ướt hoặc ướt cho cây.
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG MÔ HÌNH
Thiết kế, xây dựng mô hình cho đề tài nhằm thực hiện các nhiệm vụ:
- Kiểm tra, lưu trữ các điều kiện của môi trường cây trồng.
- Điều khiển tự động thông minh theo điều kiện của môi trường trông cây.
- Điều khiển online từ xa qua smart phone. Mô hình xây dựng dựa trên kit nodeMCU/esp8266 là
trung tâm vi xử lí điều hành mọi hoạt dộng của hệ thống. Với mục đích tạo ra môi trường cây trồng
được chăm sóc tự động, thống minh nên phương án thiết kế xoay quanh các điều kiện, yếu tố của môi
trường để cây trồn có thể phát triển bình thường hay có thể là phát triển nhanh và các yếu tố đây là:
nước, độ ẩm, ánh sáng, các chất dinh dưỡng…. Với mục đích như vậy chúng ta cần vạch ra phương án
như sau:
Khối cảm biến <-> Chức năng cảm nhận sự biến đổi của các điều kiện yếu tố trong môi trường cây
trồng
Khối hiển thị <-> Là nơi hiển thị những thông tin của mà khối cảm biến cảm nhận được
Khối thực thi <-> Thực hiện chức năng tưới tiêu, chiếu sáng
Khối nguồn <-> Cung cấp ngồn nuôi cho toàn hệ thống hoạt động
a. Khối nguồn
Mạch sử dụng nguồn chính là nguồn 5 VDC ổn định nhằm cung cấp cho nodeMCU hoạt
động. Từ nodeMCU chúng ta có thể lấy ra các nguồn là 5V và 3.3V để cho các linh kiện khác hoạt
động là cảm biến DHT11, cảm biến độ ẩm đất, màn hình LCD, relay, nút bấm
Máy bơm và đèn có thể dử dụng các nguồn khác ngoài 2 nguồn 3.3 và 5V tùy vào mỗi loại
máy bơm và đèn.
b. Khối vi xử lí
Sử dụng kit nodeMCU/esp8266: Là khối xử lý trung tâm tiếp nhận và điều khiển toàn bộ hoạt
động của hệ thống. Từ việc điều khiển toàn bộ thiết bị phần cứng cho đến thiết lập kết nối và điều
khiển phần mềm.
• Thông số kĩ thuật:
- Tích hợp giao thức TCP / IP, hỗ trợ kết nối TCP Client nhiều kênh (tối đa 5);
0 ~ D8, SD1 ~ SD3: dùng cho GPIO, PWM, IIC, vv; Khả năng điều khiển có thể đạt đến 15mA;
- Nguồn vào: 4.5V ~ 9V (10VMAX), hỗ trợ USB được hỗ trợ và gỡ lỗi USB;
- Dòng làm việc: ≈70mA (200mA MAX, tiếp tục) chế độ chờ <200uA ;
- Chế độ Driven: tăng gấp đôi công suất cầu H trên cầu
• Kích thước:
Cảm biến nhiệt độ, độ ẩm DHT11 được tích hợp trên một module để bảo vệ và sử dụng dễ dàng hơn.
• Sơ đồ nguyên lí:
• Thông số kĩ thuật:
+ Do độ ẩm: 20%-95%
+ Nhiệt độ: 0-50ºC
+ Sai số độ ẩm ±5%
GND GND
VCC 3.3V
DATA D4
• Sơ đồ nguyên lí:
Hình 3.8: Sơ đồ nguyên lí của cảm biến độ ẩm đất
• Thông số kĩ thuật
+ IC so sánh : LM393
+ VCC: 3.3V-5V
+ GND: 0V
Bảng 3.2: Kết nối chân của cảm biến độ ẩm với nodeMCU
GND GND
VCC 3.3V
DATA A0
d. Khối hiển thị
Khối hiển thị với vai trò hiển thị kết quả là thông tin nhận về sau khi được xử lí qua khố điều
khiển cho ra khối hiển thị bao gồm hiển thị thông tin về nhiệt độ, độ ẩm,độ ẩm đất của môi trường cây
trồng. Trong mô hình xây dựng ta sử dụng màn hình lcd 16x4
• Hình dạng: có khả năng hiển thị 4 dòng với mỗi dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến
• Kích thước
• Thông số kĩ thuật
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
1 VSS GND 0V
2 VCC 5V
3 V0 Độ tương phản
6 E Enable
7 DB0
8 DB1
11 DB4
12 DB5
13 DB6
14 DB7
15 A
Cực dương led
nền 0V đến 5V
16 K Cực âm led nền 0V
Để thuận tiện cho việc thiết kế phần cứng chúng ta kết hợp lcd với module điều khiển màn
hình giao tiếp I2C: I2C Adapter dùng cho LCD 16x2 và LCD16x4 giúp cho việc giao tiếp với LCD trở
nên đơn giản hơn, với chuẩn i2C chỉ cần dùng 2 dây thay vì 4 dây hay 8 dây như cách thông thường.
Module sử dụng chip PCF8574.
• Hình dạng
Hình 3.11: module điều khiển màn hình giao tiếp I2C
• Thông số kĩ thuật:
- 16x2, 16x4 LCD chỉ cần dùng 2 dây qua chuẩn I2C
- Module đi kèm header 16 chân đơn giản chỉ cần hàn vào module LCD
• Cách kết nối lcd 16x4 với module điều khiển màn hình giao tiếp I2C: Chúng ta kết nối tương tự theo
thứ tự từ chân 1 đến 16 của màn hình lcd 16x4 tương ứng với các chân từ 1 đến 16 của module điều
khiển màn hình giao tiếp I2C.
Hình 3.12: kết nối LCD 16x4 với module giao tiếp điều khiển I2C
• Kết nối module điều khiển màn hình giao tiếp I2C với nodeMCU
Như vậy là sau khi thực hiện kết nối lcd 16x4 với module điều khiển màn hình giao tiếp I2C
thì việc kết nối tới nodeMCU đã trở nên đơn giản và gọn nhẹ hơn, thay vì phải quan tâm tới 16 chân
của lcd thì hiện tại chúng ta chỉ cần kết nối 4 chân của module điều khiển màn hình là các chân: VCC,
GND, SDA, SCL tới nodeMCU là xong.
Bảng 3.4: kết nối chân nodeMCU với module điều khiển giao tiếp I2C
GND GND
VCC 5VDC
SDA D2
SCL D1
a. Module Relay
• Hình dạng
• Sơ đồ cấu tạo
• Sơ đồ chân
• Thông số kĩ thuật
- Điện áp hoạt động: 5VDC.
Relay 2 Kênh gồm 2 rơ le hoạt động tại điện áp 5VDC, chịu được hiệu điện thế lên đến
250VAC-10A. Relay 2 kênh được thiết kế chắc chắn, khả năng cách điện tốt. Trên module đã có sẵn
mạch kích relay sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển (vi
điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn định. Có sẵn header rất tiện dụng khi kết nối
với vi điều khiển.
Mạch relay 2 kênh sử dụng chân kịch mức Thấp (0V), khi có tín hiệu 0V vào chân IN thì relay
sẽ nhảy qua thường Hở của Relay. ứng dụng với relay module khá nhiều bao gồm cả điện DC hay AC.
- Thông số:
ThingSpeak là một mã nguồn mở “Internet of Things” ứng dụng và API để lưu trữ và lấy dữ
liệu từ những thứ sử dụng HTTP qua Internet hoặc thông qua một Local Area Network. Với
ThingSpeak, bạn có thể tạo các ứng dụng ghi chép cảm biến, ứng dụng theo dõi vị trí và mạng xã hội
với những cập nhật trạng thái.
Ngoài việc lưu trữ và lấy dữ liệu số và chữ số, API ThingSpeak cho phép xử lý dữ liệu số như
khoảng thời gian, trung bình, trung bình, tổng hợp và làm tròn. Mỗi Kênh ThingSpeak hỗ trợ các mục
nhập dữ liệu lên đến 8 trường dữ liệu, vĩ độ, kinh độ, độ cao và trạng thái. Kênh nguồn cấp dữ liệu hỗ
trợ các định dạng JSON, XML và CSV để tích hợp vào các ứng dụng.
Ứng dụng ThingSpeak cũng có tính năng quản lý múi giờ, quản lý khóa API API đọc / ghi và
các biểu đồ dựa trên JavaScript từ Highslide Software.
Sử dụng web server Thingspeak cho hệ thống ta cần thực hiện các bước sau:
- Bước 2: để có thể có quyền sử dụng thingspeak chúng ta cần tạo lập một tài khoản đăng nhập với
một số thông tin:
Hình 3.17: tạo tài khoản trên Thingspeak
- Bước 3: Sau khi tạo lập tài khoản ta tiếp tục đăng nhập vào thingpseak bằng tài khoản vừa tạo
- Bước 4: Sau khi đăng nhập thành công giờ chúng ta đã có được My Channels riêng của mình
Tiếp tục nếu như chúng ta muốn tạo 1 channel hay nhiều channel mới:
Hình 3.19: tạo New Channel
+ Field #: Chọn hộp để bật trường và nhập tên trường. Mỗi kênh ThingSpeak có thể có tối đa 8
trường.
+ Metadata: Nhập thông tin về dữ liệu kênh, bao gồm dữ liệu JSON, XML hoặc CSV.
+ Tags: Nhập từ khóa xác định kênh. Ngăn cách bằng các dấu phẩy.
+ Latitude: Xác định vị trí của cảm biến hoặc vật thu thập dữ liệu theo độ thập phân.
+ Longitude: Chỉ định vị trí của cảm biến hoặc vật thu thập dữ liệu theo độ thập phân.
+ Elevation: Chỉ định vị trí của cảm biến hoặc vật thu thập dữ liệu theo mét.
+ Make Public: Nếu bạn muốn làm cho kênh công khai, hãy chọn hộp này.
+ URL: Nếu bạn có một trang web có chứa thông tin về kênh ThingSpeak, hãy chỉ định URL.
+ Video ID: Nếu bạn có video YouTube ™ hoặc Vimeo® hiển thị thông tin kênh của bạn, hãy chỉ
định đường dẫn đầy đủ của URL video.
Sau khi điền đầy đủ các thông tin cần thiết cho channel chúng ta nhấp chọn Save channel và như
vậy chúng ta đã tạo xong các kênh channel để phục vụ cho việc lưu dữ và hiển thị dữ liệu:
- Bước 5: Như vậy là chúng ta đã tạo thành công channel của mình, tiếp tục chũng ta sẽ nhấp vào
channel đã tạo, chọn tới mục API keys. Tại đây chúng ta copy Key của phần Write API Key vào code
chương trình của vi điều khiển
Hình 3.22: API keys của Channel
Nhập apiKey
- Bước 6: như vậy sau khi nhập apiKey xong và chạy chương trình cho vi xử lí thì chúng ta thu được
kết quả trên wep server thingspeak
Blynk được thiết kế cho Internet of Things. Nó có thể kiểm soát phần cứng từ xa, nó có thể hiển
thị dữ liệu cảm biến, nó có thể lưu trữ dữ liệu và làm được nhiều điều thú vị khác.
- Blynk App: cho phép tạo ra các giao diện tuyệt vời cho các dự án và sử dụng nhiều widget.
- Blynk Server: chịu trách nhiệm về tất cả các thông tin liên lạc giữa các điện thoại thông minh và
phần cứng.
- Blynk Libraries: cho tất cả các nền tảng phần cứng phổ biến, cho phép giao tiếp với máy chủ và xử
lý tất cả các lệnh đến và outcoming.
Mô hình kết nối hoạt động của 3 thành phần quan trọng trong Blynk:
- API tương tự & UI cho phần cứng và các thiết bị hỗ trợ tất cả
+ Ethernet
+ Wifi
+ Bluetooth và BLE
+ USB (Serial),….
Như vậy tất cả các thứ chúng ta cần để Blynk có thể hoạt động bao gồm:
- Cài đặt thư viện Blynk trên IDE Arduino: để chạy chương trình hoạt động cho nodeMCU.
- Đọc và hiển thị toàn bộ dữ liệu từ cảm biến và trạng thái của bơm,đèn
- Gửi thông báo hệ thống offline hoặc khi đèn hoặc bơm được bật
Chúng bắt đầu tạo lập các điều kiện cần thiết để Blynk Apps hoạt động:
Sau khi chúng ta tải về App Blynk, chúng ta cần phải tạo một tài khoản mới Blynk. Tài khoản này
là cần thiết để lưu dự án của chúng tavà có thể truy cập chúng từ nhiều thiết bị từ bất cứ nơi nào. Nó
cũng là một biện pháp an ninh.
Sau khi tạo tài khoản thành công và sẽ tạo project cho đề tài của mình
Nhấp chuột vào Create New Project và sau đó nhập tên project:
Tiếp tục trong mục HARDWARE MODEL kéo chuột và chọn NodeMCU
Hình 3.30: Chọn thiết bị kết nối
Sau đó nhấn chọn CONTINUE và chọn Create. Như vậy là ta đã hoàn thành xong việc tạo lập Project
• Bước 3: Ta tạo lập các Widget hiển thị nhiệt độ, độ ẩm và độ ẩm đất
Trong Widget Box chúng ta lấy chọn ra 3 Gauge: để thể hiện nhiệt độ, độ ẩm và độ ẩm đất.
- Tạo giao diện hiển thị thông số cảm biến và điều chỉnh thông số nhiệt độ
Tiếp tục điều chỉnh đầu vào INPUT: chọn chân pin V10 và chỉ số từ 0 cho đến 100 và tại READING
FREQUENCY ta chọn là 5 sec
- Tạo giao diện hiển thị thông số cảm biến và điều chỉnh thông số độ ẩm
Chúng ta cũng tiến hành làm tương tự như với cấu hình cho hiển thị nhiệt độ TEMP:
+ Nhập tên: HUMID
+ Tại INPUT: chọn chân PIN là V11 và chỉ số từ 0 cho đến 100
- Tạo giao diện hiển thị thông số cảm biến và điều chỉnh thông số độ ẩm đất SOIL tại GAUSE 3
Chúng ta cũng tiến hành làm tương tự như với cấu hình cho hiển thị nhiệt độ TEMP và độ ẩm
HUMID:
+ Tại INPUT: chọn chân PIN là V12 và chỉ số từ 0 cho đến 100
• Bước 4: Thêm các WIDGET đèn LED trạng thái và cảnh báo điện thoại
Vẫn trong WIDGET BOX ta chọn đèn LED và Notification để cảnh báo điện thoại
Kích chọn và LED 1 để tiến tới LED Settings: Ta viết tên cho LED là BOM và thay đổi đầu vào
INPUT là V0
Hình 3.37: Cài đặt đèm LED hiển thị bơm
+ Đèn LED 2: thể hiện trạng thái của đèn ta làm tương tự như với LED 1
Kích chọn và LED 2 để tiến tới Led Settings: Ta viết tên cho LED là DEN và thay đổi đầu vào
INPUT là V1
- Cài đặt cho cảnh báo điện thoại Notification: ta cũng kích vào
Notification đã lấy ra để vào Notification Settings và chuyển đổi trong mục NOTIFI WHEN
HARDWARE GOES OFFLINE từ chế độ OFF sang ON.
Hình 3.39: Cài đặt ảnh báo điện thoại
• Bước 5: Chúng ta tiếp tục tạo thêm nút bấm để có thể thực hiện điều khiển bơm và đèn từ xa
- BUTTON 1: chúng ta cài đặt để làm nút bấm cho máy bơm
- BUTTON 2: chúng ta cài đặt để làm nút bấm cho đèn và cũng làm tương tự như với BUTTON máy
bơm
• Bước 6: Lấy Token Để có thể kết nối được Blynk App với phần cứng hay với thiết bị khác thì chúng
ta cần phải có Token. Chúng ta nhấn chọn vào My Devices và chỉ cần nhấn chọn E-mail thì như vậy
Blynk sẽ tự động gửi token vào e-mail cho chúng ta ( e-mail đã được khai báo ở phần đăng kí tài
khoản)
Sau khi có được Token từ e-mail chúng ta sẽ copy và paste vào code trong chương trình.
+ NodeMCU
+ LCD 16x2
+ Máy bơm
+ Đèn
• Kết nối các chân của nodeMCU và các linh kiện khác:
Bảng 3.5: Kết nối chân của nodeMCU với các linh kiện
D0 Nút bấm 1
D3 Nút bấm 2
D5 Nút bấm 3
hoạt động để thực hiện các chức năng: hiển thị nhiệt độ, độ ẩm và độ ẩm đất ra màn hình; gửi
dữ liệu lên web server và smart phone; tưới tiêu và bật đèn thủ công taị chỗ; thực hiện điều khiển bơm
và đèn thông qua smart phone.
NodeMCU với vai trò chính là trung tâm điều khiển toàn mạch và có kết nối với các bộ phận
khác và được cung cấp nguồn như
Khối cảm biến hoạt động với cảm biến độ ẩm đất và cảm biến DHT11 sẽ cung cấp dữ liệu về
cho nodeMCU. Vi điều khiển chính này sẽ thực hiện việc gửi dữ liệu nhận được từ cảm biến và gửi
lên web server Thingspeak và smart phone đã cài ứng dụng Blynk
Khối hiển thị nhận thông tin điều khiển từ nodeMCU gửi đến dữ liệu về độ ẩm, nhiệt độ và độ
ẩm đất để hiển thị lên màn hình LCD
Khối thực thi có kết hợp máy bơm và đèn với module relaycó để cso thể hoạt động được,
chúng ta 2 cách vận hành là: điều khiển thủ công tại chỗ và điều khiển qua điện thoại.
- Đối với điều khiển thủ công tại chỗ: Chúng ta thiết kế khối thực thi có thêm 3 nút bấm để thực hiện
các chức năng bật tắt:
+ nút bấm 3: thực hiện chức năng lấy nhanh dự liệu nhiệt đô, độ ẩm và độ ẩm đất hiển thị trên màn
hình LCD, cso nhiệm vụ như reset lại màn hình
- Đối với điều khiển qua smart phone: điều khiển thông qua smart phone với ứng dụng Blynk
Về việc điều khiển tự động thông minh: mô hình đề tài có gắng xây dựng thực hiện một chế
độ thông minh gồm chức năng:
- Tự động bơm tưới thông minh: dựa vào các điều kiện mà cảm biến thu thập được, nếu mực nước
hay độ ẩm trong đất không đạt yêu cầu => hệ thống tự động bật bơm để tưới, khi mực nước trong đất
được bơm đạt nhu cầu cần của cây trồng => hệ thống tự động tắt bơm.
- Tự động bật đèn: dựa vào yếu tố nhiệt độ và độ ẩm của cảm biến DHT thực hiện được thì hệ thống sẽ
tự lọc thông tin avf đưa ra điều khiển hợp lí như là khi thiếu ánh sang hay thời tiết lạnh thì hệ thống sẽ
tự động bật đèn để cung cấp thêm ánh sáng và để sưởi ấm cho cây trồng và khi ngược lại cây trồng
được cung cấp đủ ánh sáng và có nhiệt độ môi trường xung quanh phù hợp thì hệ thống sẽ tự động tắt
đèn
Ngoài ra trên smart phone trong ứng dụng Blynk còn có thêm chức năng cảnh báo phải bơm
hay bật đèn phòng trường hợp hệ thống tự động bị hỏng hoặc gặp sự cố.
Code điều khiển hệ thống được viết trên nền Arduino IDE. NodeMCU cũng có thể được nạp
code trong Arduino IDE và chúng ta chỉ cần điều chỉnh một chút:
- Thêm thư viện cho esp8266 trong Arduino IDE: vào file -> preferences Và thêm đường dẫn
- Tiếp theo là thêm Boards ESP8266: chọn Tool -> Board -> Boards Manager
Hình 3.47: Intall Board ESP8266
Và sau đó Intall
Như vậy chúng ta đã cài đặt xong nodeMCU/esp8266 trong Arduino IDE và tiếp tục là viết chương
trình.
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DS3231.h>
#include "DHT.h"
#include <Wire.h>
#include <ds3231.h>
#include <LiquidCrystal_I2C.h>
DS3231 clock;
TCDateTime dt;
LiquidCrystal_I2C lcd(0x27,16,4);
/* TIMER */
#include <SimpleTimer.h>
WiFiClient client;
// Uncomment loại cảm biến bạn sử dụng, nếu DHT11 thì uncomment DHT11 và comment DHT22
#define DRY_SOIL 50
#define WET_SOIL 75
#define COLD_TEMP 12
#define HOT_TEMP 22
#define TIME_PUMP_ON 15
#define TIME_LAMP_ON 15
/* TIMER */
// Thay xxxx bằng thingspeak API key của bạn, sau đó thay ten_wifi và mat_khau
float humDHT;// = 0;
float tempDHT;// = 0;
//int lumen;
int soilMoist = 0;
boolean pumpStatus = 0;
boolean lampStatus = 0;
long sampleTimingSeconds = 50; // ==> Thời gian đọc cảm biến (s)
long startTiming = 0;
long elapsedTime = 0;
SimpleTimer timer;
// Khởi tạo cảm biến
byte degree[8] = {
0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};
void setup() {
pinMode(PUMP_PIN, OUTPUT);
pinMode(LAMP_PIN, OUTPUT);
pinMode(PUMP_ON_BUTTON, INPUT_PULLUP);
pinMode(LAMP_ON_BUTTON, INPUT_PULLUP);
pinMode(SENSORS_READ_BUTTON, INPUT_PULLUP);
aplyCmd();
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0,1);
lcd.print("Nhiet do:");
lcd.setCursor(-4,2);
lcd.print("Do am:");
lcd.setCursor(-4,3);
lcd.print("Do am dat:");
lcd.createChar(1, degree);
clock.begin();
clock.setDateTime(__DATE__, __TIME__);
PUMP.off();
LAMP.off();
startTimers();
void loop() {
Blynk.run();
/****************************************************************
****************************************************************/
int i = param.asInt();
if (i == 1)
pumpStatus = !pumpStatus;
aplyCmd();
}
}
int i = param.asInt();
if (i == 1)
lampStatus = !lampStatus;
aplyCmd();
void getSoilMoist(void)
int i = 0;
soilMoist = 0;
lcd.setCursor(7,3);
lcd.print(soilMoist);
void getDhtData(void)
{
dt = clock.getDateTime();
tempDHT = dht.readTemperature();
humDHT = dht.readHumidity();
lcd.setCursor(0,0);
lcd.print(dt.hour);
lcd.print(":");
lcd.print(dt.minute);
lcd.setCursor(6,0);
lcd.print(dt.day);
lcd.print("/");
lcd.setCursor(3,2);
lcd.print(humDHT);
lcd.print(" %");
//soilMoist
return;
void printData(void)
Serial.print(humDHT);
Serial.print(" %\t");
Serial.print(tempDHT);
Serial.print(" *C\t");
Serial.print(" %\t");
Serial.print("Do am dat: ");
Serial.print(soilMoist);
Serial.println(" %");
/****************************************************************
****************************************************************/
void readLocalCmd()
if (!digiValue)
pumpStatus = !pumpStatus;
aplyCmd();
digiValue = debounce(LAMP_ON_BUTTON);
if (!digiValue)
lampStatus = !lampStatus;
aplyCmd();
digiValue = debounce(SENSORS_READ_BUTTON);
if (!digiValue)
getDhtData();
getSoilMoist();
printData();
/***************************************************
****************************************************/
void aplyCmd()
if (pumpStatus == 1)
digitalWrite(PUMP_PIN, LOW);
PUMP.on();
Else
digitalWrite(PUMP_PIN, HIGH);
PUMP.off();
if (lampStatus == 1 )
digitalWrite(LAMP_PIN, LOW);
LAMP.on();
else
{
digitalWrite(LAMP_PIN, HIGH);
LAMP.off();
/***************************************************
****************************************************/
boolean state;
boolean previousState;
previousState = digitalRead(pin);
delay(1);
state = digitalRead(pin);
if (state != previousState)
counter = 0;
previousState = state;
return state;
/*************************************************** *
void autoControlPlantation(void)
turnPumpOn();
turnLampOn();
/*************************************************** *
****************************************************/
void turnPumpOn()
pumpStatus = 1;
aplyCmd();
pumpStatus = 0;
aplyCmd();
/*************************************************** *
****************************************************/
void turnLampOn()
{
lampStatus = 1;
aplyCmd();
lampStatus = 0;
aplyCmd();
/***************************************************
****************************************************/
void startTimers(void)
/***************************************************
**************************************************/
void sendUptime()
Blynk.virtualWrite(10, tempDHT);
Blynk.virtualWrite(11, humDHT);
// Độ ẩm với pin V11
Blynk.virtualWrite(12, soilMoist);
Blynk.virtualWrite(8, tempDHT);
Blynk.virtualWrite(4, humDHT);
Blynk.virtualWrite(3, soilMoist);
}
KẾT QUẢ ĐẠT ĐƯỢC
• Input
• Output
- Thông tin điều khiển cần hiển thị lên điện thoại
- Dữ liệu cần lưu trữ trên server hay điện thoại Kết quả cuối cùng của đề tài:
- Xây dựng được mô hình hoạt động ofline: điều khiển thủ công bật bơm và đèn
- Xây dựng mô hình hệ thống online tự động bơm tưới nước, bật đèn
+ Đọc và hiển thị toàn bộ dữ liệu từ cảm biến và trạng thái của bơm,đèn
+ Gửi thông báo hệ thống offline hoặc khi đèn hoặc bơm được bật
2. Nhược điểm
Sau quá trình tìm hiểu, nghiên cứu và xây dựng mô hình thì kết quả đạt được còn ở mức cơ
bản và chưa có gì nổi bật, song song với đó là mô hình vẫn còn nhiều hạn chế ví dụ như:
- Tình trạng delay, trễ quá nhiều khi ấn nút điều khiển
- Phản hồi hơi chậm với chế độ điều khiển bằng tay
- Còn thiếu nhiều chức năng cần thiết khác như: chưa đo được các chất dinh dưỡng trong đất, độ
Ph,….
- ….
TÀI LIỆU THAM KHẢO
[1] http://hocarm.org
[2] http://arduino.vn
[3] https://en.wikipedia.org
[4] http://www.instructables.com
[5] https://learn.adafruit.com