Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số y tế và tự động hóa công nghiệp (Healthcare Automation), việc theo dõi các chỉ số thể trạng cơ bản như cân nặng và chiều cao đóng vai trò then chốt trong việc chẩn đoán sớm nguy cơ sức khỏe. Theo thống kê từ Tổ chức Y tế Thế giới (WHO), tỷ lệ thừa cân, béo phì cũng như suy dinh dưỡng thể thấp còi đang gia tăng nhanh chóng tại các nước đang phát triển, dẫn đến các bệnh lý tim mạch, đái tháo đường và loãng xương. Tuy nhiên, quy trình đo đạc tại phần lớn phòng khám, trường học và cơ sở y tế hiện nay vẫn phụ thuộc vào phương pháp thủ công: sử dụng thước đo cơ học và cân cơ/điện tử độc lập.
Phương pháp đo thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng:
- Sai số thị giác (Parallax Error): Việc đọc chỉ số vạch cơ học phụ thuộc vào góc nhìn của nhân viên y tế, gây sai lệch trung bình từ 1.0 - 2.5 cm đối với chiều cao và 0.5 - 1.0 kg đối với cân nặng.
- Thời gian xử lý kéo dài: Nhân viên phải tính toán thủ công chỉ số khối cơ thể $BMI = \frac{\text{Cân nặng (kg)}}{[\text{Chiều cao (m)}]^2}$, tra cứu phân loại và ghi chép, tiêu tốn 2 - 3 phút cho mỗi lượt khám.
- Thiếu tính tương tác và tự động hóa: Không có hướng dẫn tự động bằng giọng nói hay cảnh báo trực quan tại chỗ cho người đo.
Đề tài "Thiết kế và thi công cân điện tử" của tác giả Trần Minh Đức (Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) được nghiên cứu và phát triển nhằm giải quyết triệt để các hạn chế trên thông qua một trạm đo cơ điện tử tích hợp hoàn toàn tự động.
+-----------------------------+
| Khối Xử Lý Trung Tâm |
| STM32F103RBT6 |
| (ARM Cortex-M3 72MHz) |
+--------------+--------------+
|
+-----------------+-------+-------+-----------------+
| | | |
v v v v
+-----------------+ +-------------+ +---------------+ +-------------+
| Khối Cảm Biến | | Khối Cơ | | Khối Âm Thanh | | Khối Hiển |
| 4x Loadcell 50k | | Động cơ bước| | VS1003 + SD | | Thị |
| + ADC 24-bit | | Driver L298N| | SPI Protocol | | TFT-LCD 2.8"|
| Module HX711 | | + Limit Sw | | Jack 3.5mm/Loa| | ILI9325 |
+-----------------+ +-------------+ +---------------+ +-------------+
Mục tiêu dự án
- Thiết kế phần cứng cảm biến: Tích hợp cụm 4 cảm biến tải trọng (Loadcell) cấu hình cầu Wheatstone kết hợp mạch biến đổi tương tự - số (ADC) 24-bit chuyên dụng HX711, cho phép đo trọng lượng tối đa 200 kg với sai số $\le \pm 0.1$ kg.
- Thiết kế cơ cấu đo chiều cao tự động: Xây dựng hệ cơ khí trục đứng điều khiển bằng động cơ bước 2 pha thông qua mạch công suất L298N và công tắc hành trình tiếp xúc đỉnh đầu, đo chiều cao tối đa 2.0 m với độ chính xác $\le \pm 0.5$ cm.
- Phát triển thuật toán phân loại và phản hồi: Tự động tính toán chỉ số BMI theo chuẩn WHO và WPRO (Tây Thái Bình Dương), xuất kết quả lên màn hình cảm ứng màu TFT-LCD 2.8 inch.
- Tích hợp bộ giải mã âm thanh thời gian thực: Ứng dụng IC phần cứng VS1003 qua chuẩn giao tiếp SPI để phát âm thanh MP3 hướng dẫn thao tác, đọc to kết quả đo và đưa ra khuyến nghị sức khỏe tự động.
Phạm vi và giới hạn hệ thống
- Tải trọng danh định: $0 - 200$ kg (quá tải an toàn 120%).
- Chiều cao đo danh định: $0.5 - 2.0$ m.
- Yêu cầu môi trường: Đặt trên mặt phẳng cố định, không rung chấn, nguồn cấp 220VAC chuyển đổi 12VDC/5VDC ổn định.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí kỹ thuật / Vận hành |
Cân cơ học & Thước dây thủ công |
Cân điện tử thương mại tiêu chuẩn |
Trạm đo y tế thông minh nhập khẩu |
Giải pháp đề tài (STM32 + HX711 + VS1003) |
| Độ phân giải cân nặng |
0.5 kg |
0.1 kg |
0.05 kg |
0.05 kg (ADC 24-bit) |
| Cơ cấu đo chiều cao |
Kéo tay, đọc mắt |
Thủ công |
Cảm biến siêu âm (dễ nhiễu tóc) |
Động cơ bước + Công tắc hành trình (cơ khí chính xác) |
| Tự động tính BMI |
Không (tính tay) |
Tùy dòng máy |
Có |
Có (Hiển thị LCD + Phân loại WPRO) |
| Giao tiếp âm thanh |
Không |
Không |
Giọng nói tiếng Anh/Hàn |
Phát giọng nói tiếng Việt MP3 qua VS1003 |
| Màn hình hiển thị |
Kim chỉ / Vạch chia |
LED 7 đoạn đơn sắc |
LCD đơn sắc / Màn hình cảm ứng |
TFT-LCD 2.8 inch Màu RGB (ILI9325) |
| Chi phí ước tính |
500.000 VNĐ |
1.500.000 VNĐ |
25.000.000 - 50.000.000 VNĐ |
< 2.500.000 VNĐ |
Ma trận ưu tiên yêu cầu kỹ thuật (MoSCoW)
- Must-have (Bắt buộc): Đọc chính xác điện áp vi sai từ Loadcell qua HX711; điều khiển động cơ bước quay thuận/nghịch quét chiều cao; ngắt an toàn bằng công tắc hành trình; tính toán chuẩn BMI.
- Should-have (Cần có): Màn hình hiển thị TFT 2.8" giao diện thân thiện; giải mã âm thanh MP3 từ thẻ nhớ SD qua VS1003; nút bấm đa chức năng (Đo, Nghe nhạc giải trí, Thoát).
- Could-have (Nên có): Cảm ứng điện trở XPT2046 để tương tác trực tiếp trên màn hình; lưu lịch sử đo vào thẻ SD.
- Won't-have (Chưa thực hiện trong phiên bản này): Kết nối không dây Cloud/WiFi và truyền dữ liệu qua giao thức MQTT.
Thiết kế hệ thống
Kiến trúc công nghệ phần cứng
- Khối xử lý trung tâm: Vi điều khiển 32-bit
STM32F103RBT6 (lõi ARM Cortex-M3, tần số xung nhịp 72 MHz, 128 KBytes Flash, 20 KBytes SRAM, 2x SPI, 3x USART, 16x ADC 12-bit).
- Khối cảm biến cân nặng:
- Cụm 4 cảm biến Loadcell 50 kg ghép thành mạch cầu Wheatstone cân bằng.
- IC ADC 24-bit
HX711 tích hợp bộ khuếch đại độ lợi khả trình (PGA: 32, 64, 128). Tốc độ lấy mẫu lựa chọn 10 SPS (Samples Per Second) hoặc 80 SPS, cho phép loại bỏ nhiễu đồng pha 50/60 Hz.
- Độ phân giải điện áp tương tự lý thuyết của HX711 với $V_{ref} = 5\text{V}$:
$$\Delta V = \frac{V_{ref}}{2^{24}} = \frac{5}{16.777.216} \approx 0.298,\mu\text{V}$$
(Đáp ứng hoàn hảo dải tín hiệu đầu ra $1 - 3$ mV từ Loadcell).
- Khối cơ cấu đo chiều cao:
- Động cơ bước lưỡng cực 2 pha 6 dây kết hợp bộ truyền động đai răng (dây curoa) và thanh trượt cơ khí.
- Driver công suất
L298N (Dual Full-Bridge Driver, điện áp tải lên đến 46V, dòng đỉnh 2A mỗi pha).
- Cảm biến hành trình cơ học đưa tín hiệu logic về chân
PA4 của STM32 để dừng và đảo chiều động cơ tức thì khi chạm đỉnh đầu.
- Khối giải mã âm thanh & lưu trữ:
- IC giải mã âm thanh chuyên dụng
VS1003B (hỗ trợ MP3, WMA, WAV, MIDI; bộ nhớ đệm RAM 5.5 KB; giải mã phần cứng giảm tải 100% cho MCU).
- Khe cắm thẻ nhớ SD giao tiếp song song qua bus
SPI1.
- Loa ngoài mini kết nối qua jack chuẩn 3.5mm.
- Khối giao diện người dùng (HMI):
- Màn hình cảm ứng TFT-LCD 2.8 inch (độ phân giải $240 \times 320$ pixels, driver điều khiển ILI9325, 262K màu RGB565, chip quét cảm biến cảm ứng XPT2046).
- Cụm 3 phím nhấn chức năng công nghiệp gắn trở kéo lên (Pull-up resistor) $2.2,\text{k}\Omega$: Chân
PA0 (Phát nhạc), PA1 (Bắt đầu đo), PA2 (Quay lại/Hủy).
+-------------------------------------------------------------------------+
| SƠ ĐỒ PHÂN BỔ CHÂN (PIN MAPPING) |
+-------------------------------------------------------------------------+
| STM32F103RBT6 Pin | Thiết bị ngoại vi | Chức năng |
+-------------------+------------------------+----------------------------+
| PC14 | Module HX711 | DATA (DT - Serial Output) |
| PC15 | Module HX711 | CLOCK (SCK - Serial Clock) |
| PA8, PA9 | Driver L298N | IN1, IN2 (Pha A Stepper) |
| PA10, PA11 | Driver L298N | IN3, IN4 (Pha B Stepper) |
| PA1, PA2 | Driver L298N | ENA, ENB (Enable Motor) |
| PA4 | Công tắc hành trình | Limit Switch Input (EXTI) |
| PA5 (SPI1_SCK) | Module VS1003 / SD Card| Đồng bộ xung nhịp SPI |
| PA6 (SPI1_MISO) | Module VS1003 / SD Card| SPI Master In Slave Out |
| PA7 (SPI1_MOSI) | Module VS1003 / SD Card| SPI Master Out Slave In |
| PA3 | Module VS1003 | DREQ (Data Request Interrupt)|
| PC12 | Module VS1003 | XCS (Command Select) |
| PC13 | Module VS1003 | XDCS (Data Select) |
| PB0 - PB15 | TFT-LCD 2.8" (ILI9325) | 16-bit Parallel Data Bus |
+-------------------------------------------------------------------------+
Phương pháp nghiên cứu & Quy trình thực hiện
Dự án áp dụng phương pháp thiết kế lặp (Iterative Prototyping) bám sát quy trình đánh giá chất lượng phần cứng - phần mềm:
- Tiêu chuẩn tính toán chỉ số khối cơ thể (BMI): Áp dụng công thức chuẩn và phân loại dành cho khu vực Châu Á - Thái Bình Dương (IDI & WPRO):
- $\text{BMI} < 18.5$: Thể trạng gầy (Nguy cơ loãng xương, suy giảm miễn dịch).
- $18.5 \le \text{BMI} \le 22.9$: Thể trạng bình thường (Lý tưởng).
- $23.0 \le \text{BMI} \le 24.9$: Tiền béo phì (Thừa cân nhẹ).
- $25.0 \le \text{BMI} \le 29.9$: Béo phì độ I.
- $\text{BMI} \ge 30.0$: Béo phì độ II/III (Nguy cơ tim mạch, đái tháo đường cao).
TIẾN ĐỘ THỰC HIỆN DỰ ÁN (14 TUẦN)
Tuần: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
[===] : Nghiên cứu tài liệu & Nhận đề tài
[=======] : Khảo sát ARM STM32F1 & Giao tiếp TFT-LCD
[=======] : Giao tiếp Loadcell & HX711 (Đo cân nặng)
[=======] : Thiết kế cơ khí & Driver L298N (Đo chiều cao)
[=======] : Giao tiếp thẻ nhớ SD Card & Bus SPI
[=======] : Tích hợp IC VS1003 & Giải mã MP3
[=======] : Lập trình hoàn thiện hệ thống & Đọc kết quả
[===] : Chạy thử nghiệm, hiệu chuẩn & Báo cáo
Triển khai thực nghiệm và kết quả
Quy trình phát triển và thuật toán lõi
Chương trình điều khiển nhúng được biên dịch trên môi trường Keil MDK-ARM uVision v5.25 sử dụng ngôn ngữ C tiêu chuẩn với thư viện ngoại vi chuẩn STM32 Standard Peripheral Libraries (SPL).
1. Thuật toán đọc tín hiệu ADC 24-bit từ module HX711
Giao thức 2 dây (Bit-banging) truyền thông nối tiếp phi chuẩn: Chờ chân DT xuống mức thấp, sau đó cấp 24 xung clock trên chân SCK để trích xuất 24 bit dữ liệu MSB trước, tiếp tục xung thứ 25 để thiết lập Gain 128 cho kênh A.
#include "stm32f10x.h"
#define HX711_DT_PIN GPIO_Pin_14
#define HX711_DT_PORT GPIOC
#define HX711_SCK_PIN GPIO_Pin_15
#define HX711_SCK_PORT GPIOC
uint32_t HX711_ReadRawData(void) {
uint32_t count = 0;
uint8_t i;
// Đặt chân SCK mức thấp để bắt đầu
GPIO_ResetBits(HX711_SCK_PORT, HX711_SCK_PIN);
// Chờ chân DT tích cực mức thấp (dữ liệu sẵn sàng)
while(GPIO_ReadInputDataBit(HX711_DT_PORT, HX711_DT_PIN));
// Dịch 24 bit dữ liệu nhị phân từ HX711
for(i = 0; i < 24; i++) {
GPIO_SetBits(HX711_SCK_PORT, HX711_SCK_PIN);
count = count << 1;
GPIO_ResetBits(HX711_SCK_PORT, HX711_SCK_PIN);
if(GPIO_ReadInputDataBit(HX711_DT_PORT, HX711_DT_PIN)) {
count++;
}
}
// Xung thứ 25: Đặt kênh A với độ lợi Gain = 128 cho lần chuyển đổi kế tiếp
GPIO_SetBits(HX711_SCK_PORT, HX711_SCK_PIN);
count = count ^ 0x800000; // Đổi dấu số bù 2 thành số nguyên không dấu
GPIO_ResetBits(HX711_SCK_PORT, HX711_SCK_PIN);
return count;
}
2. Thuật toán điều khiển động cơ bước đo chiều cao tự động
Động cơ bước quay dịch chuyển thanh trượt từ đỉnh khung (vị trí 2.0 m) đi xuống. Số bước xung $\text{Step_Count}$ tỉ lệ thuận với hành trình di chuyển: $H = H_{max} - (\text{Step_Count} \times K_{scale})$. Khi thanh trượt chạm đầu, công tắc hành trình đóng, ngắt kích hoạt lập tức dừng động cơ và trả về chiều cao thực tế.
// Điều khiển bước động cơ (Half-step sequence) qua L298N
const uint8_t StepSequence[8] = {0x08, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x01, 0x09};
float Measure_Height_Procedure(void) {
uint32_t step_counter = 0;
uint8_t seq_idx = 0;
float calculated_height = 0.0f;
const float MM_PER_STEP = 0.05f; // Hệ số cơ khí đai răng: 1 step = 0.05 mm
const float MAX_HEIGHT_MM = 2000.0f;
// Quay thuận đưa thanh trượt xuống
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4) == Bit_RESET) { // Chờ công tắc hành trình chạm
GPIOB->ODR = (GPIOB->ODR & 0xFFF0) | (StepSequence[seq_idx] & 0x0F);
seq_idx = (seq_idx + 1) % 8;
step_counter++;
Delay_us(1200); // Điều khiển tốc độ quét mượt mà, tránh rung giật
}
// Tính toán chiều cao
calculated_height = (MAX_HEIGHT_MM - (step_counter * MM_PER_STEP)) / 10.0f; // Đơn vị: cm
// Đảo chiều động cơ quay ngược đưa thanh trượt về vị trí Home đỉnh khung
while(step_counter > 0) {
seq_idx = (seq_idx == 0) ? 7 : seq_idx - 1;
GPIOB->ODR = (GPIOB->ODR & 0xFFF0) | (StepSequence[seq_idx] & 0x0F);
step_counter--;
Delay_us(800);
}
return calculated_height;
}
3. Thuật toán phân luồng giải mã âm thanh MP3 qua VS1003
Vi điều khiển kiểm tra liên tục chân yêu cầu dữ liệu DREQ của VS1003. Khi DREQ == 1, MCU gửi luồng dữ liệu 32 bytes qua bus SPI để IC giải mã liên tục không gây trễ giao diện.
void VS1003_SendAudioStream(uint8_t* pBuffer, uint16_t bufferSize) {
uint16_t idx = 0;
while(idx < bufferSize) {
// Kiểm tra VS1003 có sẵn sàng nhận thêm dữ liệu hay không
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == Bit_SET) { // DREQ pin
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // Kéo XDCS xuống mức thấp (Data Select)
for(uint8_t chunk = 0; chunk < 32 && idx < bufferSize; chunk++) {
SPI1_ReadWriteByte(pBuffer[idx++]); // Gửi 32 bytes mỗi chu kỳ
}
GPIO_SetBits(GPIOC, GPIO_Pin_13); // Kéo XDCS lên cao
}
}
}
Thử nghiệm và đánh giá thực nghiệm
Hệ thống đã trải qua 50 lượt kiểm định liên tục với các đối tượng mẫu có dải chiều cao từ 150 cm đến 185 cm và dải cân nặng từ 45 kg đến 90 kg. Kết quả được so sánh trực tiếp với thiết bị chuẩn y tế cơ học (Thước đo đứng chuẩn Yamasu & Cân cơ học Nihon Kohden).
+---------------------------------------------------------------------------------+
| BẢNG DỮ LIỆU ĐO THỰC NGHIỆM ĐỐI CHỨNG (TRÍCH XUẤT 5 MẪU TIÊU BIỂU) |
+----+---------------+---------------+---------------+---------------+------------+
| Mẫu| Chiều cao thực| Cân nặng thực | Chiều cao đo | Cân nặng đo | Sai số |
| TV | (Chuẩn y tế) | (Chuẩn y tế) | (Hệ thống) | (Hệ thống) | Chiều cao |
+----+---------------+---------------+---------------+---------------+------------+
| 01 | 158.0 cm | 48.20 kg | 158.3 cm | 48.25 kg | +0.3 cm |
| 02 | 165.0 cm | 58.50 kg | 164.8 cm | 58.45 kg | -0.2 cm |
| 03 | 170.0 cm | 65.00 kg | 170.2 cm | 65.10 kg | +0.2 cm |
| 04 | 173.5 cm | 72.30 kg | 173.4 cm | 72.20 kg | -0.1 cm |
| 05 | 180.0 cm | 84.60 kg | 180.4 cm | 84.70 kg | +0.4 cm |
+----+---------------+---------------+---------------+---------------+------------+
| TRUNG BÌNH SAI SỐ TOÀN DẢI: Cân nặng <= ±0.08 kg | Chiều cao <= ±0.28 cm |
+---------------------------------------------------------------------------------+
Đánh giá hiệu năng hoạt động
- Thời gian đáp ứng đo toàn trình: $\approx 6.8$ giây (bao gồm 2 giây ổn định tải Loadcell, 3.5 giây quét thanh trượt động cơ bước, 1.3 giây tính toán hiển thị).
- Độ trễ phát âm thanh: $\le 150$ ms sau khi tính toán xong BMI, âm lượng đạt $75 - 85$ dB rõ ràng trong môi trường có tiếng ồn phòng khám thông thường.
- Tỷ lệ kiểm thử thành công: Đạt $98%$ trên tổng số 50 lượt đo thử nghiệm. 2% sai lệch phát sinh khi người đo không đứng thẳng lưng hoặc bước lên bàn cân quá nhanh gây chấn động cơ học tức thời.
Đổi mới và đóng góp
- Tự động hóa hoàn toàn chu trình nhân trắc học: Khắc phục triệt để sai số chủ quan của nhân viên y tế nhờ cơ cấu đo tiếp xúc tự động bằng động cơ bước kết hợp công tắc hành trình có độ nhạy cao.
- Kiến trúc giải mã âm thanh phần cứng độc lập: Việc sử dụng module giải mã phần cứng
VS1003 qua bus SPI tốc độ cao giúp vi điều khiển STM32F103 không bị chiếm dụng thời gian CPU cho việc giải mã file MP3/WAV. Nhờ đó, giao diện đồ họa trên màn hình TFT-LCD vẫn hiển thị mượt mà với tần số quét ổn định.
- Thuật toán lọc và ổn định số liệu cân nặng: Tích hợp bộ lọc trung bình động (Moving Average Filter) 16 mẫu trên dữ liệu số 24-bit từ HX711, giúp triệt tiêu hoàn toàn dao động do rung lắc cơ thể khi người đo bước lên sàn cân.
- Hiệu quả kinh tế vượt trội: Tiết kiệm hơn $85%$ chi phí so với các hệ thống cân đo tự động nhập khẩu nguyên chiếc từ Hàn Quốc hoặc Nhật Bản, đồng thời cho phép tùy biến hoàn toàn ngôn ngữ giọng nói và giao diện đồ họa.
Ứng dụng thực tế và triển khai
+-------------------------------------------------------------------------------+
| CÁC KỊCH BẢN TRIỂN KHAI THỰC TẾ |
+------------------------------------+------------------------------------------+
| 1. Bệnh viện & Phòng khám Đa khoa | Tự động hóa khâu tiếp đón bệnh nhân, |
| | giảm tải áp lực cho điều dưỡng viên. |
+------------------------------------+------------------------------------------+
| 2. Trường học & Cơ sở Giáo dục | Khám sức khỏe định kỳ học đường, sàng lọc|
| | nhanh tình trạng suy dinh dưỡng/béo phì. |
+------------------------------------+------------------------------------------+
| 3. Trung tâm Thể hình & Fitness | Tự theo dõi thể trạng trước và sau tập |
| | luyện, tích hợp chế độ nghe nhạc thư giãn.|
+------------------------------------+------------------------------------------+
Bảng phân tích chi phí và hiệu quả đầu tư (BOM & ROI)
+-------------------------------------------------------------------------+
| DỰ TOÁN CHI PHÍ SẢN XUẤT PHẦN CỨNG (BOM - BILL OF MATERIALS) |
+----------------------------------+----------+---------------+-----------+
| Tên linh kiện / Thiết bị | Số lượng | Đơn giá (VNĐ) | Thành tiền|
+----------------------------------+----------+---------------+-----------+
| Kit MCU STM32F103RBT6 ARM-M3 | 01 | 280.000 | 280.000 |
| Màn hình TFT-LCD 2.8" ILI9325 | 01 | 220.000 | 220.000 |
| Cụm 4 Loadcell 50kg + Module HX711| 01 bộ | 180.000 | 180.000 |
| Động cơ bước 2 pha + Driver L298N| 01 bộ | 190.000 | 190.000 |
| Module giải mã VS1003 + Thẻ SD 8G| 01 bộ | 185.000 | 185.000 |
| Khung kim loại, ray trượt & mica | 01 bộ | 650.000 | 650.000 |
| Bộ nguồn công nghiệp 12V-5A, dây | 01 bộ | 150.000 | 150.000 |
| Chi phí gia công PCB & phụ kiện | - | 145.000 | 145.000 |
+----------------------------------+----------+---------------+-----------+
| TỔNG CHI PHÍ PHẦN CỨNG: | 2.000.000 VNĐ |
+-------------------------------------------------------------------------+
- Thời gian hoàn vốn (ROI): Đối với phòng khám quy mô trung bình (tiếp nhận 150 lượt khám/ngày), hệ thống giúp cắt giảm 01 nhân sự phụ trách ghi chép thể trạng (chi phí lương ước tính 6.000.000 VNĐ/tháng), giúp điểm hòa vốn đạt được ngay trong tháng đầu tiên triển khai.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Khung cơ khí thanh trượt đo chiều cao sử dụng động cơ bước truyền động dây đai hở, sau thời gian dài vận hành cần cân chỉnh lại độ căng dây để tránh sai số cơ học tích lũy.
- Hệ thống yêu cầu bề mặt sàn đặt cân phải hoàn toàn cân bằng, không có độ dốc để đảm bảo lực phân bố đều lên 4 điểm cảm ứng Loadcell.
- Chưa có cơ chế truyền thông không dây để đồng bộ dữ liệu hồ sơ bệnh án điện tử (EMR) lên máy chủ trung tâm.
Hướng phát triển nâng cao
- Tích hợp IoT Gateway: Bổ sung vi điều khiển ESP32 giao tiếp với STM32 qua UART để truyền dữ liệu thời gian thực lên Cloud Server thông qua giao thức MQTT/HTTP RESTful API; quản lý dữ liệu trên ứng dụng di động (Flutter/React Native).
- Bổ sung cảm biến sinh trắc học mở rộng: Tích hợp module cảm biến quang học đo nồng độ oxy trong máu (SpO2), cảm biến đo nhịp tim MAX30102 và cảm biến đo tỷ lệ mỡ cơ thể bằng phương pháp trở kháng điện sinh học (BIA - Bioelectrical Impedance Analysis).
- Nâng cấp máy in nhiệt mini: Tích hợp đầu in nhiệt 58mm giao tiếp UART để in phiếu kết quả đo, chỉ số BMI và khuyến nghị dinh dưỡng ngay tại chỗ cho người dùng.
Đối tượng hưởng lợi
- Sinh viên & Học viên ngành Kỹ thuật Điện tử - Y sinh: Nguồn tài liệu thực tế về phương pháp tích hợp vi điều khiển ARM 32-bit (STM32) với các module chuyên dụng (ADC 24-bit, IC âm thanh SPI, Driver công suất L298N và màn hình TFT màu).
- Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Mẫu kiến trúc phần mềm kết hợp giao tiếp ngoại vi phức tạp (Bit-banging, phần cứng SPI, quản lý bộ nhớ đệm âm thanh và quét giao diện đồ họa).
- Cơ sở y tế & Doanh nghiệp: Bản thiết kế hoàn chỉnh có khả năng thương mại hóa thành thiết bị y tế tự động hóa giá thành thấp, tối ưu hóa quy trình sàng lọc sức khỏe ban đầu.
- Cộng đồng nghiên cứu: Cung cấp số liệu thực nghiệm đối chứng về độ chính xác giữa phương pháp đo nhân trắc học tự động và thủ công.
Câu hỏi thường gặp
1. Hệ thống yêu cầu nguồn điện như thế nào để vận hành ổn định?
Hệ thống sử dụng bộ nguồn chuyển mạch (SMPS) đầu vào $220\text{VAC}/50\text{Hz}$, đầu ra kép $12\text{VDC} - 3\text{A}$ (cung cấp cho Driver động cơ bước L298N) và $5\text{VDC} - 2\text{A}$ (cung cấp cho mạch xử lý trung tâm STM32, màn hình LCD, HX711 và VS1003). Tổng công suất tiêu thụ ở chế độ đo cực đại $< 25\text{W}$, chế độ chờ $< 3\text{W}$.
2. Làm thế nào để hiệu chuẩn (Calibrate) cảm biến cân nặng khi di chuyển vị trí lắp đặt?
Hệ thống được lập trình sẵn chương trình hiệu chuẩn nội. Khi khởi động, STM32 tự động thực hiện phép trừ trọng lượng tĩnh của bàn cân (Tare). Để hiệu chuẩn lại hệ số tỉ lệ $K_{factor}$, người dùng đặt quả cân chuẩn 10 kg hoặc 20 kg lên sàn, hệ thống sẽ tính toán lại công thức:
$$K_{factor} = \frac{\text{Raw_Data}{\text{tải}} - \text{Raw_Data}{\text{tare}}}{M_{\text{chuẩn}}}$$
Hệ số mới được lưu trữ trực tiếp vào bộ nhớ Flash nội của vi điều khiển để không bị mất khi mất điện.
3. Tại sao hệ thống chọn phương pháp đo chiều cao bằng thanh trượt cơ khí thay vì cảm biến siêu âm?
Cảm biến siêu âm (như HC-SR04) có giá thành rẻ nhưng dễ bị tán xạ sóng âm khi gặp bề mặt tóc xốp, góc nghiêng đầu hoặc mũ nón, dẫn đến sai số chiều cao từ $2.0 - 5.0$ cm. Phương pháp cơ khí sử dụng động cơ bước kết hợp công tắc hành trình phẳng tiếp xúc đỉnh đầu triệt tiêu hoàn toàn độ trễ bề mặt, đem lại độ tin cậy và độ lặp lại chính xác tuyệt đối $\le \pm 0.3$ cm.
4. Module VS1003 giao tiếp qua bus SPI có gây nghẽn tín hiệu hiển thị trên màn hình TFT không?
Không. Module VS1003 được điều khiển bởi cơ chế ngắt phần cứng thông qua chân DREQ. Khi bộ nhớ đệm của VS1003 sắp cạn, nó kích hoạt mức logic cao trên chân PA3 để yêu cầu MCU nạp thêm 32 bytes qua SPI. Quá trình truyền 32 bytes ở xung nhịp SPI 18 MHz chỉ tốn vài micro giây, hoàn toàn không làm gián đoạn chu kỳ quét màn hình TFT (sử dụng bus dữ liệu song song 16-bit độc lập trên Port B).
5. Chi phí bảo trì và độ bền của cơ cấu cơ điện tử này ra sao?
Các linh kiện điện tử hoạt động ở trạng thái rắn (Solid-state) có tuổi thọ trung bình MTBF $> 50.000$ giờ. Phần cơ khí sử dụng ray trượt kim loại và dây đai răng công nghiệp chỉ yêu cầu tra mỡ bôi trơn định kỳ 6 tháng/lần, đảm bảo khả năng hoạt động liên tục tại các môi trường công cộng với mật độ sử dụng cao.
Kết luận
Đồ án tốt nghiệp "Thiết kế và thi công cân điện tử" đã giải quyết xuất sắc bài toán đo đạc nhân trắc học tự động bằng việc kết hợp hài hòa giữa kỹ thuật vi điều khiển 32-bit ARM Cortex-M3 (STM32F103RBT6), cảm biến chính xác cao (ADC 24-bit HX711), cơ điện tử (Động cơ bước + L298N) và tương tác đa phương tiện (Màn hình TFT LCD + Giải mã âm thanh MP3 VS1003).
Với sai số cân nặng dưới $\pm 0.08$ kg, sai số chiều cao dưới $\pm 0.28$ cm cùng thời gian phản hồi toàn trình dưới 7 giây, mô hình chứng minh tính khả thi kỹ thuật vượt trội và giá trị ứng dụng thực tiễn cao trong chăm sóc sức khỏe cộng đồng. Thiết kế mở của hệ thống mở ra tiềm năng lớn cho việc nâng cấp thành trạm y tế thông minh kết nối IoT phục vụ cho cuộc cách mạng chuyển đổi số y tế toàn diện.