Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.23 MB, 22 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b> </b>
<b>Giáo viên hướng dẫn: TS. Trương Cơng TuấnSinh viên thực hiện: </b>
<b>Hồng Cơng Phát - 20205390 Nguyễn Quang Vinh - 20205473Đàm Huy Việt – 20205468Nguyễn Thế Việt - 20205471</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>SVTH: ... 1 </b>
MỤC LỤC <b>I. TỔNG QUAN VỀ ĐỀ TÀI ... 2 </b>
1. Đ<small>ẶT VẤN ĐỀ</small>... 2
2. M<small>ỤC TIÊU</small>... 2
<b>II. CÁC THÀNH PHẦN CƠ BẢN CỦA XE ĐIỀU KHIỂN ... 3 </b>
1. C<small>ÁC THIẾT BỊ SỬ DỤNG</small>... 3
2. G<small>IỚI THIỆU VỀ FIRE BASE... 5 </small>
<i>2.1 Khái niệm về Fire Base ... 5 </i>
<i>2.2 Một số tính năng nổi bật của Firebase ... 5</i>
3. N<small>GƠN NGỮ LẬP TRÌNH C#... 8 </small>
<i>3.1 Khái niệm cơ bản ... 8</i>
<i>3.2 Gửi dữ liệu từ C# Winform lên Firebase ... 8 </i>
<i>3.3 Giao tiếp ESP32 với Firebase ... 9 </i>
<b>III. HỆ THỐNG ĐIỀU KHIỂN CỦA XE ... 10 </b>
1. S<small>Ơ ĐỒ MẠCH ĐIỆN</small>...10
2. G<small>IAO DIỆN ĐIỀU KHIỂN</small>... 11
3. N<small>GUYÊN LÝ TRUYỀN NHẬN TÍN HIỆU GIỮA </small>ESP32 VÀ FIREBASE... 12
1. C<small>ODE LẬP TRÌNH ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI</small>... 15
2. C<small>ODE LẬP TRÌNH THIẾT KẾ GIAO DIỆN</small>... 18
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>SVTH: ... 2 </b>
<b>TÓM TẮT NỘI DUNG BÀI TẬP LỚN </b>
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
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>SVTH: ... 3 </b>
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:
1. Các thiết bị sử dụng
SoC
• Bộ nhớ: Flash ROM 4MB. • RAM: Từ 520KB. • Wi-Fi: Chuẩn Wi Fi 802.11 -
b/g/n 2.4GHz, hỗ trợ chế độ Access Point (AP) và Station (STA).
• 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ã hố 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.
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>SVTH: ... 4 </b>
• Kích thước: Tùy thuộc vào phiên bản, nhưng thông thường là khoảng 26mm x 18mm. 2. Mạch điều khiển
động cơ L298N <sup>• Điện áp điều khiển: từ 5V đến </sup>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 độ động cơ.
• Chức năng bảo vệ q nhiệt và q dịng.
• Chế độ làm việc: chế độ điện áp cao (high voltage) hoặc chế độ PWM (Pulse Width Modulation). 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 nhất:0-
100% RH; sai số:2-5%. • Phạm vi đo nhiệt độ tốt nhất:-
40 ~ 80 ; sai số ±0.5°C. • Độ phân giải hoặc độ nhạy
0,1% RH; nhiệt độ 0,1 độ C. • Thời gian cảm biến trung bình:
2 giây. 4. Module cảm biến
chất lượng khơng khí MQ135
• Đ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Ω.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>SVTH: ... 5 </b>
• Đ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. 5. Màn hình hiển thị
LCD 16x2 <sup>• Số cột: 16 </sup>• Số dịng: 2
• Điện áp hoạt động: 5V DC • Kiểu hiển thị: LCD (Liquid
Crystal Display)
• Giao diện: Parallel (Song song) • Độ phân giải: 16x2 ký tự • Số chân kết nối: 16 chân • Đèn nền: Có thể điều chỉnh độ
sáng
• 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.
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>SVTH: ... 6 </b>
• 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 tố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 tồ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
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b>SVTH: ... 7 </b>
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.
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>SVTH: ... 8 </b>
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 tố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ạ:
<i>IfirebaseConfig config = new FirebaseConfig { </i>
<i> AuthSecret = "YOUR_AUTH_SECRET", BasePath = "YOUR_FIREBASE_URL" }; </i>
<i>var firebaseClient = new FirebaseClient(firebaseConfig); </i>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>SVTH: ... 9 </b>
Bước 3: Gửi dữ liệu lên Firebase Realtime Database:
<i>IFirebaseClient client = new FirebaseClient(config); SetResponse response = await client.SetAsync(dulieu); //dulieu là một class </i>
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.
<i>#include <WiFi.h> </i>
<i>#include <FirebaseESP32.h> </i>
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.
<i>#define FIREBASE_HOST "database-url" #define FIREBASE_AUTH "authentication-token" #define WIFI_SSID "wifi-ssid" </i>
<i>#define WIFI_PASSWORD "wifi-password" FirebaseData firebaseData; </i>
<i>void setup() { </i>
<i> Serial.begin(115200); </i>
<i> WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); </i>
<i> Serial.print("."); } </i>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><b>SVTH: ... 10 </b>
<i> Serial.println("Connected to Wi-Fi"); </i>
<i> Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); } </i>
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
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>SVTH: ... 11 </b>
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
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>SVTH: ... 12 </b>
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 `FIREBASE_AUTH`.
- Firebase nhận yêu cầu HTTP POST từ ESP32, xác thực yêu cầu bằng mã xác thực.
- Sau khi xác thực thành công, Firebase lưu trữ dữ liệu nhận được từ ESP32 vào cơ sở dữ liệu tương ứng.
- 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 `FIREBASE_AUTH`.
- Firebase nhận yêu cầu HTTP GET từ ESP32, xác thực yêu cầu bằng mã xác thực.
- Sau khi xác thực thành công, Firebase truy vấn dữ liệu từ cơ sở dữ liệu tương ứng và gửi lại dữ liệu được yêu cầu đến ESP32.
- ESP32 nhận dữ liệu từ Firebase thông qua yêu cầu HTTP GET và sử dụng nó vào các hoạt động hoặc tác động lên robot hoặc hiển thị lên màn hình LCD.
</div>