Professional Documents
Culture Documents
TÊN ĐỀ TÀI:
Hoàn thành khóa tiểu luận này, cho phép tôi được gửi lời cảm ơn đến các thầy cô giáo
trong khoa điện tử viễn thông của Học viện hàng không Việt Nam. Đặc biệt tôi xin gửi
lời cảm ơn sâu sắc nhất đến thầy Lê Nhật Bình, thầy đã tận tình chỉ dạy tôi trong suốt
quá trình làm tiểu luận.
Tuy nhiên, trong quá trình làm báo cáo này nhất định sẽ không tránh khỏi những thiếu
sót, hạn chế. Vì vậy, tôi rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy
cô cùng toàn thể các bạn để tôi có điều kiện bổ sung, nâng cao kiến thức của mình,
phục vụ tốt hơn cho công tác thực tế sau này.
Tôi cam đoan rằng báo cáo thực tập này là do chính tôi thực hiện, các số liệu
thu thập và kết quả phân tích trong báo cáo là trung thực, không sao chép từ bất cứ đề
tài nghiên cứu khoa học nào.
........................................................................................................................
.......................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
........................................................................................................................
Với tình trạng hiện nay, ở nước ta ngày càng nhiều bệnh tật mà một trong những
nguyên nhân chủ yếu là do sự chủ quan coi thường tính mạng. Từ nhiều nguyên nhân,
nhiều gia đình phải gồng gánh một khoản chi phí rất lớn để khám và chứa bệnh khi đã
nghiêm trọng và đặc biệt nghiêm trọng.
Một trong những nguyên nhân dẫn đến tình trạng đột quỵ, tai biến mạch máu não là do
con người chủ quan không khám sức khỏe định kì 3 tháng 1 lần và không theo dõi sức
khỏe hàng ngày theo lời khuyên của bác sĩ. Hậu quả dẫn đến nhiều lo lắng cho gia đình
và xã hội.
Cùng với ngành công nghệ mới khởi nghiệp IoT đang nhanh chóng cách mạng hóa
ngành công nghiệp chăm sóc sức khỏe. Theo dõi tình trạng sức khỏe của bệnh nhân tại
nhà là một nhiệu vụ khó khăn vì lịch trình bận rộn và công việc hàng ngày của chúng
ta. Bệnh nhân tuổi già đặc biệt nên được theo dõi định kỳ. Vì vậy, em có đề xuất một
hệ thống sáng tạo tự động hóa nhiệm vụ này một cách dễ dàng. Thiết bị đưa ra một hệ
thống theo dõi sức khỏe bệnh nhân thông minh bằng máy chủ Web để có thể theo dõi
các thống số sức khỏe của bệnh nhân như nhịp tim, mức Oxy trong máu cùng với nhiệt
độ cơ thể người.
Nhận thức được tầm quan trọng của sức khỏe. Em đã chọn đề tài “ Thiết kế và thi công
thiết bị theo dõi sức khỏe”.
Thiết kế một mô hình theo dõi sức khỏe bệnh nhân. Cụ thể mô hình ở đây là những
module, cảm biến tạo nên thiết bị theo dõi sức khỏe, Thiết bị có thể đo được nhiệt độ,
độ ẩm phòng, nhiệt độ cơ thể người, nhịp tim, nồng độ Oxy trong máu. Việc theo dõi
được thực hiện trên các module có sẵn trên thị trường, lập trình trên vi điều khiển và
theo dõi website.
Nghiên cứu tham khảo qua giáo viên hướng dẫn, tham khảo qua sách vở, internet các
trang linh kiện điện tử. Từ đó nắm rõ các nguyên lý hoạt động từng linh kiện sử dụng
trong đề tài.
Với đề tài “Thiết bị theo dõi sức khỏe”, báo cáo đề tài tôi gồm 5 chương sau đây:
Chương 1: Giới thiệu
Giới thiệu sơ lược về đề tài, đưa ra mục tiêu, đối tượng và phương pháp nghiên cứu
liên quan đến đề tài tiểu luận tốt nghiệp
Chương 2: Cơ sở lý thuyết
Tìm hiểu một số nghiên cứu liên quan đến đề tài của các anh chị khóa trước đây. Đưa
ra các khái niệm lý thuyết liên quan đến vấn đề nghiên cứu và các linh kiện chính được
sử dụng trong đề tài.
Chương 3: Nội dung
Gồm nguyên lý hoạt động và các sơ đồ khối, sơ đồ nguyên lý và lưu đồ thuật toán
Chương 4:Thi công và kết quả
Thi công phần cứng, phần mềm, mô hình thực tế, kết quả kiểm thử nghiệm thiết bị
Chương 5: Kết luận và kiến nghị
Đưa ra nhận xét ưu, khuyết điểm từ kết quả thi công thiết bị và hướng phát triển của đề
tài
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
Với mục tiêu là theo dõi sức khỏe nên đã cho ra đời nhiều nghiên cứu áp dụng trong
thực tiễn như: trong công cuộc cứu chữa người, theo dõi sức khỏe con người thì thiết
bị theo dõi sức khỏe là công cụ hữu ích nhất cho việc tìm ra nguồn bệnh trong cơ thể
con người để tìm cách cứu chữa kịp thời. Tạo ra các thiết bị theo dõi cầm tay để đảm
bảo cho tính mạng con người, các nơi vùng sâu, vùng xa, vùng hẻo lãnh đang thiếu
hoặc các y bác sĩ không thể tới được,….
Nhờ dựa trên những nguyên lý theo dõi sức khỏe đấy mà con người đã nghiên cứu và
tạo ra những máy kiểm tra sức khỏe, dò tìm những bệnh tiềm ẩn nguy cơn đột quỷ cao,
phân tích dữ liệu sức khỏe từ con người hàng năm từ đó có nhiều phát minh mới hơn,
hiện đại hơn, tiên tiến hơn,….
Chip ESP8266 được phát triển bởi Espressif để cung cấp giải pháp giao tiếp Wifi cho
các thiết bị IoT. Điểm đặc biệt của dòng ESP8266 là nó được tích hợp các mạch RF
như balun, antenna switches, TX power amplifier và RX filter ngay bên trong chip với
kích thước rất nhỏ chỉ 5x5mm nên các board sử dụng ESP8266 không cần kích thước
board lớn cũng như không cần nhiều linh kiện xung quanh.
Kit thu phát Wifi ESP8266 NodeMCU là kit phát triển dựa trên nền chip Wifi SoC
ESP8266 với thiết kế dễ sử dụng vì bên trong ESP8266 có sẵn một lõi vi xử lý vì thế
bạn có thể trực tiếp lập trình cho ESP8266 mà không cần thêm bất kì con vi xử lý nào
nữa và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và
nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên
rất đơn giản.
Kit thu phát Wifi ESP8266 NodeMCU sử dụng chip nạp và giao tiếp UART mới và ổn
định nhất là CP2102 có khả năng tự nhận Driver trên tất cả các hệ điều hành Window
và Linux. Ưu điểm khi sử dụng bộ nạp này là không cần điều khiển qua một con vi xử
lý khác.
Thông số kĩ thuật:
Sơ đồ chân:
Chúng ta biết rằng ở mỗi chân trên vi điều khiển có thể thực hiện nhiều chức năng
khác nhau, NodeMCU có tổng cộng 13 chân GPIO tuy nhiên một số chân được dùng
cho những mục đích quan trọng khác vì vậy chúng ta phải lưu ý khi sử dụng như sau:
Các chân GPI0 - GPI16: ngõ ra output, có điện áp 3.3 V, có thể lập trình cho từng
chân.
Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở
kéo xuống GND). Người dùng có thể cấu hình kích hoạt hoặc không kích hoạt
trở kéo này.
GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0,
NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO
này.
GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho
ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là
strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau:
SVTH: Trần Thanh Quân 4
Tiểu Luận Tốt Nghiệp GVHD: TS Lê Nhật Bình
GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW. Vì vậy khi muốn sử dụng các
chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột
đến quá trình nạp code. Các bạn có thể tham khảo nguyên lý thiết kế mạch nạp
ở bài viết này
GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của
ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm).
Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình
thường.
LED L: được nối với port digital số 13 và nhằm hiển thị trạng thái hoạt động
của Arduino(tắt/ mở)
LED TX, RX: Dùng để hiển thị trạng thái truyền(TX) và nhận dữ liệu (RX) nối
tiếp TTL. Chúng ta có thể sử dụng nó để giao tiếp với cổng COM của một số
thiết bị hoặc các linh kiện có chuẩn giao tiếp nối tiếp.
Cổng USB: Dùng để nạp code lập trình cho board mạch đồng thời cung cấp
nguồn điện cho board mạch hoạt động.
Port nguồn Có các port GND và port cấp điện áp vcc có 2 mức là 3.3V và 5V
nhằm cung cấp điện áp cho các phần tử linh kiện, cảm biến, module… được kết
nối với ESP 8266.
Nút RESET màu đỏ: Để khởi động lại ESP 8266 đồng thời khởi chạy lại
chương trình được upload từ đầu.
Port analog in A0: Để đưa các tín hiệu điện áp tương tự (Analog Signal) từ các
loại cảm biến, module vào để từ đó có thể thực hiện các biến đổi ADC chuyển
đổi tín hiệu tương tự thành tín hiệu số ( Digital Signal).
KEY:
USB TO UART:
ADC:
POWER
IO:
Đây là phiên bản có dây và chống nước của cảm biến DS18B20. Tiện dụng khi bạn
cần đo một thứ gì đó ở xa, hoặc trong điều kiện ẩm ướt. Cảm biến có thể đo nhiệt độ
trong khoảng từ -55 đến 125 ° C (-67 ° F đến + 257 ° F). Cáp được bọc bằng PVC.
Bởi vì không có sự suy giảm tín hiệu ngay cả trong khoảng cách dài. Cảm biến nhiệt
độ dây này khá chính xác, tức là ±0,5 C trong phần lớn phạm vi. Nó có thể cung cấp
tới 12 bit độ chính xác từ bộ chuyển đổi kỹ thuật số sang tương tự trên bo mạch.
Chúng hoạt động tuyệt vời với bất kỳ vi điều khiển nào sử dụng một pin duy nhất.
Nhược điểm duy nhất là nó sử dụng giao thức Dallas 1-Wire, hơi phức tạp và đòi hỏi
một loạt mã để phân tích liên lạc. Phải dùng một điện trở 4,7k, được yêu cầu như là
một pullup từ DATA đến đường VCC khi sử dụng cảm biến.
Thông số kỹ thuật:
Điện áp sử dụng: 3 tới 5.5VDC
Dòng tiêu thụ: 1 tới 1.5mA
Khoảng nhiệt độ có thể đo: -55 °C tới 125 °C sai số ±0.5 °C trong khoảng -10°C
tới 85 °C
Chuẩn giao tiếp: Digital TTL 1-Wire (chỉ 1 chân Data duy nhất, lưu ý cần nối
chân Data của cảm biến lên mức cao VCC qua điện trở kéo 4k7 Ohm hoặc 10k
Ohm trước khi kết nối với Vi điều khiển)
Đầu ra VCC red, DATA Blue, GND Black
DHT11 là một cảm biến nhiệt độ và độ ẩm kỹ thuật số cơ bản, chi phí cực thấp. Nó sử
dụng cảm biến độ ẩm điện dung và nhiệt điện trở để đo không khí xung quanh và phát
ra tín hiệu số trên chân dữ liệu.
Nó khá đơn giản để sử dụng, nhưng đòi hỏi thời gian cẩn thận để lấy dữ liệu. Nhược
điểm thực sự duy nhất của cảm biến này là bạn chỉ có thể nhận dữ liệu mới từ nó cứ
sau 2 giây, vì vậy khi sử dụng thư viện, số đọc cảm biến có thể lên đến 2 giây.
Thông số kỹ thuật:
Cảm biến nhịp tim và oxy trong máu MAX30100 được sử dụng để đo nhịp tim và
nồng độ Oxy trong máu, thích hợp cho nhiều ứng dụng liên quan đến y sinh, cảm biến
nhịp tim và oxy trong máu sử dụng phương pháp đo quang phổ biến hiện nay với thiết
kế và chất liệu mắt đo chuyên biệt từ chính hãng Maxim cho độ chính xác và độ bền
cao, cảm biến sử dụng giao tiếp I2C với bộ thư viện sẵn có trên Arduino rất dễ sử
dụng.
Nó kết hợp hai đèn LED, bộ tách sóng quang, quang học được tối ưu hóa và xử lý tín
hiệu tương tự nhiễu thấp để phát hiện tín hiệu xung và nhịp tim. Nó hoạt động từ các
nguồn cung cấp điện 1,8V và 3,3V và có thể được cấp nguồn thông qua phần mềm với
dòng điện chờ không đáng kể, cho phép nguồn điện luôn được kết nối mọi lúc.
Thiết bị có hai đèn LED, một phát ra ánh sáng đỏ, một đèn hồng ngoại khác phát ra.
Đối với tốc độ xung, chỉ cần đèn hồng ngoại. Cả ánh sáng đỏ và ánh sáng hồng ngoại
đều được sử dụng để đo nồng độ oxy trong máu. Khi tim bơm máu, có sự gia tăng
lượng máu bị oxy hóa do có nhiều máu. Khi tim thư giãn, thể tích máu được oxy hóa
cũng giảm. Bằng cách biết thời gian giữa tăng và giảm oxy máu, nhịp tim được xác
định.
Máu oxy hấp thụ nhiều ánh sáng hồng ngoại hơn và truyền nhiều ánh sáng đỏ hơn
trong khi máu khử oxy hấp thụ ánh sáng đỏ và truyền nhiều ánh sáng hồng ngoại hơn.
Đây là chức năng chính của MAX30100: nó đọc mức độ hấp thụ cho cả hai nguồn
sáng và được lưu trữ trong bộ đệm có thể đọc qua I2C.
Thông số kỹ thuật:
IC chính: MAX30100
Hình 2.6: Cảm biến nhịp tim và Oxy trong máu MAX30100
Chân 1 VIN Power cấp nguồn
Chân 2 SCL Input I2C SCL
Chân 3 SDA I/O I2C SDA
Chân 4 INT Out INT của MAX30100
Chân 5 IRD Out IR_DRV của MAX30100
Chân 6 RD Out R_DRV của MAX30100
Chân 7 GND
Khối nguồn
Khối dữ liệu
Khối xử lý
trung tâm
Mobie WEBPAGE
Khối xử lý: Xử lý các tín hiệu đo được đống thời xác định tình trạng sức khỏe
từ đó đẩy dữ liệu lên lên Web.
Khối hiện thị: Sẽ hiển thị nhiệt độ, độ ẩm, nhiệt độ cơ thể người, nhịp tim, độ
bão hòa Oxy đo được lên màn hình thiết bị và cảnh báo tình trạng sức khỏe phụ
thuộc vào số liệu đo được từ cảm biến.
Tất cả các cảm biến có thể hoạt động ở 3,3V VCC. Vì vậy, kết nối VCC của nó với
nguồn điện 3,3V. Kết nối GND với GND. MAX30100 là một cảm biến I2C, vì vậy
chúng ta kết nối chân SDA & SCL của nó với GPIO4 & GPIO5. Kết nối chân INT của
nó với GPIO13 của ESP8266. Chân đầu ra của DHT22 được kết nối với GPIO14 của
ESP8266. Tương tự, chân đầu ra của DS18B20 được kết nối với GPIO12 của
ESP8266. Một điện trở kéo lên 4,7K được kết nối giữa chân đầu ra & chân VCC của
DS18B20.
3.2. Sơ đồ nguyên lý
Bắt đầu
Đọc nhiệt
độ cơ thể.
Kết thúc
Hệ thống mạch được thi công phần cứng và thực hiện bằng phương pháp thủ công. Và
quy trình thực hiện bao gồm các bước sau đây:
Bước 1: Vẽ PCB (Printed Circuit Board) bằng phầm mềm vẽ mạch Eagle 8.6.2.
Mạch nguyên lý được vẽ và layout ra mạch in qua phần mềm vẽ mạch Eagle 8.6.2.
Khi đã có layout mạch in thì mạch được in bằng giấy chuyên dụng.
Khi board đồng được cắt đúng tỷ lệ so với mạch thì tiến hành ủi mạch.
Khi ủi xong tiến hành đem mạch đi ngâm dung dịch ăn mòn để loại bỏ đi lớp đồng
không có mực in. Một lúc sau lớp đồng được ăn mòn hết thì ta được mạch in.
Trong môi trường không khí thì đồng sẽ bị oxi hóa. Khi đó chúng ta phải phủ một lớp
bảo vệ mạch in bằng lớp silicon hoặc dung dịch nhựa thông pha xăng thơm.
Bước 5: Khoan mạch, gắn linh kiện và hàn các linh kiện điện tử.
Đây là những công đoạn cuối cùng của quá trình làm mạch in.Về vấn đề khoan mạch
thì phải lựa chọn mũi khoan cho chính xác và phù hợp với tiết diện của chân linh kiện.
Sau đó gắn và hàn linh kiện.
Đầu tiên muốn thi công hay thiết kế thì chúng ta phải có phần mềm chuyên vẽ mạch ở
đây chúng ta sẽ dùng phần mềm Eagle 8.6.2.
Hình 4.2:
Hình 4.3:
Trong thư viện chúng ta thường hay dùng những con ví dụ như:
Con-ptr500: Domino
BZ1: Chuông
….
Hình 4.4:
Hình 4.5:
Hình 4.6:
Hình 4.7:
Đầu tiên muốn thi công thiết kế hay để mạch hoạt động tốt thì chúng ta phải có phần
mềm chuyên nạp code ở đây chúng ta sẽ dùng phần mềm Arduino
Hình 4.8:
Hình 4.9:
Sau khi nạp mã, ta có thể mở màn hình nối tiếp. ESP8266 sẽ kết nối với mạng. Sau khi
kết nối, nó sẽ hiển thị địa chỉ IP.
Hình 4.10:
Sao chép địa chỉ IP và dán nó vào bất kỳ Trình duyệt web nào và nhấn enter. Bạn sẽ
thấy nhiệt độ phòng, độ ẩm trong phòng, Nhịp tim, Mức oxy trong máu, Nhiệt độ cơ
thể
Hình 4.11:
Tương tự, bạn cũng có thể xem Tình trạng sức khỏe của bệnh nhân trên điện thoại di
động. Đơn giản sao chép Địa chỉ IP và dán trên trình duyệt của Điện thoại di động.
Hình 4.12:
Trong phần này chúng ta cần chú ý đến phần HTML:
HTML là chữ viết tắt của Hypertext Markup Language. Nó giúp người dùng tạo và
cấu trúc các thành phần trong trang web hoặc ứng dụng, phân chia các đoạn văn,
heading, links, blockquotes, ….
HTML không phải là ngôn ngữ lập trình, đồng nghĩa với việc nó không thể tạo ra các
chức năng “động” được. Nó chỉ giống như Microsoft Word, dùng để bố cục và định
dạng trang web.
HTML hoạt động HTML documents là files kết thúc với đuôi .html hay .htm. Bạn có
thể xem chúng bằng cách sử dụng bất kỳ trình duyệt web nào (như Google Chrome,
Safari, hay Mozilla Firefox). Trình duyệt đọc các files HTML này và xuất bản nội
dung lên internet sao cho người đọc có thể xem được nó.
Thông thường, trung bình một web chứa nhiều trang web HTML, ví dụ như: trang chủ,
trang about, trang liên hệ, tất cả đều cần các trang HTML riêng.
Mỗi trang HTML chứa một bộ các tag (cũng được gọi là elements), bạn có thể xem
như là việc xây dựng từng khối của một trang web. Nó tạo thành cấu trúc cây thư mục
bao gồm section, paragraph, heading, và những khối nội dung khác.
Ưu điểm:
Ngôn ngữ được sử dụng rộng lớn này có rất nhiều nguồn tài nguyên hỗ trợ và
cộng đồng sử dụng cực lớn.
Chuẩn chính của web được vận hành bởi World Wide Web Consortium (W3C).
Dễ dàng tích hợp với các ngôn ngữ backend như PHP và Node.js.
Khuyết điểm:
Được dùng chủ yếu cho web tĩnh. Đối với các tính năng động, bạn cần sử dụng
JavaScript hoặc ngôn ngữ backend bên thứ 3 như PHP.
Nó có thể thực thi một số logic nhất định cho người dùng. Vì vậy, hầu hết các
trang đều cần được tạo riêng biệt, kể cả khi nó sử dụng cùng các yếu tố, như là
headers hay footers.
Khó kiểm soát cảnh thực thi của trình duyệt (ví dụ, những trình duyệt cũ không
render được tag mới)
Hoạt động bình thường, dữ liệu đo từ cơ thể người được đưa lên website gần như chính
xác.
Khi đo liên tục
Kết quả đo được vẫn theo như yêu Kết luận: thiết bị có thể hoạt
trong vòng 1
cầu đề ra. động tốt khi đo liên tục 5 tiếng.
tiếng.
Khi đo liên tục Kết luận: với thời gian đo là 5
Kết quả đo được delay hơn một
trong vòng 5 tiếng liên tục thì thiết bị chạy
khoảng thời gian so với ban đầu.
tiếng. vẫn tốt phụ thuộc vào PIN .
5.1.1. Kết quả hoạt động của thiết bị so với mục tiêu đề ra
Trong tiểu luận lần này, em đã nghiên cứu và thực hiện thành công thiết bị theo dõi sức
khỏe bệnh nhân, bằng cách sử dụng các thông số dữ liệu đo được từ các module đồng
thời truyền dữ liệu lên web từ đó phân tích và kết luận tình trạng bệnh nhân theo những
yêu cầu của thiết bị.
Như vây, tiểu luận tốt nghiệp lần này giúp em bổ sung những gì còn thiếu sót từ những
môn học và đánh giá được bản thân.
5.1.2. Ưu điểm
Có thể đo nhiệt độ, đổ ẩm phòng, nhiệt độ cơ thể, nhịp tim, Oxy trong máu.
Hoạt động ổn định.
Cập nhật tình trạng bệnh nhân 24/24 thông qua wifi.
Di chuyển linh hoạt.
Cải tiến thiết bị chính xác hơn hơn, xây dựng thuật toán hoàn chỉnh. Dựa vào cách thức
hoạt động của thiết bị theo dõi sức khỏe ta có thể phát triển đề tài rộng hơn. Để tạo ra
những sản phẩm có thể giảm áp lực cho bác sĩ đồng thời bệnh nhân có thể theo dõi sức
khỏe của mình tại nhà, giảm thiểu thương vong nguy hiểm đến tính mạng con người.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
PulseOximeter pox;
uint32_t tsLastReport = 0;
#define ONE_WIRE_BUS 14
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const char* ssid = "NETNAM 6.66"; //SSID và Password của WiFi router
void onBeatDetected(){
Serial.println("Beat!");
void handleRoot() {
void handleDHT11Temperature() {
else {
Serial.print(t);
Serial.print(" || ");
}
void handleDHT11Humidity() {
float h = dht.readHumidity();
if (isnan(h)) {
else {
Serial.print("Humidity : ");
Serial.println(h);
void handleHear(){
data[0] = pox.getHeartRate();
data[1] = pox.getSpO2();
server.send(200,"text/plane", dataString);
void handleBodyTemperature(){
server.send(200,"text/plane",String( sensors.getTempCByIndex(0)));
void setup(void){
Serial.begin(115200);
delay(500);
delay(500);
Serial.println("");
pinMode(LEDonBoard,OUTPUT);
digitalWrite(LEDonBoard, HIGH);
Serial.print("Connecting");
Serial.print(".");
delay(250);
digitalWrite(LEDonBoard, HIGH);
delay(250);
Serial.println("");
Serial.print("Successfully connected to : ");
Serial.println(ssid);
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.on("/readHear", handleHear);
server.on("/readBody", handleBodyTemperature);
server.begin();
if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
pox.setOnBeatDetectedCallback(onBeatDetected);
//Vong lap
void loop(){
server.handleClient(); //Xu ly yeu cau cua
pox.update();
sensors.requestTemperatures();
Serial.print("Heart rate:");
Serial.print(pox.getHeartRate());
Serial.print("bpm / SpO2:");
Serial.print(pox.getSpO2());
Serial.println("%");
Serial.print("BodyTemperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" || ");
tsLastReport = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your IP Address");
lcd.setCursor(1, 1);
lcd.print(WiFi.localIP());
}
PHỤ LỤC B
const char MAIN_page[] PROGMEM = R"=====(
<!DOCTYPE html>
<html>
<head>
<link href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"
rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<style>
html {
font-family: Arial;
display: inline-block;
text-align: center;
h1 { font-size: 2.0rem; }
p { font-size: 2.0rem; }
.dht-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
</style>
</head>
<body>
<p>
<span id="TemperatureValue">0</span>
<sup class="units">°C</sup>
</p>
<p>
<span id="HumidityValue">0</span>
<sup class="units">%</sup>
</p>
<div id="heart">
<br/>
<sup class="units">%</sup>
</div>
<div id="bodyTemperature">
<i class="fas fa-child" style="font-size:3.0rem;color:#fd7e14;"></i>
</div>
<p>
</P>
<script>
$(document).ready(function(){
console.log("AAAA");
getHear();
getTemperatureData();
getHumidityData();
getBody();
});
setInterval(function() {
getTemperatureData();
getHumidityData();
getHear();
getBody();
}, 2000);
setInterval(function() {
Time_Date();
}, 1000);
function getTemperatureData() {
$.get("/readTemperature",(data,status)=>{
document.getElementById("TemperatureValue").innerHTML = data;
});
function getHear(){
$.get("/readHear",(data,status)=>{
$("#heartRate").text(dataHeart[0]);
$("#bpm").text(dataHeart[1]);
});
}
function getHumidityData() {
$.get("/readHumidity",(data,status)=>{
document.getElementById("HumidityValue").innerHTML = data;
});
function getBody() {
$.get("/readBody",(data,status)=>{
document.getElementById("BodyTemperature").innerHTML = data;
});
function Time_Date() {
document.getElementById("time").innerHTML = t.toLocaleTimeString();
</script>
</body>
</html>
)=====";
TÀI LIỆU THAM KHẢO
1. Nguyễn Đình Phú, “ Giáo trình vi xử lý II”, NXB ĐH Quốc Gia Tp.HCM, 2007
3. Datasheet MAX30100,
https://datasheets.maximintegrated.com/en/ds/MAX30100.pdf
5. Datasheet DS18B20,
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf