You are on page 1of 48

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

KHOA ĐIỆN – ĐIỆN TỬ


--------------

Đề tài:

BÁO HIỆU TRONG IMS


Giáo viên hướng dẫn: GV. Ths. Đàm Mỹ Hạnh
Sinh viên thực hiện:
Đỗ Quốc Vinh : 191411149
Lê Văn Việt : 191401138
Lê Trọng Tấn : 141904668
Trần Đức Thành : 191400943

Lớp: Kỹ thuật Viễn thông 3 – K60

Năm học:2022-2023
Mục Lục
CHƯƠNG I: GOOGLE CLOUD...........................................................................1
1.Mô hình dịch vụ của Google Cloud................................................................1
2.Các dịch vụ của Google Cloud........................................................................2
2.1.Một số dịch vụ Compute...............................................................................3
2.1.1.Compute Engine.....................................................................................3
2.1.2.Kubernetes Engine.................................................................................3
2.1.3.App Engine..............................................................................................4
2.2.Một số dịch vụ Networking...........................................................................4
2.2.1.Load Balancing.......................................................................................4
2.2.2.Cloud DNS...............................................................................................4
2.3.Một số dịch vụ Storage..................................................................................4
2.3.1.Cloud Bigtable........................................................................................4
2.3.2.Cloud Storage.........................................................................................4
2.3.3.Cloud SQL...............................................................................................5
2.3.4.Cloud Datastore......................................................................................5
2.4. Một số dịch vụ Big Data...............................................................................5
2.4.1.BigQuery.................................................................................................5
2.4.2 Cloud Dataflow.......................................................................................5
2.4.3.Cloud Dataproc.......................................................................................6
2.4.4.Cloud Pub/Sub........................................................................................6
2.5. Một số dịch vụ Machine Learning..............................................................6
2.5.1.Cloud Translate API..............................................................................6
2.5.2.Cloud Vision API....................................................................................6
2.5.3.Cloud Speech API...................................................................................7
CHƯƠNG II: GIAO THỨC KẾT NỐI (MQTT) VỚI GOOGLE CLOUD......7
1.MQTT là gì ?.....................................................................................................7
2.Ưu điểm của MQTT là gì?...............................................................................8
3.Giao thức kết nối MQTT với Google Cloud..................................................8
4.Kết nối Cloud IoT Core MQTT......................................................................9
CHƯƠNG III: ỨNG DỤNG KẾT NỐI VỚI GOOGLE CLOUD IOT............29
A.Gửi dữ liệu cảm biến DHT11 lên Firebase của Google dùng NodeMCU
ESP8266..............................................................................................................29
1.Firebase là gì ?................................................................................................29
1.1.Realtime Database...................................................................................30
1.2.Các tính năng bảo mật............................................................................30
1.3.Làm việc offline.......................................................................................30
1.4.Xác thực người dùng...............................................................................30
1.5.Firebase Hosting......................................................................................31
1.6.Triểu khai siêu tốc...................................................................................31
1.7.Sự ổn định................................................................................................31
1.8.Giá thành..................................................................................................31
2.Dự án về việc gửi dữ liệu từ DHT11 (cảm biến độ ẩm và nhiệt độ) lên
firebase của Google...........................................................................................31
2.1.Chuẩn bị...................................................................................................31
2.2.Sơ đồ kết nối.............................................................................................32
2.3.Thiết lập Firebase....................................................................................32
B.Gửi dữ liệu tới Google IoT Platform bằng MQTT.....................................37
1.Tạo Cơ quan đăng ký IoT Core....................................................................37
2.Định cấu hình thiết bị IoT trên đám mây....................................................39
2.1.Tạo chứng chỉ...........................................................................................39
2.2.Thêm một thiết bị mới.............................................................................40
3.Kết nối ESP32 với Google Cloud IoT...........................................................41
4.Gửi dữ liệu tới Google Cloud IoT từ ESP32 bằng MQTT.........................42
5.Kiểm tra kết quả.............................................................................................43
TÀI LIỆU THAM KHẢO....................................................................................45
CHƯƠNG I: GOOGLE CLOUD
1.Mô hình dịch vụ của Google Cloud.
Google Cloud Platform (GCP) hay còn gọi là Google Cloud, đây là một trong những
nền tảng của kỹ thuật điện toán đám mây, cho phép người dùng có thể xây dựng, phát
triển cũng như vận hành những ứng dụng của mình trên hệ thống mà Google đã tạo ra.
Có một số ứng dụng Google rất phổ biến hiện nay đang được rất nhiều người sử dụng, ví
dụ như Google Chrome, Google Map, Youtube…
Google Cloud Platform cung cấp tất cả các giải pháp cần thiết để bạn có thể quản lý
doanh nghiệp dễ dàng hơn, các doanh nghiệp có thể tự phát triển một hệ thống công nghệ
của riêng mình một cách hiện đại, nâng cao hiệu quả công việc. Ngoài ra, Google Cloud
Platform là nền tảng mạnh mẽ hỗ trợ người dùng trong việc giải quyết những vấn đề liên
quan đến Developer, Management, Mobile, Storage…\

