BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG
------------------------------
BÁO CÁO ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài: “Hệ
thống tư vấn hỗ trợ giám sát
khí thải CO2”
Giảng viên hướng dẫn :
Sinh viên thực hiện :
Mã số sinh viên
:
Lớp
:
Khoá
:
Hệ
: ĐẠI HỌC CHÍNH QUY
TP.HCM, tháng 12 năm 2019
LỜI CẢM ƠN
Trong thời gian làm đồ án tốt nghiệp, em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến
và chỉ bảo nhiệt tình của thầy cơ, gia đình và bạn bè.
Em xin gửi lời cảm ơn chân thành đến T.s Nguyễn Xuân Sâm, giảng viên khoa Công
Nghệ Thơng Tin của trường Học Viện Cơng Nghệ Bưu Chính Viễn Thơng Cơ Sở tại TP. Hồ
Chí Minh, người đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình làm đồ án tốt nghiệp.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường trường Học Viện Cơng
Nghệ Bưu Chính Viễn Thơng Cơ Sở tại TP. Hồ Chí Minh nói chung, các thầy cơ trong khoa
Cơng Nghệ Thơng Tin nói riêng đã dạy dỗ cho em kiến thức về các môn đại cương cũng như
các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ
em trong suốt quá trình học tập.
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã ln tạo điều kiện, quan
tâm, giúp đỡ, động viên em trong suốt quá trình học tập và hồn thành đồ án tốt nghiệp.
TP. Hồ Chí Minh, ngày 09 tháng 12 năm 2019
Sinh viên thực hiện
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN...............................................................................4
1.1 Giới thiệu....................................................................................................4
1.1.1 Hiện trạng...................................................................................................................4
1.1.2 Nguyên nhân..............................................................................................................4
1.1.3 Giải pháp....................................................................................................................4
1.2 Học máy (Machine learning).................................................................... 4
1.2 Học sâu (Deep learning)............................................................................5
1.3 Hồi quy tuyến tính (regression) trong ứng dụng thời gian thực khí
thải CO2............................................................................................................5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT...................................................................6
2.1 Module thu thập dữ liệu từ môi trường – Thiết bị IoT..........................7
2.2 Module tiếp nhận và lưu trữ.....................................................................7
2.3 Module đưa ra dự đốn.............................................................................8
2.3.1 Dữ liệu khí thải CO2..................................................................................................8
2.3.2 Hồi quy tuyến tính (Linear Regression).....................................................................9
2.3.3 Q trình xử lý.........................................................................................................10
2.3.4 Code thuật toán Regression bằng Javascript............................................................13
2.4 Module giao diện người dùng................................................................. 15
CHƯƠNG 3: NỘI DUNG THỰC HÀNH........................................................16
3.1 Tổ chức nơi lưu trữ dữ liệu.....................................................................16
3.1.1 Tạo tại khoản sử dụng dịch vụ.................................................................................16
3.1.2 Cấu hình lưu trữ dữ liệu...........................................................................................19
3.1.3 Lấy cấu hình realtime database để gọi dữ liệu từ máy chủ về web app...................22
3.1.4 Lấy cấu hình realtime database để thiết bị IoT gửi dữ liệu lên máy chủ.................23
3.2 Chuẩn bị hệ thu thập dữ liệu – Dùng Arduino để lấy dữ liệu thực.....25
3.2.1 Chuẩn bị phần cứng.................................................................................................25
3.2.2 Sơ đồ nối mạch........................................................................................................29
3.2.3 Cài đặt mơi trường lập trình nhúng..........................................................................29
3.2.4 Viết chương trình bằng C để lấy dữ liệu từ cảm biển..............................................31
3.3 Nhận dữ liệu từ đám mây và hiển thị cho người dùng......................... 35
3.3.1 Thiết lập môi trường web server..............................................................................35
3.3.2 Kiểm tra kết quả.......................................................................................................37
KẾT LUẬN.........................................................................................................39
DANH MỤC TÀI LIỆU THAM KHẢO..........................................................40
1
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌ
Hình 2 1 Tổng quan hệ thống.....................................................................................................6
Hình 2 2 Realtime Database.......................................................................................................7
Hình 2 3 Dữ liệu khí thải CO2 trên thế giới từ năm 1960 đến năm 2014...................................8
Hình 2 4 Dự đốn lượng khí thải CO2 năm 2030.......................................................................9
Hình 2 5 Cung lượng giác trong tốn học.................................................................................10
Hình 2 6 Vị trí đường thẳng phụ thuộc vào tung độ gốc..........................................................10
Hình 2 7 Lưu đồ tính giá trị a và b............................................................................................12
YHình 3 1 Tạo tài khoản Google..............................................................................................16
Hình 3 2 Truy cập firebase........................................................................................................16
Hình 3 3 Tạo dự án firebase......................................................................................................17
Hình 3 4 Đặt tên cho dự án.......................................................................................................17
Hình 3 5 Tùy chỉnh tạo dự án firebase......................................................................................18
Hình 3 6 Chọn vị trí và chấp nhận điều khoản sử dụng............................................................18
Hình 3 7 Tạo dự án thành cơng.................................................................................................19
Hình 3 8 Tạo database...............................................................................................................19
Hình 3 9 Chọn chế độ cho database..........................................................................................20
Hình 3 10 Chọn vị trí máy chủ database...................................................................................20
Hình 3 11 Sử dụng Realtime Database.....................................................................................21
Hình 3 12 Cấu trúc lưu dữ liệu.................................................................................................21
Hình 3 13 Lấy cấu hình realtime database cho web app...........................................................22
Hình 3 14 Đặt tên web app.......................................................................................................22
Hình 3 15 Nhận được cấu hình realtime database cho web app...............................................23
Hình 3 16 Lấy cấu hình realtime database cho thiết bị IoT......................................................23
Hình 3 17 Lấy được chuỗi secret cho thết bị IoT.....................................................................24
Hình 3 18 Điều chỉnh Rules của realtime database..................................................................24
Hình 3 19 Bộ Kit ESP8266.......................................................................................................25
Hình 3 20 Sơ đồ chân mạch ESP8266......................................................................................25
Hình 3 21 Cảm biến CCS811....................................................................................................27
Hình 3 22 Sơ đồ chân mạch CCS811........................................................................................27
Hình 3 23 Sơ đồ nối ESP8266 và CCS811...............................................................................29
Hình 3 24 Tải phần mềm Visual Studio Code..........................................................................29
Hình 3 25 Cài đặt phần hỗ trợ PlatformIO IDE........................................................................30
Hình 3 26 Giao diện PlatformIO IDE.......................................................................................30
Hình 3 27 Tạo dự án lập trình cho ESP8266............................................................................31
Hình 3 28 Cài đặt thư viện SparkFunCCS811..........................................................................31
Hình 3 29 Cài đặt thư viện FirebaseESP8266..........................................................................32
Hình 3 30 Nạp code cho ESP8266............................................................................................34
Hình 3 31 Xem dữ liệu thu được trên Realtime Database........................................................34
2
Hình 3 32 Cài đặt XAMPP.......................................................................................................35
Hình 3 33 Di chuyển vào thư mục htdocs.................................................................................35
Hình 3 34 Cấu hình file host.....................................................................................................35
Hình 3 35 Cấu hình file httpd-vhosts........................................................................................36
Hình 3 36 Kết quả hiển thị Monitor Realtime Data..................................................................37
Hình 3 37 Kết quả hiển thị Chart Data.....................................................................................37
Hình 3 38 Kết quả hiển thị đường hồi quy tuyến tính
Hình 3 39 Kết quả hiển thị giá trị dự đốn
MỞ ĐẦU
Ơ nhiễm có vai trị chính trong việc làm hỏng trái đất của chúng ta. Công nghiệp hóa
nhanh, đơ thị hóa nhanh, tăng trưởng nhanh dân số, tăng mạnh xe cộ trên đường và các hoạt
động khác của con người đã làm xáo trộn sự cân bằng của khơng khí tự nhiên. Nó thay đổi
chất lượng khí hậu và những thay đổi khí hậu được tạo ra bởi sự tích lũy khí nhà kính trong
khí quyển. Một trong những vấn đề môi trường lớn nhất đối với thế giới hiện nay là tồn cầu
sự nóng lên do phát thải khí nhà kính. Cabon dioxide (C02), một thành phần quan trọng của
môi trường đang gây ra hiệu ứng nóng lên trên bề mặt Trái đất. Để bảo vệ môi trường của
chúng ta, hãy theo dõi và kiểm soát chúng thay đổi là một thách thức lớn. Về mặt kiểm sốt
phạm vi khí thải CO2 tại nguồn sống là một mục tiêu cần thiết và phương pháp hiệu quả
thơng qua các cơng nghệ phịng ngừa và kiểm sốt. Mục tiêu chính của bài viết này là triển
khai IoT để đo lượng khí thải CO2 từ các phương tiện giao thông công cộng, công nghiệp và
cháy rừng bằng cảm biến nhạy cảm đến CO2. Qua đó có thể hình thành một hệ thống dự báo
lượng khỉ thải CO2 góp phần kiểm soát lượng CO2 ngày càng tăng cao hiện nay.
3
Báo cáo ĐATN Đại học
Chương 1: Tổng quan
CHƯƠNG 1: TỔNG QUAN
1.1 Giới thiệu
1.1.1 Hiện trạng
Cuộc sống và sức khỏe của tất cả các sinh vật có liên quan đến điều kiện khí hậu
thịnh hành. Khí hậu ấm lên sẽ thay đổi có thể ảnh hưởng đến cuộc sống chúng ta bới hệ
thống sản xuất nông nghiệp, điện và hệ thống giao thơng. Thậm chí ảnh hưởng đến sức
khỏe và an toàn của chúng ta. Những thay đổi nhất định đối với khí hậu là khơng thể
tránh khỏi xáo trộn có xu hướng làm giảm đa dạng sinh học. Ô nhiễm là những thứ không
mong muốn, ô nhiễm môi trường và nó dẫn đến sự mất cân bằng lớn và đe dọa chu kỳ
sinh thái bình thường. Chất lượng khơng khí kém khiến nhiều người gặp vấn đề về hô
hấp như hen suyễn và viêm phế quản, tăng cường nguy cơ của các điều kiện đe dọa tính
mạng với chi phí y tế đáng kể. Những thay đổi ngay lập tức mà thế giới đang chứng kiến
là sự nóng lên tồn cầu. Với sự gia tăng nhiệt độ trên toàn thế giới, tăng dần mực nước
biển và băng tan từ các vùng lạnh hơn và tảng băng trôi, di dời và mất môi trường sống
của nhiều động vật đã báo hiệu một thảm họa.
1.1.2 Nguyên nhân
Khí thải nguyên lý từ xe cơ giới là một trong nguyên nhân góp phần thay đổi khí hậu.
Trong xe, khí nhà kính chính là carbon điơxít (CO2). Mức thải CO2 của xe được liên kết
với lượng nhiên liệu tiêu thụ và loại nhiên liệu đã sử dụng. Chính vì vậy khi mà số lượng
phương tiện giao thông càng nhiều, đồng nghĩa với lượng tiêu thụ ngun liệu càng lớn
thì lượng khí thải CO2 sinh ra càng nhiều, gây ảnh hưởng đến chất lượng khơng khí của
Trái Đất.
Khí thải CO2 được sản xuất từ nhiều ngành công nghiệp, các hoạt động không liên
quan đến năng lượng. Chính nguồn phát thải là q trình cơng nghiệp hóa một nền kinh tế
biến đổi hóa học hoặc vật lý ngun vật liệu. Trong các q trình này, nhiều khí nhà kính
khác nhau, bao gồm CO2, CH4, N2O, và CFC có thể được thải ra ngồi.
1.1.3 Giải pháp
Ta cần một hệ thống để hỗ trợ, giám sát lượng khí CO2. Hệ thống này có tính năng
giám sát lượng khí CO2 thay đổi theo thời gian thực. Đồng thời sẽ giúp chúng ta dự báo
lượng khí CO2 trong tương lai.
1.2 Học máy (Machine learning)
Machine learning theo định nghĩa cơ bản là ứng dụng các thuật tốn để phân tích cú pháp
dữ liệu, học hỏi từ nó, và sau đó thực hiện một quyết định hoặc dự đoán về các vấn đề có liên
quan. Vì vậy, thay vì code phần mềm bằng cách thức thủ công với một bộ hướng dẫn cụ thể
để hoàn thành một nhiệm vụ cụ thể, máy được “đào tạo” bằng cách sử dụng một lượng lớn dữ
liệu và các thuật tốn cho phép nó học cách thực hiện các tác vụ.
Machine learning bắt nguồn từ các định nghĩa về AI ban đầu, và các phương pháp tiếp
cận thuật toán qua nhiều năm bao gồm:logic programming, clustering, reinforcement learning,
and Bayesian networks. Như chúng ta đã biết, không ai đạt được mục tiêu cuối cùng của
General AI, và thậm chí cả Narrow AI hầu hết là ngồi tầm với những phương pháp tiếp cận
Machine learning sơ khai.
4
Báo cáo ĐATN Đại học
Chương 1: Tổng quan
Một trong những lĩnh vực ứng dụng tốt nhất cho Machine learning trong nhiều năm qua
là computer vision, mặc dù nó vẫn địi hỏi rất nhiều kỹ năng code thủ cơng để có thể hồn
thành cơng việc. Mọi người vẫn sẽ viết các lớp phân loại bằng tay như các bộ lọc để chương
trình có thể xác định nơi mà một đối tượng bắt đầu và kết thúc. Phát hiện hình dạng để xác
định nếu nó có tám mặt. Một phân loại để nhận dạng các chữ cái “S-T-O-P”. Từ tất cả những
ứng dụng phân loại, họ sẽ phát triển các thuật toán để làm cho hình ảnh và “học” khả năng
nhận diện dấu hiệu liệu nó có phải là kí hiệu stop hay không.
1.2 Học sâu (Deep learning)
Trong những năm gần đây, học sâu đã trở thành một phương pháp quan trọng trong nhiều
lĩnh vực tin học như nhận dạng tầm nhìn, xử lý ngôn ngữ tự nhiên và tin sinh học. Học sâu
cũng là một cơng cụ phân tích mạnh mẽ cho khối lượng dữ liệu khổng lồ. Trong Internet of
Things (IoT), một vấn đề mở là làm thế nào để khai thác dữ liệu IoT trong thế giới thực một
cách đáng tin cậy từ một môi trường ồn ào và phức tạp gây nhầm lẫn các kỹ thuật học máy
thông thường. Học sâu được coi là phương pháp hứa hẹn nhất để giải quyết vấn đề này. Học
sâu đã được đưa vào nhiều nhiệm vụ liên quan đến IoT và ứng dụng di động với những kết
quả ban đầu đáng khích lệ. Ví dụ, học sâu có thể dự đốn chính xác mức tiêu thụ điện năng
trong nhà với dữ liệu được thu thập bằng đồng hồ thơng minh, có thể cải thiện việc cung cấp
điện của lưới điện thông minh. Do tính hiệu quả cao trong việc nghiên cứu dữ liệu phức tạp,
học sâu sẽ đóng vai trị rất quan trọng trong các dịch vụ IoT trong tương lai.
Học sâu đang trở thành một công nghệ mới nổi cho các ứng dụng và hệ thống IoT. Lợi
ích quan trọng nhất của học sâu so với học máy là hiệu năng tốt hơn với quy mô dữ liệu lớn
do nhiều ứng dụng IoT tạo ra một lượng lớn dữ liệu để xử lý. Một lợi ích khác là học sâu có
thể tự động trích xuất các tính năng mới cho các vấn đề khác nhau. Trong xử lý thông tin đa
phương tiện, hiệu suất của máy học truyền thống phụ thuộc vào độ chính xác của các tính
năng được xác định và trích xuất. Vì nó có thể học chính xác các tính năng cấp cao như khn
mặt người trong hình ảnh và từ ngữ trong giọng nói, học sâu có thể cải thiện hiệu quả xử lý
thơng tin đa phương tiện. Trong khi đó, học sâu mất ít thời gian hơn để suy luận thông tin so
với các phương pháp học máy truyền thống.
1.3 Hồi quy tuyến tính (regression) trong ứng dụng thời gian thực khí thải CO2
Internet of Thing (IoT) đang rất phát triển, sự kết nối của thiết bị nhúng với điện tốn
trong Internet có cơ sở hạ tầng cho phép thiết bị trực tiếp đến thiết bị thông tin liên lạc. IoT
liên quan đến việc kết nối thiết bị vật lý với Internet. Hệ thống bao gồm các nút cảm biến, lõi
xử lý và giao diện người dùng. Hệ thống này chủ yếu được triển khai tại thành phố để theo
dõi và kiểm soát carbon nồng độ dioxide (CO2) gây ra bởi khí thải xe cộ và đơ thị hóa, cũng
giám sát điều kiện mơi trường để giảm tốc độ phát thải CO2.
Bài toán đặt ra, nếu như chúng ta có dữ liệu lượng khí thải CO2 hằng năm, thì liệu rằng
có thể dự đốn trước được lượng khí thải CO2 trong 1 hay nhiều năm tới? Hồi quy tuyến tính
(regression) sẽ giúp ta trả lời câu hỏi này.
5
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Thiết kế được đề xuất bên trên rơi vào khuôn khổ của IoT. Các khuôn khổ của IoT, được
xem như như một mối liên kết giữa thế giới vật chất như đồ vật và thế giới xã hội cùng với
chính nó để tạo thành một hệ thống thơng minh. Các q trình của hệ thống phát thải CO2
giám sát bao gồm 4 module chính:
Hình 2 1 Tổng quan hệ thống
(1) Module thu thập dữ liệu từ môi trường – Điều kiện tiên quyết để hệ thu thập
dữ liệu hình thành. Đây là nơi tiếp nhận mọi sự thay đổi từ mơi trường, mã hóa dưới dạng
tốn học, từ đó đảm bảo đầu ra là những con số cụ thể. Thiết bị thu thập dữ liệu có thể là
một hoặc nhiều cảm biến (Sensor). Bởi vì những thiết bị này có thể truyền tải dữ liệu nên
có thể nói rằng đây là một thiết bị IoT.
(2) Module lưu trữ dữ liệu thu thập được –Tại đây, mỗi khi có sự thay đổi dữ liệu
thì lập tức gửi mẫu dữ liệu mới nhất đến phía người dùng (Hệ thống thời gian thực).
Đồng thời tất cả dữ liệu thu thập được sẽ được lưu trữ đầy đủ.
(3) Module đưa ra dự đoán – Phần lõi của hệ thống hỗ trợ quyết định. Module này
nhận dữ liệu từ nơi lưu trữ dữ liệu, thơng qua các thuật tốn, các dữ liệu thu thập được ở
dạng thô trở thành những dự đốn có giá trị cụ thể và phục vụ cho một số vấn đề như
thực hiện một hành động định nghĩa trước, dự đoán, dự báo dữ liệu.
(4) Module giao diện người dùng – Module này biểu diễn kết quả của hệ thống
thông qua các ứng dụng (PC - Moblie - Web). Trong đó thơng tin phản hồi và kết quả
đánh giá hình thành q trình kiểm sốt.
6
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
2.1 Module thu thập dữ liệu từ môi trường – Thiết bị IoT
Lớp thấp nhất trong hệ thống. Lớp này đã được giao tiếp trực tiếp với môi trường vật lý,
bao gồm 2 thành phần sau:
- CCS811 Giao tiếp trực tiếp với mơi trường, nhận tín hiệu CO2 dưới dạng tín hiệu
(signal) sau đó gửi đến bộ xử lý ESP8266.
- ESP8266 Đóng nhận tín hiệu từ cảm biến, tiến hành chuyển đổi sang dạng kỹ thuật
số, sau đó gửi dữ liệu đến nơi lưu trữ dữ liệu.
Ta sẽ tìm hiểu kỹ hơn về 2 thiết bị này trong phần sau.
2.2 Module tiếp nhận và lưu trữ
Mỗi khi có dữ liệu được gửi từ thiết bị IoT, thì module này sẽ lưu lại giá trị được gửi tới.
Được tổ chức và sắp xếp lưu trữ một các phù hợp để quá trình lấy, xử lý dữ liệu của những
module dễ dàng hơn. Một điều cần chú ý khi lưu trữ dữ liệu. Đó chính là nguồn dữ liệu khổng
lồ từ các thiết bị IoT gửi đến. Cần đáp ứng khả năng lưu trữ tương đối để đảm bảo nguồn dữ
liệu.
Trong bài này, tôi sẽ giới thiệu Realtime Database của Firebase Google - Lưu trữ và
đồng bộ dữ liệu người dùng thời gian thực, các ứng dụng hỗ trợ tính năng này có thể lưu trữ
và lấy dữ liệu từ máy chủ trong tích tắc. Các dữ liệu được lưu trữ trong hệ thống cơ sở dữ liệu
hỗ trợ NoSQL và được đặt trên nền tảng máy chủ Cloud, dữ liệu được ghi và đọc với thời
gian thấp nhất tính bằng mili giây. Nền tảng này hỗ trợ đồng bộ hóa dữ liệu của người dùng
kể cả khi khơng có kết nối mạng, tạo nên trải nghiệm xuyên suốt bất chấp tình trạng kết nối
internet của người sử dụng.
Hình 2 2 Realtime Database
Quay trở lại vế hệ thống của hệ thống của ta, bao gồm 2 chức năng chính là giám sát và
hỗ trợ tư vấn, ta sẽ phân chia làm 2 mục nhỏ sau:
- Giám sát: Yêu cầu đặt ra của hệ thống chính là ta có thể nhìn thấy sự thay đổi dữ
liệu được gửi về trong tích tắc. Thật thú vị khi mà Realtime Database có thể đáp ứng tốt
điều này, mỗi khi dữ liệu trong hệ thống lưu trữ thay đổi, thì ngay lập tức Realtime
Database gửi ngay tín hiệu về tồn bộ client có liên kết đến Realtime Database. Tận dụng
được tính năng này, mỗi khi cảm biến CSS811 nhận dữ liệu, sẽ truyền tải đến bộ xử lý
7
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
ESP8266, tiếp tục gửi đến Realtime Database. Tại đây vì có sự thay đổi dữ liệu nên
Realtime Database sẽ gửi tín hiệu đến các client. Thơng qua đó tất cả các Client sẽ lấy
được dữ liệu mới nhất từ Realtime Database gần như ngay lập tức (cần đảm bảo kết nối
internet liên tục). Nếu như kết nối của client không đảm bảo, thì sẽ khơng ảnh hưởng
nhiều bởi vì khi được kết nối lại, dữ liệu sẽ được đồng bộ hóa với máy chủ ngay lập
tức.
- Hỗ trợ tư vấn: Muốn hệ thống tư vấn được phát huy tác dụng, đòi hỏi phải có nguồn
dữ liệu đủ lớn. Dữ liệu càng lớn, thì khả năng dự đốn càng gần đến ngưỡng chính xác
hơn. Realtime Database hỗ trợ rất tốt về vấn đề này. Realtime Database hệ thống cơ sở dữ
liệu NoSQL cho nhiều tối ưu về tốc độ khi truyền đi lượng dữ liệu lớn, đảm bảo được độ
trễ không quá lớn đối với nguồn dữ liệu khổng lồ từ các thiết bị IoT lấy về được.
Tiếp theo, tâ sẽ đến phần quan trọng nhất, module đưa ra dự đoán.
2.3 Module đưa ra dự đốn
2.3.1 Dữ liệu khí thải CO2
Trong phần này, ta sẽ sử dụng dữ liệu khí thải CO2 từ trang WorldBank ghi nhận dữ
liệu khí thải trên thế giới từ năm 1960 đến 2014.
Hình 2 3 Dữ liệu khí thải CO2 trên thế giới từ năm 1960 đến năm 2014
Trên trục x tương ứng với năm (giả sử năm 0 là 1960) và trên trục y tương ứng với
lượng phát thải CO2. Dựa trên biểu đồ, ta có thể ước tính sơ bộ giá trị của năm 2030 là
bao nhiêu.
8
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
Một điều nên nhớ là ta khơng thể dự đốn chính xác tương lai. Mọi thứ có thể thay
đổi, nhưng để dễ hiểu, ta chỉ cho rằng tốc độ thay đổi khơng đổi.
Hình 2 4 Dự đốn lượng khí thải CO2 năm 2030
Để tìm hiểu tại sao ta có thể dự đốn được như vậy, thì xem tiếp phần dưới đây.
2.3.2 Hồi quy tuyến tính (Linear Regression)
Quay lại với kiến thức toán học, đường thẳng màu xanh được biểu diễn dưới dạng
phương trình sau:
Theo hình ta thấy trục x là năm và trục y chính là lượng khí thải CO2
Ta cũng có thể gán dễ hiểu như sau:
Khí thải CO2 = a × năm + b
Để có giá trị như hình trên, ta sẽ thay thế a = 446,334 và b = 9,297,274
Bài tốn đặt ra dự đốn lượng khí thải CO2 trong năm
Và bây giờ chúng ta sẽ tìm hiểu về a và b
Theo kiến thức tốn học, thì a được gọi là hệ số góc có giá trị từ (-1;1) và b chính là
tung độ gốc
9
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
Hình 2 5 Cung lượng giác trong tốn học
Hình 2 6 Vị trí đường thẳng phụ thuộc vào tung độ gốc
2.3.3 Q trình xử lý
Với a và b thì ta có thể kiểm soát đường thẳng sao cho phù hợp nhất với dữ liệu của
chúng ta. Chính vì vậy câu hỏi đặt ra là làm sao để tìm được a và b ?
10
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
Hình 2.4 chính là ví dụ về đường hồi quy tuyến tính. Qua đó ta rút ra được đường hồi
quy xấp xỉ các điểm giá trị lượng khí thải CO2. Đường hồi quy được tính được từ các
thống kê của (1) giá trị trung bình của x, (2) độ lệch chuẩn (standard deviatio - SD) của x,
(3) giá trị trung bình của y, (4) độ lệch chuẩn (standard deviatio - SD) của y, (5) tương
quan giữa x và y.
Giả sử số năm khảo sát là là và có
Tương ứng lượng khí thải CO2 thu thập được theo năm là và có mẫu
Các tính tốn được tổ chức như sau.
(1) Giá trị trung bình của x:
Phương sai (variance) của x đặt là:
(2) SD của x là :
(3) Giá trị trung bình của y:
Phương sai (variance) của y đặt là:
(4) SD của x là :
(5) Hệ số tương quan là :
Giả sử và
Hệ số tương quan có giá trị thường được viết là
Đường hồi quy của y trên x đi qua điểm trung bình .
Độ dốc (slope) chính là : . Giao tuyến sẽ là sẽ là
Đặt và
Kết quả sẽ được sẽ là phương trình hồi quy tuyến tính :
Nếu ta sử dụng phương trình bậc nhất thì để dự báo giá trị y từ x cho trước, thì sao
số tại dữ liệu thứ là trong đó là giá trị thực.
Sai số bình phương trung bình:
Để mơ hình hồi quy có thể dự báo chính xác phụ thuộc vào
Đây là định lượng dễ dàng tính được cho một mẫu cụ thể và phụ thuộc mẫu, nên giá
trị này càng tiến về 0 thì độ chính xác càng cao. Mặc nhiên, số lượng mẫu càng lớn thì
giá trị càng chính xác.
11
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
Lưu đồ tính giá trị và
Hình 2 7 Lưu đồ tính giá trị a và b
12
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
2.3.4 Code thuật toán Regression bằng Javascript
function _linear(data, decimalPlaces) {
var sum = [0, 0, 0, 0, 0], n = 0, results = [], N = data.length;
for (; n < data.length; n++) {
if (data[n]['x'] != null) {
data[n][0] = data[n].x;
data[n][1] = data[n].y;
}
if (data[n][1] != null) {
sum[0] += data[n][0]; //Σ(X)
sum[1] += data[n][1]; //Σ(Y)
sum[2] += data[n][0] * data[n][0]; //Σ(X^2)
sum[3] += data[n][0] * data[n][1]; //Σ(XY)
sum[4] += data[n][1] * data[n][1]; //Σ(Y^2)
} else {
N -= 1;
}
}
var gradient = (N * sum[3] - sum[0] * sum[1]) / (N * sum[2] sum[0] * sum[0]);
var intercept = (sum[1] / N) - (gradient * sum[0]) / N;
for (var i = 0, len = data.length; i < len; i++) {
var coorY = data[i][0] * gradient + intercept;
if (decimalPlaces)
coorY = parseFloat(coorY.toFixed(decimalPlaces));
var coordinate = [data[i][0], coorY];
results.push(coordinate);
}
results.sort(function (a, b) {
if (a[0] > b[0]) {
return 1;
}
if (a[0] < b[0]) {
return -1;
}
return 0;
});
var string = 'y = ' + Math.round(gradient * 100) / 100 + 'x + ' +
Math.round(intercept * 100) / 100;
return {equation: [gradient, intercept], points: results, string:
string};
}
-
Bắt đầu hàm, tham số truyền vào:
+
“data” là một mảng dữ liệu đầu vào có dạng là
+
“decimalPlaces” độ dài số thập phân để làm tròn giá trị.
-
Khởi tạo 1 mảng “sum” gồm 5 phần tử để lưu các giá trị cần thiết.
-
Biến “n” có giá trị bằng 0.
-
Một mảng “results” rỗng để lưu kết quả trả về.
-
Biến “N” là độ dài của mảng dữ liệu “data”.
- Chạy vòng lặp, bắt đầu từ n đến N, mỗi lần tăng biến n lên 1 giá trị đến khi n = N thì
thốt khỏi vòng lặp để:
13
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
+ Nếu phẩn tử thứ n trong mảng “data” – thuộc tính “x” khác null thì lưu giá trị x
và y theo dạng mảng: để mục đích sau vịng lặp này giá trị của mảng “data” sẽ là .
+ Ngay sau gán giá trị thành công, nếu giá trị y của phần tử thứ n trong mảng
“data” khác null thì:
∙
Cập nhật tổng của giá trị trong mảng “data” lưu vào phần tử 0 của mảng
“sum”.
∙
Cập nhật tổng của giá trị trong mảng “data” lưu vào phần tử 1 của mảng
“sum”.
∙
Cập nhật tổng của giá trị trong mảng “data” lưu vào phần tử 2 của mảng
“sum”.
∙
Cập nhật tổng của giá trị trong mảng “data” lưu vào phần tử 3 của mảng
“sum”.
∙
Cập nhật tổng của giá trị trong mảng “data” lưu vào phần tử 4 của mảng
“sum”.
-
Tính độ dốc, hệ số góc
Khởi tạo biến gradient = (N * sum[3] - sum[0] * sum[1]) / (N * sum[2] - sum[0]
* sum[0])
Tương đương với
-
Tính giao tuyến
Khởi tạo biến intercept = (sum[1] / N) - (gradient * sum[0]) / N
Tương đương với:
- Sau khi có hệ số góc(gradient) và tung độ gốc (intercept) tiến hành chạy vịng lặp để
tính lại các giá trị của theo phương trình .
- Chạy vịng lặp từ i = 0 đến độ dài mảng “data”, mỗi lần i tăng 1 đơn vị cho đến khi i
bằng độ dài của mảng “data” thì thốt khỏi vịng lặp.
+ Tạo giá trị y sẽ bằng hệ số góc nhân với giá trị x tại phần tử thứ i cộng với tung độ
gốc .
+
Chuẩn hóa giá trị thập phân cho (Nếu biến “decimalPlaces” có giá trị).
+
Lưu vào mảng kết quả “results”.
-
Sắp xếp lại mảng kết quả “results” theo thứ tự tăng dần.
-
Tạo biến “string” là chuỗi phương trình
-
Kết thúc hàm trả về giá trị của “gradient”, “intercept”, “results”, “string”.
14
Báo cáo ĐATN Đại học
Chương 2: Cơ sở lý thuyết
2.4 Module giao diện người dùng
Module này biểu diễn kết quả của hệ thống thông qua các ứng dụng (PC - Moblie - Web).
Trong đó thơng tin phản hồi và kết quả đánh giá hình thành q trình kiểm sốt.
Vì điều kiện thời gian không cho phép, nên trong bài này chỉ hướng đến ứng dụng Web.
Về cơ bản, ta sẽ chia làm 2 chức năng hiển thị. Đó là giám sát thời gian thực và hiển thị kết
quả dự đoán. Ở đây tôi sử dụng ngôn ngữ PHP và khung Laravel để tạo ứng dụng Web. Và
phần lõi để giám sát, hỗ trợ dự đoán, giám sát sẽ thực hiện bằng ngôn ngữ Javasript.
Chi tiết về nội dung thực hiện sẽ được trình bày ở chương sau.
15
Báo cáo ĐATN Đại học
Chương 3: Nội dung thực hành
CHƯƠNG 3: NỘI DUNG THỰC HÀNH
3.1 Tổ chức nơi lưu trữ dữ liệu
Trong bài này sẽ hướng dẫn tổ chức lưu trữ dữ liệu bằng dịch vụ Google Firebase.
3.1.1 Tạo tại khoản sử dụng dịch vụ
-
Tạo 1 tài khoản google tại địa chỉ />
Hình 3 1 Tạo tài khoản Google
- Sau khi tạo thành công, dùng tài khoản này đăng nhập google firebase theo địa chỉ
/>
Hình 3 2 Truy cập firebase
16
Báo cáo ĐATN Đại học
-
Chương 3: Nội dung thực hành
Nhấn vào nút Create a project để tạo một dự án mới
Hình 3 3 Tạo dự án firebase
-
Đặt tên cho dự án và nhấn Continue
Hình 3 4 Đặt tên cho dự án
17
Báo cáo ĐATN Đại học
-
Chương 3: Nội dung thực hành
Nhấn Continue để tiếp tục tạo dự án
Hình 3 5 Tùy chỉnh tạo dự án firebase
- Chọn thông tin Location và Chấp nhận điều khoản dịch vụ của google sau đó nhấn
Create a project
Hình 3 6 Chọn vị trí và chấp nhận điều khoản sử dụng
18
Báo cáo ĐATN Đại học
-
Chương 3: Nội dung thực hành
Màn hình sau khi tạo dự án google firebase thành cơng và nhấn nút Continue
Hình 3 7 Tạo dự án thành cơng
3.1.2 Cấu hình lưu trữ dữ liệu
- Nhấn vào mục Database phía bên phải sau đó nhấn nút Create database để bắt đầu
tạo Database
Hình 3 8 Tạo database
19
Báo cáo ĐATN Đại học
Chương 3: Nội dung thực hành
- Chọn chế độ cấu hình điều khiển database: Production mode (Chỉ cho phép đọc dữ
liệu) và Test mode (Cho phép đọc và ghi dữ liệu). Mục này ta có thể tùy chỉnh sau.
Hình 3 9 Chọn chế độ cho database
-
Chọn vị trí máy chủ của database
Hình 3 10 Chọn vị trí máy chủ database
20
Báo cáo ĐATN Đại học
Chương 3: Nội dung thực hành
- Sau khi tạo xong, mặc định google firebase sẽ tạo cho ta 2 database Cloud Firestore
và Realtime Database, ta sẽ chuyển sang sử dụng Realtime Database
Hình 3 11 Sử dụng Realtime Database
- Tổ chức dữ liệu database của hệ thống giám sát và phân tích dữ liệu sẽ có dạng là
một chuỗi json data trong đó gồm nhiều chuỗi json nhỏ tương ứng với key phân biệt. Bên
trong chuỗi json nhỏ lưu theo kiểu mảng để có thể tối ưu tốc độ khi truy vấn dữ liệu lớn
về sau.
xxx (key-json){
0: timestamp,
1: value_co2,
2: value_tvoc,
3: value_temperature,
4: value_resistance
}
Hình 3 12 Cấu trúc lưu dữ liệu
21
Báo cáo ĐATN Đại học
Chương 3: Nội dung thực hành
3.1.3 Lấy cấu hình realtime database để gọi dữ liệu từ máy chủ về web app
-
Vào mục Project settings sau đó nhấn nút Add app
Hình 3 13 Lấy cấu hình realtime database cho web app
-
Đặt tên cho ứng dụng sau đó nhấn nút Register app
Hình 3 14 Đặt tên web app
22
Báo cáo ĐATN Đại học
-
Chương 3: Nội dung thực hành
Ta sẽ nhận được cấu hình google firebase dùng trên web client
Hình 3 15 Nhận được cấu hình realtime database cho web app
3.1.4 Lấy cấu hình realtime database để thiết bị IoT gửi dữ liệu lên máy chủ
-
Ở màn hình Setting tiếp tục nhấn Service accounts
Hình 3 16 Lấy cấu hình realtime database cho thiết bị IoT
23