1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA TIN 1 CÔNG NGHỆ THÔNG
_____________ o0o ____________
IOT VÀ NG D NG
Đ tài: H th ng theo dõi s c kh e
Ging viên hưng dn : Nguyn Quc Uy
H và tên sinh viên : Nguyn Qu c D ương
sinh viên : B22DCCN167
2
NỘI, 08/2025
LỜI CẢM ƠN
Em xin gi li cm ơn sâu sc đến thy Nguyn Quc Uy, ging
viên môn IoT và ng dng lớp 15, đã tn tình truyn đt kiến thc và
đnh hướng trong sut quá trình hc tp. Nhs ch dy ca thy, em
đã có th hoàn thành báo cáo bài tp lớn này.
Em xin trân trng cm ơn!
3
Mc l c
I. Gi i thiu ....................................... 5
A. T ng quan ....................................... 5
B. Các ch c năng chính c a h thng ................ 5
C. Công ngh thiết b s dng ................... 5
1. Ph n cng ..................................... 5
2. Ph n mm ...................................... 6
II. Giao din ........................................ 7
A. Giao din trang ch ............................. 7
B. Giao din thng d liu cm biến ............. 7
C. Giao din thng lch s điu khin thiết b .. 8
D. Giao din h ................................. 8
E. Giao di n đăng nh p .. Error! Bookmark not defined.
F. Giao din đăng .... Error! Bookmark not defined.
III. Phân tích, thiết k hế thng .................... 9
A. Ki ến trúc h thng .............................. 9
B. Các đ logic ................................. 9
1. Sequence Diagram .............................. 9
2. Sensor Activity Diagram ...................... 11
3. Device Activity Diagram ...................... 11
C. Thi ết kế CSDL .................................. 12
D. Chu n b phn cng ............................. 15
E. Đấu ni mch ................................... 17
F. Code Arduino ................................... 19
G. Code Back-end( SpringBoot Java) ................ 21
1. Tng quan các layer ca h thng Error! Bookmark
not defined.
2. Các dependencies s dng .... Error! Bookmark not
defined.
3. Các Plugin/Tools s dng: ... Error! Bookmark not
defined.
4. Các module chính ............................. 22
5. Các Service chính ............................ 23
H. API ............................................ 26
1. DataSensor API ..... Error! Bookmark not defined.
2. DeviceAction API ............................. 35
3. User API ........... Error! Bookmark not defined.
IV. Đánh giá kết qu ................................ 45
A. Ch c năng đã hoàn thành ........................ 45
1. Thu thp hin th d liu cm biến ........ 45
4
2. Điu khin thiết b t xa .................... 45
3. Lưu tr hin th lch s trng thái thiết b
45
4. Xác thc bo mt ngưi dùng ............... 46
5. API linh hot tìm kiếm nâng cao ........... 46
B. Đánh giá hiu sut ............................. 46
1. Đánh giá đ chính xác ca cm biến ........... 46
2. Đánh giá v tc đ phn hi ca h th ng ..... 46
3. Độ tr điu khin thiết b ................... 47
4. Cp nht d liu real-time ................... 47
C. Đim cn ci thin ............................. 47
1. X l i chưa toàn di n ..................... 47
2. Thi ếu monitoring logging .................. 47
3. Bo mt cn tăng ng ....................... 47
D. Đề xut ci tiến ............................... 47
1. Tăng ng bo mt hiu sut .............. 47
2. M rng kh phân tích dnăng liu ........... 47
3. H tr đa thiết b đa ngưi dùng .......... 47
4. Phát trin ng d ng di đ ng .................. 48
5
I. Giới thiệu
A. Tổng quan
- Đ tài xây dng mt h thng IoT h trgiám sát và chn đoán sc
khe cơ bn ca người dùng. Phn phn cng s dng vi điu khin
ESP32 kết hợp với các cm biến (đo nhit đ cơ th) và DS18B20
MAX30102 (đo nhp tim, nng đ SpO ). H thng cũng tích hợp
đèn LED kèm đin trở, có th bt/tt t xa nhm mô phng kh năng
điu khin thiết b ngoi vi.
- D liu t các cm biến và trng thái điu khin thiết b được truyn
qua giao thc MQTT, đm bo vic giao tiếp gia ESP32 và h
thng phn mm din ra nhanh chóng, n đnh và d m rng.
phía backend, NodeJS chu trách nhim x lý, lưu tr và cung cp
API. Phía frontend, React được s dng đ xây dng giao din web,
h trhin th các ch s sc khe và điu khin thiết b theo thời
gian thc.
B. Các chức năng chính của hệ thống
- Xem các thông tin nhit đ cơ th, nhp tim và nng đ ô xi trong
máu realtime qua cm biến
- Điu khin bt tt 3 thiết b đèn LED
- Xem lch s data sensor: m kiếm và sp xếp theo các giá tr + thời
gian
- Xem lch s bt tt thiết b: m kiếm và sp xếp theo thời gian, loi
thiết b, hành đng.
C. Công nghệ thiết bị sử dụng
1. Phn cng
- ESP32: Vi điu khin chính ca h thng, có kh năng kết ni Wi-Fi
và Bluetooth, dùng đ thu thp và gi d liu cm biến lên server.
- Board Test 400 l: Bảng mch th nghim (breadboard) dùng đ lp
ráp mch tm thi mà không cn hàn.
- Cảm biến nhit đ cơ th DS18B20: Đo nhit đ cơ th và gi d
liu dng s đến ESP32.
- Cảm biến nng đ oxy và nhp tim MAX30120: Đo ch s SpO và
nhp tim ngưi dùng.
- Đèn LED và đin trở: Hin th trng thái hot đng hoc cnh báo
ca h thng.
- Dây jump đc cái: Dây ni gia các linh kin và ESP32, giúp
6
truyn tín hiu đin.
2. Phn mm
- Front-End: S dng React (JavaScript Framework) đ xây dng giao
din người dùng, hin th d liu cm biến theo thời gian thc.
- Back-End: S dng Node/Express (JavaScript) đ xây dng server,
x lý d liu và cung cp API cho giao din.
- Database: Dùng MongoDB đ lưu tr d liu cm biến và thông tin
người dùng.
- MQTT Broker: Mosquitto làm broker trung gian giúp S dng
truyn d liu gia ESP32 và server.
- Postman API: ng c dùng đ kim th, phát trin và tài liu hóa
các API ca h thng.
- ng c qun lý phiên bn : Git/Github đ qun lý version mã
ngun.
7
II. Giao diện
A. Giao diện trang chủ
Hình 1: Giao din trang ch
- Trang Dashboard hin th d liu cm biến realtime , bên cnh đó là
thanh điu khin bóng đèn LED , cùng vi biu đ d liu ca c 3
loi cm biến trong 20s.
- D liu cm biến có hiu ng biến đi tùy vào ch s
- Các thiết b ch thay đi icon khi nhn được message tr v đã bt/tt
thành công
B. Giao diện thống dữ liệu cảm biến
Hình 2: Giao din thng kê d liu cm biến
- Hin th lch s cm biến ghi nhn trong cơ sd liu, cho phép tìm
8
kiếm và sp xếp theo các tiêu chí tt c,id, giá tr cm biến và thời
gian.
- Cho phép phân trang và chn s bn ghi hin th
C. Giao diện thống lịch sử điều khiển thiết bị
Hình 3: Giao din thng kê lch s điu khin thiết b
- Hin th lch s bt tt thiết b được ghi nhn trong cơ sd liu, cho
phép tìm kiếm và sp xếp theo các tiêu chí id, thời gian. V thiết b
và trng thái có dropdown đ la chn tìm kiếm.
D. Giao diện hồ
Hình 4: Giao din h sơ
- Hin th thông tin cá nhân kèm link GitHub mã ngun d án kèm
theo file PDF báo cáo và API Docs (Postman).
9
III. Phân tích, t hiết kế hệ thống
A. Kiến trúc hệ thống
- Kiến trúc h thng này được chia thành ba tng chính: tng phn
cng, tng back end và tng front- -end.
- Tầng phn cng bao gm ESP32 vi các chc năng như Wi-Fi,
Bluetooth, cm biến DS18B20, MAX30102, và SpO2 cùng với linh
kin như LED, pin điu khin Board Test 400 và dây jump đ kết ni
các thành phn.
- Tầng back end s dng - Node/Express với JavaScript Framework, h
trgiao din người dùng theo thời gian thc.
- Toàn b h thng được điu khin bởi người dùng và d liu được
truyn qua các giao thc như MQTT và HTTP gia các tng.
B. Các sơ đồ logic
1. Sequence Diagram
10
Hình 8: Sequence Diagram
- Cả máy ch web và phn cng ( Esp32) cùng kết ni vào MQTT
Broker( Mosquitto) thông qua Wifi
- Web Server subcribe topic data/sensor, state/device
- Esp32 subcribe topic device/action
- S dng Arduino IDE điu khin phn cng
- Lung d liu t cm biến - > Web server:
1. Cảm biến đọc dữ liệu đo được sau đó đẩy về Esp32
2. Esp32 publish dữ liệu về topic data/sensor
3. Web Server nhận dữ liệu được publish do đã subcribe
vào topic data/sensor
4. Web Server lưu dữ liệu hợp lệ vào database hiển
thị lên giao diện
- Lung điu khin thiết b t Web - > Esp32:
5. Người dùng click nút On/Off thiết bị trên giao diện
6. Web Server publish lệnh điều khiển lên topic
device/action Broker
7. MQTT Broker publish message sang Esp32 đã
subcribe trước đó
8. Esp32 thực hiện điều khiển bật tắt thiết bị
11
9. Điều khiển xong Esp32 trả về Response ( Bật tắt
thành công/ thất bại)
10. Response được publish đến topic state/device
Broker
11. Broker publish response này đến Web Server
12. Server nhận phản hổi xử ( lưu vào
database nếu thành công+ thay đổi hiệu ứng icon)
2. Sensor Activity Diagram
Hình 9: Sensor Activity Diagram
1. Sensor bắt đầu, thu thập gửi dữ liệu.
2. ESP32 nhận dữ liệu publish lên topic
"sensor/data".
3. MQTT Broker chuyển dữ liệu này đến server.
4. Web Server nhận dữ liệu, hiển thị lên trang chủ
lưu trữ.
5. Quy trình kết thúc.
3. Device Activity Diagram
12
Hình 10: Device Activity Diagram
1. User nhấn nút On/Off.
2. Web Server publish lệnh điều khiển lên topic
"device/action".
3. MQTT Broker ESP32. gửi thông điệp này đến
4. ESP32 LED. nhận gửi lệnh điều khiển tới
5. LED thực thi lệnh (bật/tắt) gửi phản hồi (thành
công/thất bại).
6. Quy trình kết thúc.
C. Thiết kế CSDL
- ERD:
Hình 11 : Lưc đ Entity-Relationship
- Bảng data_sensor: Lưu dữ liệu cảm biến ghi nhận được kèm thời
13
gian
Hình 12: Bng data_sensor
+ id: bigint (Mã định danh duy nhất cho dữ liệu cảm
biến)
+ body_temperature: double (Nhiệt độ thể được đo
bằng cảm biến)
+ heart_rate: double (Tần số nhịp tim được ghi nhận)
+ spo2: double (Mức độ bão hòa oxy trong máu)
+ time: datetime (Thời gian ghi nhận dữ liệu)
- Bảng device_action : Lưu lịch sử điều khiển thiết bị kèm thời
gian
14
Hình 13: Bng device_action
+ id: bigint (Mã định danh duy nhất cho hành động thiết
bị)
+ device: varchar (Tên hoặc của thiết bị thực hiện
hành động)
+ action: varchar (Loại hành động được thực hiện bởi
thiết bị)
+ time: datetime (Thời gian thực hiện hành động)
15
D. Chuẩn bị phần cứng
Thiết b
Hình nh
Esp32
Hình 15: Bo mch ESP32
Cảm biến nhit đ
DS18B20
Hình 16: Cm biến DS18B20
Cảm biến nhp tim, nng
đ Oxi Max30120
Hình 17: Cm biến Max30120
16
Đèn Led
Hình 18: Đèn Led mini
Đin tr
Hình 19: Đin tr
Dây jump đc-cái
Hình 20:Dây jump đc-cái
17
Board test 400 lỗ
Hình 21: Board test 400 l
E. Đấu nối mạch
- Chân GND đu vào ct (-) trên board test
- Chân 3V3 đu vào ct (+) trên board test
- Chân Katode ca LED đu vào ct (3 -)
- Chân Anode ca 3 LED ni chung hàng vi ln lượt là chân GP26,
GP32,GP12
- 3 đèn LED mc ni tiếp vi 3 đin tr
- Dây đen ca DS18B20 ni vào ct ( ), dây đ vào ct (+)- , dây vàng
ni vào chân GP33 có đin trkéo
- Chân VCC ca Max30120 đu vào ct (+), chân GND vào ct (-),
chân SCL đu cùng hàng GP22, chân SCA đu cùng hàng GP21.
18
Hình 22: Đu ni phn cng
19
F. Code Arduino
- Khai báo thư vin, define các biến kết ni đa ch và cng wifi,
MQTT Broker, topic đ sub/pub d liu
Hình 23: Khai báo thư vin, biến
- Khai báo chân kết ni các cm biến, đèn.
Hình 24: Khai báo chân đèn, cm biến
- Hàm call_back gi khi nhn d liu điu khin thiết b, sau khi nhn
message điu khin > bt/tt đèn tương ng và gi phn hi v -
Broker
Hình 26: Hàm call_back đưc gi khi nhn message
20
-
- Hàm Setup
+ Setup cho kết nối wifi, cảm biến khai báo
chân đèn pinMode Output