Ngoài ra, điểm khác chính giữa Google Cloud Platform và các dịch vụ Cloud khác đó
là hệ thống trung tâm dữ liệu của ông lớn Google luôn có độ ổn định cũng như tính bảo
mật thông tin dữ liệu cực kỳ cao, đảm bảo mang lại trải nghiệm người dùng tốt nhất cho
bạn trước các rủi ro như hacker, virus…

Mô hình dịch vụ kim tự tháp của Google Cloud:

Với Google Cloud Platform, ba dịch vụ chính là: IaaS, PaaS và SaaS:
+ IaaS: Đây là tầng dưới cùng của mô hình kim tự tháp dịch vụ Cloud Computing. Dịch
vụ này trên nền tảng đám mây của Google cho phép người dùng sử dụng các máy chủ
một cách ảo hoá hoàn toàn. Nghĩa là họ không cần phải tự đầu tư hoặc nhọc công để quản
lý cơ sở hạ tầng máy tính này. Với IaaS, thứ người dùng nhận được là một hạ tầng có sẵn.
Và họ có thể triển khai lên đó bất cứ thứ gì họ muốn. Thông thường, người dùng sẽ chọn
giải pháp IaaS trên Google Cloud Platform khi khối lượng công việc là tạm thời, thử
nghiệm. 
1
+ PaaS: Là tầng tiếp theo của mô hình kim tự tháp. Nó được xây dựng trên mô hình IaaS.
Người dùng vừa sử dụng phần hạ tầng của mô hình IaaS. Đồng thời họ cũng sử dụng các
công cụ khác phụ vụ cho việc phát triển dự án như các hệ điều hành, phần mềm,... Ở
Google Cloud Platform, tất các yếu tố này đều có sẵn. Và họ chỉ việc lựa chọn những thứ
cần cho dự án của mình mà thôi.
+ SaaS: Là đỉnh trên cùng của kim tự tháp. Với mô hình SaaS, mọi thứ dường như đơn
giản và tối ưu nhất có thể dành cho người dùng. Họ sẽ không cần phải cài đặt cấu hình
phức tạp. Mọi thứ đều được thao tác thông qua các giao diện web trực quan. Google
Cloud Platform và những nền tảng khác đã tối ưu hoàn toàn những trải nghiệm của người
dùng. Họ chỉ cần đăng nhập để truy cập các tài nguyên mà giải pháp cụ thể cung cấp.
Ngoài ra, nếu xét về các hạng mục dịch vụ cốt lõi, nền tảng đám mây của Google cũng
có nhiều hạng mục dịch vụ như: Lưu trữ và cơ sở dữ liệu, Big Data, các công cụ quản
lý,...

2.Các dịch vụ của Google Cloud.

2
2.1.Một số dịch vụ Compute.
2.1.1.Compute Engine

– Tuỳ chỉnh cấu hình.

– Di chuyển trực tiếp.

– Kết nối giữa các máy ảo lên đến 2 GBPS.

– Có HTTP(s) and Network load balancing.

– API tự động cân chỉnh và được quản lý theo nhóm.

– Tính phí theo giờ và tự động giảm giá trong quá trình sử dụng.
– Máy ảo ưu tiên.
2.1.2.Kubernetes Engine
– Các Kubernetes được dựa trên orchestration container.
– Sử dụng làm nguồn tài nguyên của Compute Engine.

3
– Cú pháp để khai báo cho orchestration và sắp xếp các Docker.
– Quản lý việc ghi nhật ký, giám sát và chia tỷ lệ.
2.1.3.App Engine
– Quản lý thực thi cho Java, Go, Python, PHP, NodeJS…
– Local SDK cho việc phát triển, test và triển khai.
– Tự động mở rộng dựa trên nhu cầu.
– Hạn ngạch hàng ngày miễn phí, thanh toán dựa trên sử dụng.
– Thời gian chờ xử lý là 60 giây, không thể ghi file cục bộ.
2.2.Một số dịch vụ Networking
2.2.1.Load Balancing
– Có HTTP(S) và Network Load Balancing.
– Tự động mở rộng thông qua các khu vực Compute Engine.
– Một IP mở rộng, đơn giản hoá thiết lập DNS.
– Điều khoản dựa trên sự mở rộng của các nhóm instance.
– Network Load balancing cho TCP và lưu lượng UDP trong vùng CE.
– Chỉ những instance tốt mới được xử lý lưu lượng.
2.2.2.Cloud DNS
– Full quyền quản lý, có khả năng mở rộng và khả dụng cao.
– 100% SLA có sẵn.
– Được lập trình để quản lý các vùng và các ghi chép bằng RESTful API.
– Quản lý các vùng cho các dự án.
2.3.Một số dịch vụ Storage
2.3.1.Cloud Bigtable
– Khả năng mở rộng NoSQL lớn.
– Dành cho những ứng dụng có lưu lượng làm việc lớn.
– Độ trễ thấp và lưu lượng cao.
– Truy xuất bằng Hbase API.
– Tương thích với hệ sinh thái Hadoop
– Phân quyền dựa trên các ACL
– Mã hoá dữ liệu.
2.3.2.Cloud Storage
– Khả năng mở rộng cao đối tượng không thay đổi/lưu trữ blob.
4
– Độ trễ thấp, độ bền cao.
– Nearline Storage được sử dụng để backup, lưu trữ.
– Không giới hạn lưu trữ.
– Tất cả các tùy chọn được truy cập thông qua cùng một API.
– Có thể mount dưới dạng file hệ thống bằng cách sử dụng GCS Fuse.
2.3.3.Cloud SQL
– Quản lý MySQL và PostgreSQL.
– Có nhiều gói và chỉ thanh toán mỗi lần sử dụng.
– Mở rộng theo chiều dọc sử dụng cho đọc và ghi.
– Mở rộng theo chiều ngang chỉ sử dụng cho đọc.
– Tích hợp liền mạch với App Engine và Compute Engine.
– Dữ liệu tự động mã hoá.
2.3.4.Cloud Datastore
– Cơ sở dữ liệu NoSQL có thể mở rộng lên đến hàng tỷ dòng.
– Full quyền quản lý dịch vụ.
– Tự động xử lý Sharding và trùng lặp.
– Hỗ trợ cho các giao thức ACID, truy vấn như câu lệnh SQL.
– Tốc độ nhanh và khả năng mở rộng cao
– Truy vấn từ mọi nơi thông qua RESTful API.
2.4. Một số dịch vụ Big Data
2.4.1.BigQuery.
– Full quyền quản lý kho dữ liệu phân tích quy mô petabyte.
– Tương tác gần như real-time với các tập dữ liệu khổng lồ.
– Truy xuất bằng cú pháp SQL.
– Quy mô lưu trữ và tính toán riêng.
– Chỉ thanh toán cho phí lưu trữ và tính toán.
– Lợi ích từ các điểm tích hợp được phát triển bởi các đối tác.
2.4.2 Cloud Dataflow
– Mô hình lập trình thống nhất để phát triển và thực thi các đường dẫn dữ liệu, có thể mở
rộng và đáng tin cậy.
– Hỗ trợ cho ETL, phân tích, tính toán real-time và tiến trình orchestration.
– Xử lý dữ liệu bằng cách sử dụng các Compute Engine instance.
5
– Sử dụng mã nguồn mở Java để tuỳ chỉnh mở rộng.
– Được các đối tác của GCP tích hợp và phát triển
2.4.3.Cloud Dataproc
– Full quyền quản lý Hadoop, Spark, Pig, and Hive.
– Các Dataproc cluster có thể được thay đổi kích cỡ bất kỳ lúc nào, ngay cả khi các công
việc đang chạy.
– Các cluster được thanh toán theo từng phút.
– Các cluster có thể sử dụng các trường hợp được miễn thuế để giảm chi phí hơn nữa.
– Sử dụng API và tích hợp với Google Cloud SDK.
– Dễ dàng di chuyển các ETL pipelines mà không cần tái phát triển
2.4.4.Cloud Pub/Sub
– Khả năng scale và nhắn tin trung gian đáng tin cậy.
– Dựa trên các công nghệ nền tảng của Google.
– Bảo đảm “ít nhất một lần” giao nhận với độ trễ thấp.
– Hỗ trợ giao nhận cả pull và push.
– Được quản lý hoàn toàn và toàn cầu bằng cách tận dụng thiết kế của tất cả các vùng
GCP.
– Hỗ trợ cho người dùng offline.
2.5. Một số dịch vụ Machine Learning
2.5.1.Cloud Translate API
–API đơn giản để dịch chuỗi tùy ý sang bất kỳ ngôn ngữ được hỗ trợ nào.
– Được lập trình để phát hiện ngôn ngữ của một tài liệu.
– Hỗ trợ hàng chục ngôn ngữ.
– Bản dịch chất lượng cao và có khả năng mở rộng cao.
– Hỗ trợ Python, Java, Go và nhiều ngôn ngữ khác.
– Sử dụng và thanh toán chi phí theo mỗi triệu kí tự được dịch.
2.5.2.Cloud Vision API
– Phân tích hình ảnh bằng các máy học mạnh mẽ.
– Khả năng phân loại hình ảnh thành hàng nghìn danh mục.
– Phát hiện các đối tượng và khuôn mặt riêng lẻ trong hình ảnh.
– API cải thiện theo thời gian bằng cách xây dựng dựa trên thông tin chi tiết
– Phát hiện các loại nội dung không phù hợp khác nhau.
6
– Tự động phát hiện văn bản và ngôn ngữ trên văn bản đó.
2.5.3.Cloud Speech API
– Chuyển đổi âm thanh thành văn bản nhờ hệ thống các model.
– Nhận biết hơn 80 ngôn ngữ và biến thể.
– Khả năng lọc nội dung không phù hợp.
– Trả về kết quả theo thời gian thực.
– Tính năng loại bỏ tiếng ồn tích hợp cho nhiều môi trường.
– API cải thiện theo thời gian bằng cách xây dựng dựa trên thông tin chi tiết.

