Raspberry Pi Pico Ultrasonic Sensor
Advanced Signal Processing และการวัดระยะทางด้วย IQ Sampling

บทความนี้จะพาคุณไปสำรวจการใช้งาน Raspberry Pi Pico ในการสร้าง Ultrasonic Sensor ขั้นสูง โดยใช้เทคนิค IQ Sampling (In-phase and Quadrature) สำหรับการวัดระยะทางที่แม่นยำ ซึ่งแตกต่างจากการใช้งาน HC-SR04 แบบทั่วไป เราจะใช้ ADC ของ Pico ในการสุ่มตัวอย่างสัญญาณ Ultrasonic โดยตรง และประมวลผลด้วย Digital Signal Processing เพื่อให้ได้ความละเอียดและความแม่นยำสูง เหมาะสำหรับงาน Robotics, Mapping และ Object Detection ขั้นสูง
ภาพรวมของระบบ
ระบบ Ultrasonic Sensor ที่เราจะสร้างนี้ใช้หลักการส่งคลื่นเสียงความถี่สูง (40 kHz) และวิเคราะห์สัญญาณสะท้อนกลับมา โดยใช้เทคนิค IQ Sampling ซึ่งเป็นวิธีการที่ใช้ในระบบ Radar และ Communication ขั้นสูง
⚡ ความเร็วสูง
ใช้ ADC ของ Pico ที่ความเร็ว 500 kSPS สามารถสุ่มตัวอย่างสัญญาณได้รวดเร็ว
🎯 ความแม่นยำสูง
ใช้ IQ Sampling ให้ความละเอียดในการวัดระยะทางดีกว่าวิธีแบบ Time-of-Flight ทั่วไป
📊 Signal Processing
ประมวลผลสัญญาณด้วย FFT และ Correlation เพื่อกรองสัญญาณรบกวน
💰 ราคาประหยัด
ใช้ Raspberry Pi Pico ที่ราคาไม่แพง แต่ได้ประสิทธิภาพระดับ Professional
ระบบทำงานโดยการ:
- ส่งสัญญาณ Ultrasonic - ส่งคลื่นเสียง 40 kHz ออกไปเป็นชุดๆ (Burst)
- รับสัญญาณสะท้อน - ใช้ ADC สุ่มตัวอย่างสัญญาณที่สะท้อนกลับมา
- IQ Sampling - แยกสัญญาณเป็น In-phase (I) และ Quadrature (Q) components
- Signal Processing - ใช้ FFT และ Correlation หาระยะทาง
- คำนวณระยะทาง - แปลงเวลาที่ใช้เป็นระยะทาง (Distance = Time × Speed of Sound / 2)
🔧 ข้อมูลทางเทคนิค
- ความถี่ Ultrasonic: 40 kHz
- ADC Sampling Rate: 500 kSPS
- ความละเอียด ADC: 12-bit
- ระยะทางที่วัดได้: 2 cm - 400 cm
- ความแม่นยำ: ±1 mm (ขึ้นกับสภาพแวดล้อม)
- อัตราการอัปเดต: 10-50 Hz
💡 ทำไมต้องใช้ IQ Sampling?
IQ Sampling ช่วยให้เราสามารถแยกแยะ Phase และ Amplitude ของสัญญาณได้อย่างแม่นยำ ทำให้วัดระยะทางได้ละเอียดกว่าการวัดแค่เวลาที่สัญญาณกลับมา (Time-of-Flight) แบบทั่วไป นอกจากนี้ยังช่วยกรองสัญญาณรบกวนและ Multipath ได้ดีกว่า
Hardware Setup
การต่อวงจรของระบบนี้ค่อนข้างเรียบง่าย แต่ต้องใส่ใจในรายละเอียดเพื่อให้ได้สัญญาณที่ดี
- Raspberry Pi Pico - ไมโครคอนโทรลเลอร์หลัก (หรือ Pico W)
- 40 kHz Ultrasonic Transducer - ตัวส่งและรับคลื่นเสียง (แยกเป็น Transmitter และ Receiver)
- Op-Amp (เช่น LM358) - ขยายสัญญาณจาก Receiver
- Resistors และ Capacitors - สำหรับวงจรขยายสัญญาณและกรอง
- Breadboard และสายจั๊มเปอร์ - สำหรับต่อวงจร
Block Diagram แสดงการเชื่อมต่อระหว่าง Pico, Transducer และวงจรขยายสัญญาณ
การเชื่อมต่อ Transmitter:
- GPIO (PWM) → Ultrasonic Transmitter
- ใช้ PWM สร้างสัญญาณ 40 kHz ส่งไปยัง Transmitter
- ส่งเป็น Burst 8-16 cycles เพื่อประหยัดพลังงานและลด Ringing
การเชื่อมต่อ Receiver:
- Ultrasonic Receiver → Op-Amp (Amplifier) → ADC Pin (GPIO 26-28)
- ใช้ Op-Amp ขยายสัญญาณประมาณ 100-200 เท่า
- เพิ่ม Low-pass Filter เพื่อกรองสัญญาณรบกวนความถี่สูง
- ใช้ Bias Voltage ที่ 1.65V (กึ่งกลาง ADC range 0-3.3V)
⚠️ ข้อควรระวัง:
- ADC ของ Pico รับแรงดัน 0-3.3V เท่านั้น อย่าให้เกิน!
- ใช้ Decoupling Capacitor (0.1µF) ใกล้ๆ Pico เพื่อลดสัญญาณรบกวน
- แยก Ground ของ Analog และ Digital ถ้าทำได้
- ระยะห่างระหว่าง Transmitter และ Receiver ควรอยู่ที่ 1-2 cm
สัญญาณ Ultrasonic Burst 8 cycles ที่ 40 kHz จาก Oscilloscope
จากภาพจะเห็นว่าเราส่งสัญญาณ 40 kHz ออกไป 8 cycles แล้วหยุด สัญญาณที่สะท้อนกลับมาจะมี Amplitude ต่ำกว่า และมี Delay ตามระยะทางของวัตถุ
Signal Processing
หัวใจสำคัญของระบบนี้คือการประมวลผลสัญญาณ เราจะใช้เทคนิค IQ Sampling และ Digital Signal Processing
IQ Sampling เป็นเทคนิคที่ใช้ในระบบ Communication และ Radar โดยแยกสัญญาณออกเป็น 2 ส่วน:
- I (In-phase) - สัญญาณที่มี Phase เท่ากับสัญญาณอ้างอิง (Reference Signal)
- Q (Quadrature) - สัญญาณที่มี Phase เลื่อนไป 90° จากสัญญาณอ้างอิง
การแยกเป็น I และ Q ทำให้เราสามารถ:
- วัด Phase ของสัญญาณได้แม่นยำ → ระยะทางที่ละเอียด
- แยกแยะทิศทางของการเคลื่อนที่ (Doppler Effect)
- กรองสัญญาณรบกวนได้ดีกว่า
ตัวอย่างข้อมูลที่สุ่มจาก ADC แสดง Raw Signal และ IQ Components
Pico จะสุ่มตัวอย่างสัญญาณด้วย ADC ที่ความเร็ว 500 kSPS (500,000 samples/second) ซึ่งเร็วพอที่จะจับสัญญาณ 40 kHz ได้ดี (ตาม Nyquist Theorem ต้องสุ่มอย่างน้อย 2 เท่าของความถี่สัญญาณ)
หลังจากได้ Raw Samples แล้ว เราจะคำนวณ I และ Q โดย:
IQ Range Plot แสดงการตรวจจับผนังที่ระยะ 23 cm
จาก Plot จะเห็น Peak ที่ชัดเจนบริเวณ 23 cm ซึ่งบ่งบอกตำแหน่งของวัตถุ การใช้ IQ Sampling ทำให้เราได้ข้อมูล Phase ด้วย ซึ่งช่วยเพิ่มความแม่นยำ
🎓 ทฤษฎีเพิ่มเติม:
ระยะทางคำนวณจาก: Distance = (c × t) / 2
- c = ความเร็วเสียง ≈ 343 m/s (ที่อุณหภูมิ 20°C)
- t = เวลาที่สัญญาณใช้ไป-กลับ
- หาร 2 เพราะสัญญาณเดินทางไป-กลับ
ความละเอียดทางทฤษฎี = c / (2 × Bandwidth) ≈ 4.3 mm สำหรับ 40 kHz
Implementation
มาดูการเขียนโค้ดสำหรับ Raspberry Pi Pico กัน เราจะใช้ C/C++ กับ Pico SDK
📝 หมายเหตุ:
- โค้ดข้างต้นเป็น Simplified Version เพื่อให้เข้าใจหลักการ
- Implementation จริงต้องมี FFT, Correlation และ Filtering เพิ่มเติม
- ต้อง Calibrate ค่าต่างๆ ตามฮาร์ดแวร์ที่ใช้
- สามารถใช้ Library เช่น CMSIS-DSP สำหรับ FFT
Results และการทดสอบ
มาดูผลการทดสอบในสถานการณ์ต่างๆ กัน
ผลการตรวจจับผนังเรียบที่ระยะ 23 cm - Peak ชัดเจนและแม่นยำ
จากการทดสอบกับผนังเรียบ พบว่า:
- ✅ Peak ชัดเจนและแม่นยำที่ 23 cm
- ✅ Signal-to-Noise Ratio (SNR) สูง
- ✅ ความแม่นยำ ±2 mm
- ✅ Repeatability ดีมาก
ผลการตรวจจับผนังที่มีมุมและรายละเอียด - เห็น Multiple Peaks
เมื่อทดสอบกับผนังที่มีมุมและรายละเอียด:
- ✅ สามารถแยกแยะ Multiple Objects ได้
- ✅ เห็น Reflection จากมุมต่างๆ
- ⚠️ ต้องใช้ Algorithm ที่ซับซ้อนกว่าในการแยก Peak
- ⚠️ Multipath Effect อาจทำให้เกิด Ghost Peaks
ผลการสแกนในห้องที่มีเตียงและผนัง - แสดง Range Profile ที่ซับซ้อน
ในสภาพแวดล้อมที่ซับซ้อน:
- ✅ สามารถตรวจจับวัตถุหลายชิ้นได้พร้อมกัน
- ✅ เห็น Profile ของห้องชัดเจน
- ⚠️ ต้องใช้ Threshold และ Filtering ที่ดี
- ⚠️ การประมวลผลใช้เวลานานขึ้น
📊 สรุปผลการทดสอบ
- ระยะทางที่วัดได้: 2 cm - 400 cm
- ความแม่นยำ (ผนังเรียบ): ±2 mm
- ความแม่นยำ (สภาพแวดล้อมซับซ้อน): ±5 mm
- อัตราการอัปเดต: 10-50 Hz (ขึ้นกับ Processing)
- มุมการตรวจจับ: ±15° (ขึ้นกับ Transducer)
- การใช้ CPU: ~30-40% ที่ 50 Hz
🎯 ข้อดีเมื่อเทียบกับ HC-SR04:
- ✅ ความแม่นยำสูงกว่า (mm vs cm)
- ✅ สามารถตรวจจับ Multiple Objects
- ✅ ได้ข้อมูล Phase และ Doppler
- ✅ กรองสัญญาณรบกวนได้ดีกว่า
- ✅ Flexible - ปรับแต่ง Algorithm ได้
Applications และการประยุกต์ใช้
ระบบ Ultrasonic Sensor ขั้นสูงนี้สามารถนำไปใช้ในหลากหลายงาน:
- Obstacle Avoidance - หลบหลีกสิ่งกีดขวางอัตโนมัติ
- SLAM (Simultaneous Localization and Mapping) - สร้างแผนที่และหาตำแหน่งพร้อมกัน
- Wall Following - เดินตามผนังด้วยระยะคงที่
- Docking - จอดเข้าที่ชาร์จอัตโนมัติ
- Level Measurement - วัดระดับของเหลวในถัง
- Position Sensing - ตรวจจับตำแหน่งของชิ้นงาน
- Quality Control - ตรวจสอบขนาดและรูปร่าง
- Conveyor Monitoring - ตรวจจับวัตถุบนสายพาน
- Presence Detection - ตรวจจับการเข้า-ออกห้อง
- Gesture Control - ควบคุมอุปกรณ์ด้วยท่าทาง
- Parking Assistant - ช่วยจอดรถในโรงจอด
- Water Level Monitor - ตรวจสอบระดับน้ำในถัง
- Parking Sensors - เซ็นเซอร์ช่วยจอดรถ
- Blind Spot Detection - ตรวจจับจุดอับสายตา
- Collision Warning - เตือนการชนใกล้เคียง
- Automatic Braking - เบรกอัตโนมัติ
- Signal Processing Education - สอน DSP และ IQ Sampling
- Radar Principles - ทดลองหลักการ Radar
- Acoustic Research - วิจัยเกี่ยวกับเสียง
- Sensor Fusion - รวมข้อมูลจากหลายเซ็นเซอร์
💡 โปรเจคต่อยอด: 3D Scanner
ใช้ Servo Motor หมุน Sensor 360° สร้าง Point Cloud และ 3D Model ของวัตถุ
🎯 โปรเจคต่อยอด: Gesture Recognition
ใช้ Doppler Effect จาก IQ Data ตรวจจับการเคลื่อนไหวและจำแนกท่าทาง
🗺️ โปรเจคต่อยอด: Indoor Mapping
ติดตั้งบนหุ่นยนต์เคลื่อนที่ สร้างแผนที่ภายในอาคารแบบ Real-time
📊 โปรเจคต่อยอด: Multi-Sensor Array
ใช้หลาย Sensor ร่วมกัน สร้าง Beamforming และเพิ่มความละเอียดเชิงมุม
🚀 การพัฒนาต่อยอด:
- Machine Learning - ใช้ ML จำแนกประเภทวัตถุจาก Echo Pattern
- Sensor Fusion - รวมกับ IMU, Camera, LiDAR
- Wireless Communication - ส่งข้อมูลผ่าน Wi-Fi/Bluetooth
- Edge Computing - ประมวลผล AI บน Pico
- Multi-Frequency - ใช้หลายความถี่เพิ่มความละเอียด
ช้อปอุปกรณ์ / เข้าร่วม Community
หากคุณสนใจอุปกรณ์สำหรับโปรเจค Raspberry Pi Pico เช่น Pico Board, Ultrasonic Transducer, Op-Amp หรืออยากพูดคุยแลกเปลี่ยนความรู้เกี่ยวกับ Signal Processing และ Embedded Systems สามารถกดปุ่มด้านล่างนี้ได้เลย