โปรเจกต์ Smart Rural Triage Station
เปลี่ยน Arduino UNO Q ของคุณให้เป็นอุปกรณ์ Medical Screening พลัง AI ที่ช่วยบุคลากรทางการแพทย์ในพื้นที่ Rural ตรวจหาความผิดปกติของหัวใจและปอดแบบ Real-time โดยมีความเป็นส่วนตัวสูงสุดและไม่ต้องพึ่งพา Internet
เปลี่ยน Arduino UNO Q ของคุณให้เป็นอุปกรณ์ Medical Screening พลัง AI ที่ช่วยบุคลากรทางการแพทย์ในพื้นที่ Rural ตรวจหาความผิดปกติของหัวใจและปอดแบบ Real-time โดยมีความเป็นส่วนตัวสูงสุดและไม่ต้องพึ่งพา Internet
Project Supporter Team
โพสต์โดย
เปลี่ยน Arduino UNO Q ของคุณให้เป็นอุปกรณ์คัดกรองทางการแพทย์ที่ขับเคลื่อนด้วย AI ซึ่งช่วยให้บุคลากรทางการแพทย์ในพื้นที่ห่างไกลสามารถระบุความผิดปกติของหัวใจและปอดได้แบบ Real-time โดยมีความเป็นส่วนตัวสูงสุดและไม่ต้องพึ่งพาอินเทอร์เน็ต

ลองจินตนาการถึงคลินิกสุขภาพในพื้นที่ห่างไกลที่พยาบาลเพียงคนเดียวต้องดูแลคนไข้นับร้อยโดยไม่สามารถเข้าถึงแพทย์เฉพาะทางหรืออุปกรณ์วินิจฉัยขั้นสูงได้ โครงการนี้เปลี่ยน Arduino UNO Q ให้กลายเป็น Smart Rural Triage Station ซึ่งเป็นอุปกรณ์คัดกรองที่ขับเคลื่อนด้วย AI ทำหน้าที่ฟังเสียงหัวใจและปอดเพื่อตรวจหาความผิดปกติได้ในทันที
ด้วยการรวม Contact microphone เข้ากับโมเดล Machine learning ของ TensorFlow Lite ระบบจะประมวลผลเสียงแบบ Real-time บนอุปกรณ์โดยตรง เมื่อคนไข้วางไมโครโฟนลงบนหน้าอก AI จะวิเคราะห์เสียงและให้ผลลัพธ์ทันทีผ่านการเคลื่อนไหวของ Servo, เสียงเตือนจาก Buzzer และจอ OLED ที่แสดงผลการคัดกรอง (Triage)
แอปพลิเคชันนี้ทำงานบน Arduino UNO Q ทั้งหมด โดยการทำ AI inference จะเกิดขึ้นภายในบอร์ด ช่วยให้มั่นใจได้ว่าไม่มีความหน่วง (Zero latency) และมีความเป็นส่วนตัวสูงสุด เนื่องจากจะไม่มีการจัดเก็บหรือส่งต่อข้อมูลเสียงของคนไข้
Arduino UNO Q ทำหน้าที่เป็นศูนย์กลางหลัก โดยรันทั้งการประมวลผล AI บน Linux core และการควบคุม Hardware แบบ Real-time บน MCU core

แอปพลิเคชันนี้ประกอบด้วย Dashboard บนเว็บที่โฮสต์อยู่บน Arduino UNO Q โดยตรง สามารถเข้าถึงได้จากอุปกรณ์ใดก็ได้ในเครือข่ายท้องถิ่นเดียวกันที่ http://192.168.7.2:5000
คุณสมบัติของ Dashboard