CHƯƠNG II: GIAO THỨC KẾT NỐI (MQTT) VỚI GOOGLE CLOUD
1.MQTT là gì ?
Đây là một giao thức truyền thông điệp (message) theo mô hình publish/subscribe
(xuất bản – theo dõi), sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động
trong điều kiện đường truyền không ổn định.
MQTT (hoặc MQTT3) là một giao thức nhắn tin 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.
Kiến trúc mức cao (high-level) của MQTT gồm 2 phần chính là Broker và Clients.
Trong đó, 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, logs,…
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…

7
Các bạn 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).
2.Ưu điểm của MQTT là gì?
Giao thức MQTT cho phép hệ thống SCADA của bạn truy cập dữ liệu IIoT. MQTT
mang lại nhiều lợi ích mạnh mẽ cho quy trình của bạn:
 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
 Giao thức publish/subscribe thu thập nhiều dữ liệu hơn với ít băng thông hơn so
với giao thức cũ.
3.Giao thức kết nối MQTT với Google Cloud.
Nền tảng đám mây của Google (GCP) là giải pháp đám mây của Google mang tất cả
các dịch vụ điện toán đám mây của Google lại với nhau. Các dịch vụ của riêng Google,
chẳng hạn như Google Tìm kiếm và YouTube, chạy trên GCP, nhưng người dùng cuối
cũng có thể đặt các dịch vụ đám mây.
Đối với lĩnh vực Internet of Things (IoT), nền tảng này cung cấp các dịch vụ “Cloud
IoT Core” , cung cấp các chức năng để kết nối số lượng lớn thiết bị. Có thể kết nối thông
qua một nhà môi giới MQTT tích hợp. Ở đây chúng tôi hiển thị các bước cần thiết cho
kết nối.