Preview text:

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
_____________ o0o ____________
IOT VÀ NG DNG
Đề tài: H thng theo dõi sc khe
Nhóm hc phn: 15
Giảng viên hướng dn : Nguyn Quc Uy
H
và tên sinh viên : Nguyn Quc Dương
Mã sinh viên : B22DCCN167
1 HÀ NỘI, 08/2025 LỜI CẢM ƠN
Em xin gửi lời cảm ơn sâu sắc đến thầy Nguyễn Quốc Uy, giảng
viên môn IoT và Ứng dụng lớp 15, đã tận tình truyền đạt kiến thức và
định hướng trong suốt quá trình học tập. Nhờ sự chỉ dạy của thầy, em
đã có thể hoàn thành báo cáo bài tập lớn này.
Em xin trân trọng cảm ơn! 2 Mục lục I.
Giới thiệu ....................................... 5 A.
Tổng quan ....................................... 5 B. Các chứ ủ
c năng chính c a hệ thống ................ 5 C.
Công nghệ và thiết bị sử dụng ................... 5 1.
Phần cứng ..................................... 5 2.
Phần mềm ...................................... 6
II. Giao diện ........................................ 7 A.
Giao diện trang chủ ............................. 7 B.
Giao diện thống kê dữ liệu cảm biến ............. 7 C.
Giao diện thống kê lịch sử điều khiển thiết bị .. 8 D.
Giao diện hồ sơ ................................. 8 E. Giao diện đăng nhập ..
Error! Bookmark not defined. F. Giao diện đăng ký ....
Error! Bookmark not defined. III.
Phân tích, thiết kế hệ thống .................... 9 A.
Kiến trúc hệ thống .............................. 9 B.
Các sơ đồ logic ................................. 9 1.
Sequence Diagram .............................. 9 2.
Sensor Activity Diagram ...................... 11 3.
Device Activity Diagram ...................... 11 C.
Thiết kế CSDL .................................. 12 D.
Chuẩn bị phần cứng ............................. 15 E.
Đấu nối mạch ................................... 17 F.
Code Arduino ................................... 19 G.
Code Back-end( SpringBoot Java) ................ 21 1.
Tổng quan các layer của hệ thống Error! Bookmark not defined. 2.
Các dependencies sử dụng .... Error! Bookmark not defined. 3.
Các Plugin/Tools sử dụng: ... Error! Bookmark not defined. 4.
Các module chính ............................. 22 5.
Các Service chính ............................ 23 H.
API ............................................ 26 1. DataSensor API .....
Error! Bookmark not defined. 2.
DeviceAction API ............................. 35 3. User API ...........
Error! Bookmark not defined.
IV. Đánh giá kết quả ................................ 45 A.
Chức năng đã hoàn thành ........................ 45 1.
Thu thập và hiển thị dữ liệu cảm biến ........ 45 3 2.
Điều khiển thiết bị từ xa .................... 45 3.
Lưu trữ và hiển thị lịch sử trạng thái thiết bị 45 4.
Xác thực và bảo mật người dùng ............... 46 5.
API linh hoạt và tìm kiếm nâng cao ........... 46 B.
Đánh giá hiệu suất ............................. 46 1.
Đánh giá độ chính xác của cảm biến ........... 46 2.
Đánh giá về tốc độ phản hồi của hệ thống ..... 46 3.
Độ trễ điều khiển thiết bị ................... 47 4.
Cập nhật dữ liệu real-time ................... 47 C.
Điểm cần cải thiện ............................. 47 1. Xử lý lỗ ệ
i chưa toàn di n ..................... 47 2.
Thiếu monitoring và logging .................. 47 3.
Bảo mật cần tăng cường ....................... 47 D.
Đề xuất cải tiến ............................... 47 1.
Tăng cường bảo mật và hiệu suất .............. 47 2. Mở rộng khả phân tích d năng ữ liệu ........... 47 3.
Hỗ trợ đa thiết bị và đa người dùng .......... 47 4.
Phát triển ứng dụng di động .................. 48 4
I. Giới thiệu A. Tổng quan
- Đề tài xây dựng một hệ thống IoT hỗ trợ giám sát và chẩn đoán sức
khỏe cơ bản của người dùng. Phần phần cứng sử dụng vi điều khiển
ESP32 kết hợp với các cảm biến DS18B20 (đo nhiệt độ cơ thể) và
MAX30102 (đo nhịp tim, nồng độ SpO₂). Hệ thống cũng tích hợp
đèn LED kèm điện trở, có thể bật/tắt từ xa nhằm mô phỏng khả năng
điều khiển thiết bị ngoại vi.
- Dữ liệu từ các cảm biến và trạng thái điều khiển thiết bị được truyền
qua giao thức MQTT, đảm bảo việc giao tiếp giữa ESP32 và hệ
thống phần mềm diễn ra nhanh chóng, ổn định và dễ mở rộng. Ở
phía backend, NodeJS chịu trách nhiệm xử lý, lưu trữ và cung cấp
API. Phía frontend, React được sử dụng để xây dựng giao diện web,
hỗ trợ hiển thị các chỉ số sức khỏe và điều khiển thiết bị theo thời gian thực.
B. Các chức năng chính của hệ thống
- Xem các thông tin nhiệt độ cơ thể, nhịp tim và nồng độ ô xi trong
máu realtime qua cảm biến
- Điều khiển bật tắt 3 thiết bị đèn LED
- Xem lịch sử data sensor: Tìm kiếm và sắp xếp theo các giá trị + thời gian
- Xem lịch sử bật tắt thiết bị: Tìm kiếm và sắp xếp theo thời gian, loại thiết bị, hành động.
C. Công nghệ và thiết bị sử dụng
1. Phần cứng
- ESP32: Vi điều khiển chính của hệ thống, có khả năng kết nối Wi-Fi
và Bluetooth, dùng để thu thập và gửi dữ liệu cảm biến lên server.
- Board Test 400 lỗ: Bảng mạch thử nghiệm (breadboard) dùng để lắp
ráp mạch tạm thời mà không cần hàn.
- Cảm biến nhiệt độ cơ thể DS18B20: Đo nhiệt độ cơ thể và gửi dữ
liệu dạng số đến ESP32.
- Cảm biến nồng độ oxy và nhịp tim MAX30120: Đo chỉ số SpO₂ và nhịp tim người dùng.
- Đèn LED và điện trở: Hiển thị trạng thái hoạt động hoặc cảnh báo của hệ thống.
- Dây jump đực – cái: Dây nối giữa các linh kiện và ESP32, giúp 5 truyền tín hiệu điện.
2. Phần mềm
- Front-End: Sử dụng React (JavaScript Framework) để xây dựng giao
diện người dùng, hiển thị dữ liệu cảm biến theo thời gian thực.
- Back-End: Sử dụng Node/Express (JavaScript) để xây dựng server,
xử lý dữ liệu và cung cấp API cho giao diện.
- Database: Dùng MongoDB để lưu trữ dữ liệu cảm biến và thông tin người dùng.
- MQTT Broker: Sử dụng Mosquitto làm broker trung gian giúp
truyền dữ liệu giữa ESP32 và server.
- Postman API: Công cụ dùng để kiểm thử, phát triển và tài liệu hóa các API của hệ thống.
- Công cụ quản lý phiên bản : Git/Github để quản lý version mã nguồn. 6 II. Giao diện
A. Giao diện trang chủ
Hình 1: Giao diện trang chủ
- Trang Dashboard hiển thị dữ liệu cảm biến realtime , bên cạnh đó là
thanh điều khiển bóng đèn LED , cùng với biểu đồ dữ liệu của cả 3
loại cảm biến trong 20s.
- Dữ liệu cảm biến có hiệu ứng biến đổi tùy vào chỉ số
- Các thiết bị chỉ thay đổi icon khi nhận được message trả về đã bật/tắt thành công
B. Giao diện thống kê dữ liệu cảm biến
Hình 2: Giao diện thống kê dữ liệu cảm biến
- Hiển thị lịch sử cảm biến ghi nhận trong cơ sở dữ liệu, cho phép tìm 7
kiếm và sắp xếp theo các tiêu chí tất cả,id, giá trị cảm biến và thời gian.
- Cho phép phân trang và chọn số bản ghi hiển thị
C. Giao diện thống kê lịch sử điều khiển thiết bị
Hình 3: Giao diện thống kê lịch sử điều khiển thiết bị
- Hiển thị lịch sử bật tắt thiết bị được ghi nhận trong cơ sở dữ liệu, cho
phép tìm kiếm và sắp xếp theo các tiêu chí id, thời gian. Về thiết bị
và trạng thái có dropdown để lựa chọn tìm kiếm.
D. Giao diện hồ sơ
Hình 4: Giao diện hồ sơ
- Hiển thị thông tin cá nhân kèm link GitHub mã nguồn dự án kèm
theo file PDF báo cáo và API Docs (Postman). 8
III. Phân tích, thiết kế hệ thống
A. Kiến trúc hệ thống
- Kiến trúc hệ thống này được chia thành ba tầng chính: tầng phần
cứng, tầng back-end và tầng front-end.
- Tầng phần cứng bao gồm ESP32 với các chức năng như Wi-Fi,
Bluetooth, cảm biến DS18B20, MAX30102, và SpO2 cùng với linh
kiện như LED, pin điều khiển Board Test 400 và dây jump để kết nối các thành phần.
- Tầng back-end sử dụng Node/Express với JavaScript Framework, hỗ
trợ giao diện người dùng theo thời gian thực.
- Toàn bộ hệ thống được điều khiển bởi người dùng và dữ liệu được
truyền qua các giao thức như MQTT và HTTP giữa các tầng. B. Các s ơ đồ logic 1. Sequence Diagram 9
Hình 8: Sequence Diagram
- Cả máy chủ web và phần cứng ( Esp32) cùng kết nối vào MQTT
Broker( Mosquitto) thông qua Wifi
- Web Server subcribe topic data/sensor, state/device
- Esp32 subcribe topic device/action
- Sử dụng Arduino IDE điều khiển phần cứng
- Luồng dữ liệu từ cảm biến - > Web server:
1. Cảm biến đọc dữ liệu đo được sau đó đẩy về Esp32
2. Esp32 publish dữ liệu về topic data/sensor
3. Web Server nhận dữ liệu được publish do đã subcribe vào topic data/sensor
4. Web Server lưu dữ liệu hợp lệ vào database và hiển thị lên giao diện
- Luồng điều khiển thiết bị từ Web - > Esp32:
5. Người dùng click nút On/Off thiết bị trên giao diện
6. Web Server publish lệnh điều khiển lên topic device/action ở Broker
7. MQTT Broker publish message sang Esp32 đã subcribe trước đó
8. Esp32 thực hiện điều khiển bật tắt thiết bị 10
9. Điều khiển xong Esp32 trả về Response ( Bật tắt thành công/ thất bại) 10.
Response được publish đến topic state/device ở Broker 11.
Broker publish response này đến Web Server 12.
Server nhận phản hổi và xử lý ( lưu vào
database nếu thành công+ thay đổi hiệu ứng icon)
2. Sensor Activity Diagram
Hình 9: Sensor Activity Diagram
1. Sensor bắt đầu, thu thập và gửi dữ liệu.
2. ESP32 nhận dữ liệu và publish lên topic "sensor/data".
3. MQTT Broker chuyển dữ liệu này đến server.
4. Web Server nhận dữ liệu, hiển thị lên trang chủ và lưu trữ. 5. Quy trình kết thúc.
3. Device Activity Diagram 11
Hình 10: Device Activity Diagram
1. User nhấn nút On/Off.
2. Web Server publish lệnh điều khiển lên topic "device/action".
3. MQTT Broker gửi thông điệp này đến ESP32. 4. ESP32 LED.
nhận và gửi lệnh điều khiển tới
5. LED thực thi lệnh (bật/tắt) và gửi phản hồi (thành công/thất bại). 6. Quy trình kết thúc.
C. Thiết kế CSDL - ERD:
Hình 11 : Lược đồ Entity-Relationship
- Bảng data_sensor: Lưu dữ liệu cảm biến ghi nhận được kèm thời 12 gian
Hình 12: Bảng data_sensor
+ id: bigint (Mã định danh duy nhất cho dữ liệu cảm biến)
+ body_temperature: double (Nhiệt độ cơ thể được đo bằng cảm biến)
+ heart_rate: double (Tần số nhịp tim được ghi nhận)
+ spo2: double (Mức độ bão hòa oxy trong máu)
+ time: datetime (Thời gian ghi nhận dữ liệu)
- Bảng device_action : Lưu lịch sử điều khiển thiết bị kèm thời gian 13
Hình 13: Bảng device_action
+ id: bigint (Mã định danh duy nhất cho hành động thiết bị)
+ device: varchar (Tên hoặc mã của thiết bị thực hiện hành động)
+ action: varchar (Loại hành động được thực hiện bởi thiết bị)
+ time: datetime (Thời gian thực hiện hành động) 14
D. Chuẩn bị phần cứng Thiết bị Hình ảnh Esp32
Hình 15: Bo mạch ESP32 Cảm biến nhiệt độ DS18B20
Hình 16: Cảm biến DS18B20
Cảm biến nhịp tim, nồng độ Oxi Max30120
Hình 17: Cảm biến Max30120 15 Đèn Led Hình 18: Đèn Led mini Điện trở Hình 19: Điện trở Dây jump đực-cái
Hình 20:Dây jump đực-cái 16 Board test 400 lỗ
Hình 21: Board test 400 lỗ
E. Đấu nối mạch
- Chân GND đấu vào cột (-) trên board test
- Chân 3V3 đấu vào cột (+) trên board test
- Chân Katode của 3 LED đấu vào cột (-)
- Chân Anode của 3 LED nối chung hàng với lần lượt là chân GP26, GP32,GP12
- 3 đèn LED mắc nối tiếp với 3 điện trở
- Dây đen của DS18B20 nối vào cột (-), dây đỏ vào cột (+), dây vàng
nối vào chân GP33 có điện trở kéo
- Chân VCC của Max30120 đấu vào cột (+), chân GND vào cột (-),
chân SCL đấu cùng hàng GP22, chân SCA đấu cùng hàng GP21. 17
Hình 22: Đấu nối phần cứng 18 F. Code Arduino
- Khai báo thư viện, define các biến kết nối wifi, địa chỉ và cổng
MQTT Broker, topic để sub/pub dữ liệu
Hình 23: Khai báo thư viện, biến
- Khai báo chân kết nối các cảm biến, đèn.
Hình 24: Khai báo chân đèn, cảm biến
- Hàm call_back gọi khi nhận dữ liệu điều khiển thiết bị, sau khi nhận
message điều khiển -> bật/tắt đèn tương ứng và gửi phản hồi về Broker
Hình 26: Hàm call_back được gọi khi nhận message 19 - - Hàm Setup
+ Setup cho kết nối wifi, cảm biến và khai báo
chân đèn ở pinMode Output 20