การจำแนกเสียงหัวใจและปอดขับเคลื่อนโดยโมเดล TensorFlow Lite ที่ได้รับการปรับแต่งเพื่อการใช้งานบน Edge device
โมเดลเหล่านี้ได้รับการฝึกฝนด้วยชุดข้อมูลทางการแพทย์จาก PhysioNet และ ICBHI จากนั้นจึงแปลงเป็นรูปแบบ TensorFlowLite เพื่อให้สามารถทำ Inference บนอุปกรณ์ได้อย่างมีประสิทธิภาพ
ซอฟต์แวร์นี้ใช้ประโยชน์จากสถาปัตยกรรมหน่วยประมวลผลคู่ของ Arduino UNO Q เพื่อแยกการประมวลผล AI ระดับสูงออกจากการควบคุม Hardware แบบ Real-time
Arduino UNO Q
├── Linux Side (QRB2210) - Python
│ ├── Audio Processing & Feature Extraction
│ ├── TensorFlow Lite Inference
│ ├── Flask Web Dashboard
│ └── Serial Communication to MCU
│
└── MCU Side (STM32U585) - Arduino Sketch
├── Real-time Sensor Polling (Modulino)
├── OLED Display Updates
├── Servo Motor Control
└── Buzzer & LED Control
ทั้งสองส่วนสื่อสารกันผ่าน Serial Bridge ที่ความเร็ว 115200 Baud โดยใช้ข้อความรูปแบบ JSON โดย MCU จะส่งข้อมูล Sensor และฝั่ง Linux จะส่งคำสั่งควบคุมกลับมา
ฝั่ง Linux: การรันขั้นตอนการตรวจ
ในฝั่ง Linux ( app.py ) เซิร์ฟเวอร์ Flask จะจัดการลำดับการตรวจดังนี้:
def run_exam():
system_state["mode"] = "EXAMINING"
send_mcu_command({"progress": 0, "result": 90})
# Progress loop with movement detection
for i in range(0, 101, 2):
if system_state["movement"] == 1:
send_mcu_command({"buzzer": 2000}) # Alert if moving
system_state["diagnosis"] = f"Recording... {i}%"
send_mcu_command({"progress": int(i * 1.8)})
time.sleep(0.1)
# Analyze and determine risk
score = calculate_risk_score()
if score >= 2:
system_state["risk_level"] = "HIGH"
send_mcu_command({"result": 180, "buzzer": 1000})
# ... handle other levels
ฝั่ง MCU: จอแสดงผลและอุปกรณ์ Output
ในฝั่ง MCU (main.ino) เฟิร์มแวร์จะจัดการส่วน UI และ Hardware:
void updateDisplay() {
display.clearDisplay();
// Header Bar (Inverted text for mode)
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE);
String modeStr = (currentSensorData.knobMode == 0) ? " HEART MODE " :
(currentSensorData.knobMode == 1) ? " LUNG MODE " : " CALIBRATION";
display.println(modeStr);
if (currentState == STATE_EXAMINING) {
display.setTextSize(2);
display.println("SCANNING");
// Animated progress bar
display.drawRect(10, 45, 108, 10, SSD1306_WHITE);
int fill = (millis() / 250) % 20;
display.fillRect(12, 47, fill * 5, 6, SSD1306_WHITE);
}
display.display();
}
MCU → Linux (ข้อมูล Sensor):
{
"knob": 450,
"mode": 1,
"temp": 36.5,
"movement": 0,
"mic": 512
}
Linux → MCU (คำสั่ง):
{
"progress": 90,
"result": 180,
"buzzer": 1000,
"state": "EXAMINING"
}
GitHub Repository
อุปกรณ์คัดกรองทางการแพทย์ที่ขับเคลื่อนด้วย AI สำหรับ Arduino UNO Q ที่ใช้โมเดล TensorFlow Lite และการรวมข้อมูลจาก Sensor หลายตัว เพื่อให้การตัดสินใจคัดกรองผู้ป่วยในพื้นที่ห่างไกลเป็นไปอย่างรวดเร็ว
Pin Mapping (ฝั่ง STM32U585 MCU)

1. Clone the repository
git clone https://github.com/Raja-89/Arduino-Triage.git
cd Arduino-Triage
2. ติดตั้ง Python dependencies
pip install -r requirements.txt
3. Deploy ไปยัง Arduino UNO Q
scp -r * root@192.168.7.2:/opt/triage-station/
4. เริ่มต้นแอปพลิเคชัน
ssh root@192.168.7.2 "cd /opt/triage-station && python3 final_deployment/app.py"
5. เข้าใช้งาน Dashboard
เปิด http://192.168.7.2:5000 ในบราวเซอร์ของคุณ
Mozilla Public License 2.0 (MPL-2.0)
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้