8
4.Kết nối Cloud IoT Core MQTT
Kết nối diễn ra theo các bước sau:
B1: Tạo dự án và đăng ký
B2: Tạo một plugin MQTT, cũng như tạo chứng chỉ và thiết bị
B3: Truyền dữ liệu vào thiết bị
B4: Giám sát
B1: Tạo dự án và đăng ký:
1. Đăng nhập vào Bảng điều khiển GCP của Google:
https://console.cloud.google.com/
2. Nhấp vào “TẠO DỰ ÁN”:

3. Đặt tên (1) và nhấp vào “CREATE” (2):

9
4. Nhấp vào “Đi tới tổng quan về API”:

5. Nhấp vào “BẬT APIS VÀ DỊCH VỤ”:

10
6. Tìm kiếm “IoT” (trong thời gian này, chế độ xem thay đổi):

7. Sau khi thay đổi chế độ xem và nhập hoàn toàn cụm từ tìm kiếm (1), hãy chọn
“Google Cloud IoT API” (2):

8. Nhấp vào “BẬT”:

11
9. Mở menu:

10. Cuộn đến phần “DỮ LIỆU LỚN” và chọn mục nhập menu “IoT Core”:

12
11. Nhấp vào “TẠO ĐĂNG KÝ”:

12. Đặt ID đăng ký (1), chọn khu vực (2) và mở danh sách thả xuống của chủ đề (3):

13. Nhấp vào “TẠO CHỦ ĐỀ” trong danh sách thả xuống đã mở:

13
14. Nhập ID chủ đề (1), chọn mã hóa “Khóa do Google quản lý” (2) và nhấp vào
“TẠO CHỦ ĐỀ” (3):

15. Hiển thị các tùy chọn nâng cao:

16. Kích hoạt các giao thức “MQTT” và “HTTP” (1), tắt ghi nhật ký ngăn xếp (2) và
có thể bạn phải cuộn xuống:

14
Chứng chỉ CA sẽ được nhập theo cách thủ công (1) và sau đó nhấp vào “CREATE” (2):

17. Cuối cùng chọn mục nhập trình đơn “Thiết bị” để tạo thiết bị sau này:

B2: Tạo một plugin MQTT, cũng như tạo chứng chỉ và thiết bị:

15
1.Thực hiện các bước sau trong Bộ định tuyến OPC:
 Nhấp vào “Plugin” (1)
 Nhấp vào “MQTT” trong “Đám mây / IoT” (2)
 Nhấp vào Nút để tạo một plugin MQTT (3)

2.Đặt dữ liệu sau vào tab “Cấu hình bộ định tuyến”:

 Tên (1)
 Cấu hình đám mây (2)
Cấu hình đám mây giúp bạn nhập dữ liệu kết nối cụ thể của Google cho kết nối MQTT
dễ dàng hơn.
Sau đó, nhấp vào tab “Google IoT”

3.Nhấp vào nút Dấu cộng để tạo chứng chỉ:

16
4.Nhấp vào nút Tạo:

5.Nhấp vào nút Eye:

17
6.Nhấp vào tab “Chi tiết”:

7.Nhấp vào nút “Sao chép vào tệp…”:

18
8.Nhấp vào nút tiếp theo:

9.Không nên xuất khóa riêng tư (1), sau đó nhấp vào nút Tiếp theo (2):

19
10. Chọn định dạng tệp (1) và nhấp vào nút Tiếp theo (2):

11. Nhấp vào nút “Duyệt…”:

20
12. Đặt tên tệp (1) và nhấp vào nút Lưu (2):

13. Nhấp vào nút Tiếp theo:

21
14. Nhấp vào nút Kết thúc:

15. Xác nhận bằng cách nhấp vào nút OK:

22
16. Đóng hội thoại bằng cách nhấp vào nút OK:

17.Nhấp vào “TẠO THIẾT BỊ”:

23
18.Nhập ID thiết bị (1) và hiển thị các tùy chọn nâng cao (2):

19. Cho phép giao tiếp thiết bị (1), sử dụng cài đặt mặc định của sổ đăng ký cho “Ghi
nhật ký Stackdriver” (2) và có thể bạn phải cuộn xuống:

24
20. Chọn chứng chỉ (1) và nhấp vào nút Mở (2):

