หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Smart Blind Stick

Smart Blind Stick ที่ขับเคลื่อนด้วย AI ซึ่งใช้ Computer Vision แบบ on-device และ Distance Sensing เพื่อให้ความช่วยเหลือด้าน Navigation ด้วยเสียงแบบ Real-time สำหรับผู้พิการทางสายตา

โปรเจกต์ Smart Blind Stick

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

68 การดู

รายการอุปกรณ์และเครื่องมือ

1x Modulino® Distance
🛒 สั่งซื้อ
1x Speaker (generic)
🛒 สั่งซื้อ
1x USB Hub, Bus Powered
-
1x Webcam, Logitech® HD Pro
-

แอปพลิเคชันและแพลตฟอร์ม

1x Arduino App Lab
ค้นหา Google

รายละเอียดและวิธีทำ

Smart Blind Stick เป็นอุปกรณ์ช่วยเหลือขั้นสูงที่ออกแบบมาเพื่อเพิ่มความคล่องตัวในการเดินทางอย่างอิสระสำหรับผู้พิการทางสายตา ด้วยการเชื่อมต่อการประมวลผลประสิทธิภาพสูงเข้ากับการควบคุม Hardware แบบ Real-time ระบบนี้จะทำหน้าที่เป็น "การมองเห็นด้วยเสียง" ให้กับผู้ใช้งาน

ด้วยการใช้งาน Arduino UNO Q ไม้เท้าสามารถระบุตัวบุคคลในสภาพแวดล้อมผ่านโมเดล AI Object Detection ภายในตัวเครื่อง พร้อมทั้งคำนวณระยะทางที่แม่นยำด้วย Sensor แบบ Time-of-Flight ไปพร้อมๆ กัน เมื่อตรวจพบคน อุปกรณ์จะใช้ Engine แบบ Text-to-Speech (TTS) เพื่อแจ้งเตือนการมีอยู่ของวัตถุและระยะห่างที่แน่นอนในหน่วยเซนติเมตร ซึ่งเป็นการสร้างแผนที่เสียงของสภาพแวดล้อมโดยรอบแบบ Real-time

Hardware Lineup

Core Controller: Arduino UNO Q ที่มาพร้อมกับ Qualcomm Dragonwing™ QRB2210 MPU และ STM32U585 MCU

Vision Input: USB Camera เชื่อมต่อกับ MPU สำหรับการทำ Video Inference แบบ Real-time

Distance Sensor: Modulino Distance Sensor (Time-of-Flight) เชื่อมต่อผ่าน Interface แบบ I2C สำหรับการวัดระยะลึก

Feedback Output: ระบบลำโพงภายนอกเชื่อมต่อกับ TTS Server ภายในสำหรับประกาศเสียงแจ้งเตือน

Connectivity : รองรับ Wi-Fi และ Bluetooth ในตัว สำหรับการสื่อสารระหว่าง Board และ Voice Synthesis Server

User Interface

อุปกรณ์นี้ใช้อินเทอร์เฟซที่ไม่ใช้การมองเห็น เพื่อให้มั่นใจว่าผู้ใช้งานจะสามารถเข้าถึงและใช้ประโยชน์ได้สูงสุด:

Auditory Feedback : นี่คือวิธีการโต้ตอบหลัก ระบบจะแปลง AI Metadata ทางเทคนิคและข้อมูลจาก Sensor ให้เป็นภาษาธรรมชาติผ่าน TTS (Text to Speech) โดยสามารถส่งเสียงแจ้งเตือนผ่านลำโพง (Bluetooth) หรือหูฟัง (แบบสาย)

Spatial Awareness : ระบบจะให้คำแนะนำด้วยเสียงที่เฉพาะเจาะจง เช่น "พบคนอยู่ที่ระยะ 120 เซนติเมตร" ช่วยให้ผู้ใช้งานสามารถประเมินระยะลึกและความใกล้ไกลได้ทันทีโดยไม่ต้องใช้การสัมผัสทางกายภาพด้วยตนเอง

AI Model

