UART bao gồm hai thành phần là máy phát và máy thu. Phần máy phát bao gồm ba khối là thanh ghi giữ truyền, thanh ghi dịch chuyển và logic điều khiển. Phần máy thu bao gồm một thanh ghi giữ, thanh ghi thay đổi và logic điều khiển. Hai phần này
thường được cung cấp bởi một bộ tạo tốc độ baud. Trình tạo này được sử dụng để tạo tốc độ khi phần máy phát và phần máy thu phải truyền hoặc nhận dữ liệu (xem Hình 1 -
20).
Thanh ghi giữ trong máy phát bao gồm byte dữ liệu được truyền. Các thanh ghi thay đổi trong máy phát và máy thu di chuyển các bit sang phải hoặc trái cho đến khi một byte dữ liệu được truyền hoặc nhận. Một logic điều khiển đọc (hoặc) ghi được sử dụng để biết khi nào nên đọc hoặc viết.
Máy phát tốc độ baud giữa máy phát và máy thu tạo ra tốc độ dao động từ 110 bps đến 230400 bps. Thông thường, tốc độ truyền của vi điều khiển là 9600 đến 115200.
1.4.2.2. Truyền thơng UART
Trong giao tiếp này, có hai loại UART có sẵn là truyền UART và nhận UART và giao tiếp giữa hai loại này có thể được thực hiện trực tiếp với nhau. Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus dữ liệu ở dạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU…
Sau khi nhận được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm ba bit như bắt đầu, dừng lại và trung bình. Nó đọc từng bit gói dữ liệu và chuyển đổi dữ liệu nhận được thành dạng song song để loại bỏ ba bit của gói dữ liệu.
Tóm lại, gói dữ liệu nhận được bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận (xem Hình 1 - 21).
Hình 1 - 21: Truyền thơng giao tiếp UART
1.4.2.3. Ứng dụng
UART thường được sử dụng trong các bộ vi điều khiển cho các yêu cầu chính xác và chúng cũng có sẵn trong các thiết bị liên lạc khác nhau như giao tiếp không dây, thiết bị GPS, mô-đun Bluetooth và nhiều ứng dụng khác.
Các tiêu chuẩn truyền thông như RS422 & TIA được sử dụng trong UART ngoại trừ RS232. Thông thường, UART là một IC riêng được sử dụng trong giao tiếp nối tiếp UART.
1.4.3. Giao tiếp SPI
Chuẩn giao tiếp SPI được hãng Motorola đề xuất, ra đời vào giữa những năm 1980 để giải quyết về nhu cầu về việc giao tiếp giữa các thiết bị với thông lượng nhanh hơn giao thức I2C hiện có.
Giao tiếp ngoại vi nối tiếp (SPI) là một loại giao thức kiểu Master – Slave cung cấp một giao diện chi phí đơn giản và chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi của nó.
1.4.3.1. Đặc điểm
Hình 1 - 22: Giao tiếp SPI
− SPI là một giao thức kiểu Master – Slave. Master là thiết bị điều khiển (thường là vi điều khiển), còn Slave (thường là các cảm biến, màn hình LCD hoặc chip nhớ) sẽ nhận lệnh từ Master.
− Một hệ thống SPI chỉ gồm một thiết bị Master, nhưng lại có thể có một hoặc nhiều thiết bị Slave.
− Khối SPI của thiết bị Master sẽ kết nối với khối SPI của thiết bị Slave qua 4 chân tín hiệu (xem Hình 1 - 22):
• MOSI (Master Output/Slave Input) – Master gửi dữ liệu đến Slave. • MISO (Master Input/Slave Output) – Slave gửi dữ liệu cho Master. • SCLK (Serial Clock) – xung giữ nhịp Clock.
• SS/CS (Slave Select/Chip Select) – Master lựa chọn Slave để giao tiếp. Cụ thể trong trường hợp hệ thống gồm một Master giao tiếp với nhiều Slave, Master điều khiển tín hiệu mức logic trên chân SS/CS của Slave nào xuống mức LOW (mức 0), nghĩa là Master đang giao tiếp với Slave đó.
1.4.3.2. Cơ chế hoạt động
Hình 1 - 23: Cơ chế giao tiếp SPI hoạt động
Mỗi thiết bị Master và Slave đều có một thanh ghi dịch 8 bits (Shift Register), một bộ tạo xung nhịp (Clock Generator).
Khi Master truyền dữ liệu, Master truyền đi 8 bits dữ liệu vào thanh ghi dịch của nó, sau đó 8 bits dữ liệu được truyền theo đường tín hiệu MOSI sang thiết bị Slave. Tương tự khi Slave truyền dữ liệu, các bits trên thanh ghi dịch của Slave truyền đến Master thơng qua đường tín hiệu MISO (xem Hình 1 - 23).
Bằng cách này, dữ liệu của hai thanh ghi sẽ được trao đổi với nhau. Việc đọc và ghi dữ liệu vào Slave diễn ra cùng một lúc nên tốc độ trao đổi dữ liệu diễn ra rất nhanh. Do đó, giao thức SPI là một giao thức rất có hiệu quả.
CHƯƠNG 2. TÍNH TỐN, THIẾT KẾ PHẦN CỨNG
2.1. Sơ đồ khối
2.1.1. Sơ đồ khối của vịng tay
Hình 2 - 1: Sơ đồ khối của vịng tay
Chức năng các khối (xem Hình 2 - 1):
• Khối xử lý: xử lý dữ liệu cho hệ thống.
• Khối cảm biến: cung cấp giá trị nhịp tim, SpO2 và gia tốc.
• Khối truyền thơng RF2.4: truyền dữ liệu từ vịng tay đến gateway. • Khối nguồn: cấp nguồn cho hệ thống hoạt động.
• Khối nút nhấn: cung cấp tín hiệu bằng tay.
2.1.1.1. Khối xử lý
Khối xử lý trung tâm của vòng tay: Sử dụng vi điều khiển Atmega328P để thực hiện đọc giá trị từ cảm biến và gửi kết quả về cho gateway.
2.1.1.2. Khối cảm biến
2.1.1.2.1. Cảm biến đo nhịp tim và SpO2
Sử dụng cảm biến MAX30100 để đo nhịp tim và nồng độ oxy trong máu và gửi dữ liệu đến gateway.
2.1.1.2.2. Cảm biến gia tốc
Sử dụng cảm biến GY-521 6DOF IMU MPU6050 để phát hiện người đeo có thể bị ngã và gửi dữ liệu đến gateway.
2.1.1.3. Khối truyền thông RF2.4
Sử dụng module NRF24L01 để giao tiếp giữa vòng tay với gateway.
2.1.1.4. Khối nguồn
Sau khi tính tốn cơng suất tiêu thụ trong bảng dưới đây (xem Bảng 2 - 1), nhóm chọn nguồn là pin lithium 300mAh để cấp nguồn cho vịng tay.
Bảng 2 - 1: Tính tốn cơng suất tiêu thụ của vòng tay
STT Khối chính Hoạt động tiêu thụ Dịng điện lớn nhất 1 Atmega328 Đọc dữ liệu từ cảm biến và gửi dữ
liệu lên cho gateway 30mA
2 Cảm biến
MAX30100 Đo nhịp tim, nồng độ oxy trong máu 20mA
3 Cảm biến gia tốc
MPU6050 Phát hiện ngã 3.9mA
4 Khối truyền thông NRF24L01
Truyền thơng giữa vịng tay và
gateway ≈ 100mA
5 Tổng ≈ 160mA
Chức năng các khối (xem Hình 2 - 2):
• Khối xử lý: xử lý dữ liệu của hệ thống.
• Khối truyền thơng RF2.4: nhận dữ liệu từ vịng tay đến gateway. • Khối truyền thơng: truyền dữ liệu từ gateway đến điện thoại. • Khối cảnh báo: phát loa cảnh báo khi có dấu hiệu té ngã. • Khối nguồn: cấp nguồn cho hệ thống hoạt động.
2.1.2.1. Khối xử lý
Sử dụng chip xử lý trung tâm là module ESP8266 NodeMCU, nhằm để nhận dữ liệu từ vòng tay và gửi dữ liệu lên Firebase của Google thơng qua sóng wifi.
2.1.2.2. Khối truyền thông:
Sử dụng module sim 800L để giao tiếp với điện thoại qua GSM:
2.1.2.3. Khối cảnh báo
Sử dụng cịi chíp để báo âm thanh, và sử dụng transistor 2N3904 phân cực class A để kích mở cịi chip.
2.1.2.4. Khối nguồn
Khối nguồn cần cung cấp được nguồn điện ổn định, đủ để cho các module hoạt động ổn định, từ tính tốn trong bảng dưới đây (xem Bảng 2 - 2), nhóm lựa chọn nguồn từ adapter 5V – 2A để cung cấp nguồn cho gateway hoạt động.
Bảng 2 - 2: Tính tốn cơng suất của gateway
STT Khối chính Hoạt động tiêu thụ Dòng điện lớn nhất 1 ESP8266 Truyền nhận dữ liệu, điều khiển ngoại vi ≈ 200mA
2 NRF24L01 Truyền thơng giữa vịng tay và gateway ≈ 100mA
3 Module
Sim800L Truyền thông giữa gateway và điện thoại 100mA – 2A
4 Tổn hao khác -- ≈ 100mA
2.2. Sơ đồ nguyên lý
2.2.1. Sơ đồ ngun lý của vịng tay
Hình 2 - 3: Sơ đồ nguyên lý của vòng tay
Với các chức năng như đo nhịp tim, nồng độ oxy trong máu, phát hiện ngã, và gửi dữ liệu đọc được cũng như yêu cầu về gateway, vịng tay có cấu tạo như sau (xem
Hình 2 - 3):
• VĐK được sử dụng là Atmega328.
• Khối cảm biến được nối theo chuẩn I2C, các chân SCL, SDA lần lượt được nối vào I/O PC5, PC4 của VĐK.
• NRF24L01 được nối theo chuẩn SPI, các chân MISO-MOSI-SCK-CSN-CE lần lượt được nối vào I/O PB4-PB3-PB5-PB2-PB1 của VĐK.
• Khối đèn báo được nối với chân PC2 của VĐK.
• Khối nút nhấn gồm 2 nút, được nối lần lượt với 2 chân PC0, PC1 của VĐK với mục đích yêu cầu gọi điện cho người thân và tắt cảnh báo (nếu có).
2.2.2. Sơ đồ nguyên lý của gateway
Hình 2 - 4: Mạch nguyên lý của gateway
Với chức năng điều phối, thu tín hiệu từ vòng tay và gửi dữ liệu lên internet cũng như điện thoại, gateway có cấu tạo như sau (xem Hình 2 - 4):
• ESP8266 NodeMCU là VĐK trung tâm.
• Module NRF24L01 được kết nối với D4, D5, D6, D7, D8 của ESP8266 theo chuẩn SPI.
• Module cảnh báo được nối vào chân D3, gồm có transistor phân cực class A để kích cịi báo.
• Header 8P được kết nối theo chuẩn UART, với 2 chân TX, RX kết nối với TX, RX của ESP8266, header sẽ được nối với module sim800l để phục vụ cho việc truyền thông giữa gateway và điện thoại.
2.3.1. Mạch in và mơ phỏng 3D của vịng tay
Mạch của vịng tay được mơ phỏng 3D trên phần mềm Altium (xem Hình 2 - 5).
Hình 2 - 5: Mạch in và mơ phỏng 3D của vịng tay
2.3.2. Mạch in và mô phỏng 3D của gateway
Mạch của gateway được mô phỏng 3D trên phần mềm Altium (xem Hình 2 - 6).
CHƯƠNG 3. LẬP TRÌNH ĐIỀU KHIỂN HỆ THỐNG
3.1. Lưu đồ hoạt động của hệ thống
3.1.1. Hoạt động của hệ thống
Trong quá trình tìm hiểu về NRF24L01, nhận thấy đây là một dịng chip có hiệu năng cao cũng như khả năng truyền tải tốt với tốc độ tối đa có thể đạt được lên tới 2Mbps. Tuy nhiên, dịng chip giá rẻ này cũng có một số nhược điểm như:
- Khả năng truyền tải khoảng cách xa kém.
- Chỉ hỗ trợ truyền tải bán song cơng (tại một thời điểm chỉ có thể truyền hoặc
nhận, và phải setup trước điều kiện trong phần lập trình). Hệ thống sẽ hoạt động như sau:
- Vịng tay sau khi đo đạc thơng số từ cảm biến sẽ gửi thông tin đến gateway. - Gateway sẽ kiểm tra bản tin đến, sau khi phân tích bản tin sẽ kiểm tra trạng
thái cảnh báo và đưa ra quyết định.
- Gateway sẽ gửi bản tin đã đóng gói đến Firebase của Google qua wifi và gửi
đến điện thoại qua sms.
- Ngồi ra, người dùng có thể chủ động gửi yêu cầu nhờ vào nút nhấn được thiết
kế trên vòng tay.
- Cấu trúc bản tin gửi từ vòng tay đến gateway sẽ gồm 4 byte:
• Byte 1 thể hiện giá trị nhịp tim (lần/phút). • Byte 2 thể hiện giá trị nồng độ oxy trong máu. • Byte 3 thể hiện trạng thái cảnh báo (0 hoặc 1).
• Byte 4 thể hiện yêu cầu nhắn tin đến gateway (0 hoặc 1).
3.1.2. Lưu đồ thuật toán của vịng tay
Vịng tay có nhiệm vụ:
- Đo đạc thông số từ cảm biến đo nhịp tim, nồng độ oxy trong máu và cảm biến
gia tốc.
Hình 3 - 1: Lưu đồ thuật tốn của vịng tay
Kịch bản hoạt động (xem Hình 3 - 1):
- Sau khi đọc được dữ liệu từ cảm biến, vòng tay sẽ gửi bản tin data có cảnh báo
về gateway.
- Cảm biến gia tốc MPU6050 đo gia tốc của 3 trục, nếu gia tốc 3 trục vượt
ngưỡng cho phép (bị ngã), ta sẽ lập trình phát tín hiệu cảnh báo.
- Vòng tay sẽ gửi bản tin 1 lần sau 10 phút nếu khơng có cảnh báo hoặc ngay
lập tức nếu có cảnh báo. Ngồi ra, nó sẽ gửi u cầu từ người dùng thơng qua 2 nút nhấn được thiết kế trên vịng tay:
• Nút nhấn 1 yêu cầu gọi điện cho người thân ngay lập tức (nhưng khơng u cầu speak và voice).
• Nhút nhấn 2 yêu cầu tắt cảnh báo (nếu có).
3.1.3. Lưu đồ thuật tốn của gateway
Gateway có nhiệm vụ:
- Nhận dữ liệu từ vịng tay qua sóng RF.
- Cảnh báo còi chip ngay trên mạch nếu mất kết nối wifi hay phát hiện cảnh báo
- Đóng gói bản tin thu được từ vịng tay và gửi lên firebase của google để có thể
theo dõi qua app trên điện thoại.
Hình 3 - 2: Lưu đồ thuật tốn của gateway
Kịch bản hoạt động (xem Hình 3 - 2):
- Gateway sẽ kiểm tra kết nối wifi, nếu khơng thể kết nối sẽ báo cịi, tiếp tục
thực hiện đoạn chương trình tiếp theo.
- Nhận bản tin gửi từ vòng tay qua mạng RF, kiểm tra, phân tích bản tin, sau đó
kiểm tra trạng thái cảnh báo từ bản tin:
• Nếu đúng (phát hiện bất thường như bị ngã) sẽ tự động phát cịi cảnh báo, ngay lập tức gửi thơng báo lên Firebase của Google, đồng thời gửi tin nhắn đến điện thoại qua sms.
• Nếu nhận được tín hiệu tắt cịi cảnh báo từ vịng tay, thì sẽ ngừng mọi trạng thái cảnh báo.
• Nếu có tín hiệu u cầu gọi điện thoại cho người thân thì thực hiện cuộc gọi cho người thân.
- Đóng gói bản tin và gửi lên firebase của google.
3.1.4. Thuật toán phát hiện té ngã
Bằng các phương pháp nghiên cứu, thực nghiệm về mối quan hệ chuyển động của cơ thể người và gia tốc của từng hoạt động, khi một người có dấu hiệu bị ngã, gia tốc của các điểm tại cổ tay sẽ tăng cao đột ngột do các va chạm vật lý giữa người mà
mơi trường xung quanh. Nhận thấy điều đó, chúng em đã sử dụng cảm biến đo gia tốc 3 trục tự do ứng với hệ không gian 3 chiều để đo gia tốc.
Để phân biệt giữa sự vung tay hoặc những hành động thường ngày và sự té ngã, chúng em đã có sự khảo sát như bảng sau (xem Bảng 3 - 1):
Bảng 3 - 1: Khảo sát gia tốc ba trục với những hoạt động hàng ngày
Hoạt động Gia tốc tại các trục X-Y-Z (m/𝒔𝟐)
Tập thể dục (đo 3 lần) 3-15-9 | 3-6-18 | 12-4-6 Đi bộ (đo 3 lần) 7-9-3 | 12-9-7 | 11-4-8 Ăn cơm (đo 3 lần) 2-4-5 | 5-7-7 | 3-2-5
Té ngã (đo 3 lần) 15-18-14 | 20-17-15 | 21-14-18 Từ bảng số liệu thực nghiệm trên, chúng em thấy rằng đối với những hoạt động thường ngày, những hành động hoàn tồn được kiểm sốt về gia tốc, tốc độ để đảm bảo tính tồn vẹn cho cơ thể (cơ thể con người có thể được chuẩn bị để đón nhận một lực tác động từ 1 phía và cố định), dẫn đến gia tốc sẽ chỉ tăng mạnh ở một chiều hướng nhất định.
Khác với hoạt động thường ngày, sự ngã hoàn tồn khơng thể kiểm sốt, cơ thể sẽ bị tác động từ nhiều phía khi va chạm với mơi trường xung quanh cũng như phản xạ tự nhiên để chống lại nguyên nhân va chạm, dẫn đến các hướng chuyển động của cơ thể là hỗn loạn, và sẽ làm gia tốc tăng đột ngột tại tất cả các phía.
Từ đó, thuật tốn phát hiện ngã được phát triển dựa trên nguyên tắc, nếu phát hiện gia tốc tại 3 trục tăng đột ngột khi vượt quá ngưỡng 15m/𝑠2 thì sẽ được đặt vào trạng thái té ngã.
3.1.5. Nguyên lý đo nhịp tim, SpO2
Kỹ thuật được sử dụng để đo nhịp tim trên các thiết bị đeo tay thường là thông qua thể tích PPG (Photoplethysmography - dùng ánh sáng để đo lường thể tích của một cơ quan trong cơ thể). Bằng cách chiếu các xung ánh sáng lên da và đo lường sự thay đổi của lượng ánh sáng bị hấp thụ, các cảm biến sẽ xác định được lượng máu đến các mơ và lớp hạ biểu bì dưới da.
Ở mỗi chu kỳ, máu sẽ được bơm đến các mạch ngoại biên khắp cơ thể. Mặc dù áp suất mỗi lần bơm giảm khi đến da, nhưng cường độ của nó vẫn đủ để tăng các mạch máu và hệ mạch ở mô dưới da. Nếu thiết bị được gắn bên ngoài da, ngay cả một áp lực