2.2 Một số tính năng nổi bật của Firebase • Realtime Database: Firebase cung cấp một cơ sở dữ liệu thời gian thực, cho phép bạn lưu trữ và đồng bộ dữ liệu trong thời gian thực giữa các ứ
Trang 1Giáo viên hướng dẫn: TS Trương Công Tuấn
Sinh viên thực hiện:
Hoàng Công Phát - 20205390
Nguyễn Quang Vinh - 20205473
Đàm Huy Việt – 20205468
Nguyễn Thế Việt - 20205471
Trang 2SVTH: 1
MỤC LỤC I TỔNG QUAN VỀ ĐỀ TÀI 2
1 ĐẶT VẤN ĐỀ 2
2 MỤC TIÊU 2
II CÁC THÀNH PHẦN CƠ BẢN CỦA XE ĐIỀU KHIỂN 3
1 CÁC THIẾT BỊ SỬ DỤNG 3
2 GIỚI THIỆU VỀ FIRE BASE 5
2.1 Khái niệm về Fire Base 5
2.2 Một số tính năng nổi bật của Firebase 5
3 NGÔN NGỮ LẬP TRÌNH C# 8
3.1 Khái niệm cơ bản 8
3.2 Gửi dữ liệu từ C# Winform lên Firebase 8
3.3 Giao tiếp ESP32 với Firebase 9
III HỆ THỐNG ĐIỀU KHIỂN CỦA XE 10
1 SƠ ĐỒ MẠCH ĐIỆN 10
2 GIAO DIỆN ĐIỀU KHIỂN 11
3 NGUYÊN LÝ TRUYỀN NHẬN TÍN HIỆU GIỮA ESP32 VÀ FIREBASE 12
IV KẾT LUẬN 13
1 HÌNH ẢNH THỰC TẾ CỦA SẢN PHẨM 13
2 NHẬN XÉT 14
V TÀI LIỆU THAM KHẢO 15
VI PHỤ LỤC 15
1 CODE LẬP TRÌNH ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI 15
2 CODE LẬP TRÌNH THIẾT KẾ GIAO DIỆN 18
Trang 3SVTH: 2
TÓM TẮT NỘI DUNG BÀI TẬP LỚN
1 Nêu khái quát mục tiêu, ý nghĩa và các yêu cầu của BTL
2 Tóm tắt các kết quả đạt được
3 Công việc cụ thể của các thành viên
trưởng
1 Đặt vấn đề
Hiện nay, việc đo chất lượng không khí, nhiệt độ và độ ẩm thường phụ thuộc vào các thiết bị cầm tay hoặc các trạm đo cố định Điều này gây khó khăn trong việc đo đạc chính xác và liên tục trên một phạm vi
cụ thể Sự cần thiết là phải có một robot có khả năng điều khiên di chuyển từ xa và đo các thông số này để thu thập dữ liệu chất lượng môi trường.Với mục tiêu thu thập dữ liệu chất lượng không khí, nhiệt độ và
độ ẩm trên một phạm vi cụ thể, việc thu thập và xử lý dữ liệu trở thành một thách thức Cần có công nghệ và phương pháp xử lý dữ liệu hiệu quả để lưu trữ và phân tích số liệu thu thập được từ robot Việc kết nối
và truyền tải dữ liệu đo từ robot về một trung tâm quản lý là một yếu tố quan trọng Cần có phương thức kết nối không dây đáng tin cậy và an toàn để truyền tải dữ liệu một cách liên tục và đáng tin cậy về trung tâm quản lý
Xuất phát từ những vấn đề trên, cùng với sự phát triển của khoa học công nghệ, robot đo nhiệt độ, độ ẩm và chất lượng không khí có thể đáp ứng nhu cầu hiện nay của con người Trong những điều kiện môi trường độc hại, robot có thể đi tiên phong, nhằm tìm kiếm, phác họa địa hình,
đo đạc các thông số như nhiệt độ, độ ẩm,…giúp con người đánh giá được mức độ nguy hiểm của môi trường và đưa ra những phương án tiếp cận hợp lí
2 Mục tiêu
Trang 4SVTH: 3
Tìm hiểu và thiết kế được xe điều khiển Người dùng có thể điều khiển xe qua giao diện tự thiết kế, với các chức năng điều hướng, tăng giảm tốc độ, các thông số nhiệt độ, độ ẩm và chất lượng không khí.Một số hình ảnh minh họa:
Vụ nổ nhà máy hạt nhân Xe thám hiểm trên sao Hỏa
1 Các thiết bị sử dụng
-• Bluetooth: Chuẩn Bluetooth Low Energy (BLE) v4.2 và v5.0
• GPIO: Tổng cộng 30 chân GPIO (General Purpose Input/Output)
• Giao diện ngoại vi: UART, SPI, I2C, I2S, ADC, DAC, PWM
• Hỗ trợ các giao thức: TCP/IP, UDP, HTTP, MQTT
• Hỗ trợ mã hoá bảo mật: AES, RSA, SHA, SLL/TLS
• Đầu vào nguồn: 2.2V đến 3.6V
• Hệ điều hành: Hỗ trợ FreeRTOS
Trang 5động cơ L298N • Điện áp điều khiển: từ 5V đến 12V
• Dòng điện tối đa: 2A cho mỗi kênh động cơ
• Điện áp của tín hiệu điều khiển: 5V – 7V
• Số kênh động cơ: 2 kênh
• Công suất hao phí: 20W
• Số lượng đầu vào tín hiệu điều khiển: 3 đầu vào cho mỗi kênh động cơ (IN1, IN2, IN3, IN4)
• Giao tiếp: PWM (Pulse Width Modulation) để điều khiển tốc
3 Module cảm biến
nhiệt độ, độ ẩm DHT11
• Nguồn cung cấp 3.3-6V DC
• Phạm vi đo độ ẩm tốt 100% RH; sai số:2-5%
• Điện áp hoạt động: 5V DC
• Dòng điện tiêu thụ: Khoảng 150mA
• Dải đo: Từ 10ppm đến 1000ppm (Parts Per Million)
• Độ nhạy: Từ 3.6 đến 4.4 ppm
• Điện trở tải: 20kΩ đến 50kΩ
Trang 6SVTH: 5
• Điện trở nhiệt: 33Ω ± 5%
• Nhiệt độ hoạt động: Từ -10°C đến +50°C
• Độ ẩm hoạt động: Từ 10% đến 90% không ngưng tụ
• Tuổi thọ: Khoảng 5 năm
• Kích thước màn hình: 84mm x 44mm
• Vùng hiển thị mỗi ký tự: 5x8 pixel
2 Giới thiệu về Fire Base
2.1 Khái niệm về Fire Base
Firebase là một tập hợp các nền tảng phát triển ứng dụng và dịch
vụ điện toán đám mây phụ trợ do Google cung cấp Nó lưu trữ cơ sở
dữ liệu, dịch vụ, xác thực và tích hợp cho nhiều ứng dụng, bao gồm Android, IOS, JavaScript, Node.js, Java, Unity, PHP và C++ 2.2 Một số tính năng nổi bật của Firebase
• Realtime Database: Firebase cung cấp một cơ sở dữ liệu thời gian thực, cho phép bạn lưu trữ và đồng bộ dữ liệu trong thời gian thực giữa các ứng dụng di động và web
• Authentication: Firebase hỗ trợ quản lý người dùng và đăng nhập bằng cách cung cấp các phương thức xác thực như email/password, đăng nhập xã hội (Google, Facebook, Twitter),
và nhiều hơn nữa
• Cloud Firestore: Đây là một dịch vụ cơ sở dữ liệu linh hoạt và mạnh mẽ, cho phép lưu trữ dữ liệu theo dạng tài liệu (document)
và bộ sưu tập (collection) để quản lý dữ liệu phân tán
Trang 7SVTH: 6
• Cloud Storage: Firebase cung cấp dịch vụ lưu trữ đám mây, cho phép bạn lưu trữ và quản lý các tệp tin (hình ảnh, video, tài liệu) trong ứng dụng của bạn
• Cloud Functions: Đây là một tính năng cho phép bạn viết và triển khai mã máy chủ trong môi trường đám mây của Firebase, để thực hiện các chức năng phức tạp như xử lý dữ liệu, tính toán, gửi thông báo, và nhiều hơn nữa
• Hosting: Firebase cung cấp dịch vụ lưu trữ và phân phối ứng dụng web của bạn Bạn có thể dễ dàng triển khai và quản lý ứng dụng web của mình trên cơ sở hạ tầng toàn cầu của Firebase
• Analytics: Firebase cung cấp công cụ phân tích ứng dụng, giúp bạn hiểu rõ hơn về hành vi người dùng, hiệu suất ứng dụng, và
sự tương tác của người dùng với ứng dụng của bạn
2.2.1 Nguyên lý hoạt động của Realtime Database
• Nguyên lý hoạt động của Realtime Database là dựa trên mô hình publish-subscribe (đăng ký và đăng báo) Khi bạn lưu trữ dữ liệu trong Realtime Database, dữ liệu được tổ chức theo dạng cây JSON Mỗi nút trong cây đại diện cho một đường dẫn trong cơ sở dữ liệu
• Khi có bất kỳ sự thay đổi nào trong cơ sở dữ liệu, như thêm, sửa đổi hoặc xóa dữ liệu, Realtime Database sẽ tự động thông báo và gửi cập nhật đến tất cả các thiết bị hoặc ứng dụng đã đăng ký lắng nghe (subscribe) đến nút dữ liệu tương ứng
• Các thiết bị và ứng dụng có thể lắng nghe các sự kiện cập nhật từ Realtime Database bằng cách sử dụng các API cung cấp bởi Firebase Khi nhận được thông báo về sự thay đổi, các thiết bị và ứng dụng có thể tự động cập nhật và hiển thị
dữ liệu mới nhất cho người dùng
• Mô hình publish-subscribe giúp Realtime Database đảm bảo tính thời gian thực trong việc đồng bộ dữ liệu Thay vì phải thực hiện các yêu cầu lấy dữ liệu liên tục để kiểm tra sự thay đổi, các thiết bị và ứng dụng chỉ cần đăng ký lắng nghe và sẽ nhận thông báo ngay lập tức khi có sự thay đổi xảy ra
• Điều này giúp cải thiện hiệu suất ứng dụng, giảm tải cho máy chủ và đảm bảo rằng người dùng luôn được cung cấp thông tin mới nhất mà không cần làm mới trang hoặc tương tác với ứng dụng
2.2.2 Mô hình Publish-Subscribe
Trang 8SVTH: 7
Trong mô hình publish subscribe (đăng ký và đăng báo) được
-sử dụng trong Realtime Database, có ba thành phần chính: nhà cung cấp (publisher) và người đăng ký (subscriber) và kênh (channels)
• Nhà cung cấp (publisher): Là entity (thực thể) hoặc ứng dụng có trách nhiệm gửi các thông báo cập nhật đến Realtime Database khi có sự thay đổi dữ liệu Khi có sự thay đổi, nhà cung cấp gửi thông điệp chứa dữ liệu mới đến Realtime Database
• Người đăng ký (subscriber): Là entit hoặc ứng dụng muốn y nhận thông báo về sự thay đổi dữ liệu Người đăng ký đăng
ký lắng nghe (subscribe) đến một hoặc nhiều nút dữ liệu trong Realtime Database mà họ quan tâm Khi có sự thay đổi tại các nút dữ liệu đã đăng ký, người đăng ký sẽ nhận được thông báo và có thể xử lý dữ liệu mới
• Kênh (channels): Các kênh hoạt động như các kênh liên lạc trong Cơ sở dữ liệu thời gian thực Chúng đại diện cho các đường dẫn hoặc vị trí dữ liệu cụ thể trong hệ thống phân cấp
cơ sở dữ liệu Nhà xuất bản xuất bản cập nhật dữ liệu cho các kênh cụ thể và người đăng ký đăng ký để nhận thông tin cập nhật từ các kênh đó
Mô hình pusblish-subscriber trong Realtime Database tuân theo quy trình làm việc cho phép cập nhật và thông báo dữ liệu theo thời gian thực Quy trình hoạt động của mô hình này:
1 Publishers: là entities hoặc ứng dụng thực hiện thay đổi dữ liệu và xuất bản chúng lên Realtime Database Họ có quyền ghi vào các đường dẫn hoặc vị trí dữ liệu cụ thể trong cơ sở dữ liệu
2 Subscriber: là entities hoặc ứng dụng muốn nhận các bản cập nhật theo thời gian thực từ Realtime Database Họ đăng ký các đường dẫn hoặc vị trí dữ liệu cụ thể và lắng nghe những thay đổi trong các đường dẫn đó
3 Channels: đại diện cho các đường dẫn hoặc vị trí dữ liệu cụ thể trong Realtime Database Mỗi kênh được liên kết với một tập hợp dữ liệu mà nhà xuất bản có thể cập nhật và người đăng ký có thể nhận được
4 Publishing Data: Khi publisher thực hiện thay đổi dữ liệu, publisher sẽ gửi yêu cầu cập nhật tới Realtime Data, chỉ định đường dẫn dữ liệu và giá trị mới Cơ sở dữ liệu nhận được bản cập nhật và xử lý nó
5 Event Triggering: Sau khi thay đổi dữ liệu được xử lý, Realtime Database
sẽ kích hoạt các sự kiện để thông báo cho tất cả những người đăng ký đã đăng ký các kênh tương ứng Những sự kiện này chứa thông tin về dữ liệu được cập nhật
Trang 9SVTH: 8
6 Data Propagation: Realtime Data gửi dữ liệu cập nhật tới các máy khách
đã đăng ký qua kết nối liên tục Điều này cho phép người đăng ký nhận được các bản cập nhật trong thời gian thực mà không cần phải bỏ phiếu thường xuyên hoặc làm mới thủ công
7 Subscribers Response: Subscribers nhận được các bản cập nhật và có thể
xử lý chúng dựa trên logic cụ thể của họ Họ có thể cập nhật giao diện người dùng, thực hiện tính toán, kích hoạt hành động hoặc thực hiện bất kỳ bước cần thiết nào khác dựa trên các thay đổi dữ liệu nhận được
8 Continous Listening: Subcribers duy trì kết nối tích cực với Realtime Database và tiếp tục nghe để cập nhật thêm Điều này đảm bảo rằng chúng luôn được đồng bộ hóa với cơ sở dữ liệu và nhận các bản cập nhật theo thời gian thực miễn là chúng vẫn được đăng ký
Mô hình publish-subscribe trong Realtime Database cho phép đồng bộ hóa real-time data hiệu quả và có thể mở rộng giữa publishers và subscribers Nó cho phép subscribers nhận các bản cập nhật đồng thời, đảm bảo rằng tất cả các máy khách đã đăng ký đều được thông báo kịp thời về những thay đổi dữ liệu trong Database
3 Ngôn ngữ lập trình C#
3.1 Khái niệm cơ bản
C# (C sharp) là một ngôn ngữ lập trình hiện đại và hướng đối tượng được phát triển bởi Microsoft Nó là một phần của NET Framework và được sử dụng phổ biến để phát triển các ứng dụng đa dạng, bao gồm phần mềm desktop, ứng dụng web, ứng dụng di động, dịch vụ dựa trên đám mây, phát triển game, …
3.2 Gửi dữ liệu từ C# Winform lên Firebase
Các bước cơ bản để thực hiện:
Bước 1: Cài đặt Firebase NET SDK thông qua NuGet Package Manager trong Visual Studio
Bước 2: Khởi tạo kết nối Firebase: Trước tiên, bạn cần khởi tạo kết nối tới dự án Firebase của mình bằng cách sử dụng thông tin cấu hình Firebase Code minh hoạ:
IfirebaseConfig config = new FirebaseConfig
Trang 10SVTH: 9
Bước 3: Gửi dữ liệu lên Firebase Realtime Database:
IFirebaseClient client = new FirebaseClient(config); SetResponse response = await client.SetAsync(dulieu); //dulieu là một class
3.3 Giao tiếp ESP32 với Firebase
Các bước cơ bản để thực hiện:
Bước 1: Thiết lập Cơ sở dữ liệu thời gian thực Firebase: Đảm bảo rằng bạn đã thiết lập và định cấu hình dự án Firebase với Cơ sở
dữ liệu thời gian thực Lưu ý URL cơ sở dữ liệu và thông tin đăng nhập xác thực
Bước 2: Định cấu hình ESP32 để kết nối Wi-Fi: Thiết lập thiết bị ESP32 để kết nối với mạng Wi-Fi của bạn Bạn sẽ cần cung cấp SSID và mật khẩu của mạng Wi-Fi của mình
Bước 3: Cài đặt Thư viện Arduino Firebase: Trong Arduino IDE, đi tới Phác thảo -> Bao gồm Thư viện > Quản lý Thư viện -Tìm kiếm "Firebase Arduino" và cài đặt thư viện của Cộng đồng Firebase
#include <WiFi.h>
#include <FirebaseESP32.h>
Bước 4: Thiết lập kết nối Firebase: Khởi tạo đối tượng FirebaseESP32 bằng thông tin đăng nhập Firebase và chi tiết Wi-Fi của bạn
#define FIREBASE_HOST "database-url"
#define FIREBASE_AUTH "authentication-token"
#define WIFI_SSID "wifi-ssid"
#define WIFI_PASSWORD "wifi-password"
FirebaseData firebaseData;
void setup() { Serial.begin(115200);
Trang 11SVTH: 10
Serial.println("Connected to Wi-Fi");
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); }
Bước 5: Lấy dữ liệu từ Firebase truyền về ESP32 Sử dụng
“Firebase.get” chức năng lấy dữ liệu của Firebase
void loop() {
if (Firebase.get(firebaseData, "/your- node/your value")) {
if (firebaseData.dataType() == "int") {
int value = firebaseData.intData();
// Do something with the retrieved value
}
}
delay(1000); // Delay between data retrievals
}
Bước 6: Đẩy dữ liệu từ ESP32 lên Firebase Sử dụng hàm “setInt”
Firebase.setInt (fbdb, "/your-node/your-value", variable);
III HỆ THỐNG ĐIỀU KHIỂN CỦA XE
1 Sơ đồ mạch điện
Trang 12SVTH: 11
Chức năng của các khối trong sơ đồ như sau :
- Khối động cơ: Dùng mạch cầu L298N, kết nối với Arduino thông qua 6 chân từ IN1 đến IN4 và ENA, ENB để điều khiển động cơ quay cùng/ngược chiều kim đồng hồ và thay đổi tốc độ của động
cơ
- Khối trung tâm xử lí chính: sử dụng ESP32, chịu trách nhiệm điều khiển cảm biến nhiệt độ, độ ẩm DHT11, cảm biến chất lượng không khí MQ135 và giao tiếp với Fire Base
2 Giao diện điều khiển
Trang 13SVTH: 12
3 Nguyên lý truyền nhận tín hiệu giữa ESP32 và Firebase
- Khởi tạo kết nối WiFi trên ESP32 để kết nối với mạng WiFi
- Khi ESP32 cần gửi dữ liệu lên Firebase, nó sẽ tạo một yêu cầu HTTP POST chứa các thông tin cần gửi lên
- ESP32 sử dụng thư viện `FirebaseESP32.h` để gửi yêu cầu HTTP POST đến Firebase thông qua địa chỉ `FIREBASE_HOST` và mã xác thực
- Khi ESP32 cần lấy dữ liệu từ Firebase, nó sẽ tạo một yêu cầu HTTP GET
để truy vấn dữ liệu từ Firebase
- ESP32 sử dụng thư viện `FirebaseESP32.h` để gửi yêu cầu HTTP GET đến Firebase thông qua địa chỉ `FIREBASE_HOST` và mã xác thực
Trang 14SVTH: 13
IV KẾT LUẬN
1 Hình ảnh thực tế của sản phẩm
Trang 15SVTH: 14
2 Nhận xét
- Qua quá trình tìm hiểu và bắt tay vào thiết kế sản phẩm,
nhóm em đã học hỏi được them nhiều kiến thức như:
• Cách thiết kế giao diện
• Có them kiến thức về C#
• Cách đưa dữ liệu đo được từ cảm biến lên firebase
• Cách sử dụng module L298 điều khiển động cơ
Trang 16SVTH: 15
- Về sản phẩm, sau khi hoàn thành, xe có thể di chuyển tiến, lùi, rẽ trái, phải, và dừng bất cứ lúc nào Tuy nhiên, vẫn còn một số hạn chế, như còn phụ thuộc vào đường truyền internet
- Ngoài ra, một số khó khăn của nhóm hiện nay, đó là chất lượng thiết bị
đo chưa được tốtnên kết quả đo có nhiều sai số
//Khai báo đia chỉ Firebase
#define FIREBASE_HOST "esp32 mit e4488 default rtdb.firebaseio.com/" - - -
-#define FIREBASE_AUTH "Gr17RjvPdw69luhFGpFXhofEJwJ4ZcNmfuxmLKfN"
//Khai báo database
FirebaseData fbdb;
//Khai báo host và pass c a wifi ủ
const char * HOSTWIFI = "BBLAB809" ;
const char * PASSWIFI = "codientu" ;
//Setup t c đ ố ộ độ ng cơ
const int lowSpeed = 100 ;
const int highSpeed = 200 ;
//Setup chân n i đ ng cơ ố ộ
#define IN1BUTTONDC1 27 // TRÁI