ESP8266 là một vi điều khiển được thiết kế để kết nối với internet vàđược sử dụng phổ biến trong các ứng dụng IoT.. Nhóm quyết định chọn đề tài Smart Farm, một hệthống thực hiện tưới cây
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA
TRUYỀN SỐ LIỆU VÀ MẠNG
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI:
SMART FARMGiảng viên hướng dẫn: Nguyễn Khánh Lợi
Sinh viên thực hiện Mã số sinh viên Nhóm lớp
Trang 2BẢNG ĐÁNH GIÁ PHẦN TRĂM CÔNG VIỆC CỦA THÀNH VIÊN
1 2012112 Lê Quốc Thịnh Lập trình Web +
Firebase 20%
2 2014785 Trần Quốc Toàn Lập trình nhúng 20%3
2013553 Bùi Phúc Kiến
Kết nối phầncứng + Viết báocáo
Trang 3MỤC LỤC
1 GIỚI THIỆU ĐỀ TÀI 6
2 CÁC GIAO THỨC SỬ DỤNG TRONG ĐỀ TÀI 6
2.1 Giao thức NTP 6
2.1.1 Giới thiệu về NTP 6
2.1.2 NTP server là gì? 6
2.1.3 NTP server hoạt động như thế nào? 7
2.1.4 NTP server - Stratum Levels Explained 8
2.1.5 Những lợi ích của NTP server 9
2.2 Giao thức TCP/IP 11
2.2.1 Giới thiệu TCP/IP 11
2.2.2 Nguyên lý hoạt động của TCP/IP 11
2.2.3 Cấu trúc của TCP/IP là gì và chức năng của các tầng 12
2.2.4 Ưu điểm và nhược điểm của TCP/IP là gì? 16
3 QUÁ TRÌNH ĐẨY DATA LÊN FIREBASE 17
3.1 Các thành phần cơ bản và công cụ hỗ trợ cho hệ thống 17
3.1.1 Arduino IDE 17
3.1.2 Firebase 18
3.1.3 ESP8266 19
3.1.4 Web 20
3.2 Quy trình thực hiện 21
3.2.1 Điều kiện tiên quyết 21
3.2.2 Các bước thực hiện 22
4 MÔ TẢ PHẦN CỨNG 22
5 VIẾT CHƯƠNG TRÌNH VÀ GIẢI THÍCH 25
5.1 Sơ đồ khối của mạch 25
5.2 Mạch mô phỏng 25
5.3 Viết chương trình 26
Trang 46 KẾT LUẬN 47
Trang 51 GIỚI THIỆU ĐỀ TÀI
Internet of Things (IoT) là một trong những xu hướng công nghệ nổi bật của thếgiới hiện đại ESP8266 là một vi điều khiển được thiết kế để kết nối với internet vàđược sử dụng phổ biến trong các ứng dụng IoT Firebase là một nền tảng dịch vụđám mây của Google cung cấp các dịch vụ lưu trữ và xử lý dữ liệu để phục vụ chocác ứng dụng web và mobile Nhóm quyết định chọn đề tài Smart Farm, một hệthống thực hiện tưới cây đa năng, qua đó giải thích cách sử dụng giao thức TCP/IP
để đẩy dữ liệu từ ESP8266 lên Firebase, sau đó web sẽ lấy dữ liệu đó từ Firebase
và đưa lên Web Chúng ta sẽ phân tích các thành phần cơ bản của hệ thống, quátrình truyền/nhận dữ liệu và ưu nhược điểm của việc sử dụng giao thức TCP/IPtrong việc đẩy dữ liệu từ ESP8266 lên Firebase và Web
2.1 Giao thức NTP
2.1.1 Giới thiệu về NTP
NTP(Network Time Protocol) là một thuật toán phần mềm, có chức năng giữcho các thiết bị công nghệ kết nối internet đồng bộ hóa thời gian với nhau.Thuật toán này hoạt động hiệu quả khi được cung cấp một nguồn thời gianđáng tin cậy và duy nhất Khả năng đồng bộ trên các thiết bị của NTP rất hiệu quả
vì nó có thể đồng bộ chỉ trong vài mili giây
Cho tới nay, NTP Server là giao thức internet lâu đời nhất mà vẫn được sửdụng Ứng dụng ra đời từ trước năm 1985 và được thiết kế bởi Dave Mills, thuộctrường Đại học Delaware
NTP sử dụng thuật toán Marzullo và có thể đảm bảo độ chính xác trongkhoảng 10mili giây trên các thiết bị sử dụng mạng công cộng Và có thể đạt đến
200 micro giây trong điều kiện lý tưởng của mạng cục bộ
2.1.2 NTP Server là gì?
NTP Server là một giao thức internet Hay còn được gọi là máy chủ thời gian
Nó có chức năng đồng bộ hóa thời gian của hệ thống máy tính dựa trên mạng dữ
Trang 6liệu chuyển mạch gói, với độ trễ có sự biến đổi Giao thức này sử dụng bộ đệmJitter, được thiết lập với vai trò tránh sự ảnh hưởng của độ trễ biến đổi thời gian.Trong một dự án dịch vụ NTP công cộng, NTP Server cũng được gọi là một phầnmềm.
Các thiết bị kết nối internet được đồng bộ hóa thời gian nhờ NTP Server
Máy chủ thời gian NTP sử dụng các tín hiệu thời gian có nguồn từ UTC (thờigian toàn cầu dựa trên thời gian của đồng hồ nguyên tử) Nhờ đó NTP Server cóthể tác động và đồng bộ hóa toàn bộ mạng cùng thời gian cho hàng triệu triệu máytính và các thiết bị điện tử ở khắp nơi trên thế giới
Các tín hiệu thời gian nhận từ máy chủ bằng nhiều cách khác nhau như:thông qua mạng internet toàn cầu, tần số truyền, thời gian ở từng quốc gia,… Khicác tín hiệu được truyền đến, time server sẽ kiểm tra tính xác thực của từng tínhiệu, đánh giá tính chính xác Sau đó sẽ phân phối các tín hiệu đó trong hệ thốngmạng
2.1.3 NTP Server hoạt động như thế nào?
Trang 7NTP client gửi một gói tin trong đó chứa tem thời gian được chuyển tiếp đếnmáy chủ ở dạng số ngày càng tăng từ một điểm thời gian cố định trước đó(unixtime)
Máy chủ NTP sử dụng tem thời gian để tính toán, nếu thời gian trên mạngkhông khớp sẽ được cộng trừ thêm số giây để khớp với đồng hồ/máy chủ NTP cấpcao hơn đang tham chiếu Sau đó gửi trả lại NTP client một gói tin khác, có thểthời gian là thời điểm nó gửi gói tin đó đi
NTP client nhận được gói tin đó, tính toán độ trễ, dựa vào thẻ thời gian mà
nó nhận được cùng với độ trễ đường truyền, NTP client sẽ set lại thời gian của nó NTP chính xác trong khoảng 1/100s trên môi trường internet và thực hiện tốthơn trên mạng LAN và WAN với độ chính xác là 1/5000s
2.1.4 NTP server - Stratum Levels Explained
Để tránh quá tải các request yêu cầu về thời gian cho máy chủ, các máynhận tín hiệu thời gian từ máy chủ NTP có thể được sử dụng như là một thamchiếu từ máy chủ NTP Điều này được gọi là Stratum levels, máy chủ NTP làStratum 1, một máy nhận tín hiệu trực tiếp từ máy chủ NTP là Stratum 2 và máynhận tín hiệu từ nó (Stratum 2) sẽ là Stratum 3
NTP có thể xử lý 16 tầng khác nhau, càng về tầng cao hơn thì độ chính xácthời gian giảm dần, tuy nhiên để làm hệ thống đáng tin cậy hơn thì mỗi client cóthể nhận được một nguồn thời gian từ nhiều máy chủ Dịch vụ chương trình NTPliên tục giám sát số liệu ổn định và chính xác cho tất cả các máy chủ và luôn chọnmáy chỉ có số liệu tốt nhất
Trang 82.1.5 Những lợi ích của NTP Server
1 Khả năng backup dữ liệu theo lập lịch
Lợi ích đầu tiên mà chúng ta phải nhắc đến đó là: NTP Server luôn đảm bảoquá trình backup dữ liệu theo lập lịch Đối với bất kỳ tổ chức nào, thậm chí là đốivới bất kỳ quốc gia nào việc backup dữ liệu theo lập lịch là vô cùng quan trọng.Mỗi ngày sẽ có rất nhiều dữ liệu cần được lưu trữ, cập nhật Và chúng cầnđược backup theo trình tự về thời gian để đảm bảo việc sao lưu luôn chính xác.Nếu như hệ thống bị sai về thời gian sẽ khiến cho quá trình sao lưu bị thiếu chínhxác
2 Tăng tốc độ mạng
Hiện nay có rất nhiều thiết bị điện tử sử dụng cache hay các hệ thống tệp tindiện rộng dựa vào tem thời gian để tìm ra phiên bản nào của đoạn dữ liệu tươngứng với thời điểm hiện tại Việc đồng bộ thời gian theo chính xác từ NTP Server sẽ
Trang 9giúp cho tốc độ mạng nhanh hơn và đáp ứng những trải nghiệm của người dùng tốthơn.
3 Cung cấp hệ thống quản lý mạng
Sự đồng bộ hóa thời gian một cách chính xác trong các file log giúp cho việckiểm tra log hệ thống khi có sự cố của debug lỗi trở nên đơn giản hơn, tiết kiệmđược thời gian trong việc khắc phục lỗi hệ thống
4 Khả năng phân tích xâm nhập
Trong quá trình hoạt động, nếu có các xâm nhập trái phép vào hệ thống máytính của bạn, NTP Server sẽ hỗ trợ bạn xác định được chính xác thời gian mà cácxâm nhập đó diễn ra Bạn có thể phân tích các xâm nhập để xử lý và chuẩn hóa lạimọi thứ
NTP Server giúp xác định và phân tích chính xác thời gian xảy ra sự cố trên hệ thống
5 Luôn tuân thủ các quy định
Các quy định Sarbanes Oxley, HIPAA, GLBA và rất nhiều quy định khác cóthể rất cần thiết trong tương lai Do vậy, sự chính xác trong các dữ liệu và thời gian
Trang 10lưu trữ, cập nhật, xử lý các dữ liệu ở từng thời điểm là điều bạn phải đảm bảo vàđiều này NTP Server hoàn toàn có thể hỗ trợ chúng ta.
2.2 Giao thức TCP/IP
2.2.1 Giới thiệu TCP/IP
TCP/IP là cụm từ viết tắt của Transmission Control Protocol/InternetProtocol hay còn gọi là giao thức điều khiển truyền/nhận (Giao thức liênmạng) Đây là một bộ các giao thức truyền thông được sử dụng để kết nối các thiết
bị mạng với nhau trên internet TCP/IP cũng có thể được sử dụng như một giaothức truyền thông trong mạng máy tính riêng (mạng nội bộ) Trong đó, bộ Giaothức internet – một tập hợp các quy tắc và thủ tục – thường gọi là TCP/IP (TCP/IPProtocol) TCP và IP là hai giao thức chính bên cạnh những giao thức khác trong
bộ Bộ giao thức TCP/IP hoạt động như một lớp trừu tượng giữa các ứng dụnginternet và hạ tầng router/switch.TCP/IP chỉ định cách dữ liệu được trao đổi quainternet Nó thực hiện bằng cách cung cấp thông tin liên lạc đầu cuối Từ đó xácđịnh cách nó được chia thành các packet, xác định địa chỉ, truyền dẫn, định tuyến
và nhận dữ liệu TCP/IP được thiết kế để đảm bảo độ tin cậy, nó có khả năng khôiphục tự động khi gặp sự cố trong quá trình truyền dữ liệu
2.2.2 Nguyên lý hoạt động của TCP/IP
Thực tế trong giao thức TCP/IP, IP đóng góp một vai trò cực kỳ quantrọng Như tên gọi đã nói lên tất cả, TCP/TP là sự kết hợp giữa 2 giao thức IP chophép máy tính chuyển tiếp gói tin tới một máy tính khác Thông qua một hoặcnhiều khoảng (chuyển tiếp) gần với người nhận gói tin Còn TCP sẽ giúp kiểm tracác gói dữ liệu xem có lỗi không sau đó gửi yêu cầu truyền lại nếu có lỗi được tìmthấy
Như vậy, để trả lời cho câu hỏi về quy cách hoạt động của TCP/IP là gì thật
ra rất đơn giản Có thể hình dung việc truyền tin trên Internet tựa như một dâychuyền sản xuất Các công nhân sẽ lần lượt chuyền các bán thành phẩm qua nhữnggiai đoạn khác nhau để bổ sung hoàn thiện sản phẩm Khi đó, IP giống như là quycách hoạt động của nhà máy, còn TCP lại đóng vai trò là một người giám sát dâychuyền, đảm bảo cho dây chuyền liên tục nếu có lỗi xảy ra
2.2.3 Cấu trúc của TCP/IP là gì và chức năng của các tầng
Trang 11Bản chất của TCP/IP là một chuẩn phổ biến mà các mạng nội bộ và diện rộng
có thể giao tiếp, cho phép các máy tính kết nối với nhau và cho các ứng dụng đểgửi dữ liệu đi và về Để hoạt động nhịp nhàng, TCP/IP phải có 4 lớp/tầng trừutượng (TCP/IP layers), mỗi lớp có một bộ giao thức riêng
Chức năng của các tầng đó của TCP/IP:
Tầng 1 – Tầng Vật lý (Physical)
Đây là sự kết hợp giữa tầng Vật lý và tầng liên kết dữ liệu của mô hình OSI.Tầng này chịu trách nhiệm truyền dữ liệu giữa hai thiết bị trong cùng mộtmạng Tại đây, các gói dữ liệu được đóng vào khung (gọi là Frame) và được địnhtuyến đi đến đích đã được chỉ định ban đầu
Tầng 2 – Tầng mạng (Internet) – IP
Cũng gần giống như tầng mạng của mô hình OSI Tại TCP/IP, tầng 2 – tầng mạng(Internet) cũng được định nghĩa là một giao thức chịu trách nhiệm truyền tải dữliệu một cách logic trong mạng Các phân đoạn dữ liệu sẽ được đóng gói (Packets)với kích thước mỗi gói phù hợp với mạng chuyển mạch mà nó dùng để truyền dữliệu Lúc này, các gói tin được chèn thêm phần Header chứa thông tin của tầngmạng và tiếp tục được chuyển đến tầng tiếp theo
Trang 12Các giao thức chính trong tầng là IP(Internet Protocol), ICMP(Internet ControlMessage Protocol) và ARP(Address Resolution Protocol).
Tầng 3 – Tầng Giao vận (Transport layer) – TCP
Trang 13Chức năng chính của tầng 3 là xử lý vấn đề giao tiếp giữa các máy chủ trongcùng một mạng hoặc khác mạng được kết nối với nhau thông qua bộ định tuyến.Đây là lớp điều khiển giao tiếp máy chủ tới máy chủ, còn được gọi là Tầng giaovận Tầng truyền tải sẽ phụ trách luồng dữ liệu giữa 2 trạm thực hiện các ứng dụngcủa lớp trên Tầng này có 2 giao thức chính là:
TCP – Transmission Control Protocol: cung cấp luồng dữ liệu tin cậy giữa
2 trạm nhờ nhiều cơ chế
Ví dụ như chia nhỏ các gói tin ở tầng trên thành các gói tin có kích thước thích hợpcho tầng mạng bên dưới, báo nhận gói tin, đặt hạn chế thời gian timeout để đảmbảo bên nhận biết được các gói tin đã gửi đi
UDP – User Datagram Protocol: gửi dữ liệu từ trạm này tới trạm kia mà
không đảm bảo các gói tin đến được tới đích
Tầng Ứng dụng (Application)
TCP/IP là gì? TCP/IP layer 4
Trang 14Đây là lớp giao tiếp trên cùng của mô hình Tầng ứng dụng đảm nhận vai trògiao tiếp dữ liệu giữa 2 máy khác nhau thông qua các dịch vụ mạng khác nhau nhưchính tên gọi của nó Các dịch vụ mạng đó có thể là duyệt web, chat, gửi email,một số giao thức trao đổi dữ liệu: SMTP, SSH, FTP,… Dữ liệu khi đến đây sẽđược định dạng theo kiểu Byte nối Byte, cùng với đó là các thông tin định tuyếngiúp xác định đường đi đúng của một gói tin.
Sau đây là hình ảnh ví dụ điển hình của TCP/IP Model (Mô hình TCP/IP) về
bố cục các TCP/IP layers
2.2.4 Ưu điểm và nhược điểm của TCP/IP là gì?
Ưu điểm
+ Thiết lập kết nối giữa các loại máy tính khác nhau
+ Hoạt động độc lập với hệ điều hành
+ Hỗ trợ nhiều giao thức định tuyến
+ Kiến trúc client – server, khả năng mở rộng cao
+ Có thể hoạt động độc lập
+ Hỗ trợ nhiều giao thức định tuyến
+ Nhẹ, không gây nhiều áp lực với máy tính hay mạng
Trang 15Nhược điểm
+ Việc cài đặt khá phức tạp, khó để quản lý
+ Tầng transport không đảm bảo việc phân phối các gói tin
+ Các giao thức trong TCP/IP không dễ để có thể thay thế
+ Không tách biệt rõ ràng các khái niệm về dịch vụ, giao diện và giao thức + Do đó nó không hiệu quả để mô tả các công nghệ mới trong mạng mới
+ Dễ bị tấn công SYN – một kiểu tấn công từ chối dịch vụ
3.1 Các thành phần cơ bản và công cụ hỗ trợ cho hệ thống
3.1.1 Arduino IDE
Arduino IDE là một phần mềm mã nguồn mở, được sử dụng để lập trình cho các
bo mạch điều khiển Arduino và các dòng vi điều khiển AVR Phần mềm này đượcphát triển dựa trên nền tảng Java và có tích hợp trình biên dịch GCC để biên dịch
mã nguồn C++
Ngôn ngữ lập trình chính của Arduino IDE là C++, được viết với một số thư viện
và hàm tiện ích được cung cấp bởi Arduino Tuy nhiên, người dùng cũng có thể sử
Trang 16dụng các thư viện bên thứ ba hoặc tự viết các thư viện riêng để thực hiện các chứcnăng đặc biệt.
Arduino IDE cung cấp một giao diện đồ họa đơn giản để lập trình cho các bo mạchArduino và AVR Người dùng có thể viết mã nguồn, biên dịch và tải chương trìnhvào bo mạch điều khiển thông qua cổng USB Để sử dụng Arduino IDE, ngườidùng cần kết nối bo mạch điều khiển với máy tính thông qua một cáp USB và càiđặt driver cho bo mạch điều khiển
Arduino IDE có thể chạy trên các hệ điều hành phổ biến như Windows, macOS vàLinux, là một công cụ lập trình đơn giản và dễ sử dụng cho người mới bắt đầu vớilập trình vi điều khiển
3.1.2 Firebase
Firebase là một nền tảng dịch vụ đám mây được cung cấp bởi Google, cungcấp các dịch vụ liên quan đến lưu trữ dữ liệu, xác thực, phân tích, truyền thông,kiểm tra lỗi và nhiều dịch vụ khác, nhằm giúp cho việc phát triển các ứng dụngweb và di động dễ dàng hơn
Các tính năng chính của Firebase bao gồm:
1 Lưu trữ dữ liệu: Firebase cung cấp các cơ chế lưu trữ dữ liệu như RealtimeDatabase và Firestore, giúp lưu trữ dữ liệu theo thời gian thực, có khả năngđồng bộ hóa nhanh chóng
Trang 172 Xác thực người dùng: Firebase cung cấp các cơ chế xác thực người dùngcho các ứng dụng, như đăng nhập qua email, tài khoản Google, Facebook,Twitter, Apple ID,
3 Phân tích: Firebase cung cấp các công cụ phân tích dữ liệu và hiển thị báocáo, cho phép theo dõi lượng truy cập, dữ liệu sử dụng ứng dụng,
4 Truyền thông: Firebase cung cấp các cơ chế gửi thông báo đến người dùng,cho phép gửi thông báo đẩy trực tiếp từ Firebase Console hoặc sử dụngCloud Messaging API
5 Kiểm tra lỗi: Firebase cung cấp các công cụ giúp phát hiện và sửa lỗi nhanhchóng, giảm thiểu thời gian gián đoạn hoạt động của ứng dụng
Firebase hỗ trợ nhiều ngôn ngữ lập trình khác nhau, bao gồm Android, iOS,JavaScript, C++, Unity, PHP, Python và Java Firebase cung cấp các API và SDK
để giúp cho các nhà phát triển dễ dàng tích hợp các tính năng của Firebase vào ứngdụng của mình
3.1.3 ESP8266
ESP8266 là một vi điều khiển được sử dụng để kết nối với internet Nó được tíchhợp sẵn cả WiFi và đồng hồ thời gian thực (RTC) Vi điều khiển này được lập trìnhbằng ngôn ngữ C và có thể được lập trình bằng nhiều phần mềm khác nhau nhưArduino IDE, Lua, MicroPython, hay C++ Vi điều khiển ESP8266 được lựa chọn
để kết nối với Firebase do nó có khả năng kết nối với mạng WiFi và hỗ trợ các giaothức truyền thông như TCP/IP, HTTP
Trang 19- Giao diện sau khi đăng nhập:
3.2 Quy trình thực hiện
Trang 203.2.1 Điều kiện tiên quyết
- Thiết bị ESP8266
- Tài khoản Firebase và quyền truy cập vào Realtime Database của Firebase
- Webserver cho phép tương tác với Firebase Database
3.2.2 Các bước thực hiện
Bước 1: Kết nối ESP8266 với mạng Wi-Fi và truy cập vào Firebase
Kết nối ESP8266 với mạng Wi-Fi bằng cách cung cấp SSID và mật khẩu củamạng Wi-Fi
Tạo tài khoản Firebase và tạo một Realtime Database trên Firebase
Lấy thông tin URL của Realtime Database và chứng chỉ xác thực để đăngnhập vào Firebase
Bước 2: Viết mã truyền dữ liệu từ ESP8266 lên Firebase
Sử dụng thư viện ESP8266WiFi.h để kết nối với mạng Wi-Fi
Sử dụng thư viện FirebaseESP8266.h để kết nối với Firebase
Cung cấp chứng chỉ xác thực để đăng nhập vào Firebase
Sử dụng hàm Firebase.set để đẩy dữ liệu lên Firebase
Bước 3: Thiết lập Webserver để lấy dữ liệu từ Firebase và đưa lên web
Sử dụng Node.js để tạo Webserver
Sử dụng thư viện Firebase để kết nối với Firebase
Thiết lập API để lấy dữ liệu từ Firebase
Tạo HTML và JavaScript để hiển thị dữ liệu trên trang web
Trang 21ESP8266 NodeMCU
+ Kit có thiết kế dễ sử dụng và có thể sử dụng trựctiếp trình biên dịch của Arduino để lập trình và nạpcode
+ Được dùng cho các ứng dụng cần kết nối, thuthập dữ liệu và điều khiển qua sóng Wifi, các ứngdụng liên quan đến IoT
Soil Moisture Sensor
+ Cảm biến giúp xác định độ ẩm của đất qua đầu
dò và trả về giá trị Analog, Digital qua 2 chântương ứng
+ Tín hiệu đầu ra:
Analog: theo điện áp cấp nguồn tương ứng.Digital: High hoặc Low, có thể điều chỉnh độ
ẩm mong muốn bằng biến trở thông qua mạch sosánh LM393 tích hợp
mà không cần phải qua bất kỳ tính toán nào.+ Điện áp hoạt động : 5VDC
+ Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)+ Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)+ Tần số lấy mẫu tối đa: 1Hz (1 giây/lần)
Relay KY-019
+ Sử dụng để đóng ngắt thiết bị AC hoặc DC.+ Có tiếp điểm đóng ngắt gồm 3 tiếp điểm NC(thường đóng), NO(thường mở) và COM(chânchung) được cách ly hoàn toàn với board mạchchính
+ Ở trạng thái bình thường chưa kích NC sẽ nối vớiCOM, khi có trạng thái kích COM sẽ chuyển sangnối với NO và mất kết nối với NC
+ Điện áp sử dụng: 5VDC
+ Tín hiệu kích: TTL 3.3~5VDC, mức cao HighRelay đóng, mức thấp Low Relay ngắt
+ Relay tiêu thụ dòng khoảng 80mA
+ Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc
ể