ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
Vườn-Lan-Thông-Minh-IOT.docx
1. TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
NĂM HỌC 2021-2022
NGHIÊN CỨU, XÂY DỰNG
MÔ HÌNH VƯỜN LAN THÔNG MINH
Sinh viên thực hiện:
Lê Tiến Tuấn Lớp: Tự động hóa 1- K60 Khoa: Điện-Điện tử
Đinh Công Văn Lớp: Tự động hóa 1- K60 Khoa: Điện-Điện tử
Nguyễn Văn Minh Lớp: Tự động hóa 1- K60 Khoa: Điện-Điện tử
Nguyễn Văn Đoàn Lớp: Tự động hóa 1- K60 Khoa: Điện-Điện tử
Ngô Văn Giang Lớp: Tự động hóa 1- K60 Khoa: Điện-Điện tử
Người hướng dẫn: Ts.Trịnh Thị Hương
HÀ NÔI, 2022
2. 2
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
NĂM 2022
NGHIÊN CỨU XÂY DỰNG MÔ HÌNH VƯỜN LAN THÔNG MINH
Sinh viên thực hiện:
Lê Tiến Tuấn Nam, Nữ: Nam Dân tộc: Kinh
Lớp: Tự động hóa 1 K60 Khoa: Điện-Điện tử Năm thứ:3/4.5
Đinh Công Văn Nam, Nữ: Nam Dân tộc: Kinh
Lớp: Tự động hóa 1 K60 Khoa: Điện-Điện tử Năm thứ:3/4.5
Nguyễn Văn Minh Nam, Nữ: Nam Dân tộc: Kinh
Lớp: Tự động hóa 1 K60 Khoa: Điện-Điện tử Năm thứ:3/4.5
Nguyễn Văn Đoàn Nam, Nữ: Nam Dân tộc: Kinh
Lớp: Tự động hóa 1 K60
Ngô Văn Giang
Khoa: Điện-Điện tử
Nam, Nữ: Nam
Năm thứ:3/4.5
Dân tộc: Kinh
Lớp: Tự động hóa 1 K60 Khoa: Điện-Điện tử Năm thứ:3/4.5
Người hướng dẫn: Ts.Trịnh Thị Hương
HÀ NÔI, 2022
3. 3
MỤC LỤC
LỜI MỞ ĐẦU...................................................................................................... 5
CHƯƠNG 1: TỔNG QUAN VỀ IOT ............................................................... 6
1. Khái niệm và lịch sử ra đời ....................................................................... 6
2. Nhu cầu xã hội về IOT và ứng dụng trong các ngành nghề y tế, công
nghiệp ........................................................................................................... 7
3. IOT trong nông nghiệp…………………………………………………..
4. Lí do chọn đề tài.......................................................................................... 8
5. Mục tiêu, nội dung, phương pháp nghiên cứu ......................................... 8
6. Đối tượng và phạm vi nghiên cứu.............................................................. 9
7. Kết luận chương 1....................................................................................... 9
CHƯƠNG 2: NGHIÊN CỨU HỆ THỐNG IOT TRONG NÔNG NGHIỆP 10
2.1. Lựa chọn mô hình VƯỜN LAN THÔNG MINH ...............................10
2.2. Đặc tính lan Hồ Điệp..............................................................................11
2.3.Kết luận chương 2...................................................................................20
CHƯƠNG 3: CÁC THIẾT BỊ CƠ BẢN VÀ NGUYÊN LÍ HOẠT ĐỘNG 21
3.1 Khối xử lí trung tâm ...............................................................................21
3.2 Khối cảm biến..........................................................................................23
3.3. Khối thực thi.............................................................................................29
3.4. Khối hiển thị
3.5. Khối truyền thông
3.6.Kết nối ESP8266 và App Blynk
3.7. Giao tiếp ESP8266 và Arduino Uno/Mega
3.8.Kết luận chương 3...................................................................................31
CHƯƠNG 4: PHƯƠNG PHÁP TRUYỀN THÔNG
4.1. Phương thức truyền dữ liệu..................................................................32
4.2. Giao thức truyền thông (MQTT)..........................................................33
4.3. Kết luận chương 4..............................................................................36
CHƯƠNG 5: CHẠY MÔ HÌNH
5.1.Code chương trình
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN....................................................... 42
TÀI LIỆU THAM KHẢO................................................................................ 43
4. 4
LỜI MỞ ĐẦU
Ngày ngay trên thế giới với sự bùng nổ của các ngành công nghệ thông tin, điện,
điệntử v.v… Đã làm cho đời sống của con người ngày càng hoàn thiện. Các thiết bị tự
động hóa đã ngày càng được con người áp dụng vào cuộc sống sinh hoạt cũng như học
tập hàng ngày của mỗi con người. Qua báo chí, các phương tiện truyền thông, internet
chúngta có thể thấy mô hình ứng dụng IOT trong nông nghiệp đã được đưa vào sử dụng
trong đời sống và ngày càng thông minh hơn. Là sinh viên khoa Điện, với những kiến
thức đã học cùng với mong muốn thiết kế một mô hình nông nghiệp hiện đại hơn, nhóm
chúng em phát triển mô hình VƯỜN LAN THÔNG để phục vụ cho quá trình học tập và
làm việc.
5. 5
CHƯƠNG 1: TỔNG QUAN VỀ IOT
1. Khái niệm và lịch sử ra đời
*IOT là gì ?
Internet of Things (IoT) - là mạng kết nối các đồ vật và thiết bị thông qua cảm biến, phần
mềm và các công nghệ khác, cho phép các đồ vật và thiết bị thu thập và trao đổi dữ liệu với
nhau.
Internet vạn vật lan tỏa lợi ích của mạng internet tới mọi đồ vật được kết nối, chứ không chỉ
dừng lại ở phạm vi một chiếc máy tính. Khi một đồ vật được kết nối với internet, nó sẽ trở
nên thông minh hơn nhờ khả năng gửi và/hoặc nhận thông tin và tự động hoạt động dựa trên
các thông tin đó.
Các thiết bị IoT có thể là đồ vật được gắn thêm cảm biến để thu thập dữ liệu về môi trường
xung quanh (giống như các giác quan), các máy tính/bộ điều khiển tiếp nhận dữ liệu và ra
lệnh cho các thiết bị khác, hoặc cũng có thể là các đồ vật được tích hợp cả hai tính năng
trên.
Tiềm năng ứng dụng của internet vạn vật (IoT) trải rộng trên mọi lĩnh vực. Tuy nhiên, mọi
hệ thống IoT hoàn chỉnh đều có đủ 4 bước: thu thập dữ liệu, chia sẻ dữ liệu, xử lý dữ liệu, và
đưa ra quyết định.
*Lịch sử ra đời
1968: Kỷ nguyên Internet of Things trong sản xuất bắt đầu được xây dựng vào năm
1968, khi kỹ sư Dick Morley đã chế tạo ra một trong những đột phá quan trọng trong
lịch sử sản xuất: bộ điều khiển lập trình logic PLC. Cho đến thời điểm hiện tại, thiết
bị này vẫn là bộ phận không thể thay thế trong dây chuyền tự động hóa và các robot
công nghiệp trong nhà máy
1999: Đây là cột mốc quan trọng trong quá trình phát triển IOT. Kevin Ashton, Giám
đốc Phòng thí nghiệm tự động nhận diện thuộc Đại học Massachusetts – Hoa Kỳ đã
đưa khái niệm Internet of things (IoT) vào bài diễn thuyết của mình để mô tả thế hệ cải
tiến tiếp theo của công nghệ theo dõi RFID (bộ thiết bị nhận dạng đối tượng bằng sóng
vô tuyến thường được sử dụng nhiều trong siêu thị để chống trộm cắp). Đây cũng là
lần đầu tiên khái niệm IOT được sử dụng.
2016: Xuất hiện khái niệm IOT trong sản xuất. Khi khái niệm về IoT được sử dụng
nhiều hơn trong sản xuất, một khái niệm khác liên quan cũng được ra đời – Industry
Internet of things – Internet vạn vật trong công nghiệp
6. 6
+Những dấu mốc quan trọng khác
1983: Ethernet được tiêu chuẩn hóa
1989: Tim Berners-Lee tạo ra giao thức giao tiếp chung và không trạng thái Hypertext
Transfer Protocol (HTTP)
1992: TCP/IP cho phép PLCs kết nối với máy tính
2002: Amazon Web Services phát hành, và điện toán đám mây bắt đầu được đưa vào sử
dụng;
2006: OPC Unified Architecture (UA) thúc đẩy các kết nối an toàn giữa các thiết bị, nguồn
dữ liệu và các ứng dụng;
2006: Các thiết bị chuyên dụng dần dần trở nên phổ biến và có giá trị kinh tế hơn. Các thiết
bị cũng được thiết kế và sản xuất với kích thước nhỏ hơn, sử dụng năng lượng pin hoặc năng
lượng mặt trời;
Từ 2010-nay: Các cảm biến có giả các phải chăng hơn, thúc đẩy việc sử dụng rộng rãi các
thiết bị này trong mọi mặt cuả đời sống.
2.Nhu cầu xã hội về IOT và ứng dụng trong các ngành nghề y tế, công nghiệp.
* Nhu cầu xã hội về IOT:
Các ứng dụng công nghệ đến từ Internet vạn vật (IoT) hứa hẹn mang đến những giá trị to
lớn cho con người. Trong những năm gần đây, chúng ta đã thấy sự xuất hiện của những hệ
thống nhà thông minh hay các thiết bị gia dụng thông minh có điều khiển bằng giọng nói.
Theo số liệu từ hãng nghiên cứu McKinsey, số lượng nhà thông minh tại Mỹ đã tăng từ 17
triệu năm 2015 lên 29 triệu năm 2017, còn người tiêu dùng tại các nước Tây Âu dành khoảng
12 tỷ euro để mua các thiết bị thông minh vào năm 2020.
IoT là công nghệ đóng vai trò quan trọng và bắt đầu tác động đến nhiều lĩnh vực
và ngành công nghiệp, từ sản xuất, y tế, truyền thông, năng lượng cho đến ngành nông
nghiệp. IoT bao gồm cơ sở hạ tầng truyền thông cơ bản được sử dụng để kết nối các
đối tượng thông minh từ cảm biến, phương tiện, thiết bị di động đến việc thu thập dữ
liệu từ xa dựa trên phân tích thông minh, giao tiếp người dùng và cách mạng hóa
ngành nông nghiệp…
*Ứng dụng IOT trong các lĩnh vực y tế, công nghiệp…
Quản lý đô thị thông minh: Là một trong những ứng dụng gây tò mò nhiều nhất đối với
đông đảo người dân. bởi vì việc quản lý đô thị thông minh thực hiện được : Việc giám sát
thông minh, quản lý năng lượng mặt trời,giám sát việc môi trường, vận chuyển tự
7. 7
động. Các giải pháp IOT được cung cấp trong các khu vực Smart City giúp giải đáp các vấn
đề của thành phố như giao thông tiếng ồn cũng như ô nhiễm môi trường,.. giúp thành phố
an toàn, xanh, sạch đẹp, hiện đại hơn
Hệ thống bật tắt, bảng điều khiển thông minh trong các thiết bị trong nhà: Thông
thường mọi người thường tắt/bật điện bằng cách nhấn trực tiếp vào công tắc. còn đối với các
hệ thống thông minh thì người dùng chỉ cần cái smart thông minh có kết nối internet là bạn
có thể điều khiển được hệ thống đèn trong hàm điều hòa, nóng lạnh,cũng như hệ thống bóng
đèn thay đổi các màu sắc khác nhau.
Đồ gia dụng thông minh: Hiện nay có rất nhiều các vật dụng trong nhà tích hợp công
nghệ IOT như: Máy đun nước nóng, máy pha cafe, tivi, điều hòa, tủ lạnh,.., bạn có thể
điều khiển các thiết bị vật dụng trong gia đình bạn từ xa nhờ kết nối internet.
Cửa hàng bán lẻ thông minh: Công nghệ IOT đã đưa vào các cửa hàng bán lẻ giúp các
nhân viên nhận biết chính xác giá thành của các sản phẩm, mặt hàng này còn hay hết có
thể bổ sung được nhanh chóng, kịp thời. Bên cạnh đó nó còn giúp các nhân viên tư vấn
các mặt hàng một cách chính xác nhất, tạo được hiệu quả cao trong kinh doanh.
Ứng dụng trong sức khỏe: Ứng dụng của IOT trong việc chăm sóc sức khỏe được kết
nối cung các thiết bị y tế thông minh giúp mang lại tiềm năng vô cùng lớn, nó giúp chăm
sóc sức khỏe của chúng ta khỏe mạnh bằng việc đeo các thiết bị có kết nối.
Ô tô thông minh: Giúp nâng cao những trải nghiệm cho người dùng xe ôtô, 1 chiếc ô tô
thông minh có thể tối ưu các hoạt động của nó như thông báo khi hết nhiên liệu, đưa ra
các cảnh báo khi có vật tới gần hoặc mới đây nhất là xe điện tự lái của hãng Tesla…
Hệ thống chăm sóc cây tự động: giúp cho người nông dân không phải đến tận
ruộng để chăm sóc thay vào đó là chỉ cần ngồi một chỗ có thể điều khiện được nhiệt độ, độ
ẩm theo đặc tính của cây.
Nông nghiệp thông minh : Bằng cách triển khai các công nghệ cảm biến và IoT
trong thực tiễn nông nghiệp đã làm thay đổi mọi khía cạnh của phương pháp canh tác
truyền thống. IoT giúp cải thiện các giải pháp về canh tác truyền thống như ứng phó
với hạn hán, tối ưu hóa năng suất, tính phù hợp đất đai, tưới tiêu và kiểm soát dịch
hại.
8. 8
3.IOT trong nông nghiệp :
– Áp dụng công nghệ khoa học vào toàn bộ quá trình trong nông nghiệp (khép kín):
Cụ thể là áp dụng công nghệ thông tin, điện tử, viễn thông vào các quá trình từ chuẩn
bị giống, đất,… -> trồng trọt – chăn nuôi -> thu hoạch -> chế biến -> bảo quản ->
phân phối -> đến bàn ăn
– Dữ liệu thu thập được phải tạo thành database ở quy mô lớn, để dần tự động hóa
được cả quá trình ( tức là: loại bỏ dần “kinh nghiệm” của con người, chủ động nhận
biết vấn đề và đề xuất cách giải quyết). Nôm na, có thể gọi là trí tuệ nhân tạo, thay
con người đưa ra quyết định.
– Nhà kính – hiện được sử dụng phổ biến ở nước ta, đặc biệt là ở Đà Lạt – nơi có lợi
thế về khí hậu và thời tiết. Nhà kính ban đầu ra đời với mục đích giúp tách ly cây
trồng với điều kiện thời tiết bên ngoài. Dần dần, được bổ xung thêm các hệ thống
kiểm soát khí hậu bên trong nhà kính ( nhiệt độ, độ ẩm, ánh sáng,…) và hệ thống điều
khiển tưới. Hiểu nôm na hai hệ thống như sau:
– Hệ thống điều khiển tưới: Hệ thống bao gồm các thiết bị: đầu tưới nhỏ giọt hoặc
đầu tưới phun sương/mưa, bộ châm phân, bộ điều khiển tưới….. hệ thống giúp tưới
nước/phân một cách tiết kiệm, hiệu quả và đạt năng suất cao. Giúp người nông dân
giảm giá thành chi phí sản xuất.
– Hệ thống điều khiển vi khí hậu: Hệ thống bao gồm các cảm biến nhận biết nhiệt
độ, độ ẩm bên trong ( và bên ngoài) nhà kính, hệ thống quạt thông gió để đối lưu
không khí, hệ thống đèn chiếu sáng để có thể tăng cường ánh sáng khi cần thiết, trạm
đo thời tiết để biết các thông số: cường độ bức xạ mặt trời, cảnh báo mưa, tốc độ gió,
lưu lượng mưa,…. Mục đích giúp nhà kính duy trì ở điều kiện mong muốn.
IoT trong nông nghiệp giúp người nông dân giám sát sản phẩm và các điều
kiện canh tác theo thời gian thực. IoT thu thập các thông tin nhanh chóng; có
thể dự đoán trước các vấn đề trước khi chúng xảy ra; đưa ra các quyết định
sáng suốt về cách tránh chúng.
4.Lí do chọn đề tài
5.Mục tiêu, nội dung, phương pháp nghiên cứu
9. 9
Mục tiêu:
Báo cáo đề tài gồm các nội dung sau:
Chương 1: Tổng quan về IOT
Chương 2:
Chương 3:
Chương 4:
Chương 5:
Phương pháp nghiên cứu: Dựa trên nghiên cứu lý thuyết kết hợp nghiên cứu xây
dựng mô hình vườn lan thông minh thực tế.
6.Đối tượng và phạm vi nghiên cứu
Đối tượng:
Phạm vi nghiên cứu:
7.Kết luận chương 1
Đưa ra lý do, mục tiêu, đối tượng, phương pháp, nôi dụng, phạm vi nghiên
cứu
10. 10
CHƯƠNG 2: NGHIÊN CỨU HỆ THỐNG IOT TRONG NÔNG NGHIỆP
2.1.Lựa chọn mô hình vườn lan thông minh
Cách chăm sóc cây phong lan:
Ánh sáng
Tùy theo độ tuổi của cây lan mà chúng ta sẽ có những cách chiếu sáng cho phù hợp.
Một số loại lan điển hình ít chịu nắng như lan Hồ Điệp có thể chịu được 30% nắng
5000 – 14000(lm/m2
) .Lan Cattleya chịu được khoảng 50% nắng và lan Vanda lá hẹp
có thể chịu được khoảng 70% nắng( 15.000 - 30000(lm/m2
)).
Việc chiếu sáng ánh nắng còn tùy thuộc vào giai đoạn phát triển. Lan con từ 0 đến 10
tháng bạn chỉ cần chiếu sáng khoảng 50%, Lan nhỡ hơn từ ngoài 12 tháng đến 18
tháng có thể chịu ánh sáng được đến 70% và thời điểm ra hoa cần chiếu sáng nhiều
hơn.
1 lm/m^2=1 lux
nước
– Nước tưới lan không quá mặn, phèn hay clo và có pH dao động 5 – 6
– Phong lan sẽ khô héo, giả hành teo lại và lá rụng khi thiếu nước. Thừa nước phong
lan dễ bị thối đọt gây chết cây, rễ có rong rêu tạo điều kiện thuận lợi cho nấm bệnh
phát triển
– Thời điểm tưới thích hợp cho phong lan vào sáng sớm hay chiều mát. Đặc biệt,
không tưới vào buổi trưa khi trời đang nắng gắt
– Sau những trận mưa bất thường, nhất là mưa đầu mùa cần tưới lại ngay để rửa bớt
các chất cặn đọng lại trên thân lá.
– Tưới phun sương hằng ngày khi độ ẩm dưới 40%, đo độ ẩm bằng dụng cụ đo bán
phổ biến trên thị trường.
Nhiệt độ
Nhiệt độ lý tưởng cho lan sinh trưởng và phát triển là 16-24 độ C. Lan sẽ chết khi thời
tiết quá lạnh. Vì vậy, cần duy trì nhiệt độ cho lan trong mức tối ưu để cây phát triển
khỏe mạnh.
Các cảm biến nông nghiệp:
1. Cảm biến nhiệt độ và độ ẩm không khí
2. Cảm biến nhiệt độ độ ẩm của đất
3. Cảm biến đo độ PH của đất
4. Cảm biến đo hàm lượng NPK của đất
5. Cảm biến ánh sáng
6. Cảm biến CO2 Carbon Dioxide
11. 11
2.2.Đặc tính lan Hồ Điệp:
Ánh sáng và nhiệt độ
Lan hồ điệp phát triển tốt trong điều kiện ánh sáng yếu, hạn chế ánh sáng mặt trời trực
tiếp, vì thế bạn có thể đặt cây ở nơi có ánh sáng trung bình hoặc chiếu đèn cho cây
khoảng từ 12 – 16 giờ hằng ngày.
Nhiệt độ thích hợp để cho cây sinh trưởng và phát triển là từ 15 – 30 độ C.
Trong suốt mùa thu bạn nên duy trì nhiệt độ dưới 16 độ liên tục trong khoảng 3 tuần
đến khi cụm hoa xuất hiện, và cũng nên lưu ý nhiệt độ trong suốt quá trình ra hoa.
Độ ẩm
Khi trồng cây lan hồ điệp thì bạn nên duy trì độ ẩm từ 50 – 80% để cho cây phát triển.
nên tưới nước cho cây khoảng 2 – 3 ngày/lần, nên tưới nước vào buổi trưa. Không
nên tưới lên phần lá hoặc hoa của cây sẽ khiến nó bị thối và hư hỏng.
Độ PH trong nước tưới lan cần duy trì ở mức 5,5 đến 6,8 và độ muối trong nước cần
phải dưới 500 ppm
Phân bón
bón phân NPK với tỉ lệ 14 : 14 : 14. Lưu ý khi khi bón phân thì nên hòa với nước để
tưới giúp cây dễ hấp thụ hơn.
2.3.Kết luận chương 2
CHƯƠNG 3: CÁC THIẾT BỊ CƠ BẢN VÀ NGUYÊN LÍ HOẠT ĐỘNG
3.1.Khối xử lí trung tâm
*Arduino UNO R3
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
12. 12
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
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 0.5KB dùng bởi
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
*Năng lượng:
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với
điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin
vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá
ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO.
*Các chân năng lượng:
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với
nhau.
5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của
nguồn với chân này và cực âm của nguồn với chân GND.
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở
chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ
chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc
chân RESET được nối với GND qua 1 điện trở 10KΩ.
*Lưu ý:
Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó bạn phải hết sức cẩn
thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO. Việc
làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn
giấy. vì vậy nên dùng nguồn từ cổng USB nếu có thể.
Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị
khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn sai vị trí có thể làm
hỏng board. Điều này không được nhà sản xuất khuyến khích.
Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể
làm hỏng board.
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển
ATmega328.
Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO
nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.
Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm
hỏng vi điều khiển.
13. 13
Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO vượt
quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để truyền nhận dữ liệu,
bạn phải mắc một điện trở hạn dòng.
* Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng
cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu.
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi
lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.
Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải
bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào
đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.
*Các cổng vào/ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp
là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở
pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này
không được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
14. 14
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX)
dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân
này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu
không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân
giải 8bit (giá trị từ 0 → 28
-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói
một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến
5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng
thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các
thiết bị khác.
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset,
bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này
được người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210
-1)
để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa
vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào
chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với
độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các
thiết bị khác.
3.2.Khối cảm biến
1.Module Cảm Biến Chất Lượng Không Khí MQ135
Giá thành: 39.000đ
-Công Dụng:
Module cảm biến khí MQ-135 được sử dụng để kiểm tra chất lượng không khí
được biết đến bằng cách phát hiện một loạt các loại khí, bao gồm các khí như
NH3, Sunfua, NOx, rượu, hơi benzen, khói, gas và CO2.
Module cảm biến MQ135 cũng có thể đo đạc được nhiều loại khí độc hại thiên
nhiên khác.
15. 15
Khi cảm biến được đặt trong môi trường ô nhiễm, Nồng độ ô nhiễm trong
không khí tăng lên, cảm biến đo đạc được và sẽ dẫn điện ở ngưỡng thiết lập,
Lúc này sẽ xuất tín hiệu đầu ra được kết nối đến mạch chuyển đổi như mạch vi
điều khiển, hoặc kết nối trực tiếp đến Module relay.
Module cảm biến khí MQ135 là module lý tưởng để sử dụng trong nhà, văn
phòng hoặc ứng dụng công nghiệp như mạch điều khiển và giám sát đơn giản,
là một cảm biến với chi phí thấp và ứng dụng nhiều.
Thông số kĩ thuật:
Điện áp hoạt động : 5 VDC.
Tín hiệu ra : Digital ( 0.1V & 5V).
Tín hiệu ra : Analog ( 0.1V - 0.3V Tương đối không gây ô nhiễm ).
Nồng độ ô nhiễm càng cao tín hiệu Analog ra càng cao ( Maximum : 4V).
Kích Thước : 32*22*30mm
EEPROM 1 KB (ATmega328)
Clock Speed : 16 MHz
2. Cảm biến số nhiệt độ, độ ẩm DHT11
Giá thành: 37.000
Công dụng:
- DHT11 là một cảm biến kỹ thuật để cảm nhận nhiệt độ và độ ẩm. Cảm biến này
có thể dễ dàng giao tiếp với bất kỳ bộ vi điều khiển vi nào như Arduino,
Raspberry Pi, ... để đo độ ẩm và nhiệt độ ngay lập tức.
- DHT11 là một cảm biến độ ẩm tương đối. Để đo không khí xung quanh, cảm
biến này sử dụng một điện trở nhiệt và một cảm biến độ ẩm điện dung.
- DHT11 Là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu
thông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền dữ liệu duy nhất).
Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính
xác mà không cần phải qua bất kỳ tính toán nào.
Thông số kỹ thuật
Điện áp hoạt động: 3V - 5V (DC)
Dải độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH
16. 16
Dải nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C
Khoảng cách truyển tối đa: 20m
Dòng điện sử dụng lớn nhất : 2.5mA
Tần số lấy mẫu tối đa 1HZ
3. Cảm biến khói MP-2
Giá thành: 110.00đ
Công dụng:
- Cảm biến báo khói MP-2 được áp dụng quy trình sản xuất nhiều lớp, được làm
bằng vật liệu nhôm oxit trên chất nền gốm. Cảm biến phát hiện khói MP-2 sử
dụng để kiểm tra nồng độ khói trong môi trường, hoạt động trên nguyên lí thay
đổi độ dẫn điện của các lớp vật liệu, nồng độ khói càng cao thì độ dẫn điện
càng lớn, từ đó biến đổi thành tín hiệu ngõ ra. Cảm biến có độ nhạy cao khả
năng phản hồi nhanh, tiêu thụ điện năng thấp, ổn định, tuổi thọ cao, độ nhạy có
thể điều chỉnh được bằng biến trở.
Thông số kỹ thuật
Nồng độ phát hiện: 200 ~10000ppm C3H8
Điều kiện mạch tiêu chuẩn:
Điện áp mạch (VC): ≤ 10V DC
Điện áp làm nóng (VH): 5.0V ±0.1V AC or DC
Trở kháng (RL): có thể điều chỉnh
Trở nhiệt (RH): 105 ±10Ω (nhiệt độ phòng)
Đặc điểm cảm biến trong điều kiện thử nghiệm tiêu chuẩn:
Điện năng tiêu thụ (PH): ≤ 240mW
Độ nhạy (S): Rs (trong không khí)/Rs (trong 2000ppm C3H8)≥ 3
Điện áp ngõ ra (VS): 2.5V ~ 4.0V (trong 2000ppm C3H8)
4. Cảm biến EC (Giá thành cao nên ít được sử dụng)
17. 17
Giá thành: 1.950.000
Độ dẫn điện (EC) là mức độ, khả năng truyền tải dòng điện của một chất.
EC có mối liên hệ trực tiếp và chặt chẽ với tổng chất rắn hòa tan TDS trong nước.
EC thường được đo và tính bằng miliSiemans trên một centimet (mS/cm). Từ độ
dẫn điện người ta có thể chuyển đổi được sang chỉ số TDS của nước. Do vậy để
đo EC hay TDS thì người ta đều có thể dùng máy đo EC. TDS được đo bằng ppm
(phần triệu) hoặc mg .Vậy cảm biến EC dùng để xác định tổng nồng độ ion hòa
tan trong dung dịch, qua đó có những đánh giá, phân tích dựa trên những tiêu
chuẩn quy định về cho từng dung dịch để đưa ra những hướng xử lý sao cho phù
hợp, tiết kiệm thời gian, chi phí nhất.
Thông Số Kỹ Thuật:
Nguồn cấp: 3-5V DC
Điện áp ra: 0~3.4V
Độ chính xác: ±5% F.S
Phạm vi đo: 0~20ms/cm
Phạm vi đo chuẩn: 1~15ms/cm
Nhiệt độ hoạt động: 0~40°C
Tuổi thọ cảm biến: >0.5 năm (phụ thuộc vào tần số sử dụng)
Độ dài dây cáp: 100cm
Kích thước: 42mm*32mm
5. Cảm biến cường độ sáng BH1750
18. 18
Giá thành: 35.000đ
Công dụng:
- Cảm biến cường độ ánh sáng BH1750 được sử dụng để đo cường độ ánh sáng
theo đơn vị lux, càm biến có ADC nội và bộ tiền xử lý nên giá trị được trả ra là
giá trị trực tiếp cường độ ánh sáng lux mà không phải qua bất kỳ xử lý hay tính
toán nào thông qua giao tiếp I2C .
Thông số kỹ thuật:
Nguồn: 3 > 5VDC
Giao tiếp: I2C
Khoảng đo: 1 > 65535 lux
Kích cỡ: 21*16*3.3mm
Một số ví dụ về độ rọi của ánh sáng:
- Vào buổi tối : 0.001 0.02 Lux
- Ánh trăng : 0.02 0.3 lux
- Trời nhiều mây trong nhà : 5 50 lux
- Trời nhiều mây ngoài trời : 50 500 lux
- Trời nắng trong nhà : 100 1000 lux
6. Cảm biến áp suất BMP 180
19. 19
Giá thành: 30.000đư
Công dụng:
- Cảm biến áp suất không khí BMP180 đo áp suất của môi trường sử dụng áp
kế số. Bằng cách chuyển đổi áp suất thành độ cao tương ứng, bạn có thể
dùng cho việc xác định độ cao của robot, máy bay hay một vật thể được
phóng lên cao.
- Cảm biến áp suất không khí BMP180 có thể đo được áp suất trong dải 300 ~
1100hPa, Thiết bị chỉ hoạt động với dòng điện nhỏ khoảng 0.3uA thích hợp
cho các thiết bị sử dụng Pin.
- Cảm biến đi kèm bộ hiệu chỉnh và sẵn sàng cho việc sử dụng. Giao tiếp
chuẩn I2C đã có trở kéo lên sẵn trên board thuận tiện cho việc sử dụng. Sử
dụng I2C, thiết bị cung cấp áp suất và nhiệt độ lên đến 16bits
Thông số kĩ thuật
Điện áp cung cấp: 1.8 ~ 3.6V
Công suất tiêu thụ thập: 0.5uA tại 1Hz
Giao tiếp chuẩn I2C
Tốc độ I2C max: 3.5MHz
Độ nhiễu rất thấp:: lên đến 0.02hPa (17cm)
Có sẵn bộ hiểu chỉnh bên trong.
Dải đo áp suất: 300hPa ~ 1100hPa (+9000m đến -500m)
Trọng lượng: 1.18g
Kích thước: 21mm x 18mm
7. Cảm biến mưa relay
Giá thành: 60.000đ
Công dụng:
- Cảm biến mưa relay được dùng nhiều trong các ứng dụng về thời tiết, các bộ
báo mưa, các bộ báo rò rỉ nước, đi kèm với cảm biến là bộ module relay có thể
dùng để điều khiển động cơ, các cơ chế tắt mở thiết bị trực tiếp.
THÔNG SỐ KỸ THUẬT
20. 20
Kích thước tấm cảm biến mưa: 54 x 40mm.
Điện áp cung cấp: 12VDC.
Có đèn báo hiệu nguồn và đầu ra.
Lỗ cố định bu lông dễ dàng để cài đặt.
Độ nhạy có thể được điều chỉnh thông qua chiết áp.
LED sáng lên khi không có mưa đầu ra cao, có mưa, đầu ra thấp LED tắt.
Ngõ ra trực tiếp relay.
8. Module thời gian thực RTC DS3231
-Giá thành: 80.000đ
Công dụng:
- Module Thời Gian Thực RTC DS3231 là IC thời gian thực chính xác với
thạch anh tích hợp sẵn có khả năng điều chỉnh nhiệt. IC có đầu vào cho pin
riêng, tách biệt khỏi nguồn chính đảm bảo cho việc giữ thời gian chính xác.
Thạch anh tích hợp sẵn giúp tăng độ chính xác trong thời gian dài hoạt động và
giảm số lượng linh kiện cần thiết khi làm board.
- Thời gian trong IC được giữ ở dạng: giờ, phút, giây, ngày, thứ, tháng, năm. Các
tháng có ít hơn 31 ngày sẽ tự động được điều chỉnh, các năm Nhuận cũng được
chỉnh đúng số ngày. Thời gian có thể hoạt động ở chế độ 24h hoặc 12h AmPM.
IC còn có chức năng báo động, có thể cài đặt 2 thời gian báo và lịch, có tín hiệu
ra là xung vuông. Giao tiếp với IC được thực hiện thông qua I2C bus.
- Trong chip có mạch điện áp chuẩn dùng để theo dõi trạng thái của nguồn VCC,
phát hiện lỗi nguồn, tự động chuyển nguồn khi có vấn đề. Có tín hiệu Reset
xuất ra cho mạch ngoài, MCU khi nguồn điện phục hồi trạng thái. Ngoài ra
trong IC còn có sẵn cảm biến nhiệt độ, có độ chính xác là ± 3°C.
THÔNG SỐ MODULE THỜI GIAN THỰC RTC DS3231
Size: dài 38mm, rộng 22mm, cao 14mm
Khối lượng 8g
Điện thế hoạt động 3.3 – 5.5V
Clock: high-precision clock on chip DS3231
Clock Accuracy: 040 ℃ range, the accuracy 2ppm, the error was about 1
minute
Thông tin Thời gian: giờ, phút, giây, ngày, thứ, tháng, năm, đến 2100.
Cảm biến nhiệt trên IC có độ chính xác ± 3 ℃
I2C bus có tốc độ tối đa 400Khz
Kèm thêm pin sạc được CR2032
Kèm thêm memory IC AT24C32 (32k bits)
21. 21
9. Cảm biến đo độ PH đất ES-PH-SOIL-01 (RS485 Modbus RTU)
-Giá thành: 1.250.000đ
-Công dụng:
- Cảm biến đo độ PH đất ES-PH-SOIL-02 được sử dụng rộng rãi trong các
trường hợp cần theo dõi độ pH như phát hiện độ pH của đất.
- Ngõ ra RS485 Modbus RTU chuẩn công nghiệp giúp dễ dàng kết nối đến các
hệ thống điều khiển và giám sát độ ẩm đất, nhiệt độ đất mong muốn (MCU,
PLC, PC...)
- Đầu dò của sản phẩm này sử dụng điện cực PH, tín hiệu ổn định và độ chính
xác cao. Nó có dải đo rộng, độ tuyến tính tốt,Khả năng chống thấm nước tốt, dễ
sử dụng, dễ lắp đặt và khoảng cách truyền xa.
THÔNG SỐ KỸ THUẬT
- Nguồn cấp; 12-24VDC
- Tín hiệu ngõ ra: RS485 (Modbus RTU)
- Cấp bảo vệ: IP68
- Thời gian đáp ứng: <10s
- Công suất: <0.5W (24VDC)
- Phạm vi đo: 3-9 PH
- Nhiệt độ hoạt động: -20 ℃ ~ 60 ℃
- Độ chính xác: ± 0,3 PH
- Độ phân giải: 0.1
10.Cảm biến đo hàm lượng NPK trong đất ES-NPK-01 3 trong 1 ( RS485
Modbus RTU )
-Giá thành: 1.600.000đ
-Công dụng:
22. 22
- Cảm biến đo hàm lượng NPK trong đất ES-NPK-01 (RS485 Modbus RTU) -
RS485 Soil NPK phù hợp để phát hiện hàm lượng nitơ, phốt pho và kali trong
đất.
- Được sử dụng rộng rãi trong lĩnh vực nhà kính, trồng lúa, trồng rau, vườn ươm
cây ăn quả, nghiên cứu về hoa và đất,...
- Các ứng dụng liên quan đến giám sát hàm lượng NPK.
THÔNG SỐ KỸ THUẬT
Nguồn cung cấp DC 10-30V
Công suất ≤0,15W (12V DC, 25 ℃)
Nhiệt độ hoạt động 0 ℃ ~ 55 ℃
Thông số NPK Phạm vi 1-1999 mg/ kg (mg/L)
Độ phân giải 1 mg / kg (mg / L)
Độ chính xác ± 2%
Thời gian đáp ứng < 1S
Mức độ bảo vệ IP68
Đầu dò Thép không gỉ
Vỏ thiết bị Nhựa epoxy chống cháy
Chiều dài dây mặc
định
2 mét
Kích thước 45 * 15 * 123mm
Tín hiệu ngõ ra RS485 Modbus RTU
3.3. Khối thực thi
A. Động cơ servo
Hình 3.3a. Động cơ servo
Servo là một hệ thống gồm ba bộ phận cấu thành là servo drive (bộ điều khiển
servo), servo motor (động cơ servo) và encoder. Đây là hệ thống truyền động điều khiển
hồi tiếp vòng kín, nhận tín hiệu và thực hiện một cách nhanh chóng và chính xác theo
23. 23
lệnh từ PLC/ vi điều khiển. Hệ thống Servo được sử dụng trong nhiều ứng dụng từ cơ
bản, đa năng đến chuyên dụng trong nhiều ngành công nghiệp khác nhau.
3.4.Khối hiển thị
Giới thiệu sơ lược về LCD và thư viện điều khiển LCD của Arduino
1. Thư viện điều khiển LCD của Arduino
Thư viện LiquidCrystal là thư viện điều khiển LCD trên Arduino, nó được xây dựng để cho
các bạn có thể lập trình điều khiển các module LCD ô vuông một cách nhanh chóng mà không
cần phải lập trình nhiều. Thư viện này được viết để phù hợp với con IC HD44780 (con điều
khiển module LCD), tuy nhiên, trên thị trường mình toàn thấy các con LCD của Trung Quốc
và thư viện này vẫn hoạt động tốt. Nghĩa là, bạn chỉ cần mua module LCD về và gắn vào
Arduino, nạp code là chạy được, không cần quan tâm đến IC điều khiển LCD.
2. LCD pinout - sơ đồ chân của LCD
24. 24
1. VSS: tương đương với GND - cực âm
2. VDD: tương đương với VCC - cực dương (5V)
3. Constrast Voltage (Vo): điều khiển độ sáng màn hình
4. Register Select (RS): điều khiển địa chỉ nào sẽ được ghi dữ liệu
5. Read/Write (RW): Bạn sẽ đọc (read mode) hay ghi (write mode) dữ liệu? Nó sẽ phụ
thuộc vào bạn gửi giá trị gì vào.
6. Enable pin: Cho phép ghi vào LCD
7. D0 - D7: 8 chân dư liệu, mỗi chân sẽ có giá trị HIGH hoặc LOW nếu bạn đang ở chế
độ đọc (read mode) và nó sẽ nhận giá trị HIGH hoặc LOW nếu đang ở chế độ ghi (write
mode)
8. Backlight (Backlight Anode (+) và Backlight Cathode (-)): Tắt bật đèn màn hình LCD.
25. 25
3. Cách dùng thư viện với LCD
Module LCD có thể được điều khiển ở chế độ: 4-bit điều khiển và 8-bit điều khiển. Với cách
dùng ở chế độ 4-bit, bạn cần 7 chân ở Arduino, và nếu muốn dùng hết khả năng của LCD thì
bạn cần 7 + 4 = 11 chân ở Arduino (không nên tí nào). Ngoài ra, mình đã thử hết các hàm
trong thư viện LiquidCrystal của Arudino ở chế độ 4-bit thì mọi thứ đều hoạt động tốt cả. Vì
vậy, mình sẽ mắc mạch ở chế độ 4-bit điều khiển và hướng dẫn theo hướng này.
V. Lắp mạch
VI. Lập trình Ví dụ
1. //Thêm thư viện LiquitCrystal - nó có sẵn vì vậy bạn không cần cài thêm gì cả
2. #include <LiquidCrystal.h>
3.
4. //Khởi tạo với các chân
5. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
6.
7. void setup() {
8. //Thông báo đây là LCD 1602
9. lcd.begin(16, 2);
10. //In ra màn hình lcd dòng chữ Toi yeu Arduino
26. 26
11. lcd.print("Toi yeu Arduino!");
12.}
13.
14.void loop() {
15. // đặt con trỏ vào cột 0, dòng 1
16. // Lưu ý: dòng 1 là dòng thứ 2, lòng 0 là dòng thứ 1. Nôm na, nó đếm từ 0 từ không
phải từ 1
17. lcd.setCursor(0, 1);
18. // In ra dong chu
19. lcd.print(" Arduino.VN");
20.}
3.5.Khối truyền thông
1.Board mạch thu phát wifi ESP8266 NodeMCU V1.0 CP2102
Thông số kỹ thuật
Chip: ESP8266EX SoC Wifi
Băng tần WiFi: 2.4 GHz chuẩn 802.11 b/g/n
Phiên bản firmware: NodeMCU V1.0
Điện áp hoạt động: 3.3V
Điện áp vào: 5V
Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
Bộ nhớ Flash: 4MB
27. 27
Chip giao tiếp UART: CP2102
Giao tiếp: Cable Micro USB
Hỗ trợ bảo mật: WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua
NodeMCU V1.0 được phát triển dựa trên module wifi ESP-12F dễ dàng kết nối WiFi với
một vài thao tác đơn giản. Tích hợp IC giao tiếp CP2102, giúp dễ dàngkết nối với máy tính
thông qua Micro USB để nạp chương trình và debug. Trên mạch có sẳn nút nhấn, đèn led để
tiện cho việc lập trình và theo dõi board mạch.
Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi để tạo
thành project, sản phẩm mẫu một cách nhanh chóng.
Sơ đồ chân :
Sơ đồ nguyên lý NodeMCU
29. 29
Blynk là một nền tảng với các ứng dụng điện thoại thông minh cho phép bạn có thể dễ dàng
tương tác với bộ vi điều khiển như: Arduino, Esp8266, Esp32 hoặc Raspberry qua Internet.
Blynk App là một bảng điều khiển kỹ thuật số cho phép bạn có thể xây dựng giao diện đồ
họa cho dự án của mình bằng cách kéo và thả các widget khác nhau mà nhà cung cấp thiết
kế sẵn.
Blynk không bị ràng buộc với một số bo hoặc shield cụ thể. Thay vào đó, nó hỗ trợ phần
cứng mà bạn lựa chọn. Cho dù Arduino hoặc Raspberry Pi của bạn được liên kết với Internet
qua Wi-Fi, Ethernet hoặc chip ESP8266, Blynk sẽ giúp bạn kết nối và sẵn sàng cho các dự
án IoT.
Blynk Server – chịu trách nhiệm về tất cả các giao tiếp giữa điện thoại thông minh và phần
cứng. Bạn có thể sử dụng Blynk Cloud hoặc chạy cục bộ máy chủ Blynk riêng của mình. Nó
là mã nguồn mở, có thể dễ dàng xử lý hàng nghìn thiết bị và thậm chí có thể được khởi chạy
trên Raspberry Pi.
Thư viện Blynk – dành 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à lệnh đi.
30. 30
Mỗi khi bạn nhấn một nút trong ứng dụng Blynk, thông điệp sẽ truyền đến không gian của
đám mây Blynk, và tìm đường đến phần cứng của bạn.
Mọi thứ bạn cần để xây dựng và quản lý phần cứng được kết nối: cung cấp thiết bị, hiển thị
dữ liệu cảm biến, điều khiển từ xa với các ứng dụng web và di động, cập nhật chương trình
cơ sở qua mạng, bảo mật, phân tích dữ liệu, quản lý người dùng và truy cập, cảnh báo, tự
động hóa và nhiều thứ khác hơn…
Đặc tính
API và giao diện người dùng tương tự cho tất cả phần cứng và thiết bị được hỗ
trợ
Kết nối với đám mây bằng cách sử dụng:
o Wifi
o Bluetooth và BLE
o Ethernet
o USB (Nối tiếp)
o GSM
o …
Bộ Widget dễ sử dụng
Thao tác ghim trực tiếp mà không cần viết mã
Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng ghim ảo
Theo dõi dữ liệu lịch sử qua tiện ích SuperChart
Giao tiếp giữa thiết bị với thiết bị sử dụng Bridge Widget
Gửi email, tweet, push notification…
3.6. Giao tiếp ESP8266 và Arduino Uno/Mega
*Nhược điểm của ESP8266 là khá ít chân, do đó để mở rộng chân ra kết nối nhiều cảm biến
hơn thì chúng ta cần phải kết nối thêm với chip ADC hoặc là giao tiếp qua Master-Slave của
các chuẩn UART, SPI, I2C. Hôm nay mình sẽ hướng dẫn cho các bạn cách để gửi dữ liệu từ
Arduino Uno/Mega sang ESP8266 thông qua những chuẩn giao tiếp kể trên.
UART
Có 2 cách để giao tiếp UART giữa ESP8266/NodeMCU: 1 là giao tiếp bằng cách code trên
cả Uno/Mega và ESP8266/NodeMCU, 2 là chỉ code trên Uno/Mega, trên
ESP8266/NodeMCU flash thẳng firmware AT Command.
Sơ đồ kết nối
31. 31
Chương trình ví dụ :
Code NodeMCU
Gửi data '123' qua Uno/Mega, ở đây ta cần có thư viện SoftwareSerial và gán nó với 2 chân
RX và TX. Sau đó cấu hình với tốc độ baud là 9600.
#include<SoftwareSerial.h> //Included SoftwareSerial Library
//Started SoftwareSerial at RX and TX pin of ESP8266/NodeMCU
SoftwareSerial s(3, 1);
void setup() {
//Serial S Begin at 9600 Baud
s.begin(9600);
}
void loop() {
//Write '123' to Serial
s.write(123);
delay(1000);
32. 32
}
Arduino
Code Arduino Uno/Mega
Chương trình sau nhận thông tin, đầu tiên là tạo ra biến để nhận data, sau đó là setup baud
9600 để nhận data này.
int data; //Initialized variable to store recieved data
void setup() {
//Serial Begin at 9600 Baud
Serial3.begin(9600);
}
void loop() {
data = Serial.read(); //Read the serial data and store it
delay(1000);
}
Arduino
Kết quả
Quan sát trên serial port sẽ thấy data '123' được gửi qua Uno/Mega
3.8.Kết luận chương 3
CHƯƠNG 4: PHƯƠNG PHÁP TRUYỀN THÔNG
4.1. Phương thức truyền dữ liệu
33. 33
4.1.1. Wifi
Wifi là hệ thống mạng không dây sử dụng sóng vô tuyến, cũng giống như điện
thoại di đông, truyền hình và radio. Với Wi-Fi, mạng cục bộ (LAN) được sử dụng để
cung cấp truy cập internet trong một phạm vi giới hạn nhất định(phạm vi ngắn) nhưng
Wifi có thể gửi thông tin tới Internet thông qua kết nối hữu tuyến ethernet. Băng thông
của nó có tốc độ cao(2Mhz) nhưng tốn năng lượng.
-Một số thông tin kỹ thuật về wifi:
+Tần số: 2.5GHz or 5 GHz
+Phạm vi: ~100 m
+Dữ liệu truyền được: 11~150 Mbps
4.1.2. Cellular
Cellular lựa chọn đường truyền dữ liệu thông qua mạng điện thoại di động
GPRS/3G/LTE là một lựa chọn sáng suốt nếu yêu cầu khoảng cách truyền thông dài,
hoặc không bị giới hạn bởi khoảng cách địa lý.Do truyền dữ liệu đi xa nên tốn năng
lương là điều tất yếu. Hiện nay, các thiết bị/các điểm đầu cuối trong công nghiệp đều được
hỗ trợ tích hợp các cổng giao tiếp vật lý theo chuẩn như: RS232 , RS485, RS422 hay
Ethernet. Các phương tiện truyền thông qua mạng di động đều hỗ trợ đầu vào là cáccổng
Serial hay Ethernet nên việc tích hợp giải pháp truyền thông không dây không cònkhó khăn
hay bị giới hạn bởi yếu tố khách quan nào khác.
*Một số thông tin kỹ thuật về Cellular:
+Tần số: 900/1800/1900/2100MHz
34. 34
+Phạm vi: 35km max for GSM; 200km max for HSPA
+Dữ liệu truyền được:(typical download): 35-170kps (GPRS), 120-384kbps
(EDGE), 384Kbps- 2Mbps (UMTS), 600kbps-10Mbps (HSPA), 3-10Mbps (LTE) .
4.2. Giao thức truyền thông (MQTT)
MQTT là một giao thức nhắn tin gọn nhẹ được thiết kế để liên lạc nhẹ giữa các
thiết bị và hệ thống máy tính. MQTT được thiết kế ban đầu cho các mạng SCADA, các
kịch bản sản xuất và băng thông thấp, MQTT đã trở nên phổ biến gần đây do sự phát
triển của Internet-of-Things (IoT).
Hình 4.1 Giao thức MQTT
Đây là một giao thức truyền thông điệp (message) theo mô hình publish/subscribe
(publish – theo dõi), sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động
35. 35
trong điều kiện đường truyền không ổn định. Kiến trúc mức cao (high-level) của MQTT
gồm 2 phần chính là: Broker và Clients.
Broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ
client. Nhiệm vụ chính của broker là nhận mesage từ publisher, xếp các message theo
hàng đợi rồi chuyển chúng tới một địa chỉ cụ thể. Nhiệm vụ phụ của broker là nó có thể
đảm nhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mật
message, lưu trữ message, …
Client thì được chia thành 2 nhóm là publisher và subscriber. Client là các
software components hoạt động tại edge device nên chúng được thiết kế để có thể hoạt
động một cách linh hoạt (lightweight). Client chỉ làm ít nhất một trong 2 việc là publish
các message lên một topic cụ thể hoặc subscribe một topic nào đó để nhận message từ
topic này.
MQTT Clients tương thích với hầu hết các nền tảng hệ điều hành hiện có: MAC OS,
Windows, LInux, Androids, iOS…
Chúng ta có thể tưởng tượng broker giống như một sạp báo. Publisher là các tòa
soạn báo. Tòa soạn in báo và chuyển cho sạp báo. Người đọc báo đến sạp báo, chọn tờ
báo mình cần đọc (subscriber).
Bởi vì giao thức này sử dụng băng thông thấp trong môi trường có độ
trễ cao nên nó làmột giao thức lý tưởng cho các ứng dụng M2M (Machine to machine)
36. 36
*Ưu điểm của MQTT:
Chuyển thông tin hiệu quả hơn
Tăng khả năng mở rộng
Giảm đáng kể tiêu thụ băng thông mạng
Giảm tốc độ cập nhật xuống giây
Rất phù hợp cho điều khiển và do thám
Tối đa hóa băng thông có sẵn
Chi phí cực nhẹ
Rất an toàn với bảo mật dựa trên sự cho phép
Được sử dụng bởi ngành công nghiệp dầu khí, Amazon, Facebook và các doanh
nghiệp lớn khác
Tiết kiệm thời gian phát triển
Kết luận chương 4
-Nắm được lí thuyết 1 số phương thức, giao thức truyền thông cơ bản.
37. 37
CHƯƠNG 5: Code chương trình
Program 1:Đo nhiệt độ, độ ẩm và hiển thị lên App Blynk
Program 2 : Điều khiển bật/tắt quạt qua Relay 220VAC
Code nạp cho nodemcu:
// Fill-in information from your Blynk Template here
#define BLYNK_TEMPLATE_ID "TMPLCKaGjlz5"
#define BLYNK_DEVICE_NAME "test1"
#include<DHT.h>
const int DHTPIN = 5; //Đọc dữ liệu từ DHT11 ở chân d1 trên mạch Arduino
const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có 2 loại là DHT11 và DHT22
DHT dht(DHTPIN, DHTTYPE);
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG
#define APP_DEBUG
#include "BlynkEdgent.h"
void setup()
{
dht.begin();
Serial.begin(9600);
delay(100);
pinMode(2, OUTPUT);
BlynkEdgent.begin();
}
BLYNK_WRITE(V2)
{
int pinLED = param.asInt();
digitalWrite(2, pinLED);
}
void loop() {
float h = dht.readHumidity(); //Đọc độ ẩm
float t = dht.readTemperature(); //Đọc nhiệt độ
42. 42
Chương 6: Hướng dẫn giao tiếp uart giữa board arduino
với kít wifi esp8266 để mở rộng các chân Analog
6.1.Hình ảnh đấu nối phần cứng:
43. 43
Code bật/tắt Led :
UART ESP8266:
#define LED 2 //Định nghĩa chân 2 là Led
void setup() {
Serial.begin(9600); //Khởi tạo cổng serial
pinMode(LED,OUTPUT);
}
void loop() {
if(Serial.available()){
String RxBuffer="";
44. 44
while(Serial.available()){
RxBuffer = Serial.readString();//Đọc tất cả bộ đệm
}
if(RxBuffer=="ledon"){ //Kiểm tra chuỗi nhận
digitalWrite(LED,LOW);
Serial.println("Led đã on!");
}else if(RxBuffer=="ledoff"){
digitalWrite(LED,HIGH);
Serial.println("Led đã off!");
}
}
}
UART UNO :
#include <SoftwareSerial.h>
#define Rx 11 //Định nghĩa chân 11 là Rx
#define Tx 12 //Định nghĩa chân 12 là Tx
SoftwareSerial mySerial(Rx, Tx); //Khởi tạo cổng serial mềm
#define button 10 //Định nghĩa chân 10 là button
boolean buttonstate = 1; //Chống dội và đè phím
boolean ledstate = 0; //Trạng thái led
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(button,INPUT_PULLUP); //Kích hoạt điện trở kéo lên
}
void loop() {
if(digitalRead(button)==0){
if(buttonstate!=0){
if(ledstate==0){
mySerial.print("ledon"); //Gửi chuỗi ledon ra cổng serial
}else{
mySerial.print("ledoff");
}
ledstate = !ledstate;
}
buttonstate=0;
}else{
buttonstate=1;
}
if(mySerial.available()){
Serial.print(char(mySerial.read())); //Gửi ký tự nhận được ra cổng serial
}
}
45. 45
Cổng mềm:
#include <SoftwareSerial.h>
#define Rx 11 //Định nghĩa chân 11 là Rx
#define Tx 12 //Định nghĩa chân 12 là Tx
SoftwareSerial mySerial(Rx, Tx); //Khởi tạo cổng serial mềm
#define button 10 //Định nghĩa chân 10 là button
boolean buttonstate = 1; //Chống dội và đè phím
boolean ledstate = 0; //Trạng thái led
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(button,INPUT_PULLUP); //Kích hoạt điện trở kéo lên
}
void loop() {
if(digitalRead(button)==0){
if(buttonstate!=0){
if(ledstate==0){
mySerial.print("LED 0rn"); //Gửi chuỗi LED 0 ra cổng serial
}else{
mySerial.print("LED 1rn");
}
ledstate = !ledstate;
}
buttonstate=0;
}else{
buttonstate=1;
}
if(mySerial.available()){
Serial.print(char(mySerial.read())); //Gửi ký tự nhận được ra cổng serial
}
}
Cổng mềm:
#include <SerialCommand.h>
SerialCommand SCmd;
#define LED 2 //Định nghĩa chân 2 là Led
void setup() {
Serial.begin(9600); //Khởi tạo cổng serial
46. 46
SCmd.addCommand("LED",LED_val); //Nhận lệnh "LED"
pinMode(LED,OUTPUT);
}
void loop() {
SCmd.readSerial();
}
void LED_val(){ //Hàm xử lý value
int val;
char *arg;
arg = SCmd.next();
val = atoi(arg);
if(val==0){
digitalWrite(LED, LOW);
delay(10);
Serial.println("Led đã on!");
}else if(val==1){
digitalWrite(LED, HIGH);
delay(10);
Serial.println("Led đã off!");
}
}