21. Nhấp vào “TẠO”:

25
22. Mở Google GCP Shell để xem dữ liệu được chuyển sau này:

23. Đưa vào dữ liệu sau:


 ID dự án (1)
 ID đăng ký (2)
 Vùng (3)
 ID thiết bị (4)
Sau đó, kiểm tra kết nối (5) và nhấp vào tab “Thuộc tính kết nối” (6):

24. Ba tab “Thuộc tính kết nối”, “Ý chí đầu tiên”, “Ý chí cuối cùng” không cần phải sửa
đổi nếu bạn đồng ý với nút OK:

26
25. Cuối cùng đây là mục MQTT đã hoàn thành:

27
B3: Truyền dữ liệu vào thiết bị:

B4: Giám sát


Như được hiển thị trong bước 22 của phần “Tạo plugin MQTT và tạo chứng chỉ và thiết
bị”, hãy mở Google GCP shell và sử dụng các lệnh sau:
 Xác định danh sách chủ đề: danh sách chủ đề gcloud pubsub
 Đăng ký để xem chủ đề: đăng ký gcloud pubsub tạo –topic
 Đọc bản ghi dữ liệu được chuyển lần cuối: kéo đăng ký gcloud pubsub –auto-ack

28
CHƯƠNG III: ỨNG DỤNG KẾT NỐI VỚI GOOGLE CLOUD IOT
Ví dụ ứng dụng, kết nối với Google Cloud Iot ( sử dụng mạch ESP8266/ESP32 và
Arduino IDE ), ghi và đọc dữ liệu :
 Gửi dữ liệu cảm biến DHT11 lên Firebase của Google dùng NodeMCU
ESP8266.
 Gửi dữ liệu tới Google IoT Platform bằng MQTT
A.Gửi dữ liệu cảm biến DHT11 lên Firebase của Google dùng NodeMCU ESP8266
1.Firebase là gì ?
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây
được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng
cách đơn giản hóa các thao tác với cơ sở dữ liệu. Nếu cần xây dựng một ứng dụng cho
mobile hoặc các thiết bị di động khác, mà bạn đang gặp khó khăn vì không biết chọn dịch
vụ VPS nào, loại database gì . . . thì Firebase sẽ là dịch vụ dành cho bạn.
FireBase có thể rất mạnh mẽ đối với ứng dụng backend, nó bao gồm việc lưu trữ dữ
liệu, xác thực người dùng, static hosting……Nên lập trình viên chỉ cần chú tâm đến việc
nâng cao trải nghiệm người dùng.

29
1.1.Realtime Database.
Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database tới
tất cả các client theo thời gian thực. Cụ thể hơn là bạn có thể xây dựng được client đa nền
tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung 1 database đến
từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được thêm mới
hoặc sửa đổi.
Tự động tính toán quy mô ứng dụng của bạn, giúp bạn dễ dàng hơn rất nhiều mỗi khi
cần nâng cấp hay mở rộng dịch vụ. Ngoài ra Firebase sử dụng NoSQL, giúp cho database
của bạn sẽ không bị bó buộc trong các bảng và các trường mà bạn có thể tùy ý xây dựng
database theo cấu trúc của riêng bạn.
Cho phép bạn phân quyền một cách đơn giản bằng cú pháp tương tự như javascript.
Khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy
chủ…Firebase sẽ xử lý việc tự động cho bạn. Các máy chủ của Firebase quản lý hàng
triệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng.
1.2.Các tính năng bảo mật
Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức
bảo mật SSL, chính vì vậy bạn sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng
như đường truyền giữa client và server. Không chỉ có vậy, việc cho phép phân quyền
người dùng database bằng cú pháp javascipt cũng nâng cao hơn nhiều độ bảo mật cho
ứng dụng của bạn, bởi chỉ những user mà bạn cho phép mới có thể có quyền chỉnh sửa cơ
sở dữ liệu.
1.3.Làm việc offline
Ứng dụng Firebase của bạn sẽ duy trì tương tác bất chấp một số các vấn đề về internet
xảy ra. Trước khi bất kỳ dữ liệu được ghi đến server thì tất cả dữ liệu lập tức sẽ được viết
vào một cơ sử dữ liệu Firebase ở local. Ngay khi có thể kết nối lại, client đó sẽ nhận bất
kỳ thay đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tại server.
1.4.Xác thực người dùng
Với Firebase, bạn có thể dễ dàng xác thực người dùng từ ứng dụng của bạn trên
Android, iOS và JavaScript SDKs chỉ với một vài đoạn mã. Firebase đã xây dựng chức
năng cho việc xác thực người dùng với Email, Facebook, Twitter, GitHub, Google, và

30
xác thực nặc danh. Các ứng dụng sử dụng chức năng xác thực của FireBase có thể giải
quyết được vấn đề khi người dùng đăng nhập, nó sẽ tiết kiện thời gian và rất nhiều các
vấn đề phức tạp về phần backend. Hơn nữa bạn có thể tích hợp xác thực người dùng với
các chức năng backend đã có sẵn dùng custom auth tokens.
1.5.Firebase Hosting
Các bạn có thể triển khai một ứng dụng nền web chỉ với vài giây (chém gió tới từ
firebase, chính mình cũng không tin lắm) với hệ thống Firebase, và các dữ liệu sẽ được
lưu trữ đám mây đồng thời được bảo mật thông qua giao thức truy cập SSL.
Các ứng dụng sẽ được cấp 1 tên miền dạng *.firebaseio.com hoặc bạn có thể trả tiền
để sử dụng tên miền của riêng mình.
1.6.Triểu khai siêu tốc
Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để
quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của
Firebase. Không chỉ có vậy Firebase còn hỗ trợ đã nền tảng nên bạn sẽ càng đỡ mất thời
gian rất nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng. Không chỉ
nhanh chóng trong việc xây dựng database, Google Firebase còn giúp ta đơn giản hóa
quá trình đăng kí và đăng nhập vào ứng dụng bằng các sử dụng hệ thống xác thực do
chính Firebase cung cấp.
1.7.Sự ổn định
Firebase hoạt động dựa trên nền tảng Cloud đến từ Google vì vậy hầu như bạn không
bao giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết nối lúc
nhanh lúc chậm, … nữa.
1.8.Giá thành
Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như
băng thông khác nhau với mức giá dao động từ Free đến $1500 đủ để đáp ứng được nhu
cầu của tất cả các đối tượng. Chính vì vậy bạn có thể lựa chọn gói dịch vụ phù hợp nhất
với nhu cầu của mình. Điều này giúp bạn tới ưu hóa được vốn đầu tư và vận hành của
mình tùy theo số lượng người sử dụng. Ngoài ra bạn còn không mất chi phí để bảo trì,
nâng cấp, khắc phục các sự cố . . .
2.Dự án về việc gửi dữ liệu từ DHT11 (cảm biến độ ẩm và nhiệt độ) lên firebase của
Google.
2.1.Chuẩn bị.
Phần cứng
 NodeMCU Esp8266 12E
 Cảm biến DHT11
 Breadboard
 Dây cắm Breadboard
Phần mềm: Arduino IDE
Các thư viện:

31
 Firebase Arduino Library
 Arduino JSON Library
 DHT11 Library
 Thư viện board ESP8266
2.2.Sơ đồ kết nối.
Chân DATA của DHT11 được kết nối với D5 của NodeMCU ESP8266.

2.3.Thiết lập Firebase.


Bước 1: Truy cập firebase.google.com và đăng nhập bằng tài khoản Gmail của bạn.
Click chọn “ĐI TỚI BẢNG ĐIỀU KHIỂN”

Bước 2: Tạo một project mới.

32
Bước 3: Tạo database

Nhấp vào Rules và thiết lập như hình dưới đây:

Ở phía trên bên trái, nhấp vào biểu tượng cài đặt (hình bánh răng ) >> chọn Project
settings >> Service accounts >> Database secrets >> Nhập vào chữ Show và copy secret
key

33
2.4.Lập trình.

34
Trong đó:
Khai báo thư viện

Đường dẫn FireBase và địa chỉ mạng kết nối

Khai báo chân kết nối của DHT 11 và các thư viện đi kèm.

Kết nối với mạng Wi-Fi đã chọn và cũng kết nối với máy chủ cơ sở dữ liệu firebase.

35
Bắt đầu đọc ở chân D4 của NodeMCU .