ระบบเลือกใช้โมเดล Object Detection แบบ YOLOX-Nano ซึ่งรวมเข้าเป็นส่วนประกอบ Software แบบ Modular

Local Edge AI: การทำ AI Inference ทั้งหมดเกิดขึ้นภายในเครื่องบน MPU ที่ใช้ระบบปฏิบัติการ Debian เพื่อความเป็นส่วนตัวของผู้ใช้งานและการตอบสนองที่รวดเร็ว (Low-latency)

Information Prioritization: เพื่อให้แน่ใจว่าการแจ้งเตือนด้วยเสียงนั้นชัดเจนและใช้งานได้จริง ระบบจึงใช้ค่า Confidence Threshold ที่ 0.6 และกำหนดระยะเวลาหยุดพักการแจ้งเตือน (Alert Cooldown) 5 วินาที เพื่อป้องกันไม่ให้ผู้ใช้งานสับสนจากการแจ้งเตือนที่ซ้ำซ้อนหรือมีความแม่นยำต่ำ และมุ่งเน้นไปที่การเปลี่ยนแปลงที่สำคัญในสภาพแวดล้อมเท่านั้น

Software Architecture

ตรรกะของแอปพลิเคชันถูกแยกส่วนการทำงานผ่านการตั้งค่าระบบคู่ (Dual-system) เพื่อให้มั่นใจในความเสถียร:

MCU : Microcontroller STM32 ทำงานบน Zephyr OS ทำหน้าที่จัดการ Modulino Distance Sensor และแจ้งเตือนหน่วยประมวลผลเมื่อมีการวัดค่าใหม่ทุกๆ 100ms ผ่าน RPC Bridge

MPU : หน่วยประมวลผล Qualcomm ทำงานบน Debian Linux และรันตรรกะแอปพลิเคชันด้วย Python โดยจะจัดการ Video Stream, ประมวลผลโมเดล Object Detection และประสานงานการสั่งงาน TTS

Communication : MCU และ MPU สื่อสารกันผ่าน Remote Procedure Calls (RPC) ช่วยให้ MCU สามารถสั่งงานฟังก์ชัน Python ได้เหมือนเป็นคำสั่งภายในเครื่อง

TTS Infrastructure: Python Flask Server สำรองจะรับข้อความผ่านเครือข่ายและสังเคราะห์เป็นเสียงพูดโดยใช้ Library pyttsx3

A Quick Look into the Code

ในส่วนนี้ เราจะเน้นไปที่ลำดับการทำงานของการตรวจจับวัตถุและการสั่งงานเสียงแจ้งเตือน

The Processor: Detecting a Person

ในฝั่งหน่วยประมวลผล (main.py) ตรรกะการทำงานจะเป็นแบบ Event-driven เราใช้ Handler สำหรับรอรับการตรวจจับจาก Camera Stream เมื่อตรวจพบคนด้วยค่าความเชื่อมั่นสูง Script จะรวมข้อมูลนี้เข้ากับข้อมูลระยะทางล่าสุดและสั่งงาน Engine เสียง:

# Function to handle detections and trigger voice

def handle_detections(detections):

for key, value in detections.items():

if value.get("confidence") > 0.6:

# Construct message with the latest distance from the MCU

message = f"I see a {key} at {current_distance} millimeters"

speak_text(message) # Send to TTS Server

# Connect the callback to the detection stream

detection_stream.on_detect_all(handle_detections)

The MCU: Reading Distance

ในฝั่ง Microcontroller (sketch.ino) บอร์ดจะคอยอ่านค่าจาก Sensor อย่างต่อเนื่อง และส่งข้อมูลระยะทางดิบไปยังหน่วยประมวลผลโดยใช้ Bridge:

void loop() {

if (distanceSensor.available()) {

int measurement_mm = distanceSensor.get();


// Notify the Linux processor of the new distance

Bridge.notify("update_distance", measurement_mm);

}

}

Visuals & Media

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: afa2026-physicalai-smart-blind-stick-4bdfe4
2450 บาท
PromptPay QR Code