SlideShare a Scribd company logo
1 of 64
Download to read offline
BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU
KHOA CÔNG NGHỆ KỸ THUẬT- NÔNG NGHIỆP CÔNG NGHỆ CAO
ĐỒ ÁN TỐT NGHIỆP
THIẾT BỊ ĐO THÔNG SỐ SỨC KHỎE TỰ ĐỘNG
Trình độ đào tạo : Đại học chính quy
Ngành : Công nghệ kỹ thuật Điện - Điện tử
Chuyên ngành : Điều khiển - Tự động hóa
GVHD : ThS. Lưu Hoàng
Sinh viên thực hiện : Trần Văn Phú
Lớp: DH17TD MSV: 17030021
Vũng Tàu, tháng 1 năm 2021
2
TRƯỜNG ĐẠI HỌC BÀ RỊA-VŨNG TÀU
KHOA CNKT – NN CNC
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA
VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP
(Đính kèm Quy định về việc tổ chức, quản lý các hình thức tốt nghiệp ĐH, CĐ ban
hành kèm theo Quyết định số 585/QĐ-ĐHBRVT ngày 16/7/2013 của Hiệu trưởng
Trường Đại học BR-VT)
Họ tên sinh viên: Trần Văn Phú Ngày sinh:23/03/1993
MSSV: 17030021 Lớp: DH17TD
Email: tranphu233@gmail.com
Chuyên ngành: Điều khiển và Tự động hóa
Hệ đào tạo: Đại học chính quy
Tên đề tài:
Giảng viên hướng dẫn: ThS. Lưu Hoàng
Ngày giao đề tài: 11/2020
Ngày hoàn thành đồ án/ khóa luận tốt nghiệp: 01/2021
Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021
Giảng viên hướng dẫn Sinh viên thực hiện
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
ThS. Lưu Hoàng Trần Văn Phú
Trưởng bộ môn Trưởng khoa
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
3
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
• Thái độ, tác phong và nhận thúc trong quá trình thực hiện
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
• Kiến thức chuyên môn
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Hình thức, bố cục trình bày
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Nội dung, kết quả
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Nhận xét khác
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021
Giảng viên hướng dẫn
(Ký và ghi rõ họ tên)
4
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
• Thái độ, tác phong và nhận thúc trong quá trình thực hiện
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
• Kiến thức chuyên môn
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Hình thức, bố cục trình bày
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Nội dung, kết quả
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
• Nhận xét khác
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021
Giảng viên phản biện
(Ký và ghi rõ họ tên)
5
LỜI CẢM ƠN
Đầu tiên nhóm em xin gởi lời cảm ơn sâu sắc đến Thầy Lưu Hoàng - Giảng viên
bộ môn Điện - Điện Tử, đã tận tình giúp đỡ, hướng dẫn, giảng giải cho chúng em
trong lựa chọn đề tài cũng như trong quá trình thực hiện đề tài. Trong quá trình
thực hiện đồ án cũng đã xảy ra nhiều khó khăn, thiếu sót nhưng được sự hỗ trợ và
góp ý của Thầy nên em đã hoàn thành tốt đồ án.
Trong suốt thời gian được theo học tại trường Đại học Bà Rịa Vũng Tàu, Tp.
Vũng Tàu, em đã nhận được nhiều sự quan tâm và giúp đỡ từ Thầy Cô và bạn bè.
Cảm ơn Hiệu Trưởng, cùng các quý thầy cô trường Đại học Bà Rịa – Vũng Tàu đã
hỗ trợ tận tình về trang thiết bị, phần mềm, cơ sở vật chất tạo điều kiện hoàn thành
đồ án. Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới quý Thầy Cô, những
người đã truyền lại cho em rất nhiều kinh nghiệm và kiến thức quý báu, những sự
giúp đỡ ấy đã tiếp thêm động lực cho em vững bước trên con đường mình đã chọn.
Và đặc biệt là Thầy, Cô khoa Điện - Điện tử đã truyền đạt kiến thức, kinh nghiệm
cũng như tạo những điều kiện tốt nhất để nhóm em hoàn thành đề tài.
Xin cảm ơn các bạn cùng khóa, cùng khoa đã động viên, khích lệ, ủng hộ về
nhiều mặt góp phần làm nên thành công của đồ án này.
Cảm ơn Đại Học Bà Rịa Vũng Tàu!
Xin chân thành cảm ơn!
Người thực hiện đề tài
Trần Văn Phú
6
LỜI MỞ ĐẦU
Hiện nay, khoa học Công nghệ ngày càng đạt được những thành tựu to lớn,
kéo theo đó là sự phát triển vượt bậc trong các ngành nghề có ứng dụng khoa học
kỹ thuật thì việc ứng dụng khoa học Công nghệ vào mọi mặt đời sống là điều cấp
thiết và cần được mở rộng
Theo dõi, cập nhật thông tin sức khỏe là vấn đề được quan tâm bởi đại đa số
người hiện nay. Nhưng thiết bị thu thập thông số sức khỏe thì chưa đủ toàn diện
và được phổ biến. Với khí hậu, tình hình môi trường cũng như các vấn đề về
thực phẩm, dịch bệnh trong thời gian gần thì đây là một đề tài mang tính thực tế.
Để góp phần làm sáng tỏ hiệu quả của những ứng dụng trong thực tế của ngành
điện - điện tử, sau một thời gian học tập, em đã nghiên cứu thực hiện đề tài “Thiết
kế thiết bị đo thông số sức khỏe tự động”.
7
MỤC LỤC
PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP .............................................................2
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ........................................................3
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN............................................................4
LỜI CẢM ƠN.................................................................................................................5
LỜI MỞ ĐẦU ................................................................................................................6
DANH MỤC HÌNH........................................................................................................9
CHƯƠNG I. TỔNG QUAN ...................................................................................10
1. Đặt vấn đề...........................................................................................................10
2. Mục tiêu đề tài....................................................................................................10
3. Nội dung nghiên cứu ..........................................................................................10
4. Đối tượng, phạm vi nghiên cứu và phương pháp nghiên cứu............................10
5. Sản phẩm và khả năng ứng dụng: ......................................................................11
6. Bố cục.................................................................................................................11
CHƯƠNG II. CƠ SỞ LÝ THUYẾT........................................................................13
1. Giới thiệu phần cứng..........................................................................................13
1.1. Arduino MEGA 2560 ...........................................................................13
1.2. Nguồn 5V-20A .....................................................................................14
1.3. Loadcell 50kg .......................................................................................15
1.4. Mạch chuyển đổi ADC 24bit Loadcell HX711....................................17
1.5. HCSR04................................................................................................18
1.6. Pulse Sensor..........................................................................................19
1.7. Cảm Biến Nhiệt Hồng Ngoại Không Tiếp Xúc MLX90614................20
1.8. Led matrix RGB P10 16x32 .................................................................22
2. Phần mềm lập trình.............................................................................................24
8
CHƯƠNG III. THIẾT KẾ THIẾT BỊ........................................................................27
1. Giới thiệu và yêu cầu của thiết bị.......................................................................27
2. Sơ đồ khối của thiết bị........................................................................................27
3. Các thành phần của thiết bị ................................................................................28
3.1. Bộ phận đo chiều cao............................................................................28
3.2. Bộ phận đo cân nặng.............................................................................29
3.3. Bộ phận đo nhịp tim .............................................................................30
3.4. Bộ phận đo nhiệt độ..............................................................................31
3.5. Bộ phận hiển thị....................................................................................31
3.6. Bộ phận nguồn cung cấp.......................................................................32
3.7. Lắp ráp thiết bị......................................................................................32
CHƯƠNG IV. KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ......................34
1. Kết luận ..............................................................................................................34
2. Phương hướng phát triển....................................................................................34
TÀI LIỆU THAM KHẢO............................................................................................35
PHỤ LỤC .....................................................................................................................36
1. Viết thư viện Data.h ...........................................................................................36
2. Khởi tạo thư viện MatrixDisp.h .........................................................................44
3. Code điều khiển chính........................................................................................56
4. Cài dặt các thư viện liên quan ............................................................................64
9
DANH MỤC HÌNH
Hình 1. Sơ đồ chân Arduino MEGA 2560 R3 .............................................................13
Hình 2. Nguồn tổ ong 5V 20A .....................................................................................14
Hình 3. Cảm biến Loadcell 50Kg.................................................................................15
Hình 4. Thiết kế của Loadcell 50kg .............................................................................16
Hình 5. Mạch chuyển đổi ADC 24bit Loadcell HX711...............................................17
Hình 6. Cảm biến siêu âm HC-SR04............................................................................18
Hình 7. Cảm biến nhịp tim Pulse Sensor......................................................................19
Hình 8. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614.................................20
Hình 9. Led matrix RGB P10 16x32............................................................................22
Hình 10. Các chân data của Led matrix .......................................................................22
Hình 11. Chiều đi của data trong Led matrix ...............................................................23
Hình 12. Cài đặt Java Runtime Environment...............................................................24
Hình 13. Chọn phiên bản Arduino ...............................................................................25
Hình 14. Giao diện khởi động của Arduino IDE..........................................................25
Hình 15. Sơ đồ khối của thiết bị...................................................................................27
Hình 16. Bộ phận đo chiều cao ...................................................................................28
Hình 17. Bộ phận đo trọng lượng.................................................................................29
Hình 18. Sơ đồ kết nối các loadcell với HX711...........................................................30
Hình 19. Bộ phận đo nhịp tim ......................................................................................30
Hình 20. Bộ phận đo nhiệt độ.......................................................................................31
Hình 21. Mặt trước thiết bị...........................................................................................31
Hình 22. Mặt sau thiết bị ..............................................................................................32
Hình 23. Sơ đồ kết nối các bộ phận..............................................................................32
Hình 24. Thiết bị lắp ráp hoàn chỉnh............................................................................33
10
CHƯƠNG I. TỔNG QUAN
1. Đặt vấn đề
Theo dõi, cập nhật thông tin sức khỏe là vấn đề được quan tâm bởi đại đa số
người hiện nay. Nhưng thiết bị thu thập thông số sức khỏe thì chưa đủ toàn diện
và được phổ biến. Với khí hậu, tình hình môi trường dang ngày càng trở nên xấu
đi cũng như các vấn đề về an toàn vệ sinh thực phẩm, dịch bệnh trong thời gian
gần mang tới những ảnh hưởng mạnh mẽ tới sức khỏe con người. Vì vậy cần có
một thiết bị đơn giản có thể thu thập những thông số sức khỏe cơn bản là điều vô
cùng cần thiết. Em đã nghiên cứu thực hiện đề tài “Thiết kế thiết bị đo thông số
sức khỏe tự động” đây là đề tài nghiên cứu mang tính thực tế cao.
2. Mục tiêu đề tài
- Nghiên cứu kết nối thu thập thông tin dữ liệu sức khỏe từ các cảm biến.
- Nghiên cứu bảng led điện tử và phương thức hiển thị thông tin.
- Nghiên cứu dựa trên kiến thức sinh viên đã học . Vd có áp dụng các môn học
như : Vi xử lí , ngôn ngữ lập trình ,điện tử, kỹ thuật số , linh kiện điện tử , cảm biến
. Ngoài ra tự học thêm ở ngoài những kiến thức như : lập trình arduino MEGA
2560 , lập trình web , hàn nhúng , hàn tay , ...
- Xây dựng thiết bị hoàn chỉnh để có hiển thị và thu thập thông số về sức khỏe.
Thiết bị có thể lắp đặt ở phòng khám bệnh, nhà thuốc hoặc các nơi công cộng khác.
3. Nội dung nghiên cứu
- Tìm hiểu công dụng của từng thiết bị điện, điện tử cụ thể là: Loadcell,
MLX90614, HC-SR04, Dây nối và Arduino MEGA 2560.
- Tìm hiểu phần mền để lập trình cho Arduino MEGA 2560 : ngôn ngữ
auduino , Arduino IDE , lập trình web
- Đưa ra các phương án nghiên cứu.
- Kiểm tra, đánh giá tính ứng dụng của đề tài.
4. Đối tượng, phạm vi nghiên cứu và phương pháp nghiên cứu
- Đối tượng nghiên cứu:
+ Về phần cứng: Loadcell, MLX90614, HC-SR04, Dây nối và Arduino MEGA
2560, Led matrix RGB.
11
+ Về phần mền : ngôn ngữ C, Arduino IDE.
- Phạm vi nghiên cứu: Thiết kế mạch liên kết các cảm biến thu thập dữ liệu
với Arduino. Hiển thị dữ liệu lên Led matrix.
- Cách tiếp cận và phương pháp nghiên cứu : Trong quá trình thực hiện, em
đã nghiên cứu, tìm hiểu qua sách, báo, các tài liệu trên internet, nghiên cứu cơ
sở lý thuyết về kỹ thuật thiết kế mạch . Ứng dụng những kiến thức đã học ở
trường cộng thêm học ở mạng như : tập lập trình arduino MEGA 2560 , liên kết
input/output , lập trình web , .... Từ cơ sở đó có thể xây dựng được mô hình này
qua 3 bước chính . Thiết kế mạch điều khiển, tiến hành lắp ráp mạch, hoàn thiện
mô hình.
5. Sản phẩm và khả năng ứng dụng:
- Thiết bị kích thước khoảng 300 x 300 x 2000 mm.
- Cập nhật, thu thập thông số về sức khỏe.
- Ứng dụng lắp đặt ở trong phòng khám bệnh, nhà thuốc. Hiển thị và thu thập
thông số về sức khỏe như: cân nặng, chiều cao, nhiệt độ cơ thể, nhịp tim.
6. Bố cục
•Chương I: Tổng quan
Trình bày, đặt vấn đề dẫn nhập lí do chọn đề tài, mục tiêu, nội dung nghiên cứu,
các giới hạn thông số và bố cục đồ án.
•Chương II: Cơ sở lý thuyết
Trình bày các lý thuyết liên quan đến vấn đề mà đề tài sẽ dùng để thực hiện thiết
kế, thi công cho đề tài.
•Chương III: Thiết kế thiết bị
Trình bày tổng quan các yêu cầu của để tài về thiết kế. Trình bày kết quả thi
công phần cứng và kết quả hình ảnh trên màn hình hay mô phỏng tín hiệu, kết
quả thống kê.
12
•Chương IV: Kết luận và phương hướng phát triển
Trình bày kết quả đạt được so với mục tiêu đề ra ban đầu, nhận xét và đánh giá
kết quả đạt được của đề tài nghiên cứu. Hướng phát triển của đề tài sau này trong
quá trình nghiên cứu.
•Tài liệu tham khảo
•Phụ lục
13
CHƯƠNG II. CƠ SỞ LÝ THUYẾT
1. Giới thiệu phần cứng
1.1. Arduino MEGA 2560
Hình 1. Sơ đồ chân Arduino MEGA 2560 R3
Mạch Arduino Mega 2560 Atmega là một board vi điều khiển dựa trên ATmega2560.
Board này có 54 chân I/O (14 chân PWM ), 16 analog đầu hàng vào, 4 UARTs (phần
cứng cổng tuần tự), sử dụng thạch anh 16 MHz, kết nối cổng USB, một Jack cắm điện,
chân ICSP, và một nút reset. Board có tất cả mọi thứ cần thiết để hỗ trợ vi điều khiển
Thông số kỹ thuật:
• Vi điều khiển chính: ATmega2560
• IC nạp và giao tiếp UART: ATmega16U2.
14
• Nguồn nuôi mạch: 5VDC từ cổng USB hoặc nguồn ngoài cắm từ giắc
tròn DC (khuyên dùng 7-9VDC để đảm bảo mạch hoạt động tốt. Nếu bạn cắm
12V thì IC ổn áp rất dễ chết và gây hư hỏng mạch).
• Số chân Digital: 54 (15 chân PWM)
• Số chân Analog: 16
• Giao tiếp UART : 4 bộ UART
• Giao tiếp SPI : 1 bộ ( chân 50 -> 53 ) dùng với thư viện SPI của Arduino
• Giao tiếp I2C : 1 bộ
• Ngắt ngoài : 6 chân
• Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader
• SRAM: 8 KB
• EEPROM: 4 KB
• Xung clock: 16 MHz
1.2. Nguồn 5V-20A
Hình 2. Nguồn tổ ong 5V 20A
Nguồn tổ ong 5V 20A là bộ nguồn được thiết kế để chuyển đổi điện áp xoay chiều thành
điện áp một chiều. Nguồn tổ ong 5V 20A có thiết kế gọn nhẹ, vỏ ngoài bằng kim loại
15
với những lỗ rổng giống như hình tổ ong nhằm mục đích nâng cao khả năng tản nhiệt,
cũng vì có thiết kế bề ngoài độc đáo này mà người ta thường gọi nó là Nguồn tổ ong.
Thông số kỹ thuật:
• Điện áp đầu vào: 110 – 220 VAC chỉnh bằng công tắc gạt
• Công suất: 100W
• Dòng đầu ra tối đa: 20A
• Nhiệt độ làm việc: -10 ~ 60 độ C
• Kích thước: 198 x 48 x 42mm
1.3. Loadcell 50kg
Hình 3. Cảm biến Loadcell 50Kg
Cảm biến Loadcell 50Kg sử dụng để đo khối lượng của vật thể tối đa 50Kg, cảm biến
bằng kim loại với thiết kế rất dễ lắp đặt, phù hợp với các ứng dụng cân điện tử, cảm
biến khối lượng,..., lưu ý để sử dụng với Vi điều khiển cần gắn thêm Mạch chuyển
đổi ADC HX711 chuyên dụng dành cho Loadcell.
Thông số kỹ thuật:
• Tải trọng: 50 kg
• Dộ nhạy 1 ±1.5% mv/V
• Độ lệch tuyến tính 0.05%F.S
• Zero Output -0.3 mv/V
• Creep( 1 min) 0.1%F.S
• Ảnh hưởng của nhiệt độ đến điểm 0: 0.3%F.S/10
• Ảnh hưởng của nhiệt độ đến đầu ra: 0.1%F.S/10
16
• Điện trở: 1000 ± 10 Ω
• Trở kháng cách ly: >= 2000 M
• Điện áp hoạt động: 5~8V
• Nhiệt độ hoạt động: -20~65 0C
• Cáp: φ0.8×460 mm
Hình 4. Thiết kế của Loadcell 50kg
17
1.4. Mạch chuyển đổi ADC 24bit Loadcell HX711
Hình 5. Mạch chuyển đổi ADC 24bit Loadcell HX711
Mạch chuyển đổi ADC 24bit Loadcell HX711: module chuyển đổi analog sang
digital 24-bit. HX711 được thiết kế để chuyển đối tín hiệu và ứng dụng điều khiển
công nghiệp để giao tiếp trực tiếp với một cảm biến cầu.
Mạch chuyển đổi ADC HX711 không chỉ có một vài chức năng cơ bản, cũng có tích
hợp cao, phản ứng nhanh, khả năng chống nhiễu, và độ tin cậy cao.
Đây là mạch đọc giá trị cảm biến loadcell với độ phân giải 24bit và chuyển sang giao
tiếp 2 dây ( clock và data ) để gửi dữ liệu cho vi điều khiển / arduino.
Thông số kỹ thuật:
• Điện áp hoạt động : 2.7 – 5V
• Dòng tiêu thụ : < 1.5 mA
• Tốc độ lấy mẫu : 10 – 80 SPS ( tùy chỉnh )
• Độ phân giải : 24 bit ADC
• Độ phân giải điện áp : 40mV
• Kích thước : 38 x 21 x 10 mm
18
1.5. HCSR04
Hình 6. Cảm biến siêu âm HC-SR04
Cảm biến siêu âm HC-SR04 (Ultrasonic Sensor) được sử dụng rất phổ biến để xác
định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến HC-SR04 sử dụng sóng siêu âm
và có thể đo khoảng cách trong khoảng từ 2 -> 300cm, với độ chính xác gần như chỉ
phụ thuộc vào cách lập trình.
Cảm biến siêu âm HC-SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm biến gồm
2 module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm phản xạ
về. Đầu tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Nếu có chướng
ngại vật trên đường đi, sóng siêu âm sẽ phản xạ lại và tác động lên module nhận
sóng. Bằng cách đo thời gian từ lúc phát đến lúc nhận sóng ta sẽ tính được khoảng
cách từ cảm biến đến chướng ngại vật với công thức:
Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2
Thông số kỹ thuật:
• Điện áp: 5V DC
• Dòng hoạt động: < 2mA
• Mức cao: 5V
19
• Mức thấp: 0V
• Góc tối đa: 15 độ
• Khoảng cách: 2cm – 450cm (4.5m)
• Độ chính xác: 3mm
1.6. Pulse Sensor
Cảm biến nhịp tim Pulse Sensor sử dụng nguyên lý đo nhịp tim bằng ánh sáng với kích
thước nhỏ gọn và giao tiếp Analog rất dễ sử dụng, cảm biến nhịp tim phù hợp cho các
ứng dụng điện tử y sinh.
Thông số kỹ thuật:
• Nguồn: 3~5VDC
• Dòng tiêu thụ: < 4mA
• Ngõ ra: Analog.
• Độ dài dây: 61cm ( 24 inch).
• Đường kính cảm biến: 1.6 cm ( 0.625 inch).
Hình 7. Cảm biến nhịp tim Pulse Sensor
20
1.7. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614
Hình 8. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614
Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614 là loại cảm biến đo nhiệt
độ hồng ngoại không tiếp xúc dùng chip MXL90614 sử dụng giao tiếp I2C có thể
dễ dàng kết nối với bất cứ vi điều khiển nào.
Tính năng và lợi ích:
• Kích thước nhỏ, chi phí thấp
• 10k Kéo điện trở lên cho giao diện I2C với các jumper hàn tùy chọn
• Dễ tích hợp
• Nhiệt độ hoạt động :
• -40 … + 125 ° C cho nhiệt độ cảm biến và
• -70 … + 380 ° C đối với nhiệt độ đối tượng.
• Độ chính xác cao 0.5 ° C trên nhiệt độ rộng (0 … + 50 ° C )
• Độ phân giải đo lường là 0,02 ° C
• Tùy chỉnh đầu ra PWM để liên tục
• Chế độ ngủ để giảm tiêu thụ điện năng
• Các tùy chọn gói khác nhau cho các ứng dụng và tính linh hoạt của tính linh hoạt
21
Ứng dụng cảm biến nhiệt hồng ngoại không tiếp xúc:
• Độ chính xác cao không tiếp xúc nhiệt độ
• Cảm biến độ nhạy nhiệt cho hệ thống điều khiển điều hòa không khí di động
• Yếu tố cảm biến nhiệt độ cho dân cư, thương mại và công nghiệp xây dựng điều
hòa kính chắn gió defogging
• Phát hiện góc mù ô tô
• Kiểm soát nhiệt độ công nghiệp của các bộ phận chuyển động
• Kiểm soát nhiệt độ trong máy in và máy photocop
• Thiết bị gia dụng có kiểm soát nhiệt độ
• Chăm sóc sức khỏe
• Giám sát chăn nuôi
• Phát hiện chuyển động
• Điều khiển nhiệt độ nhiều vùng – lên đến 127 bộ cảm biến có thể được đọc thông
qua 2 dây phổ biến
• Relay / cảnh báo nhiệt
• Đo nhiệt độ cơ thể
Ví dụ ứng dụng
• Độ chính xác cao không tiếp xúc nhiệt độ
• Cảm biến độ nhạy nhiệt cho hệ thống điều khiển điều hòa không khí di động
• Yếu tố cảm biến nhiệt độ cho dân cư, thương mại và công nghiệp xây dựng
điều hòa kính chắn gió defogging
• Phát hiện góc mù ô tô
• Kiểm soát nhiệt độ công nghiệp của các bộ phận chuyển động
• Kiểm soát nhiệt độ trong máy in và máy photocopy
• Thiết bị gia dụng có kiểm soát nhiệt độ
• Chăm sóc sức khỏe
• Giám sát chăn nuôi
22
• Phát hiện chuyển động
• Điều khiển nhiệt độ nhiều vùng – lên đến 127 bộ cảm biến có thể được đọc
thông qua 2 dây phổ biến
• Relay / cảnh báo nhiệt
• Đo nhiệt độ cơ thể
1.8. Led matrix RGB P10 16x32
Hình 9. Led matrix RGB P10 16x32
Module led ma trận P10 Full color 32×16 gồm 32 led hàng ngang và 16 led hàng
dọc, bản thân mỗi led bên trong có 3 led với 3 màu RGB, mỗi pixel cách nhau 1cm.
Tổng số led RGB là 32×16=512 LED RGB.
Hình 10. Các chân data của Led matrix
23
Chức năng của các chân
R1: Chân data cho màu đỏ của 8 hàng led bên trên
R2: Chân data cho màu đỏ của 8 hàng led phía dưới
G1: Chân data cho màu xanh lá của 8 hàng led bên trên
G2: Chân data cho màu xanh lá của 8 hàng led phía dưới
B1: Chân data cho màu xanh dương của 8 hàng led bên trên
B2: Chân data cho màu xanh dương của 8 hàng led phía dưới
CLK: Chân đẩy data vào ic ghi dịch
LAT: Chân chốt data ( đẩy data lưu trong ic ghi dịch ra ngoài led)
OE: Chân cho phép bảng led sáng ( OE=0 thì bảng led được phép sáng, OE=1 thì
bảng led auto tắt)
A,B,C: 3 chân của ic vào 3 ra 8, tức 3 chân dùng để quét led, cho phép hàng nào
sáng. Với 3 chân ABC ta điều khiển đc 8 hàng độc lập, nhưng module P10 có tới
16 hàng => trong 1 thời điểm có 2 hàng cùng sáng => module này quét kiểu 2/16 =
1/8
=> Trong 1 thời điểm số led RGB ta có thể điều khiển là 512 x 1/8 = 64 LED RGB
Chiều đi của data
Hình 11. Chiều đi của data trong Led matrix
Với P10 1 màu, data đi theo chiều zigzac, thì P10 FULL, data đi theo đường thẳng
module này chia ra làm 2 nửa theo chiều ngang, với dữ liệu của 8 hàng trên do RGB1
24
quyết định, còn 8 hàng dưới do RGB2 quyết định. Chân ABC sẽ quyết định hàng nào
trong 8 hàng của cả 2 nửa được sáng.
2. Phần mềm lập trình
Chương trình được lập trình trên phần mềm Arduino:
− Cài đặt Java Runtime Environment (JRE)
Vì Arduino IDE được viết trên Java nên bạn cần phải cài đặt JRE trước Arduino
IDE.
Link tải: http://www.oracle.com/technetwork/ja...
Chú ý:
Nhiều bạn do không cài JRE trên máy nên thường hay gặp phải tình trạng không
chạy được Arduino IDE.
2 bản JRE phổ biến nhất là bản dành cho Windows 32bit (x86) và Windows 64bit
(x64) mình đã đánh dấu trong hình. Nhớ chọn "Accept License Agreement".
Hình 12. Cài đặt Java Runtime Environment
−Cài đặt Arduino IDE
Bước 1: Truy cập địa chỉ http://arduino.cc/en/Main/Software/... Đây là nơi lưu trữ
cũng như cập nhật các bản IDE của Arduino. Bấm vào mục “Windows ZIP file for
non admin install”.
25
Bạn sẽ được chuyển đến một trang mời quyền góp tiền để phát triển phần mềm cho
Arduino, tiếp tục bấm JUST DOWNLOAD để bắt đầu tải.
Hình 13. Chọn phiên bản Arduino
Bước 2: Sau khi download xong, các bạn bấm chuột phải vào file vừa download
arduino-1.8.12-windows.zip và chọn “Extract here” để giải nén.
Bước 3: Copy thư mục arduino-1.8.12 vừa giải nén đến nơi lưu trữ.
Bước 4: Chạy file trong thư mục arduino-1.8.12 để khởi động Arduino IDE
Hình 14. Giao diện khởi động của Arduino IDE
26
- Cài đặt Driver
Để máy tính của bạn và board Arduino giao tiếp được với nhau, chúng ta cần phải
cài đặt driver trước tiên.
Nếu bạn dùng Windows 8, trong một số trường hợp Windows không cho phép bạn
cài Arduino driver (do driver không được kí bằng chữ kí số hợp lệ). Do vậy bạn
cần vào Windows ở chế độ Disable driver signature enforcement thì mới cài được
driver.
Đầu tiên, các bạn chạy file arduino-1.8.12driversdpinst-x86.exe (Windows x86)
hoặc arduino-1.8.12driversdpinst-amd64.exe (Windows x64). Cửa sổ “Device
Driver Installation Wizard” hiện ra, các bạn chọn Next để tiếp tục.
- Khi có yêu cầu xác nhận cài đặt driver, chọn “Install”
- Đợi khoảng 10 giây trong lúc quá trình cài đặt diễn ra …
- Quá trình cài đặt đã hoàn tất. Bấm “Finish” để thoát.
27
CHƯƠNG III. THIẾT KẾ THIẾT BỊ
1. Giới thiệu và yêu cầu của thiết bị
- Thiết bị kích thước khoảng 300 x 300 x 2000 mm.
- Cập nhật, thu thập thông số cân nặng, chiều cao, nhịp tim, nhiệt độ hiển thị trên
màn hình Led matrix.
2. Sơ đồ khối của thiết bị
Hình 15. Sơ đồ khối của thiết bị
Khối điều khiển trung tâm: khối điều khiển trung tâm sử dụng Arduino MEGA
2560 có hiệu năng cao, dùng để điều khiển các thiết bị khác trong hệ thống:
- Điều khiển đọc dữ liệu từ cảm biến.
- Truyền dữ liệu qua màn hình hiển thị của thiết bị.
Khối cảm biến: bao gồm cảm biến siêu âm, cảm biến nhiêt độ, cảm biến nhịp tim,
loadcell dùng để thu thập dữ liệu về cân nặng, chiều cao, nhiệt độ, nhịp tim đối
tượng, từ đó đưa tín hiệu về khối điều khiển trung tâm.
Khối hiển thị: Khối hiển thị sử dụng màn hình Led matrix RGB P10 16x32 dùng
để hiển thị số liệu đọc được từ khối cảm biến.
Khối nguồn : Khối nguồn là khối quan trọng giúp cung cấp điện cho toàn bộ hệ
thống. Vì vậy cần tính toán hợp lý để khối nguồn có thể cung cấp đủ dòng và áp để
mạch có thể hoạt động tốt và ổn định.
28
3. Các thành phần của thiết bị
3.1. Bộ phận đo chiều cao
Hình 16. Bộ phận đo chiều cao
Cảm biến siêu âm HC-SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm
biến gồm 2 module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm
phản xạ về. Đầu tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Sau khi
gặp đối tượng thì phản xạ về module thu và tính ra khoảng cách.
S = V*t/2 (cm)
Trong đó:
- S: Khoảng cách đo được
- V= 340m/s (Vận tốc âm thanh)
- t: Thời gian đo
29
Sau đó chiều cao đối tượng dược tính bằng:
H = hcb – S (cm)
Trong đó:
- S: Khoảng cách đo được
- hcb = Chiều cao vị trí đặt cảm biến
- H; Chiều cao đối tượng
3.2. Bộ phận đo cân nặng
Hình 17. Bộ phận đo trọng lượng
Bộ phận này bao gồm: 4 Loadcell 50kg, mạch chuyển dổi 24bit HX711 và một
số phụ kiện khác được kết nối như hình sau:
30
Hình 18. Sơ đồ kết nối các loadcell với HX711
Các loadcell đọc và gửi tín hiệu về bộ xử lý trung tâm thông qua HX711.
3.3. Bộ phận đo nhịp tim
Hình 19. Bộ phận đo nhịp tim
Cảm biến nhịp tim Pulse Sensor sử dụng nguyên lý đo nhịp tim bằng ánh sáng.
Cảm biến thi thập tín hiệu từ đối tượng rồi gửi về bộ xử lý trung tâm.
31
3.4. Bộ phận đo nhiệt độ
Hình 20. Bộ phận đo nhiệt độ
Cảm biến này đo nhiệt độ đối tượng thông qua bức xạ hông ngoại mà đối tượng
phát ra. Từ tín hiệu thu thập được qua kết nối I2C tới bộ xử ký trung tâm
3.5. Bộ phận hiển thị
Hình 21. Mặt trước thiết bị
Tấm Led matrix RGB 16x32 hiển thị các thông số sức khỏa thu thập được từ các
cảm biến thông qua chuẩn truyền SPI kết nối với bộ xử lý trung tâm. Các thông số
hiẻn thị lần lượt theo chương tringf đặt sẵn: Chiều cao, cân nặng, nhiệt độ, nhịp tim.
32
3.6. Bộ phận nguồn cung cấp
Hình 22. Mặt sau thiết bị
Nguồn tổ ong 5V-20A cung câp năng lượng hoạt động cho toàn bộ thiết bị vận
hành bình thường.
3.7. Lắp ráp thiết bị
Hình 23. Sơ đồ kết nối các bộ phận
33
Hình 24. Thiết bị lắp ráp hoàn chỉnh
34
CHƯƠNG IV. KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN
1. Kết luận
Sau một thời gian nghiên cứu và hoàn thành đề tài, nhóm đã nhận thấy mô hình
đã hiệu quả được 85%, trong thời gian nghiên cứu và thực hiện đề tài, nhóm đã học
hỏi và tìm hiểu thêm được nhiều kiến thức mới cũng như củng cố lại kiến thức đã
học giúp hoàn thành đề tài này. Vì đây là đề tài hướng đến việc giúp thu thập thông
tin sức khỏe con người nên phải chú trọng độ ổn định và chính xác dẫn đến nhiều
khó khăn trong quá trình lập trình. Nhưng nhờ sự hướng dẫn của giảng viên hướng
dẫn và các tài liệu tham khảo thì nhóm đã giải quyết được tương đối yêu cầu của
đề tài.
Trong quá trình thực hiện đề tài về phần cứng, nhóm đã tìm hiểu được chức năng
của các chân IO của board Ardruino, kết hợp với các cảm biến để đọc giá trị, sử
dụng các kiểu truyền dữ liệu để giao tiếp và module Led matrix RGB. Việc kết hợp
các module này lại với nhau để làm việc ổn định mất nhiều thời gian nhưng cũng
học hỏi được rất nhiều trong quá trình làm.
Tuy rằng sản phẩm đã được hoàn thành nhưng nhóm vẫn nhận thấy sản phẩm còn
nhiều thiếu sót, cần được chỉnh sửa và cải tiến hơn. Xây dựng hoàn thành mô hình
có khả năng cập nhật dữ liệu từ đối tượng đến thiết bị khác để xử lý theo nhiều yêu
cầu mà người dùng cần.
2. Phương hướng phát triển
Đề tài cơ bản đáp ứng được những yêu cầu đặt ra tuy nhiên để sản phẩm hoàn
thiện được hơn nữa thì đòi hỏi cần được cải tiến và nghiên cứu thêm.
Về chức năng, thiết bị được nghiên cứu chỉ dừng lại ở các chức năng cơ bản: cảm
biến nhiệt độ, cảm biến chiều cao, cảm biến nhịp tim, loadcell…cần thêm vào các
cảm biển có chức năng thu thập dữ liệu sức khỏe con người như: cảm biến oxy trong
máu,cảm biến đo huyết áp…
Ngoài ra thiết bị có thể tăng cường chức năng liên kết với các thiết bị khác thực
hiện lưu trữ thông tin hàng ngày so sánh với số liệu để phán doán tình trạng sức khỏe
nhằm đưa ra lời khuyên hữu ích cho sức ngày càng tốt hơn.
35
TÀI LIỆU THAM KHẢO
[1] Trần Thu Hà, Trương Thị Bích Ngà, “Giáo trình Điện tử cơ bản”, Nhà xuất
bản ĐH Quốc Gia TP Vũng Tàu, 2013.
[2] Nguyễn Việt Hùng, Nguyễn Ngô Lâm, Nguyễn Văn Phúc, Đặng Phước Hải
Trang, Giáo trình kỹ thuật truyền số liệu, NXB ĐH Quốc Gia TP. HCM, 2012.
[3] Phan Quang Phô, Nguyễn Đức Chiến, “Giáo trình cảm biến”. Nhà xuất bản
Khoa Học Kỹ Thuật, 2000.
[4] Dương Minh Trí, “Cảm biến và ứng dụng”, Nhà xuất bản Khoa học và Kỹ
thuật, 2001.
[5] http://arduino.vn/bai-viet/68-cai-dat-driver-va-arduino-ide
[6] http://alldatasheet.com/
[7] http://arduino.vn/
[8] http://codientu.org/
[9] http://webdien.com/
[10] http://www.tailieu.vn/
[11] https://hshop.vn/
36
PHỤ LỤC
1. Viết thư viện Data.h
#define UTF8_table_size 144
#define UTF8_char_start1 1
#define UTF8_char_end1 31
#define UTF8_char_start2 127
const uint32_t UTF8_table[] ={
0x0000C380, // À
0x0000C381, // Á
0x00E1BAA2, // Ả
0x0000C383, // Ã
0x00E1BAA0, // Ạ
0x0000C482, // Ă
0x00E1BAB0, // Ằ
0x00E1BAAE, // Ắ
0x00E1BAB2, // Ẳ
0x00E1BAB4, // Ẵ
0x00E1BAB6, // Ặ
0x0000C382, // Â
0x00E1BAA6, // Ầ
0x00E1BAA4, // Ấ
0x00E1BAA8, // Ẩ
0x00E1BAAA, // Ẫ
0x00E1BAAC, // Ậ
0x0000C490, // Đ
0x0000C388, // È
0x0000C389, // É
0x00E1BABA, // Ẻ
0x00E1BABC, // Ẽ
0x00E1BAB8, // Ẹ
37
0x0000C38A, // Ê
0x00E1BB80, // Ề
0x00E1BABE, // Ế
0x00E1BB82, // Ể
0x00E1BB84, // Ễ
0x00E1BB86, // Ệ
0x0000C38C, // Ì
0x0000C38D, // Í
0x00E1BB88, // Ỉ
0x0000C4A8, // Ĩ
0x00E1BB8A, // Ị
0x0000C392, // Ò
0x0000C393, // Ó
0x00E1BB8E, // Ỏ
0x0000C395, // Õ
0x00E1BB8C, // Ọ
0x0000C394, // Ô
0x00E1BB92, // Ồ
0x00E1BB90, // Ố
0x00E1BB94, // Ổ
0x00E1BB96, // Ỗ
0x00E1BB98, // Ộ
0x0000C6A0, // Ơ
0x00E1BB9C, // Ờ
0x00E1BB9A, // Ớ
0x00E1BB9E, // Ở
0x00E1BBA0, // Ỡ
0x00E1BBA2, // Ợ
0x0000C399, // Ù
0x0000C39A, // Ú
0x00E1BBA6, // Ủ
38
0x0000C5A8, // Ũ
0x00E1BBA4, // Ụ
0x0000C6AF, // Ư
0x00E1BBAA, // Ừ
0x00E1BBA8, // Ứ
0x00E1BBAC, // Ử
0x00E1BBAE, // Ữ
0x00E1BBB0, // Ự
0x00E1BBB2, // Ỳ
0x0000C39D, // Ý
0x00E1BBB6, // Ỷ
0x00E1BBB8, // Ỹ
0x00E1BBB4, // Ỵ
0x0000C3A0, // à
0x0000C3A1, // á
0x00E1BAA3, // ả
0x0000C3A3, // ã
0x00E1BAA1, // ạ
0x0000C483, // ă
0x00E1BAB1, // ằ
0x00E1BAAF, // ắ
0x00E1BAB3, // ẳ
0x00E1BAB5, // ẵ
0x00E1BAB7, // ặ
0x0000C3A2, // â
0x00E1BAA7, // ầ
0x00E1BAA5, // ấ
0x00E1BAA9, // ẩ
0x00E1BAAB, // ẫ
0x00E1BAAD, // ậ
0x0000C491, // đ
39
0x0000C3A8, // è
0x0000C3A9, // é
0x00E1BABB, // ẻ
0x00E1BABD, // ẽ
0x00E1BAB9, // ẹ
0x0000C3AA, // ê
0x00E1BB81, // ế
0x00E1BABF, // ề
0x00E1BB83, // ể
0x00E1BB85, // ễ
0x00E1BB87, // ệ
0x0000C3AC, // ì
0x0000C3AD, // í
0x00E1BB89, // ỉ
0x0000C4A9, // ĩ
0x00E1BB8B, // ị
0x0000C3B2, // ò
0x0000C3B3, // ó
0x00E1BB8F, // ỏ
0x0000C3B5, // õ
0x00E1BB8D, // ọ
0x0000C3B4, // ô
0x00E1BB93, // ố
0x00E1BB91, // ồ
0x00E1BB95, // ổ
0x00E1BB97, // ỗ
0x00E1BB99, // ộ
0x0000C6A1, // ơ
0x00E1BB9D, // ờ
0x00E1BB9B, // ớ
0x00E1BB9F, // ở
40
0x00E1BBA1, // ỡ
0x00E1BBA3, // ợ
0x0000C3B9, // ù
0x0000C3BA, // ú
0x00E1BBA7, // ủ
0x0000C5A9, // ũ
0x00E1BBA5, // ụ
0x0000C6B0, // ư
0x00E1BBAB, // ừ
0x00E1BBA9, // ứ
0x00E1BBAD, // ử
0x00E1BBAF, // ữ
0x00E1BBB1, // ự
0x00E1BBB3, // ỳ
0x0000C3BD, // ý
0x00E1BBB7, // ỷ
0x00E1BBB9, // ỹ
0x00E1BBB5 // ỵ
};
const uint8_t Sinclair_S[] ={//764
0x08,0x08,0x20,0x7E,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <space>
0x08,0x08,0x08,0x08,0x08,0x00,0x08,0x00, // !
0x14,0x14,0x00,0x00,0x00,0x00,0x00,0x00, // "
0x00,0x24,0x7E,0x24,0x24,0x7E,0x24,0x00, // #
0x10,0x7C,0x50,0x7C,0x14,0x7C,0x10,0x00, // $
0x00,0x62,0x64,0x08,0x10,0x26,0x46,0x00, // %
0x00,0x10,0x28,0x10,0x2A,0x44,0x3A,0x00, // &
0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x08,0x10,0x10,0x10,0x10,0x08,0x00, // (
0x00,0x10,0x08,0x08,0x08,0x08,0x10,0x00, // )
41
0x00,0x00,0x28,0x10,0x7C,0x10,0x28,0x00, // *
0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00, // +
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10, // ,
0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00, // -
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
0x00,0x00,0x04,0x08,0x10,0x20,0x40,0x00, // /
0x00,0x78,0x8C,0x94,0xA4,0xC4,0x78,0x00, // 0
0x00,0x60,0xA0,0x20,0x20,0x20,0xF8,0x00, // 1
0x00,0x78,0x84,0x04,0x78,0x80,0xFC,0x00, // 2
0x00,0x78,0x84,0x18,0x04,0x84,0x78,0x00, // 3
0x00,0x10,0x30,0x50,0x90,0xFC,0x10,0x00, // 4
0x00,0xFC,0x80,0xF8,0x04,0x84,0x78,0x00, // 5
0x00,0x78,0x80,0xF8,0x84,0x84,0x78,0x00, // 6
0x00,0xFC,0x04,0x08,0x10,0x20,0x20,0x00, // 7
0x00,0x78,0x84,0x78,0x84,0x84,0x78,0x00, // 8
0x00,0x78,0x84,0x84,0x7C,0x04,0x78,0x00, // 9
0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00, // :
0x00,0x00,0x10,0x00,0x00,0x10,0x10,0x20, // ;
0x00,0x00,0x08,0x10,0x20,0x10,0x08,0x00, // <
0x00,0x00,0x00,0x7C,0x00,0x7C,0x00,0x00, // =
0x00,0x00,0x20,0x10,0x08,0x10,0x20,0x00, // >
0x00,0x3C,0x42,0x04,0x08,0x00,0x08,0x00, // ?
0x00,0x3C,0x4A,0x56,0x5E,0x40,0x3C,0x00, // @
0x00,0x78,0x84,0x84,0xFC,0x84,0x84,0x00, // A
0x00,0xF8,0x84,0xF8,0x84,0x84,0xF8,0x00, // B
0x00,0x78,0x84,0x80,0x80,0x84,0x78,0x00, // C
0x00,0xF0,0x88,0x84,0x84,0x88,0xF0,0x00, // D
0x00,0xFC,0x80,0xF8,0x80,0x80,0xFC,0x00, // E
0x00,0xFC,0x80,0xF8,0x80,0x80,0x80,0x00, // F
42
0x00,0x78,0x84,0x80,0x9C,0x84,0x78,0x00, // G
0x00,0x84,0x84,0xFC,0x84,0x84,0x84,0x00, // H
0x00,0x7C,0x10,0x10,0x10,0x10,0x7C,0x00, // I
0x00,0x04,0x04,0x04,0x84,0x84,0x78,0x00, // J
0x00,0x88,0x90,0xE0,0x90,0x88,0x84,0x00, // K
0x00,0x80,0x80,0x80,0x80,0x80,0xFC,0x00, // L
0x00,0x84,0xCC,0xB4,0x84,0x84,0x84,0x00, // M
0x00,0x84,0xC4,0xA4,0x94,0x8C,0x84,0x00, // N
0x00,0x78,0x84,0x84,0x84,0x84,0x78,0x00, // O
0x00,0xF8,0x84,0x84,0xF8,0x80,0x80,0x00, // P
0x00,0x78,0x84,0x84,0xA4,0x94,0x78,0x00, // Q
0x00,0xF8,0x84,0x84,0xF8,0x88,0x84,0x00, // R
0x00,0x78,0x80,0x78,0x04,0x84,0x78,0x00, // S
0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x00, // T
0x00,0x84,0x84,0x84,0x84,0x84,0x78,0x00, // U
0x00,0x84,0x84,0x84,0x84,0x48,0x30,0x00, // V
0x00,0x84,0x84,0x84,0x84,0xB4,0x48,0x00, // W
0x00,0x84,0x48,0x30,0x30,0x48,0x84,0x00, // X
0x00,0x82,0x44,0x28,0x10,0x10,0x10,0x00, // Y
0x00,0xFC,0x08,0x10,0x20,0x40,0xFC,0x00, // Z
0x00,0x38,0x20,0x20,0x20,0x20,0x38,0x00, // [
0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x00, // <backslash>
0x00,0x38,0x08,0x08,0x08,0x08,0x38,0x00, // ]
0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x00, // ^
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, // _
0x3C,0x42,0x99,0xA1,0xA1,0x99,0x42,0x3C, // `
0x00,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00, // a
0x00,0x40,0x40,0x78,0x44,0x44,0x78,0x00, // b
0x00,0x00,0x1C,0x20,0x20,0x20,0x1C,0x00, // c
43
0x00,0x04,0x04,0x3C,0x44,0x44,0x3C,0x00, // d
0x00,0x00,0x38,0x44,0x78,0x40,0x3C,0x00, // e
0x00,0x0C,0x10,0x18,0x10,0x10,0x10,0x00, // f
0x00,0x00,0x3E,0x42,0x42,0x3E,0x02,0x3C, // g
0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x00, // h
0x00,0x08,0x00,0x18,0x08,0x08,0x1C,0x00, // i
0x00,0x04,0x00,0x04,0x04,0x04,0x24,0x18, // j
0x00,0x40,0x50,0x60,0x60,0x50,0x48,0x00, // k
0x00,0x10,0x10,0x10,0x10,0x10,0x0C,0x00, // l
0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00, // m
0x00,0x00,0x78,0x44,0x44,0x44,0x44,0x00, // n
0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00, // o
0x00,0x00,0x78,0x44,0x44,0x78,0x40,0x40, // p
0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x06, // q
0x00,0x00,0x1C,0x20,0x20,0x20,0x20,0x00, // r
0x00,0x00,0x38,0x40,0x38,0x04,0x78,0x00, // s
0x00,0x10,0x38,0x10,0x10,0x10,0x0C,0x00, // t
0x00,0x00,0x44,0x44,0x44,0x44,0x38,0x00, // u
0x00,0x00,0x44,0x44,0x28,0x28,0x10,0x00, // v
0x00,0x00,0x44,0x54,0x54,0x54,0x28,0x00, // w
0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00, // x
0x00,0x00,0x44,0x44,0x44,0x3C,0x04,0x38, // y
0x00,0x00,0x7C,0x08,0x10,0x20,0x7C,0x00, // z
0x00,0x1C,0x10,0x60,0x10,0x10,0x1C,0x00, // {
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00, // |
0x00,0x70,0x10,0x0C,0x10,0x10,0x70,0x00, // }
0x00,0x14,0x28,0x00,0x00,0x00,0x00,0x00, // ~
};
44
2. Khởi tạo thư viện MatrixDisp.h
#include <SPI.h>
#define A A0
#define B A1
#define C A2
#define OE 32
#define ST 33 //LAT
#define dispW 32
#define dispH 16
#define dispWB dispW/8
#define dispHB dispH/8
#define scanBuffLen (dispH*dispWB*3)/8
uint8_t dispBuff[3][dispH][dispWB];
uint8_t scanBuff[scanBuffLen];
volatile uint8_t scan=0;
uint8_t dispX,dispY,dataW=0,dataH;
uint8_t DELAY=1,textSpeed=15;
uint8_t *Font;
#define red 1
#define green 2
#define blue 4
#define yellow 3
#define purple 5
#define cyan 6
#define white 7
#define randc 8
void ShiftDispLeft(int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy,uint8_t
color);
void setupMatrixDisp() {
45
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV2);
pinMode(53, OUTPUT); //HSPI SS
pinMode(A, OUTPUT);digitalWrite(A, 0);
pinMode(B, OUTPUT);digitalWrite(B, 0);
pinMode(C, OUTPUT);digitalWrite(C, 0);
pinMode(OE, OUTPUT);digitalWrite(OE, 0);
pinMode(ST, OUTPUT);digitalWrite(ST, 0);
Font=Sinclair_S;
}
void DispScan(){
uint8_t c,y,x,j,i;
uint16_t idx=0;
for(c=0;c<3;c++){
for(j=scan;j<16;j+=8){
y=j;
while(y<dispH){
for(x=0;x<dispWB;x++)scanBuff[idx++]=dispBuff[c][y][x];
y+=16;
}
}
}
for(i=0;i<scanBuffLen;i++)SPI.transfer(scanBuff[i]);
digitalWrite(OE, 1);
digitalWrite(A,(bool)(scan&0x01));
digitalWrite(B,(bool)(scan&0x02));
digitalWrite(C,(bool)(scan&0x04));
digitalWrite(ST, 1);digitalWrite(ST, 0);
46
digitalWrite(OE, 0);
if(++scan>7)scan=0;
}
//xoa het dispClrAll(0);
void dispClrAll(uint8_t type){
uint8_t i,j,k,x,y,s=10;
if(type==0xff)type=(rand()%6) + 1;
if(type==0){
for(y=0;y<dispH;y++){
for(x=0;x<dispWB;x++){
dispBuff[0][y][x]=0;
dispBuff[1][y][x]=0;
dispBuff[2][y][x]=0;
}
}
}
else if(type==1){ //xoa tren xuong cham
for(y=0;y<dispH;y++){
for(x=0;x<dispWB;x++){
dispBuff[0][y][x]=0;
dispBuff[1][y][x]=0;
dispBuff[2][y][x]=0;
}
delay(s);
}
}
else if(type==2){ //xoa duoi len cham
for(y=dispH;y>0;y--){
for(x=0;x<dispWB;x++){
47
dispBuff[0][y-1][x]=0;
dispBuff[1][y-1][x]=0;
dispBuff[2][y-1][x]=0;
}
delay(s);
}
}
else if(type==3){ //troi xuong cham
i=dispH;
while(i--){
for(y=dispH-1;y>0;y--){
for(x=0;x<dispWB;x++){
dispBuff[0][y][x]=dispBuff[0][y-1][x];
dispBuff[1][y][x]=dispBuff[1][y-1][x];
dispBuff[2][y][x]=dispBuff[2][y-1][x];
}
}
for(x=0;x<dispWB;x++){dispBuff[0][0][x]=0;dispBuff[1][0][x]=0;dispBuff[2][
0][x]=0;}
delay(s);
}
}
else if(type==4){ //troi len cham
i=dispH;
while(i--){
for(y=0;y<dispH;y++){
for(x=0;x<dispWB;x++){
dispBuff[0][y][x]=dispBuff[0][y+1][x];
48
dispBuff[1][y][x]=dispBuff[1][y+1][x];
dispBuff[2][y][x]=dispBuff[2][y+1][x];
}
}
for(x=0;x<dispWB;x++){dispBuff[0][dispH-1][x]=0;dispBuff[1][dispH-
1][x]=0;dispBuff[2][dispH-1][x]=0;}
delay(s);
}
}
else if(type==5){ //xoa sang trai cham
for(x=0;x<dispW;x++){ShiftDispLeft(dispW,dispH,0,0,7);delay(s/2);}
}
else if(type==6){ //troi len cham
i=dispH;
while(i--){
for(y=0,j=dispH-1;y<dispH;y++,j--){
for(x=0,k=1;x<dispWB;x+=2,k+=2){
dispBuff[0][y][x]=dispBuff[0][y+1][x];
dispBuff[1][y][x]=dispBuff[1][y+1][x];
dispBuff[2][y][x]=dispBuff[2][y+1][x];
dispBuff[0][j][k]=dispBuff[0][j-1][k];
dispBuff[1][j][k]=dispBuff[1][j-1][k];
dispBuff[2][j][k]=dispBuff[2][j-1][k];
}
}
for(x=0;x<dispWB;x+=2){dispBuff[0][dispH-1][x]=0;dispBuff[1][dispH-
1][x]=0;dispBuff[2][dispH-1][x]=0;}
49
for(x=1;x<dispWB;x+=2){dispBuff[0][0][x]=0;dispBuff[1][0][x]=0;dispBuff[2]
[0][x]=0;}
delay(s);
}
}
}
//Ham set con tro man hinh
void dispGotoXY(uint8_t dispx,uint8_t dispy){
if(dispx)dispx--;dispX=dispx;
if(dispY)dispy--;dispY=dispy;
}
//hiển thị 1 mảng dữ liệu lên màn hình ở vị trí X(1-dispW) và Y(1-dispH)
void dispImage(uint8_t PROGMEM *ptr,uint8_t color,int8_t dispx,int8_t
dispy){
uint8_t c,i,j,w,h,wb,x,shl,shr,temp,buff,del;
int8_t y;
uint8_t PROGMEM *ptrs;
shr=dispx%8;shl=8-shr;dispx/=8;
x=dispx;y=dispy;
if(dataW==0){w=*ptr++;h=*ptr++;}
else{w=dataW;h=dataH;}
wb=(w+7)/8;
del=DELAY;
for(c=0;c<3;c++){
if((color&(1<<c))==0)continue;
ptrs=ptr;y=dispy;
for(j=0;j<h;j++,y++){
if(y<0){ptrs+=wb;continue;}
if(y>=dispH)break;
50
x=dispx;
temp=dispBuff[c][y][x];
temp&=(0xff<<shl);
for(i=0;i<=wb;i++,x++){
if(x>=dispWB){ptrs+=(wb-i);break;}
if(i<wb){buff=*ptrs++;}
else{buff=(dispBuff[c][y][x]<<shr);}
temp|=(buff>>shr);
if(((i+1)*8)>(w+shr)){
i=(w+shr)%8;
temp&=(0xff<<(8-i));
temp|=(dispBuff[c][y][x]&(0xff>>i));
i=wb+1;
}
dispBuff[c][y][x]|=temp;
if(del)delay(del);
temp=(buff<<shl);
}
}
del=0;
}
dataW=0;
}
void insertImage(uint8_t PROGMEM *ptr,uint8_t color,int8_t dispx,int8_t
dispy){
uint8_t c,i,j,w,h,wb,x,shl,shr,temp,buff,mask,sh;
int8_t y,del;
uint8_t PROGMEM *ptrs;
shr=dispx%8;shl=8-shr;dispx/=8;
51
x=dispx;y=dispy;
if(dataW==0){w=*ptr++;h=*ptr++;}
else{w=dataW;h=dataH;}
wb=(w+7)/8;
for(c=0;c<3;c++){
ptrs=ptr;y=dispy;
for(j=0;j<h;j++,y++){
if(y<0){ptrs+=wb;continue;}
if(y>=dispH)break;
x=dispx;
temp=dispBuff[c][y][x];
temp&=(0xff<<shl);
mask=temp|(0xff>>shr);
for(i=0;i<=wb;i++,x++){
if(x>=dispWB){ptrs+=(wb-i);break;}
if(i<wb){buff=*ptrs++;mask&=~(buff>>shr);}
else{buff=(dispBuff[c][y][x]<<shr);mask|=(0xff>>shr);}
temp|=(buff>>shr);
if(((i+1)*8)>(w+shr)){
sh=(w+shr)%8;
temp&=(0xff<<(8-sh));
temp|=(dispBuff[c][y][x]&(0xff>>sh));
mask|=(0xff>>sh);
i=wb+1;
}
dispBuff[c][y][x]&=mask;
if(color&(1<<c)){dispBuff[c][y][x]|=temp;if(del)delay(del);}
temp=(buff<<shl);
mask=~temp;
52
}
del=0;
}
}
dataW=0;
}
uint8_t UTF8_GetAddr(char PROGMEM *utf8_char,uint8_t *offset){
*offset=1;
uint8_t i=0,temp = *utf8_char;
//Serial.println(String(temp));
if(temp<0x80)return (temp); //nếu đây là kí tự trong bản ascii
uint32_t utf8Value=0; //nếu đây là kí tự tiếng Việt có đấu
temp&=0xf0;
while(temp){
utf8Value<<=8;
utf8Value|=*utf8_char++;
temp<<=1;
i++;
}
*offset=i;
for(i = 0; i < UTF8_table_size; i++){
if(utf8Value == UTF8_table[i]){
if(i<UTF8_char_end1)return i+1;
else return i+UTF8_char_start2-UTF8_char_end1;
}
}
return '?';
}
53
uint8_t writeVietStr(char PROGMEM *ptr,uint8_t color,int8_t dispx,int8_t
dispy){
uint8_t PROGMEM *ptrch,*ptrf;
uint8_t fw,fh,fwb,offset,rootchar,space,ch,i,j,k,mask,next,count=0;
ptrf=Font;
fw=*ptrf++;
fh=*ptrf++;
offset=*ptrf++;
rootchar=*ptrf++;
space=*ptrf++;
fwb=(fw+7)/8;
while(*ptr){
ch=UTF8_GetAddr(ptr,&next);
ptr+=next;
if(ch<offset)continue;
if(ch>rootchar)continue;
dataW=fw;dataH=fh;
ptrch=ptrf+(ch-offset)*fh*fwb;
if(ch==0x20){mask=fw/2;k=fwb;}else k=0;
for(k;k<fwb;k++){
mask=0x01;
for(i=0;i<8;i++){
for(j=fwb-k-1;j<fh*fwb;j+=fwb){
ch=*(ptrch+j);
if(ch&mask)break;
}
if(j<(fh*fwb))break;
else mask<<=1;
}
54
if(i<8){mask=fwb*8-i-(k*8)+space;break;}
}
if(color==8){j=rand()%7;j+=1;}else j=color;
dispImage(ptrch,j,dispx,dispy);
dispx+=mask;
count+=mask;
if(dispx>dispW)return count;
}
return count;
}
void ShiftDispLeft(int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy,uint8_t
color){
uint8_t c,x,y,i,j,temp,temp2,left,right;
dispw+=dispx;dispw--;if(dispw>=dispW)dispw=dispW-1;
disph+=dispy;disph--;if(disph>=dispH)disph=dispH-1;
left=dispx%8;right=dispw%8;
dispx/=8;dispw/=8;
for(y=dispy;y<=disph;y++){
for(x=dispx;x<=dispw;x++){
for(c=0;c<3;c++){
if((color&(1<<c))==0)continue;
temp=dispBuff[c][y][x];
temp<<=1;
if(x<dispw){if(dispBuff[c][y][x+1]&0x80)temp|=0x01;}
else{
temp2=(dispBuff[c][y][x]&(0xff>>(right+1)));
temp&=(0xff<<(8-right));
temp|=temp2;
}
55
if(x==dispx){
temp2=(dispBuff[c][y][x]&(0xff<<(8-left)));
temp&=(0xff>>left);
temp|=temp2;
}
dispBuff[c][y][x]=temp;
}
}
}
}
void StringScrollLeft(char PROGMEM *text,uint8_t speedms,uint8_t
color,int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy){
uint8_t count,chr,next,i,x,d=DELAY;
char temp[5];
DELAY=0;
if(color>7){color=rand()%7;color++;}
x+=dispw;if(x>dispW)x=dispW;
while(*text){
if(*text==0x0A){
i=x;
while(i--){delay(speedms);ShiftDispLeft(dispw,disph,dispx,dispy,7);}
text++;
}
temp[0]=UTF8_GetAddr(text,&next);
for(i=0;i<next;i++)temp[i]=*(text+i);
temp[i]=0;
text+=next;
count= writeVietStr(temp,color,x,dispy);
for(i=1;i<=count;i++){
56
delay(speedms);
ShiftDispLeft(dispw,disph,dispx,dispy,7);
writeVietStr(temp,color,x-i,dispy);
}
}
while(x--){delay(speedms);ShiftDispLeft(dispw,disph,dispx,dispy,7);}
DELAY=d;
}
3. Code điều khiển chính
#include <Wire.h>
#include <TimerOne.h> // khai báo thư viện timer 1
#include "Data.h"
#include "MatrixDisp.h"
#include <HCSR04.h>
UltraSonicDistanceSensor Sensor1(8,9);
int DistanceCm = 0;
int KhoangCach = 0;
int oldDis = 0;
#include <HX711.h>
#define DT 2
#define CK 3
HX711 scale;
float calibration_factor = -7050; //-7050 worked for my 440lb max scale setup
float n=0.45359237;
float LBS; int KG;
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
57
//Nhiptim
int pulsePin = A8; // Pulse Sensor purple wire connected to analog pin
A0
int blinkPin = 13; // pin to blink led at each beat
// Volatile Variables, used in the interrupt service routine!
volatile int BPM; // int that holds raw Analog in 0. updated every 2mS
volatile int Signal; // holds the incoming raw data
volatile int IBI = 600; // int that holds the time interval between beats!
Must be seeded!
volatile boolean Pulse = false; // "True" when User's live heartbeat is detected.
"False" when not a "live beat".
volatile boolean QS = false; // becomes true when Arduoino finds a beat.
static boolean serialVisual = true; // Set to 'false' by Default. Re-set to 'true' to
see Arduino Serial Monitor ASCII Visual Pulse
volatile int rate[10]; // array to hold last ten IBI values
volatile unsigned long sampleCounter = 0; // used to determine pulse timing
volatile unsigned long lastBeatTime = 0; // used to find IBI
volatile int P = 512; // used to find peak in pulse wave, seeded
volatile int T = 512; // used to find trough in pulse wave, seeded
volatile int thresh = 525; // used to find instant moment of heart beat,
seeded
volatile int amp = 100; // used to hold amplitude of pulse waveform,
seeded
volatile boolean firstBeat = true; // used to seed rate array so we startup with
reasonable BPM
volatile boolean secondBeat = false; // used to seed rate array so we startup
with reasonable BPM
void setup() {
// put your setup code here, to run once:
//MLX90614
58
mlx.begin();
//Loadcell
scale.begin(DT,CK);
scale.set_scale();
scale.tare(); //Reset the scale to 0
long zero_factor = scale.read_average(); //Get a baseline reading
//LedMatrix
setupMatrixDisp();
Timer1.initialize(2000); // khởi tạo timer 1 2ms
Timer1.attachInterrupt(DispScan); // khai báo ngắt timer 1
dispClrAll(0);
//PS
pinMode(blinkPin,OUTPUT); // pin that will blink to your heartbeat!
interruptSetup();
}
void loop() {
// put your main code here, to run repeatedly:
//SFR04
DistanceCm = Sensor1.measureDistanceCm();
KhoangCach = (200-DistanceCm);
if (KhoangCach < 0)
{
KhoangCach = oldDis;
}
oldDis = KhoangCach;
String str =String(KhoangCach) + "CM";
char buf[100];
str.toCharArray(buf,100);
Serial.println(str);
//Loadcell
scale.set_scale(calibration_factor);//Adjust to this calibration factor
59
LBS=scale.get_units();
KG=LBS*n;
String str1 =String((KG)) + "KG";
char buf1[100];
str1.toCharArray(buf1,100);
Serial.println(str1);
//MLX90614
String str2 =String(mlx.readObjectTempC()) + "C";
char buf2[100];
str2.toCharArray(buf2,100);
Serial.println(str2);
//BPM
serialOutput();
if (QS == true) // A Heartbeat Was Found
{
serialOutputWhenBeatHappens(); // A Beat Happened, Output that to serial.
QS = false; // reset the Quantified Self flag for next time
}
dispClrAll(0);
writeVietStr("CAO:",green,1,0);
writeVietStr(buf,green,0,8);
delay(1000);
dispClrAll(0);
writeVietStr("NANG:",blue,1,0);
writeVietStr(buf1,blue,0,8);
delay(1000);
dispClrAll(0);
writeVietStr("TEMP:",purple,1,0);
writeVietStr(buf2,purple,0,8);
delay(1000);
60
void interruptSetup()
{
// Initializes Timer2 to throw an interrupt every 2mS.
TCCR2A = 0x02; // disable PWM on digital pins 3 and 11, and go into ctc mode
TCCR2B = 0x06; // don't force compare, 256 prescaler
OCR2A = 0X7C; // set the top of the count to 124 for 500hz sample rate
TIMSK2 = 0x02; // enable interrupt on match between timer2 and ocr2a
sei(); // make sure global interrupts are enabled
}
void serialOutput()
{ // Decide How To Output Serial.
if (serialVisual == true)
{
arduinoSerialMonitorVisual('-', Signal); // goes to function that makes Serial
Monitor Visualizer
}
else
{
sendDataToSerial('S', Signal); // goes to sendDataToSerial function
}
}
void serialOutputWhenBeatHappens()
{
if (serialVisual == true) // Code to Make the Serial Monitor Visualizer Work
{
String str3 = String(BPM);
char buf3[100];
str3.toCharArray(buf3,100);
dispClrAll(0);
writeVietStr("BPM:",cyan,1,0);
writeVietStr(buf3,cyan,0,8);
61
delay(1000);
Serial.println(str3);
}
else
{
sendDataToSerial('B',BPM); // send heart rate with a 'B' prefix
sendDataToSerial('Q',IBI); // send time between beats with a 'Q' prefix
}
}
void arduinoSerialMonitorVisual(char symbol, int data )
{
const int sensorMin = 0; // sensor minimum, discovered through experiment
const int sensorMax = 1024; // sensor maximum, discovered through
experiment
int sensorReading = data; // map the sensor range to a range of 12 options:
int range = map(sensorReading, sensorMin, sensorMax, 0, 11);
// do something different depending on the
// range value:
}
void sendDataToSerial(char symbol, int data )
{
Serial.print(symbol);
Serial.println(data);
}
ISR(TIMER2_COMPA_vect) //triggered when Timer2 counts to 124
{
cli(); // disable interrupts while we do this
Signal = analogRead(pulsePin); // read the Pulse Sensor
sampleCounter += 2; // keep track of the time in mS with this
variable
62
int N = sampleCounter - lastBeatTime; // monitor the time since the last beat
to avoid noise
// find the peak and trough of the pulse wave
if(Signal < thresh && N > (IBI/5)*3) // avoid dichrotic noise by waiting 3/5 of
last IBI
{
if (Signal < T) // T is the trough
{
T = Signal; // keep track of lowest point in pulse wave
}
}
if(Signal > thresh && Signal > P)
{ // thresh condition helps avoid noise
P = Signal; // P is the peak
} // keep track of highest point in pulse wave
// NOW IT'S TIME TO LOOK FOR THE HEART BEAT
// signal surges up in value every time there is a pulse
if (N > 250)
{ // avoid high frequency noise
if ( (Signal > thresh) && (Pulse == false) && (N > (IBI/5)*3) )
{
Pulse = true; // set the Pulse flag when we think there is a
pulse
digitalWrite(blinkPin,HIGH); // turn on pin 13 LED
IBI = sampleCounter - lastBeatTime; // measure time between beats in
mS
lastBeatTime = sampleCounter; // keep track of time for next pulse
if(secondBeat)
{ // if this is the second beat, if secondBeat == TRUE
secondBeat = false; // clear secondBeat flag
63
for(int i=0; i<=9; i++) // seed the running total to get a realisitic BPM at
startup
{
rate[i] = IBI;
}
}
if(firstBeat) // if it's the first time we found a beat, if firstBeat == TRUE
{
firstBeat = false; // clear firstBeat flag
secondBeat = true; // set the second beat flag
sei(); // enable interrupts again
return; // IBI value is unreliable so discard it
}
// keep a running total of the last 10 IBI values
word runningTotal = 0; // clear the runningTotal variable
for(int i=0; i<=8; i++)
{ // shift data in the rate array
rate[i] = rate[i+1]; // and drop the oldest IBI value
runningTotal += rate[i]; // add up the 9 oldest IBI values
}
rate[9] = IBI; // add the latest IBI to the rate array
runningTotal += rate[9]; // add the latest IBI to runningTotal
runningTotal /= 10; // average the last 10 IBI values
BPM = 60000/runningTotal; // how many beats can fit into a minute?
that's BPM!
QS = true; // set Quantified Self flag
// QS FLAG IS NOT CLEARED INSIDE THIS ISR
}
}
if (Signal < thresh && Pulse == true)
{ // when the values are going down, the beat is over
64
digitalWrite(blinkPin,LOW); // turn off pin 13 LED
Pulse = false; // reset the Pulse flag so we can do it again
amp = P - T; // get amplitude of the pulse wave
thresh = amp/2 + T; // set thresh at 50% of the amplitude
P = thresh; // reset these for next time
T = thresh;
}
if (N > 2500)
{ // if 2.5 seconds go by without a beat
thresh = 512; // set thresh default
P = 512; // set P default
T = 512; // set T default
lastBeatTime = sampleCounter; // bring the lastBeatTime up to date
firstBeat = true; // set these to avoid noise
secondBeat = false; // when we get the heartbeat back
}
sei(); // enable interrupts when youre done!
}
4. Cài dặt các thư viện liên quan
✓ Thư viện HCSR04( UntralSonicsensor)
✓ Thư viện HX711
✓ Thư viện Adafruit_MLX90614
✓ Thư viện Wire

More Related Content

Similar to Thiết bị đo thông số sức khỏe tự động.pdf

Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...lamluanvan.net Viết thuê luận văn
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706nataliej4
 
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...mokoboo56
 
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạyThiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạyDomenick Feest
 
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdf
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdfĐiều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdf
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdfMan_Ebook
 
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAY
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAYLuận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAY
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAYViết thuê trọn gói ZALO 0934573149
 
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...lamluanvan.net Viết thuê luận văn
 
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...mokoboo56
 

Similar to Thiết bị đo thông số sức khỏe tự động.pdf (20)

Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAYĐề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
 
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển hợp tác xã nông nghiệp ...
 
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đĐề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
 
Đề tài: Mô hình phân loại sản phẩm theo chiều cao dùng Arduino
Đề tài: Mô hình phân loại sản phẩm theo chiều cao dùng ArduinoĐề tài: Mô hình phân loại sản phẩm theo chiều cao dùng Arduino
Đề tài: Mô hình phân loại sản phẩm theo chiều cao dùng Arduino
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG HỖ TRỢ HỌC SINH THI TRẮC NGHIỆM BẬC THPT edfc5706
 
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAYĐề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
 
Đề tài: Ứng dụng Wear Os trong việc hỗ trợ người già, HAY
Đề tài: Ứng dụng Wear Os trong việc hỗ trợ người già, HAYĐề tài: Ứng dụng Wear Os trong việc hỗ trợ người già, HAY
Đề tài: Ứng dụng Wear Os trong việc hỗ trợ người già, HAY
 
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minhĐề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
 
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...
Đồ Án Tốt Nghiệp Về Mạng perceptron đa lớp với luật học lan truyền ngược sai ...
 
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạyThiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
 
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdf
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdfĐiều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdf
Điều khiển giám sát hệ thống tưới và chiếu sáng qua wifi.pdf
 
Đề tài: Hệ thống giám sát và điều khiển thiết bị trong nhà, HAY
Đề tài: Hệ thống giám sát và điều khiển thiết bị trong nhà, HAYĐề tài: Hệ thống giám sát và điều khiển thiết bị trong nhà, HAY
Đề tài: Hệ thống giám sát và điều khiển thiết bị trong nhà, HAY
 
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAY
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAYLuận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAY
Luận án: Ước lượng kênh truyền mimo dùng thuật toán mù cải tiến, HAY
 
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...
Luận văn 2024 Thực trạng và giải pháp nhằm phát triển Hợp tác xã nông nghiệp ...
 
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắcĐề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
Đề tài: Mô hình đếm, phân loại sản phẩm theo cân nặng màu sắc
 
Mô hình nghịch lưu tăng áp ba bậc điều khiển cầu Diode kẹp, 9đ
Mô hình nghịch lưu tăng áp ba bậc điều khiển cầu Diode kẹp, 9đMô hình nghịch lưu tăng áp ba bậc điều khiển cầu Diode kẹp, 9đ
Mô hình nghịch lưu tăng áp ba bậc điều khiển cầu Diode kẹp, 9đ
 
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên WebHệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
 
Đề tài: Cảnh báo sinh viên thông qua hệ thống quét vân tay, 9đ
Đề tài: Cảnh báo sinh viên thông qua hệ thống quét vân tay, 9đĐề tài: Cảnh báo sinh viên thông qua hệ thống quét vân tay, 9đ
Đề tài: Cảnh báo sinh viên thông qua hệ thống quét vân tay, 9đ
 
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...
Đồ Án Tốt Nghiệp Chương Trình Phân Công Coi Thi Học Kỳ Của Trường Đhdl Hải Ph...
 

More from Man_Ebook

BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdfBÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdfMan_Ebook
 
TL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.docTL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.docMan_Ebook
 
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdfGiáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdfGiáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdfGiáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdfGiáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdfGiáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdfMan_Ebook
 
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdfGiáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdfGiáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdfMan_Ebook
 
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdfGiáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdfGiáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdfMan_Ebook
 
Giáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdfGiáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdfMan_Ebook
 
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình web  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình song song  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdfMan_Ebook
 
Giáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdfGiáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdfMan_Ebook
 
Giáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdfGiáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdfMan_Ebook
 
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdfGiáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdfMan_Ebook
 

More from Man_Ebook (20)

BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdfBÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
 
TL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.docTL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
 
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdfGiáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
 
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdfGiáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdf
 
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
 
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
 
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdfGiáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
 
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdfGiáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
 
Giáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdfGiáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdf
 
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdfGiáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
 
Giáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdfGiáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdf
 
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdfGiáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
 
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdfGiáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
 
Giáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdfGiáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdf
 
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình web  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình song song  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdfGiáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdf
 
Giáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdfGiáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdf
 
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdfGiáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdf
 

Recently uploaded

TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...Nguyen Thanh Tu Collection
 
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025lamluanvan.net Viết thuê luận văn
 
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...lamluanvan.net Viết thuê luận văn
 
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...lamluanvan.net Viết thuê luận văn
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...lamluanvan.net Viết thuê luận văn
 
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...lamluanvan.net Viết thuê luận văn
 
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...Nguyen Thanh Tu Collection
 
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viênKỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viênKhanh Nguyen Hoang Bao
 
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdf
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdfTiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdf
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdfchimloncamsungdinhti
 
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...songtoan982017
 
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...lamluanvan.net Viết thuê luận văn
 
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh AnPhân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh Anlamluanvan.net Viết thuê luận văn
 
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...lamluanvan.net Viết thuê luận văn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...lamluanvan.net Viết thuê luận văn
 
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họcChương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họchelenafalet
 
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3lamluanvan.net Viết thuê luận văn
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...Nguyen Thanh Tu Collection
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...Nguyen Thanh Tu Collection
 
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haiBài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haingTonH1
 

Recently uploaded (20)

TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TIẾNG ANH 2024 - TỪ CÁC TRƯỜNG, ...
 
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
 
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
 
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
 
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN HIỆU QUẢ HOẠT ĐỘNG CỦA NGÂN HÀNG THƯƠNG MẠI CỔ PHẦN...
 
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...
Hoàn thiện hoạt động kiểm soát rủi ro tín dụng trong cho vay doanh nghiệp tại...
 
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
 
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viênKỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
 
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdf
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdfTiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdf
Tiểu luận triết học_Nguyễn Gia Nghi_QHCCCLC_11230120.pdf
 
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
 
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
 
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh AnPhân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
 
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...
QUẢN LÝ TRUNG TÂM GIÁO DỤC NGHỀ NGHIỆP – GIÁO DỤC THƯỜNG XUYÊN HUYỆN LẬP THẠC...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...
Báo cáo bài tập lớn E - Marketing Xây dựng kế hoạch marketing điện tử cho nhã...
 
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họcChương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
 
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haiBài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
 

Thiết bị đo thông số sức khỏe tự động.pdf

  • 1. BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU KHOA CÔNG NGHỆ KỸ THUẬT- NÔNG NGHIỆP CÔNG NGHỆ CAO ĐỒ ÁN TỐT NGHIỆP THIẾT BỊ ĐO THÔNG SỐ SỨC KHỎE TỰ ĐỘNG Trình độ đào tạo : Đại học chính quy Ngành : Công nghệ kỹ thuật Điện - Điện tử Chuyên ngành : Điều khiển - Tự động hóa GVHD : ThS. Lưu Hoàng Sinh viên thực hiện : Trần Văn Phú Lớp: DH17TD MSV: 17030021 Vũng Tàu, tháng 1 năm 2021
  • 2. 2 TRƯỜNG ĐẠI HỌC BÀ RỊA-VŨNG TÀU KHOA CNKT – NN CNC CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP (Đính kèm Quy định về việc tổ chức, quản lý các hình thức tốt nghiệp ĐH, CĐ ban hành kèm theo Quyết định số 585/QĐ-ĐHBRVT ngày 16/7/2013 của Hiệu trưởng Trường Đại học BR-VT) Họ tên sinh viên: Trần Văn Phú Ngày sinh:23/03/1993 MSSV: 17030021 Lớp: DH17TD Email: tranphu233@gmail.com Chuyên ngành: Điều khiển và Tự động hóa Hệ đào tạo: Đại học chính quy Tên đề tài: Giảng viên hướng dẫn: ThS. Lưu Hoàng Ngày giao đề tài: 11/2020 Ngày hoàn thành đồ án/ khóa luận tốt nghiệp: 01/2021 Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021 Giảng viên hướng dẫn Sinh viên thực hiện (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên) ThS. Lưu Hoàng Trần Văn Phú Trưởng bộ môn Trưởng khoa (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
  • 3. 3 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN • Thái độ, tác phong và nhận thúc trong quá trình thực hiện ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... • Kiến thức chuyên môn ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Hình thức, bố cục trình bày ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Nội dung, kết quả ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Nhận xét khác ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021 Giảng viên hướng dẫn (Ký và ghi rõ họ tên)
  • 4. 4 NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN • Thái độ, tác phong và nhận thúc trong quá trình thực hiện ........................................................................................................................... ........................................................................................................................... ........................................................................................................................... • Kiến thức chuyên môn ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Hình thức, bố cục trình bày ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Nội dung, kết quả ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... • Nhận xét khác ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... Bà Rịa – Vũng Tàu, ngày … tháng … năm 2021 Giảng viên phản biện (Ký và ghi rõ họ tên)
  • 5. 5 LỜI CẢM ƠN Đầu tiên nhóm em xin gởi lời cảm ơn sâu sắc đến Thầy Lưu Hoàng - Giảng viên bộ môn Điện - Điện Tử, đã tận tình giúp đỡ, hướng dẫn, giảng giải cho chúng em trong lựa chọn đề tài cũng như trong quá trình thực hiện đề tài. Trong quá trình thực hiện đồ án cũng đã xảy ra nhiều khó khăn, thiếu sót nhưng được sự hỗ trợ và góp ý của Thầy nên em đã hoàn thành tốt đồ án. Trong suốt thời gian được theo học tại trường Đại học Bà Rịa Vũng Tàu, Tp. Vũng Tàu, em đã nhận được nhiều sự quan tâm và giúp đỡ từ Thầy Cô và bạn bè. Cảm ơn Hiệu Trưởng, cùng các quý thầy cô trường Đại học Bà Rịa – Vũng Tàu đã hỗ trợ tận tình về trang thiết bị, phần mềm, cơ sở vật chất tạo điều kiện hoàn thành đồ án. Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới quý Thầy Cô, những người đã truyền lại cho em rất nhiều kinh nghiệm và kiến thức quý báu, những sự giúp đỡ ấy đã tiếp thêm động lực cho em vững bước trên con đường mình đã chọn. Và đặc biệt là Thầy, Cô khoa Điện - Điện tử đã truyền đạt kiến thức, kinh nghiệm cũng như tạo những điều kiện tốt nhất để nhóm em hoàn thành đề tài. Xin cảm ơn các bạn cùng khóa, cùng khoa đã động viên, khích lệ, ủng hộ về nhiều mặt góp phần làm nên thành công của đồ án này. Cảm ơn Đại Học Bà Rịa Vũng Tàu! Xin chân thành cảm ơn! Người thực hiện đề tài Trần Văn Phú
  • 6. 6 LỜI MỞ ĐẦU Hiện nay, khoa học Công nghệ ngày càng đạt được những thành tựu to lớn, kéo theo đó là sự phát triển vượt bậc trong các ngành nghề có ứng dụng khoa học kỹ thuật thì việc ứng dụng khoa học Công nghệ vào mọi mặt đời sống là điều cấp thiết và cần được mở rộng Theo dõi, cập nhật thông tin sức khỏe là vấn đề được quan tâm bởi đại đa số người hiện nay. Nhưng thiết bị thu thập thông số sức khỏe thì chưa đủ toàn diện và được phổ biến. Với khí hậu, tình hình môi trường cũng như các vấn đề về thực phẩm, dịch bệnh trong thời gian gần thì đây là một đề tài mang tính thực tế. Để góp phần làm sáng tỏ hiệu quả của những ứng dụng trong thực tế của ngành điện - điện tử, sau một thời gian học tập, em đã nghiên cứu thực hiện đề tài “Thiết kế thiết bị đo thông số sức khỏe tự động”.
  • 7. 7 MỤC LỤC PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP .............................................................2 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ........................................................3 NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN............................................................4 LỜI CẢM ƠN.................................................................................................................5 LỜI MỞ ĐẦU ................................................................................................................6 DANH MỤC HÌNH........................................................................................................9 CHƯƠNG I. TỔNG QUAN ...................................................................................10 1. Đặt vấn đề...........................................................................................................10 2. Mục tiêu đề tài....................................................................................................10 3. Nội dung nghiên cứu ..........................................................................................10 4. Đối tượng, phạm vi nghiên cứu và phương pháp nghiên cứu............................10 5. Sản phẩm và khả năng ứng dụng: ......................................................................11 6. Bố cục.................................................................................................................11 CHƯƠNG II. CƠ SỞ LÝ THUYẾT........................................................................13 1. Giới thiệu phần cứng..........................................................................................13 1.1. Arduino MEGA 2560 ...........................................................................13 1.2. Nguồn 5V-20A .....................................................................................14 1.3. Loadcell 50kg .......................................................................................15 1.4. Mạch chuyển đổi ADC 24bit Loadcell HX711....................................17 1.5. HCSR04................................................................................................18 1.6. Pulse Sensor..........................................................................................19 1.7. Cảm Biến Nhiệt Hồng Ngoại Không Tiếp Xúc MLX90614................20 1.8. Led matrix RGB P10 16x32 .................................................................22 2. Phần mềm lập trình.............................................................................................24
  • 8. 8 CHƯƠNG III. THIẾT KẾ THIẾT BỊ........................................................................27 1. Giới thiệu và yêu cầu của thiết bị.......................................................................27 2. Sơ đồ khối của thiết bị........................................................................................27 3. Các thành phần của thiết bị ................................................................................28 3.1. Bộ phận đo chiều cao............................................................................28 3.2. Bộ phận đo cân nặng.............................................................................29 3.3. Bộ phận đo nhịp tim .............................................................................30 3.4. Bộ phận đo nhiệt độ..............................................................................31 3.5. Bộ phận hiển thị....................................................................................31 3.6. Bộ phận nguồn cung cấp.......................................................................32 3.7. Lắp ráp thiết bị......................................................................................32 CHƯƠNG IV. KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ......................34 1. Kết luận ..............................................................................................................34 2. Phương hướng phát triển....................................................................................34 TÀI LIỆU THAM KHẢO............................................................................................35 PHỤ LỤC .....................................................................................................................36 1. Viết thư viện Data.h ...........................................................................................36 2. Khởi tạo thư viện MatrixDisp.h .........................................................................44 3. Code điều khiển chính........................................................................................56 4. Cài dặt các thư viện liên quan ............................................................................64
  • 9. 9 DANH MỤC HÌNH Hình 1. Sơ đồ chân Arduino MEGA 2560 R3 .............................................................13 Hình 2. Nguồn tổ ong 5V 20A .....................................................................................14 Hình 3. Cảm biến Loadcell 50Kg.................................................................................15 Hình 4. Thiết kế của Loadcell 50kg .............................................................................16 Hình 5. Mạch chuyển đổi ADC 24bit Loadcell HX711...............................................17 Hình 6. Cảm biến siêu âm HC-SR04............................................................................18 Hình 7. Cảm biến nhịp tim Pulse Sensor......................................................................19 Hình 8. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614.................................20 Hình 9. Led matrix RGB P10 16x32............................................................................22 Hình 10. Các chân data của Led matrix .......................................................................22 Hình 11. Chiều đi của data trong Led matrix ...............................................................23 Hình 12. Cài đặt Java Runtime Environment...............................................................24 Hình 13. Chọn phiên bản Arduino ...............................................................................25 Hình 14. Giao diện khởi động của Arduino IDE..........................................................25 Hình 15. Sơ đồ khối của thiết bị...................................................................................27 Hình 16. Bộ phận đo chiều cao ...................................................................................28 Hình 17. Bộ phận đo trọng lượng.................................................................................29 Hình 18. Sơ đồ kết nối các loadcell với HX711...........................................................30 Hình 19. Bộ phận đo nhịp tim ......................................................................................30 Hình 20. Bộ phận đo nhiệt độ.......................................................................................31 Hình 21. Mặt trước thiết bị...........................................................................................31 Hình 22. Mặt sau thiết bị ..............................................................................................32 Hình 23. Sơ đồ kết nối các bộ phận..............................................................................32 Hình 24. Thiết bị lắp ráp hoàn chỉnh............................................................................33
  • 10. 10 CHƯƠNG I. TỔNG QUAN 1. Đặt vấn đề Theo dõi, cập nhật thông tin sức khỏe là vấn đề được quan tâm bởi đại đa số người hiện nay. Nhưng thiết bị thu thập thông số sức khỏe thì chưa đủ toàn diện và được phổ biến. Với khí hậu, tình hình môi trường dang ngày càng trở nên xấu đi cũng như các vấn đề về an toàn vệ sinh thực phẩm, dịch bệnh trong thời gian gần mang tới những ảnh hưởng mạnh mẽ tới sức khỏe con người. Vì vậy cần có một thiết bị đơn giản có thể thu thập những thông số sức khỏe cơn bản là điều vô cùng cần thiết. Em đã nghiên cứu thực hiện đề tài “Thiết kế thiết bị đo thông số sức khỏe tự động” đây là đề tài nghiên cứu mang tính thực tế cao. 2. Mục tiêu đề tài - Nghiên cứu kết nối thu thập thông tin dữ liệu sức khỏe từ các cảm biến. - Nghiên cứu bảng led điện tử và phương thức hiển thị thông tin. - Nghiên cứu dựa trên kiến thức sinh viên đã học . Vd có áp dụng các môn học như : Vi xử lí , ngôn ngữ lập trình ,điện tử, kỹ thuật số , linh kiện điện tử , cảm biến . Ngoài ra tự học thêm ở ngoài những kiến thức như : lập trình arduino MEGA 2560 , lập trình web , hàn nhúng , hàn tay , ... - Xây dựng thiết bị hoàn chỉnh để có hiển thị và thu thập thông số về sức khỏe. Thiết bị có thể lắp đặt ở phòng khám bệnh, nhà thuốc hoặc các nơi công cộng khác. 3. Nội dung nghiên cứu - Tìm hiểu công dụng của từng thiết bị điện, điện tử cụ thể là: Loadcell, MLX90614, HC-SR04, Dây nối và Arduino MEGA 2560. - Tìm hiểu phần mền để lập trình cho Arduino MEGA 2560 : ngôn ngữ auduino , Arduino IDE , lập trình web - Đưa ra các phương án nghiên cứu. - Kiểm tra, đánh giá tính ứng dụng của đề tài. 4. Đối tượng, phạm vi nghiên cứu và phương pháp nghiên cứu - Đối tượng nghiên cứu: + Về phần cứng: Loadcell, MLX90614, HC-SR04, Dây nối và Arduino MEGA 2560, Led matrix RGB.
  • 11. 11 + Về phần mền : ngôn ngữ C, Arduino IDE. - Phạm vi nghiên cứu: Thiết kế mạch liên kết các cảm biến thu thập dữ liệu với Arduino. Hiển thị dữ liệu lên Led matrix. - Cách tiếp cận và phương pháp nghiên cứu : Trong quá trình thực hiện, em đã nghiên cứu, tìm hiểu qua sách, báo, các tài liệu trên internet, nghiên cứu cơ sở lý thuyết về kỹ thuật thiết kế mạch . Ứng dụng những kiến thức đã học ở trường cộng thêm học ở mạng như : tập lập trình arduino MEGA 2560 , liên kết input/output , lập trình web , .... Từ cơ sở đó có thể xây dựng được mô hình này qua 3 bước chính . Thiết kế mạch điều khiển, tiến hành lắp ráp mạch, hoàn thiện mô hình. 5. Sản phẩm và khả năng ứng dụng: - Thiết bị kích thước khoảng 300 x 300 x 2000 mm. - Cập nhật, thu thập thông số về sức khỏe. - Ứng dụng lắp đặt ở trong phòng khám bệnh, nhà thuốc. Hiển thị và thu thập thông số về sức khỏe như: cân nặng, chiều cao, nhiệt độ cơ thể, nhịp tim. 6. Bố cục •Chương I: Tổng quan Trình bày, đặt vấn đề dẫn nhập lí do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án. •Chương II: Cơ sở lý thuyết Trình bày các lý thuyết liên quan đến vấn đề mà đề tài sẽ dùng để thực hiện thiết kế, thi công cho đề tài. •Chương III: Thiết kế thiết bị Trình bày tổng quan các yêu cầu của để tài về thiết kế. Trình bày kết quả thi công phần cứng và kết quả hình ảnh trên màn hình hay mô phỏng tín hiệu, kết quả thống kê.
  • 12. 12 •Chương IV: Kết luận và phương hướng phát triển Trình bày kết quả đạt được so với mục tiêu đề ra ban đầu, nhận xét và đánh giá kết quả đạt được của đề tài nghiên cứu. Hướng phát triển của đề tài sau này trong quá trình nghiên cứu. •Tài liệu tham khảo •Phụ lục
  • 13. 13 CHƯƠNG II. CƠ SỞ LÝ THUYẾT 1. Giới thiệu phần cứng 1.1. Arduino MEGA 2560 Hình 1. Sơ đồ chân Arduino MEGA 2560 R3 Mạch Arduino Mega 2560 Atmega là một board vi điều khiển dựa trên ATmega2560. Board này có 54 chân I/O (14 chân PWM ), 16 analog đầu hàng vào, 4 UARTs (phần cứng cổng tuần tự), sử dụng thạch anh 16 MHz, kết nối cổng USB, một Jack cắm điện, chân ICSP, và một nút reset. Board có tất cả mọi thứ cần thiết để hỗ trợ vi điều khiển Thông số kỹ thuật: • Vi điều khiển chính: ATmega2560 • IC nạp và giao tiếp UART: ATmega16U2.
  • 14. 14 • Nguồn nuôi mạch: 5VDC từ cổng USB hoặc nguồn ngoài cắm từ giắc tròn DC (khuyên dùng 7-9VDC để đảm bảo mạch hoạt động tốt. Nếu bạn cắm 12V thì IC ổn áp rất dễ chết và gây hư hỏng mạch). • Số chân Digital: 54 (15 chân PWM) • Số chân Analog: 16 • Giao tiếp UART : 4 bộ UART • Giao tiếp SPI : 1 bộ ( chân 50 -> 53 ) dùng với thư viện SPI của Arduino • Giao tiếp I2C : 1 bộ • Ngắt ngoài : 6 chân • Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader • SRAM: 8 KB • EEPROM: 4 KB • Xung clock: 16 MHz 1.2. Nguồn 5V-20A Hình 2. Nguồn tổ ong 5V 20A Nguồn tổ ong 5V 20A là bộ nguồn được thiết kế để chuyển đổi điện áp xoay chiều thành điện áp một chiều. Nguồn tổ ong 5V 20A có thiết kế gọn nhẹ, vỏ ngoài bằng kim loại
  • 15. 15 với những lỗ rổng giống như hình tổ ong nhằm mục đích nâng cao khả năng tản nhiệt, cũng vì có thiết kế bề ngoài độc đáo này mà người ta thường gọi nó là Nguồn tổ ong. Thông số kỹ thuật: • Điện áp đầu vào: 110 – 220 VAC chỉnh bằng công tắc gạt • Công suất: 100W • Dòng đầu ra tối đa: 20A • Nhiệt độ làm việc: -10 ~ 60 độ C • Kích thước: 198 x 48 x 42mm 1.3. Loadcell 50kg Hình 3. Cảm biến Loadcell 50Kg Cảm biến Loadcell 50Kg sử dụng để đo khối lượng của vật thể tối đa 50Kg, cảm biến bằng kim loại với thiết kế rất dễ lắp đặt, phù hợp với các ứng dụng cân điện tử, cảm biến khối lượng,..., lưu ý để sử dụng với Vi điều khiển cần gắn thêm Mạch chuyển đổi ADC HX711 chuyên dụng dành cho Loadcell. Thông số kỹ thuật: • Tải trọng: 50 kg • Dộ nhạy 1 ±1.5% mv/V • Độ lệch tuyến tính 0.05%F.S • Zero Output -0.3 mv/V • Creep( 1 min) 0.1%F.S • Ảnh hưởng của nhiệt độ đến điểm 0: 0.3%F.S/10 • Ảnh hưởng của nhiệt độ đến đầu ra: 0.1%F.S/10
  • 16. 16 • Điện trở: 1000 ± 10 Ω • Trở kháng cách ly: >= 2000 M • Điện áp hoạt động: 5~8V • Nhiệt độ hoạt động: -20~65 0C • Cáp: φ0.8×460 mm Hình 4. Thiết kế của Loadcell 50kg
  • 17. 17 1.4. Mạch chuyển đổi ADC 24bit Loadcell HX711 Hình 5. Mạch chuyển đổi ADC 24bit Loadcell HX711 Mạch chuyển đổi ADC 24bit Loadcell HX711: module chuyển đổi analog sang digital 24-bit. HX711 được thiết kế để chuyển đối tín hiệu và ứng dụng điều khiển công nghiệp để giao tiếp trực tiếp với một cảm biến cầu. Mạch chuyển đổi ADC HX711 không chỉ có một vài chức năng cơ bản, cũng có tích hợp cao, phản ứng nhanh, khả năng chống nhiễu, và độ tin cậy cao. Đây là mạch đọc giá trị cảm biến loadcell với độ phân giải 24bit và chuyển sang giao tiếp 2 dây ( clock và data ) để gửi dữ liệu cho vi điều khiển / arduino. Thông số kỹ thuật: • Điện áp hoạt động : 2.7 – 5V • Dòng tiêu thụ : < 1.5 mA • Tốc độ lấy mẫu : 10 – 80 SPS ( tùy chỉnh ) • Độ phân giải : 24 bit ADC • Độ phân giải điện áp : 40mV • Kích thước : 38 x 21 x 10 mm
  • 18. 18 1.5. HCSR04 Hình 6. Cảm biến siêu âm HC-SR04 Cảm biến siêu âm HC-SR04 (Ultrasonic Sensor) được sử dụng rất phổ biến để xác định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến HC-SR04 sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình. Cảm biến siêu âm HC-SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm biến gồm 2 module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm phản xạ về. Đầu tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Nếu có chướng ngại vật trên đường đi, sóng siêu âm sẽ phản xạ lại và tác động lên module nhận sóng. Bằng cách đo thời gian từ lúc phát đến lúc nhận sóng ta sẽ tính được khoảng cách từ cảm biến đến chướng ngại vật với công thức: Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2 Thông số kỹ thuật: • Điện áp: 5V DC • Dòng hoạt động: < 2mA • Mức cao: 5V
  • 19. 19 • Mức thấp: 0V • Góc tối đa: 15 độ • Khoảng cách: 2cm – 450cm (4.5m) • Độ chính xác: 3mm 1.6. Pulse Sensor Cảm biến nhịp tim Pulse Sensor sử dụng nguyên lý đo nhịp tim bằng ánh sáng với kích thước nhỏ gọn và giao tiếp Analog rất dễ sử dụng, cảm biến nhịp tim phù hợp cho các ứng dụng điện tử y sinh. Thông số kỹ thuật: • Nguồn: 3~5VDC • Dòng tiêu thụ: < 4mA • Ngõ ra: Analog. • Độ dài dây: 61cm ( 24 inch). • Đường kính cảm biến: 1.6 cm ( 0.625 inch). Hình 7. Cảm biến nhịp tim Pulse Sensor
  • 20. 20 1.7. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614 Hình 8. Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614 Cảm biến nhiệt hồng ngoại không tiếp xúc MLX90614 là loại cảm biến đo nhiệt độ hồng ngoại không tiếp xúc dùng chip MXL90614 sử dụng giao tiếp I2C có thể dễ dàng kết nối với bất cứ vi điều khiển nào. Tính năng và lợi ích: • Kích thước nhỏ, chi phí thấp • 10k Kéo điện trở lên cho giao diện I2C với các jumper hàn tùy chọn • Dễ tích hợp • Nhiệt độ hoạt động : • -40 … + 125 ° C cho nhiệt độ cảm biến và • -70 … + 380 ° C đối với nhiệt độ đối tượng. • Độ chính xác cao 0.5 ° C trên nhiệt độ rộng (0 … + 50 ° C ) • Độ phân giải đo lường là 0,02 ° C • Tùy chỉnh đầu ra PWM để liên tục • Chế độ ngủ để giảm tiêu thụ điện năng • Các tùy chọn gói khác nhau cho các ứng dụng và tính linh hoạt của tính linh hoạt
  • 21. 21 Ứng dụng cảm biến nhiệt hồng ngoại không tiếp xúc: • Độ chính xác cao không tiếp xúc nhiệt độ • Cảm biến độ nhạy nhiệt cho hệ thống điều khiển điều hòa không khí di động • Yếu tố cảm biến nhiệt độ cho dân cư, thương mại và công nghiệp xây dựng điều hòa kính chắn gió defogging • Phát hiện góc mù ô tô • Kiểm soát nhiệt độ công nghiệp của các bộ phận chuyển động • Kiểm soát nhiệt độ trong máy in và máy photocop • Thiết bị gia dụng có kiểm soát nhiệt độ • Chăm sóc sức khỏe • Giám sát chăn nuôi • Phát hiện chuyển động • Điều khiển nhiệt độ nhiều vùng – lên đến 127 bộ cảm biến có thể được đọc thông qua 2 dây phổ biến • Relay / cảnh báo nhiệt • Đo nhiệt độ cơ thể Ví dụ ứng dụng • Độ chính xác cao không tiếp xúc nhiệt độ • Cảm biến độ nhạy nhiệt cho hệ thống điều khiển điều hòa không khí di động • Yếu tố cảm biến nhiệt độ cho dân cư, thương mại và công nghiệp xây dựng điều hòa kính chắn gió defogging • Phát hiện góc mù ô tô • Kiểm soát nhiệt độ công nghiệp của các bộ phận chuyển động • Kiểm soát nhiệt độ trong máy in và máy photocopy • Thiết bị gia dụng có kiểm soát nhiệt độ • Chăm sóc sức khỏe • Giám sát chăn nuôi
  • 22. 22 • Phát hiện chuyển động • Điều khiển nhiệt độ nhiều vùng – lên đến 127 bộ cảm biến có thể được đọc thông qua 2 dây phổ biến • Relay / cảnh báo nhiệt • Đo nhiệt độ cơ thể 1.8. Led matrix RGB P10 16x32 Hình 9. Led matrix RGB P10 16x32 Module led ma trận P10 Full color 32×16 gồm 32 led hàng ngang và 16 led hàng dọc, bản thân mỗi led bên trong có 3 led với 3 màu RGB, mỗi pixel cách nhau 1cm. Tổng số led RGB là 32×16=512 LED RGB. Hình 10. Các chân data của Led matrix
  • 23. 23 Chức năng của các chân R1: Chân data cho màu đỏ của 8 hàng led bên trên R2: Chân data cho màu đỏ của 8 hàng led phía dưới G1: Chân data cho màu xanh lá của 8 hàng led bên trên G2: Chân data cho màu xanh lá của 8 hàng led phía dưới B1: Chân data cho màu xanh dương của 8 hàng led bên trên B2: Chân data cho màu xanh dương của 8 hàng led phía dưới CLK: Chân đẩy data vào ic ghi dịch LAT: Chân chốt data ( đẩy data lưu trong ic ghi dịch ra ngoài led) OE: Chân cho phép bảng led sáng ( OE=0 thì bảng led được phép sáng, OE=1 thì bảng led auto tắt) A,B,C: 3 chân của ic vào 3 ra 8, tức 3 chân dùng để quét led, cho phép hàng nào sáng. Với 3 chân ABC ta điều khiển đc 8 hàng độc lập, nhưng module P10 có tới 16 hàng => trong 1 thời điểm có 2 hàng cùng sáng => module này quét kiểu 2/16 = 1/8 => Trong 1 thời điểm số led RGB ta có thể điều khiển là 512 x 1/8 = 64 LED RGB Chiều đi của data Hình 11. Chiều đi của data trong Led matrix Với P10 1 màu, data đi theo chiều zigzac, thì P10 FULL, data đi theo đường thẳng module này chia ra làm 2 nửa theo chiều ngang, với dữ liệu của 8 hàng trên do RGB1
  • 24. 24 quyết định, còn 8 hàng dưới do RGB2 quyết định. Chân ABC sẽ quyết định hàng nào trong 8 hàng của cả 2 nửa được sáng. 2. Phần mềm lập trình Chương trình được lập trình trên phần mềm Arduino: − Cài đặt Java Runtime Environment (JRE) Vì Arduino IDE được viết trên Java nên bạn cần phải cài đặt JRE trước Arduino IDE. Link tải: http://www.oracle.com/technetwork/ja... Chú ý: Nhiều bạn do không cài JRE trên máy nên thường hay gặp phải tình trạng không chạy được Arduino IDE. 2 bản JRE phổ biến nhất là bản dành cho Windows 32bit (x86) và Windows 64bit (x64) mình đã đánh dấu trong hình. Nhớ chọn "Accept License Agreement". Hình 12. Cài đặt Java Runtime Environment −Cài đặt Arduino IDE Bước 1: Truy cập địa chỉ http://arduino.cc/en/Main/Software/... Đây là nơi lưu trữ cũng như cập nhật các bản IDE của Arduino. Bấm vào mục “Windows ZIP file for non admin install”.
  • 25. 25 Bạn sẽ được chuyển đến một trang mời quyền góp tiền để phát triển phần mềm cho Arduino, tiếp tục bấm JUST DOWNLOAD để bắt đầu tải. Hình 13. Chọn phiên bản Arduino Bước 2: Sau khi download xong, các bạn bấm chuột phải vào file vừa download arduino-1.8.12-windows.zip và chọn “Extract here” để giải nén. Bước 3: Copy thư mục arduino-1.8.12 vừa giải nén đến nơi lưu trữ. Bước 4: Chạy file trong thư mục arduino-1.8.12 để khởi động Arduino IDE Hình 14. Giao diện khởi động của Arduino IDE
  • 26. 26 - Cài đặt Driver Để máy tính của bạn và board Arduino giao tiếp được với nhau, chúng ta cần phải cài đặt driver trước tiên. Nếu bạn dùng Windows 8, trong một số trường hợp Windows không cho phép bạn cài Arduino driver (do driver không được kí bằng chữ kí số hợp lệ). Do vậy bạn cần vào Windows ở chế độ Disable driver signature enforcement thì mới cài được driver. Đầu tiên, các bạn chạy file arduino-1.8.12driversdpinst-x86.exe (Windows x86) hoặc arduino-1.8.12driversdpinst-amd64.exe (Windows x64). Cửa sổ “Device Driver Installation Wizard” hiện ra, các bạn chọn Next để tiếp tục. - Khi có yêu cầu xác nhận cài đặt driver, chọn “Install” - Đợi khoảng 10 giây trong lúc quá trình cài đặt diễn ra … - Quá trình cài đặt đã hoàn tất. Bấm “Finish” để thoát.
  • 27. 27 CHƯƠNG III. THIẾT KẾ THIẾT BỊ 1. Giới thiệu và yêu cầu của thiết bị - Thiết bị kích thước khoảng 300 x 300 x 2000 mm. - Cập nhật, thu thập thông số cân nặng, chiều cao, nhịp tim, nhiệt độ hiển thị trên màn hình Led matrix. 2. Sơ đồ khối của thiết bị Hình 15. Sơ đồ khối của thiết bị Khối điều khiển trung tâm: khối điều khiển trung tâm sử dụng Arduino MEGA 2560 có hiệu năng cao, dùng để điều khiển các thiết bị khác trong hệ thống: - Điều khiển đọc dữ liệu từ cảm biến. - Truyền dữ liệu qua màn hình hiển thị của thiết bị. Khối cảm biến: bao gồm cảm biến siêu âm, cảm biến nhiêt độ, cảm biến nhịp tim, loadcell dùng để thu thập dữ liệu về cân nặng, chiều cao, nhiệt độ, nhịp tim đối tượng, từ đó đưa tín hiệu về khối điều khiển trung tâm. Khối hiển thị: Khối hiển thị sử dụng màn hình Led matrix RGB P10 16x32 dùng để hiển thị số liệu đọc được từ khối cảm biến. Khối nguồn : Khối nguồn là khối quan trọng giúp cung cấp điện cho toàn bộ hệ thống. Vì vậy cần tính toán hợp lý để khối nguồn có thể cung cấp đủ dòng và áp để mạch có thể hoạt động tốt và ổn định.
  • 28. 28 3. Các thành phần của thiết bị 3.1. Bộ phận đo chiều cao Hình 16. Bộ phận đo chiều cao Cảm biến siêu âm HC-SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Cảm biến gồm 2 module.1 module phát ra sóng siêu âm và 1 module thu sóng siêu âm phản xạ về. Đầu tiên cảm biến sẽ phát ra 1 sóng siêu âm với tần số 40khz. Sau khi gặp đối tượng thì phản xạ về module thu và tính ra khoảng cách. S = V*t/2 (cm) Trong đó: - S: Khoảng cách đo được - V= 340m/s (Vận tốc âm thanh) - t: Thời gian đo
  • 29. 29 Sau đó chiều cao đối tượng dược tính bằng: H = hcb – S (cm) Trong đó: - S: Khoảng cách đo được - hcb = Chiều cao vị trí đặt cảm biến - H; Chiều cao đối tượng 3.2. Bộ phận đo cân nặng Hình 17. Bộ phận đo trọng lượng Bộ phận này bao gồm: 4 Loadcell 50kg, mạch chuyển dổi 24bit HX711 và một số phụ kiện khác được kết nối như hình sau:
  • 30. 30 Hình 18. Sơ đồ kết nối các loadcell với HX711 Các loadcell đọc và gửi tín hiệu về bộ xử lý trung tâm thông qua HX711. 3.3. Bộ phận đo nhịp tim Hình 19. Bộ phận đo nhịp tim Cảm biến nhịp tim Pulse Sensor sử dụng nguyên lý đo nhịp tim bằng ánh sáng. Cảm biến thi thập tín hiệu từ đối tượng rồi gửi về bộ xử lý trung tâm.
  • 31. 31 3.4. Bộ phận đo nhiệt độ Hình 20. Bộ phận đo nhiệt độ Cảm biến này đo nhiệt độ đối tượng thông qua bức xạ hông ngoại mà đối tượng phát ra. Từ tín hiệu thu thập được qua kết nối I2C tới bộ xử ký trung tâm 3.5. Bộ phận hiển thị Hình 21. Mặt trước thiết bị Tấm Led matrix RGB 16x32 hiển thị các thông số sức khỏa thu thập được từ các cảm biến thông qua chuẩn truyền SPI kết nối với bộ xử lý trung tâm. Các thông số hiẻn thị lần lượt theo chương tringf đặt sẵn: Chiều cao, cân nặng, nhiệt độ, nhịp tim.
  • 32. 32 3.6. Bộ phận nguồn cung cấp Hình 22. Mặt sau thiết bị Nguồn tổ ong 5V-20A cung câp năng lượng hoạt động cho toàn bộ thiết bị vận hành bình thường. 3.7. Lắp ráp thiết bị Hình 23. Sơ đồ kết nối các bộ phận
  • 33. 33 Hình 24. Thiết bị lắp ráp hoàn chỉnh
  • 34. 34 CHƯƠNG IV. KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 1. Kết luận Sau một thời gian nghiên cứu và hoàn thành đề tài, nhóm đã nhận thấy mô hình đã hiệu quả được 85%, trong thời gian nghiên cứu và thực hiện đề tài, nhóm đã học hỏi và tìm hiểu thêm được nhiều kiến thức mới cũng như củng cố lại kiến thức đã học giúp hoàn thành đề tài này. Vì đây là đề tài hướng đến việc giúp thu thập thông tin sức khỏe con người nên phải chú trọng độ ổn định và chính xác dẫn đến nhiều khó khăn trong quá trình lập trình. Nhưng nhờ sự hướng dẫn của giảng viên hướng dẫn và các tài liệu tham khảo thì nhóm đã giải quyết được tương đối yêu cầu của đề tài. Trong quá trình thực hiện đề tài về phần cứng, nhóm đã tìm hiểu được chức năng của các chân IO của board Ardruino, kết hợp với các cảm biến để đọc giá trị, sử dụng các kiểu truyền dữ liệu để giao tiếp và module Led matrix RGB. Việc kết hợp các module này lại với nhau để làm việc ổn định mất nhiều thời gian nhưng cũng học hỏi được rất nhiều trong quá trình làm. Tuy rằng sản phẩm đã được hoàn thành nhưng nhóm vẫn nhận thấy sản phẩm còn nhiều thiếu sót, cần được chỉnh sửa và cải tiến hơn. Xây dựng hoàn thành mô hình có khả năng cập nhật dữ liệu từ đối tượng đến thiết bị khác để xử lý theo nhiều yêu cầu mà người dùng cần. 2. Phương hướng phát triển Đề tài cơ bản đáp ứng được những yêu cầu đặt ra tuy nhiên để sản phẩm hoàn thiện được hơn nữa thì đòi hỏi cần được cải tiến và nghiên cứu thêm. Về chức năng, thiết bị được nghiên cứu chỉ dừng lại ở các chức năng cơ bản: cảm biến nhiệt độ, cảm biến chiều cao, cảm biến nhịp tim, loadcell…cần thêm vào các cảm biển có chức năng thu thập dữ liệu sức khỏe con người như: cảm biến oxy trong máu,cảm biến đo huyết áp… Ngoài ra thiết bị có thể tăng cường chức năng liên kết với các thiết bị khác thực hiện lưu trữ thông tin hàng ngày so sánh với số liệu để phán doán tình trạng sức khỏe nhằm đưa ra lời khuyên hữu ích cho sức ngày càng tốt hơn.
  • 35. 35 TÀI LIỆU THAM KHẢO [1] Trần Thu Hà, Trương Thị Bích Ngà, “Giáo trình Điện tử cơ bản”, Nhà xuất bản ĐH Quốc Gia TP Vũng Tàu, 2013. [2] Nguyễn Việt Hùng, Nguyễn Ngô Lâm, Nguyễn Văn Phúc, Đặng Phước Hải Trang, Giáo trình kỹ thuật truyền số liệu, NXB ĐH Quốc Gia TP. HCM, 2012. [3] Phan Quang Phô, Nguyễn Đức Chiến, “Giáo trình cảm biến”. Nhà xuất bản Khoa Học Kỹ Thuật, 2000. [4] Dương Minh Trí, “Cảm biến và ứng dụng”, Nhà xuất bản Khoa học và Kỹ thuật, 2001. [5] http://arduino.vn/bai-viet/68-cai-dat-driver-va-arduino-ide [6] http://alldatasheet.com/ [7] http://arduino.vn/ [8] http://codientu.org/ [9] http://webdien.com/ [10] http://www.tailieu.vn/ [11] https://hshop.vn/
  • 36. 36 PHỤ LỤC 1. Viết thư viện Data.h #define UTF8_table_size 144 #define UTF8_char_start1 1 #define UTF8_char_end1 31 #define UTF8_char_start2 127 const uint32_t UTF8_table[] ={ 0x0000C380, // À 0x0000C381, // Á 0x00E1BAA2, // Ả 0x0000C383, // Ã 0x00E1BAA0, // Ạ 0x0000C482, // Ă 0x00E1BAB0, // Ằ 0x00E1BAAE, // Ắ 0x00E1BAB2, // Ẳ 0x00E1BAB4, // Ẵ 0x00E1BAB6, // Ặ 0x0000C382, // Â 0x00E1BAA6, // Ầ 0x00E1BAA4, // Ấ 0x00E1BAA8, // Ẩ 0x00E1BAAA, // Ẫ 0x00E1BAAC, // Ậ 0x0000C490, // Đ 0x0000C388, // È 0x0000C389, // É 0x00E1BABA, // Ẻ 0x00E1BABC, // Ẽ 0x00E1BAB8, // Ẹ
  • 37. 37 0x0000C38A, // Ê 0x00E1BB80, // Ề 0x00E1BABE, // Ế 0x00E1BB82, // Ể 0x00E1BB84, // Ễ 0x00E1BB86, // Ệ 0x0000C38C, // Ì 0x0000C38D, // Í 0x00E1BB88, // Ỉ 0x0000C4A8, // Ĩ 0x00E1BB8A, // Ị 0x0000C392, // Ò 0x0000C393, // Ó 0x00E1BB8E, // Ỏ 0x0000C395, // Õ 0x00E1BB8C, // Ọ 0x0000C394, // Ô 0x00E1BB92, // Ồ 0x00E1BB90, // Ố 0x00E1BB94, // Ổ 0x00E1BB96, // Ỗ 0x00E1BB98, // Ộ 0x0000C6A0, // Ơ 0x00E1BB9C, // Ờ 0x00E1BB9A, // Ớ 0x00E1BB9E, // Ở 0x00E1BBA0, // Ỡ 0x00E1BBA2, // Ợ 0x0000C399, // Ù 0x0000C39A, // Ú 0x00E1BBA6, // Ủ
  • 38. 38 0x0000C5A8, // Ũ 0x00E1BBA4, // Ụ 0x0000C6AF, // Ư 0x00E1BBAA, // Ừ 0x00E1BBA8, // Ứ 0x00E1BBAC, // Ử 0x00E1BBAE, // Ữ 0x00E1BBB0, // Ự 0x00E1BBB2, // Ỳ 0x0000C39D, // Ý 0x00E1BBB6, // Ỷ 0x00E1BBB8, // Ỹ 0x00E1BBB4, // Ỵ 0x0000C3A0, // à 0x0000C3A1, // á 0x00E1BAA3, // ả 0x0000C3A3, // ã 0x00E1BAA1, // ạ 0x0000C483, // ă 0x00E1BAB1, // ằ 0x00E1BAAF, // ắ 0x00E1BAB3, // ẳ 0x00E1BAB5, // ẵ 0x00E1BAB7, // ặ 0x0000C3A2, // â 0x00E1BAA7, // ầ 0x00E1BAA5, // ấ 0x00E1BAA9, // ẩ 0x00E1BAAB, // ẫ 0x00E1BAAD, // ậ 0x0000C491, // đ
  • 39. 39 0x0000C3A8, // è 0x0000C3A9, // é 0x00E1BABB, // ẻ 0x00E1BABD, // ẽ 0x00E1BAB9, // ẹ 0x0000C3AA, // ê 0x00E1BB81, // ế 0x00E1BABF, // ề 0x00E1BB83, // ể 0x00E1BB85, // ễ 0x00E1BB87, // ệ 0x0000C3AC, // ì 0x0000C3AD, // í 0x00E1BB89, // ỉ 0x0000C4A9, // ĩ 0x00E1BB8B, // ị 0x0000C3B2, // ò 0x0000C3B3, // ó 0x00E1BB8F, // ỏ 0x0000C3B5, // õ 0x00E1BB8D, // ọ 0x0000C3B4, // ô 0x00E1BB93, // ố 0x00E1BB91, // ồ 0x00E1BB95, // ổ 0x00E1BB97, // ỗ 0x00E1BB99, // ộ 0x0000C6A1, // ơ 0x00E1BB9D, // ờ 0x00E1BB9B, // ớ 0x00E1BB9F, // ở
  • 40. 40 0x00E1BBA1, // ỡ 0x00E1BBA3, // ợ 0x0000C3B9, // ù 0x0000C3BA, // ú 0x00E1BBA7, // ủ 0x0000C5A9, // ũ 0x00E1BBA5, // ụ 0x0000C6B0, // ư 0x00E1BBAB, // ừ 0x00E1BBA9, // ứ 0x00E1BBAD, // ử 0x00E1BBAF, // ữ 0x00E1BBB1, // ự 0x00E1BBB3, // ỳ 0x0000C3BD, // ý 0x00E1BBB7, // ỷ 0x00E1BBB9, // ỹ 0x00E1BBB5 // ỵ }; const uint8_t Sinclair_S[] ={//764 0x08,0x08,0x20,0x7E,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <space> 0x08,0x08,0x08,0x08,0x08,0x00,0x08,0x00, // ! 0x14,0x14,0x00,0x00,0x00,0x00,0x00,0x00, // " 0x00,0x24,0x7E,0x24,0x24,0x7E,0x24,0x00, // # 0x10,0x7C,0x50,0x7C,0x14,0x7C,0x10,0x00, // $ 0x00,0x62,0x64,0x08,0x10,0x26,0x46,0x00, // % 0x00,0x10,0x28,0x10,0x2A,0x44,0x3A,0x00, // & 0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00, // ' 0x00,0x08,0x10,0x10,0x10,0x10,0x08,0x00, // ( 0x00,0x10,0x08,0x08,0x08,0x08,0x10,0x00, // )
  • 41. 41 0x00,0x00,0x28,0x10,0x7C,0x10,0x28,0x00, // * 0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00, // + 0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10, // , 0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00, // - 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // . 0x00,0x00,0x04,0x08,0x10,0x20,0x40,0x00, // / 0x00,0x78,0x8C,0x94,0xA4,0xC4,0x78,0x00, // 0 0x00,0x60,0xA0,0x20,0x20,0x20,0xF8,0x00, // 1 0x00,0x78,0x84,0x04,0x78,0x80,0xFC,0x00, // 2 0x00,0x78,0x84,0x18,0x04,0x84,0x78,0x00, // 3 0x00,0x10,0x30,0x50,0x90,0xFC,0x10,0x00, // 4 0x00,0xFC,0x80,0xF8,0x04,0x84,0x78,0x00, // 5 0x00,0x78,0x80,0xF8,0x84,0x84,0x78,0x00, // 6 0x00,0xFC,0x04,0x08,0x10,0x20,0x20,0x00, // 7 0x00,0x78,0x84,0x78,0x84,0x84,0x78,0x00, // 8 0x00,0x78,0x84,0x84,0x7C,0x04,0x78,0x00, // 9 0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00, // : 0x00,0x00,0x10,0x00,0x00,0x10,0x10,0x20, // ; 0x00,0x00,0x08,0x10,0x20,0x10,0x08,0x00, // < 0x00,0x00,0x00,0x7C,0x00,0x7C,0x00,0x00, // = 0x00,0x00,0x20,0x10,0x08,0x10,0x20,0x00, // > 0x00,0x3C,0x42,0x04,0x08,0x00,0x08,0x00, // ? 0x00,0x3C,0x4A,0x56,0x5E,0x40,0x3C,0x00, // @ 0x00,0x78,0x84,0x84,0xFC,0x84,0x84,0x00, // A 0x00,0xF8,0x84,0xF8,0x84,0x84,0xF8,0x00, // B 0x00,0x78,0x84,0x80,0x80,0x84,0x78,0x00, // C 0x00,0xF0,0x88,0x84,0x84,0x88,0xF0,0x00, // D 0x00,0xFC,0x80,0xF8,0x80,0x80,0xFC,0x00, // E 0x00,0xFC,0x80,0xF8,0x80,0x80,0x80,0x00, // F
  • 42. 42 0x00,0x78,0x84,0x80,0x9C,0x84,0x78,0x00, // G 0x00,0x84,0x84,0xFC,0x84,0x84,0x84,0x00, // H 0x00,0x7C,0x10,0x10,0x10,0x10,0x7C,0x00, // I 0x00,0x04,0x04,0x04,0x84,0x84,0x78,0x00, // J 0x00,0x88,0x90,0xE0,0x90,0x88,0x84,0x00, // K 0x00,0x80,0x80,0x80,0x80,0x80,0xFC,0x00, // L 0x00,0x84,0xCC,0xB4,0x84,0x84,0x84,0x00, // M 0x00,0x84,0xC4,0xA4,0x94,0x8C,0x84,0x00, // N 0x00,0x78,0x84,0x84,0x84,0x84,0x78,0x00, // O 0x00,0xF8,0x84,0x84,0xF8,0x80,0x80,0x00, // P 0x00,0x78,0x84,0x84,0xA4,0x94,0x78,0x00, // Q 0x00,0xF8,0x84,0x84,0xF8,0x88,0x84,0x00, // R 0x00,0x78,0x80,0x78,0x04,0x84,0x78,0x00, // S 0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x00, // T 0x00,0x84,0x84,0x84,0x84,0x84,0x78,0x00, // U 0x00,0x84,0x84,0x84,0x84,0x48,0x30,0x00, // V 0x00,0x84,0x84,0x84,0x84,0xB4,0x48,0x00, // W 0x00,0x84,0x48,0x30,0x30,0x48,0x84,0x00, // X 0x00,0x82,0x44,0x28,0x10,0x10,0x10,0x00, // Y 0x00,0xFC,0x08,0x10,0x20,0x40,0xFC,0x00, // Z 0x00,0x38,0x20,0x20,0x20,0x20,0x38,0x00, // [ 0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x00, // <backslash> 0x00,0x38,0x08,0x08,0x08,0x08,0x38,0x00, // ] 0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x00, // ^ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, // _ 0x3C,0x42,0x99,0xA1,0xA1,0x99,0x42,0x3C, // ` 0x00,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00, // a 0x00,0x40,0x40,0x78,0x44,0x44,0x78,0x00, // b 0x00,0x00,0x1C,0x20,0x20,0x20,0x1C,0x00, // c
  • 43. 43 0x00,0x04,0x04,0x3C,0x44,0x44,0x3C,0x00, // d 0x00,0x00,0x38,0x44,0x78,0x40,0x3C,0x00, // e 0x00,0x0C,0x10,0x18,0x10,0x10,0x10,0x00, // f 0x00,0x00,0x3E,0x42,0x42,0x3E,0x02,0x3C, // g 0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x00, // h 0x00,0x08,0x00,0x18,0x08,0x08,0x1C,0x00, // i 0x00,0x04,0x00,0x04,0x04,0x04,0x24,0x18, // j 0x00,0x40,0x50,0x60,0x60,0x50,0x48,0x00, // k 0x00,0x10,0x10,0x10,0x10,0x10,0x0C,0x00, // l 0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00, // m 0x00,0x00,0x78,0x44,0x44,0x44,0x44,0x00, // n 0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00, // o 0x00,0x00,0x78,0x44,0x44,0x78,0x40,0x40, // p 0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x06, // q 0x00,0x00,0x1C,0x20,0x20,0x20,0x20,0x00, // r 0x00,0x00,0x38,0x40,0x38,0x04,0x78,0x00, // s 0x00,0x10,0x38,0x10,0x10,0x10,0x0C,0x00, // t 0x00,0x00,0x44,0x44,0x44,0x44,0x38,0x00, // u 0x00,0x00,0x44,0x44,0x28,0x28,0x10,0x00, // v 0x00,0x00,0x44,0x54,0x54,0x54,0x28,0x00, // w 0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00, // x 0x00,0x00,0x44,0x44,0x44,0x3C,0x04,0x38, // y 0x00,0x00,0x7C,0x08,0x10,0x20,0x7C,0x00, // z 0x00,0x1C,0x10,0x60,0x10,0x10,0x1C,0x00, // { 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00, // | 0x00,0x70,0x10,0x0C,0x10,0x10,0x70,0x00, // } 0x00,0x14,0x28,0x00,0x00,0x00,0x00,0x00, // ~ };
  • 44. 44 2. Khởi tạo thư viện MatrixDisp.h #include <SPI.h> #define A A0 #define B A1 #define C A2 #define OE 32 #define ST 33 //LAT #define dispW 32 #define dispH 16 #define dispWB dispW/8 #define dispHB dispH/8 #define scanBuffLen (dispH*dispWB*3)/8 uint8_t dispBuff[3][dispH][dispWB]; uint8_t scanBuff[scanBuffLen]; volatile uint8_t scan=0; uint8_t dispX,dispY,dataW=0,dataH; uint8_t DELAY=1,textSpeed=15; uint8_t *Font; #define red 1 #define green 2 #define blue 4 #define yellow 3 #define purple 5 #define cyan 6 #define white 7 #define randc 8 void ShiftDispLeft(int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy,uint8_t color); void setupMatrixDisp() {
  • 45. 45 SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV2); pinMode(53, OUTPUT); //HSPI SS pinMode(A, OUTPUT);digitalWrite(A, 0); pinMode(B, OUTPUT);digitalWrite(B, 0); pinMode(C, OUTPUT);digitalWrite(C, 0); pinMode(OE, OUTPUT);digitalWrite(OE, 0); pinMode(ST, OUTPUT);digitalWrite(ST, 0); Font=Sinclair_S; } void DispScan(){ uint8_t c,y,x,j,i; uint16_t idx=0; for(c=0;c<3;c++){ for(j=scan;j<16;j+=8){ y=j; while(y<dispH){ for(x=0;x<dispWB;x++)scanBuff[idx++]=dispBuff[c][y][x]; y+=16; } } } for(i=0;i<scanBuffLen;i++)SPI.transfer(scanBuff[i]); digitalWrite(OE, 1); digitalWrite(A,(bool)(scan&0x01)); digitalWrite(B,(bool)(scan&0x02)); digitalWrite(C,(bool)(scan&0x04)); digitalWrite(ST, 1);digitalWrite(ST, 0);
  • 46. 46 digitalWrite(OE, 0); if(++scan>7)scan=0; } //xoa het dispClrAll(0); void dispClrAll(uint8_t type){ uint8_t i,j,k,x,y,s=10; if(type==0xff)type=(rand()%6) + 1; if(type==0){ for(y=0;y<dispH;y++){ for(x=0;x<dispWB;x++){ dispBuff[0][y][x]=0; dispBuff[1][y][x]=0; dispBuff[2][y][x]=0; } } } else if(type==1){ //xoa tren xuong cham for(y=0;y<dispH;y++){ for(x=0;x<dispWB;x++){ dispBuff[0][y][x]=0; dispBuff[1][y][x]=0; dispBuff[2][y][x]=0; } delay(s); } } else if(type==2){ //xoa duoi len cham for(y=dispH;y>0;y--){ for(x=0;x<dispWB;x++){
  • 47. 47 dispBuff[0][y-1][x]=0; dispBuff[1][y-1][x]=0; dispBuff[2][y-1][x]=0; } delay(s); } } else if(type==3){ //troi xuong cham i=dispH; while(i--){ for(y=dispH-1;y>0;y--){ for(x=0;x<dispWB;x++){ dispBuff[0][y][x]=dispBuff[0][y-1][x]; dispBuff[1][y][x]=dispBuff[1][y-1][x]; dispBuff[2][y][x]=dispBuff[2][y-1][x]; } } for(x=0;x<dispWB;x++){dispBuff[0][0][x]=0;dispBuff[1][0][x]=0;dispBuff[2][ 0][x]=0;} delay(s); } } else if(type==4){ //troi len cham i=dispH; while(i--){ for(y=0;y<dispH;y++){ for(x=0;x<dispWB;x++){ dispBuff[0][y][x]=dispBuff[0][y+1][x];
  • 48. 48 dispBuff[1][y][x]=dispBuff[1][y+1][x]; dispBuff[2][y][x]=dispBuff[2][y+1][x]; } } for(x=0;x<dispWB;x++){dispBuff[0][dispH-1][x]=0;dispBuff[1][dispH- 1][x]=0;dispBuff[2][dispH-1][x]=0;} delay(s); } } else if(type==5){ //xoa sang trai cham for(x=0;x<dispW;x++){ShiftDispLeft(dispW,dispH,0,0,7);delay(s/2);} } else if(type==6){ //troi len cham i=dispH; while(i--){ for(y=0,j=dispH-1;y<dispH;y++,j--){ for(x=0,k=1;x<dispWB;x+=2,k+=2){ dispBuff[0][y][x]=dispBuff[0][y+1][x]; dispBuff[1][y][x]=dispBuff[1][y+1][x]; dispBuff[2][y][x]=dispBuff[2][y+1][x]; dispBuff[0][j][k]=dispBuff[0][j-1][k]; dispBuff[1][j][k]=dispBuff[1][j-1][k]; dispBuff[2][j][k]=dispBuff[2][j-1][k]; } } for(x=0;x<dispWB;x+=2){dispBuff[0][dispH-1][x]=0;dispBuff[1][dispH- 1][x]=0;dispBuff[2][dispH-1][x]=0;}
  • 49. 49 for(x=1;x<dispWB;x+=2){dispBuff[0][0][x]=0;dispBuff[1][0][x]=0;dispBuff[2] [0][x]=0;} delay(s); } } } //Ham set con tro man hinh void dispGotoXY(uint8_t dispx,uint8_t dispy){ if(dispx)dispx--;dispX=dispx; if(dispY)dispy--;dispY=dispy; } //hiển thị 1 mảng dữ liệu lên màn hình ở vị trí X(1-dispW) và Y(1-dispH) void dispImage(uint8_t PROGMEM *ptr,uint8_t color,int8_t dispx,int8_t dispy){ uint8_t c,i,j,w,h,wb,x,shl,shr,temp,buff,del; int8_t y; uint8_t PROGMEM *ptrs; shr=dispx%8;shl=8-shr;dispx/=8; x=dispx;y=dispy; if(dataW==0){w=*ptr++;h=*ptr++;} else{w=dataW;h=dataH;} wb=(w+7)/8; del=DELAY; for(c=0;c<3;c++){ if((color&(1<<c))==0)continue; ptrs=ptr;y=dispy; for(j=0;j<h;j++,y++){ if(y<0){ptrs+=wb;continue;} if(y>=dispH)break;
  • 52. 52 } del=0; } } dataW=0; } uint8_t UTF8_GetAddr(char PROGMEM *utf8_char,uint8_t *offset){ *offset=1; uint8_t i=0,temp = *utf8_char; //Serial.println(String(temp)); if(temp<0x80)return (temp); //nếu đây là kí tự trong bản ascii uint32_t utf8Value=0; //nếu đây là kí tự tiếng Việt có đấu temp&=0xf0; while(temp){ utf8Value<<=8; utf8Value|=*utf8_char++; temp<<=1; i++; } *offset=i; for(i = 0; i < UTF8_table_size; i++){ if(utf8Value == UTF8_table[i]){ if(i<UTF8_char_end1)return i+1; else return i+UTF8_char_start2-UTF8_char_end1; } } return '?'; }
  • 53. 53 uint8_t writeVietStr(char PROGMEM *ptr,uint8_t color,int8_t dispx,int8_t dispy){ uint8_t PROGMEM *ptrch,*ptrf; uint8_t fw,fh,fwb,offset,rootchar,space,ch,i,j,k,mask,next,count=0; ptrf=Font; fw=*ptrf++; fh=*ptrf++; offset=*ptrf++; rootchar=*ptrf++; space=*ptrf++; fwb=(fw+7)/8; while(*ptr){ ch=UTF8_GetAddr(ptr,&next); ptr+=next; if(ch<offset)continue; if(ch>rootchar)continue; dataW=fw;dataH=fh; ptrch=ptrf+(ch-offset)*fh*fwb; if(ch==0x20){mask=fw/2;k=fwb;}else k=0; for(k;k<fwb;k++){ mask=0x01; for(i=0;i<8;i++){ for(j=fwb-k-1;j<fh*fwb;j+=fwb){ ch=*(ptrch+j); if(ch&mask)break; } if(j<(fh*fwb))break; else mask<<=1; }
  • 54. 54 if(i<8){mask=fwb*8-i-(k*8)+space;break;} } if(color==8){j=rand()%7;j+=1;}else j=color; dispImage(ptrch,j,dispx,dispy); dispx+=mask; count+=mask; if(dispx>dispW)return count; } return count; } void ShiftDispLeft(int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy,uint8_t color){ uint8_t c,x,y,i,j,temp,temp2,left,right; dispw+=dispx;dispw--;if(dispw>=dispW)dispw=dispW-1; disph+=dispy;disph--;if(disph>=dispH)disph=dispH-1; left=dispx%8;right=dispw%8; dispx/=8;dispw/=8; for(y=dispy;y<=disph;y++){ for(x=dispx;x<=dispw;x++){ for(c=0;c<3;c++){ if((color&(1<<c))==0)continue; temp=dispBuff[c][y][x]; temp<<=1; if(x<dispw){if(dispBuff[c][y][x+1]&0x80)temp|=0x01;} else{ temp2=(dispBuff[c][y][x]&(0xff>>(right+1))); temp&=(0xff<<(8-right)); temp|=temp2; }
  • 55. 55 if(x==dispx){ temp2=(dispBuff[c][y][x]&(0xff<<(8-left))); temp&=(0xff>>left); temp|=temp2; } dispBuff[c][y][x]=temp; } } } } void StringScrollLeft(char PROGMEM *text,uint8_t speedms,uint8_t color,int8_t dispw,int8_t disph,int8_t dispx,int8_t dispy){ uint8_t count,chr,next,i,x,d=DELAY; char temp[5]; DELAY=0; if(color>7){color=rand()%7;color++;} x+=dispw;if(x>dispW)x=dispW; while(*text){ if(*text==0x0A){ i=x; while(i--){delay(speedms);ShiftDispLeft(dispw,disph,dispx,dispy,7);} text++; } temp[0]=UTF8_GetAddr(text,&next); for(i=0;i<next;i++)temp[i]=*(text+i); temp[i]=0; text+=next; count= writeVietStr(temp,color,x,dispy); for(i=1;i<=count;i++){
  • 56. 56 delay(speedms); ShiftDispLeft(dispw,disph,dispx,dispy,7); writeVietStr(temp,color,x-i,dispy); } } while(x--){delay(speedms);ShiftDispLeft(dispw,disph,dispx,dispy,7);} DELAY=d; } 3. Code điều khiển chính #include <Wire.h> #include <TimerOne.h> // khai báo thư viện timer 1 #include "Data.h" #include "MatrixDisp.h" #include <HCSR04.h> UltraSonicDistanceSensor Sensor1(8,9); int DistanceCm = 0; int KhoangCach = 0; int oldDis = 0; #include <HX711.h> #define DT 2 #define CK 3 HX711 scale; float calibration_factor = -7050; //-7050 worked for my 440lb max scale setup float n=0.45359237; float LBS; int KG; #include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614();
  • 57. 57 //Nhiptim int pulsePin = A8; // Pulse Sensor purple wire connected to analog pin A0 int blinkPin = 13; // pin to blink led at each beat // Volatile Variables, used in the interrupt service routine! volatile int BPM; // int that holds raw Analog in 0. updated every 2mS volatile int Signal; // holds the incoming raw data volatile int IBI = 600; // int that holds the time interval between beats! Must be seeded! volatile boolean Pulse = false; // "True" when User's live heartbeat is detected. "False" when not a "live beat". volatile boolean QS = false; // becomes true when Arduoino finds a beat. static boolean serialVisual = true; // Set to 'false' by Default. Re-set to 'true' to see Arduino Serial Monitor ASCII Visual Pulse volatile int rate[10]; // array to hold last ten IBI values volatile unsigned long sampleCounter = 0; // used to determine pulse timing volatile unsigned long lastBeatTime = 0; // used to find IBI volatile int P = 512; // used to find peak in pulse wave, seeded volatile int T = 512; // used to find trough in pulse wave, seeded volatile int thresh = 525; // used to find instant moment of heart beat, seeded volatile int amp = 100; // used to hold amplitude of pulse waveform, seeded volatile boolean firstBeat = true; // used to seed rate array so we startup with reasonable BPM volatile boolean secondBeat = false; // used to seed rate array so we startup with reasonable BPM void setup() { // put your setup code here, to run once: //MLX90614
  • 58. 58 mlx.begin(); //Loadcell scale.begin(DT,CK); scale.set_scale(); scale.tare(); //Reset the scale to 0 long zero_factor = scale.read_average(); //Get a baseline reading //LedMatrix setupMatrixDisp(); Timer1.initialize(2000); // khởi tạo timer 1 2ms Timer1.attachInterrupt(DispScan); // khai báo ngắt timer 1 dispClrAll(0); //PS pinMode(blinkPin,OUTPUT); // pin that will blink to your heartbeat! interruptSetup(); } void loop() { // put your main code here, to run repeatedly: //SFR04 DistanceCm = Sensor1.measureDistanceCm(); KhoangCach = (200-DistanceCm); if (KhoangCach < 0) { KhoangCach = oldDis; } oldDis = KhoangCach; String str =String(KhoangCach) + "CM"; char buf[100]; str.toCharArray(buf,100); Serial.println(str); //Loadcell scale.set_scale(calibration_factor);//Adjust to this calibration factor
  • 59. 59 LBS=scale.get_units(); KG=LBS*n; String str1 =String((KG)) + "KG"; char buf1[100]; str1.toCharArray(buf1,100); Serial.println(str1); //MLX90614 String str2 =String(mlx.readObjectTempC()) + "C"; char buf2[100]; str2.toCharArray(buf2,100); Serial.println(str2); //BPM serialOutput(); if (QS == true) // A Heartbeat Was Found { serialOutputWhenBeatHappens(); // A Beat Happened, Output that to serial. QS = false; // reset the Quantified Self flag for next time } dispClrAll(0); writeVietStr("CAO:",green,1,0); writeVietStr(buf,green,0,8); delay(1000); dispClrAll(0); writeVietStr("NANG:",blue,1,0); writeVietStr(buf1,blue,0,8); delay(1000); dispClrAll(0); writeVietStr("TEMP:",purple,1,0); writeVietStr(buf2,purple,0,8); delay(1000);
  • 60. 60 void interruptSetup() { // Initializes Timer2 to throw an interrupt every 2mS. TCCR2A = 0x02; // disable PWM on digital pins 3 and 11, and go into ctc mode TCCR2B = 0x06; // don't force compare, 256 prescaler OCR2A = 0X7C; // set the top of the count to 124 for 500hz sample rate TIMSK2 = 0x02; // enable interrupt on match between timer2 and ocr2a sei(); // make sure global interrupts are enabled } void serialOutput() { // Decide How To Output Serial. if (serialVisual == true) { arduinoSerialMonitorVisual('-', Signal); // goes to function that makes Serial Monitor Visualizer } else { sendDataToSerial('S', Signal); // goes to sendDataToSerial function } } void serialOutputWhenBeatHappens() { if (serialVisual == true) // Code to Make the Serial Monitor Visualizer Work { String str3 = String(BPM); char buf3[100]; str3.toCharArray(buf3,100); dispClrAll(0); writeVietStr("BPM:",cyan,1,0); writeVietStr(buf3,cyan,0,8);
  • 61. 61 delay(1000); Serial.println(str3); } else { sendDataToSerial('B',BPM); // send heart rate with a 'B' prefix sendDataToSerial('Q',IBI); // send time between beats with a 'Q' prefix } } void arduinoSerialMonitorVisual(char symbol, int data ) { const int sensorMin = 0; // sensor minimum, discovered through experiment const int sensorMax = 1024; // sensor maximum, discovered through experiment int sensorReading = data; // map the sensor range to a range of 12 options: int range = map(sensorReading, sensorMin, sensorMax, 0, 11); // do something different depending on the // range value: } void sendDataToSerial(char symbol, int data ) { Serial.print(symbol); Serial.println(data); } ISR(TIMER2_COMPA_vect) //triggered when Timer2 counts to 124 { cli(); // disable interrupts while we do this Signal = analogRead(pulsePin); // read the Pulse Sensor sampleCounter += 2; // keep track of the time in mS with this variable
  • 62. 62 int N = sampleCounter - lastBeatTime; // monitor the time since the last beat to avoid noise // find the peak and trough of the pulse wave if(Signal < thresh && N > (IBI/5)*3) // avoid dichrotic noise by waiting 3/5 of last IBI { if (Signal < T) // T is the trough { T = Signal; // keep track of lowest point in pulse wave } } if(Signal > thresh && Signal > P) { // thresh condition helps avoid noise P = Signal; // P is the peak } // keep track of highest point in pulse wave // NOW IT'S TIME TO LOOK FOR THE HEART BEAT // signal surges up in value every time there is a pulse if (N > 250) { // avoid high frequency noise if ( (Signal > thresh) && (Pulse == false) && (N > (IBI/5)*3) ) { Pulse = true; // set the Pulse flag when we think there is a pulse digitalWrite(blinkPin,HIGH); // turn on pin 13 LED IBI = sampleCounter - lastBeatTime; // measure time between beats in mS lastBeatTime = sampleCounter; // keep track of time for next pulse if(secondBeat) { // if this is the second beat, if secondBeat == TRUE secondBeat = false; // clear secondBeat flag
  • 63. 63 for(int i=0; i<=9; i++) // seed the running total to get a realisitic BPM at startup { rate[i] = IBI; } } if(firstBeat) // if it's the first time we found a beat, if firstBeat == TRUE { firstBeat = false; // clear firstBeat flag secondBeat = true; // set the second beat flag sei(); // enable interrupts again return; // IBI value is unreliable so discard it } // keep a running total of the last 10 IBI values word runningTotal = 0; // clear the runningTotal variable for(int i=0; i<=8; i++) { // shift data in the rate array rate[i] = rate[i+1]; // and drop the oldest IBI value runningTotal += rate[i]; // add up the 9 oldest IBI values } rate[9] = IBI; // add the latest IBI to the rate array runningTotal += rate[9]; // add the latest IBI to runningTotal runningTotal /= 10; // average the last 10 IBI values BPM = 60000/runningTotal; // how many beats can fit into a minute? that's BPM! QS = true; // set Quantified Self flag // QS FLAG IS NOT CLEARED INSIDE THIS ISR } } if (Signal < thresh && Pulse == true) { // when the values are going down, the beat is over
  • 64. 64 digitalWrite(blinkPin,LOW); // turn off pin 13 LED Pulse = false; // reset the Pulse flag so we can do it again amp = P - T; // get amplitude of the pulse wave thresh = amp/2 + T; // set thresh at 50% of the amplitude P = thresh; // reset these for next time T = thresh; } if (N > 2500) { // if 2.5 seconds go by without a beat thresh = 512; // set thresh default P = 512; // set P default T = 512; // set T default lastBeatTime = sampleCounter; // bring the lastBeatTime up to date firstBeat = true; // set these to avoid noise secondBeat = false; // when we get the heartbeat back } sei(); // enable interrupts when youre done! } 4. Cài dặt các thư viện liên quan ✓ Thư viện HCSR04( UntralSonicsensor) ✓ Thư viện HX711 ✓ Thư viện Adafruit_MLX90614 ✓ Thư viện Wire