Lấy độ ẩm và nhiệt độ đọc từ cảm biến DHT và lưu dưới dạng giá trị nổi.

Chỉ cần kiểm tra xem cảm biến DHT có được nối dây đúng hay không và bộ điều khiển
có thể đọc các dữ liệu từ nó. Nếu các dữ liệu không hiển thị thì có lẽ cảm biến bị hỏng,
chỉ cần hiển thị thông báo lỗi và quay lại kiểm tra.

In dữ liệu cảm biến trong serial monitor để gỡ lỗi và lưu các giá trị nhiệt độ và độ ẩm ở
dạng chuỗi để gửi dữ liệu này đến Firebase. Cũng lưu ý rằng delay tối thiểu cần thiết giữa
hai lần đọc từ cảm biến DHT11 là 2 giây, vì vậy luôn luôn sử dụng delay lớn hơn 2 giây.

Gửi dữ liệu nhiệt độ và độ ẩm đến firebase.

Giao diện dữ liệu trên tài khoản Firebase như sau:

36
B.Gửi dữ liệu tới Google IoT Platform bằng MQTT
1.Tạo Cơ quan đăng ký IoT Core

Bạn phải cung cấp hai thông tin:


 ID đăng ký mà chúng tôi sẽ sử dụng sau này khi phát triển ứng dụng khách ESP32
kết nối với Google Core IoT
 Khu vực .

37
Tạo 1 chủ đề:

38
2.Định cấu hình thiết bị IoT trên đám mây.
2.1.Tạo chứng chỉ.
Tạo cặp khóa riêng tư và khóa công khai của Chứng chỉ Elliptic:

Bây giờ để lấy khóa công khai để sử dụng trong cấu hình thiết bị, hãy viết lệnh sau:

39
2.2.Thêm một thiết bị mới.

40
3.Kết nối ESP32 với Google Cloud IoT.
Sau khi hoàn thành tất cả cấu hình, chúng ta có thể tập trung vào cách kết nối ESP32
với Google Cloud IoT. Ngay cả khi kết nối sử dụng giao thức MQTT , không dễ dàng
như vậy để kết nối trực tiếp ESP32 với Google IoT mà không sử dụng thư viện.
Chi tiết hơn, ESP32 phải được xác thực. Là cơ chế xác thực, nền tảng IoT này sử dụng
JWT được ký bằng cách sử dụng khóa riêng của bạn được xây dựng. Do đó, để kết nối và
gửi dữ liệu bằng MQTT, chúng tôi có hai tùy chọn khác nhau:
 SDK của Google
 google-cloud-iot-arduino
Sao chép kho lưu trữ hoặc sao chép bằng cách nào đó các tệp này vào dự án ESP32:
 /examples/Esp32-lwmqtt/esp32_mqtt.h
 /examples/Esp32-lwmqtt/main.cpp
 /examples/Esp32-lwmqtt/ciotc_config.h
Để sao chép kho lưu trữ, hãy sử dụng lệnh sau:

Để tùy chỉnh thư viện theo nhu cầu của chúng tôi, cần phải sửa đổi tệp có tên
ciotc_config.h:

41
4.Gửi dữ liệu tới Google Cloud IoT từ ESP32 bằng MQTT

42
5.Kiểm tra kết quả.

Chạy mã code ở trên và kiểm tra bảng điều khiển trên Cloud Core IoT:

43
Sau đó, bạn có thể hình dung các tin nhắn MQTT được gửi bởi ESP32:

44
TÀI LIỆU THAM KHẢO
1. Giao thức MQTT trong IoT là gì? Những ứng dụng của MQTT như thế
nào?-Smart Factory & IioT Marketing.
2. Connect Google IoT Core via MQTT-OPC Router
3. ESP8266 và Firebase-HOCARM
4. Gửi dữ liệu cảm biến DHT11 lên Firebase của Google dùng NodeMCU
ESP8266-Nguyễn Hữu Phước
5. Giới thiệu về Google Cloud Platform và các dịch vụ-Phạm Văn Tuyến
6. 4 loại dịch vụ trong mô hình kim tự tháp Cloud Computing hiện nay-Viettel
IDC
7. https://www.survivingwithandroid.com/cloud-iot-core-esp32/

45

You might also like