กลับไปหน้ารวมไฟล์
arduino-two-ultrasonic-sensor-radar-360-degrees-rotation-216364.md

https://www.youtube.com/watch?v=KeK7nlrs7gY&feature=share

จัดไปวัยรุ่น! นี่คือ MicroLab Arduino Radar ที่พวกพี่ปั่นกันขึ้นมาในแลป MicroLab ตัวนี้ประกอบไปด้วย:

1. ไมโครคอนโทรลเลอร์ตัวจิ๋ว Arduino pro

2. มอเตอร์สเต็ป 2 เฟสของ Microcon ที่ตั้งให้หมุนได้ 360 องศาแบบต่อเนื่อง และมีสวิตช์สำหรับเปิด/ปิด

3. บอร์ด Bluetooth shield สำหรับ Arduino เพื่อให้ไมโครคอนโทรลเลอร์คุยกับคอมได้ ไว้ส่งโค้ด

4. สวิตช์เปิด/ปิด

5. แบตเตอรี่ลิเธียมไอออน 3 ก้อน (ก้อนละ 3000mAh) สำหรับจ่ายไฟให้มอเตอร์และไมโครคอนโทรลเลอร์

6. ซอฟต์แวร์ Processing 3 สำหรับสร้างภาพเรดาร์บนหน้าจอ

7. ซอฟต์แวร์ Arduino IDE

8. เซ็นเซอร์วัดระยะอัลตราโซนิก (Ultrasonic distance sensor) สำหรับ Arduino จำนวน 2 ตัว

9. บอร์ดขับมอเตอร์สเต็ป DRV8825 Stepper Motor Driver Carrier, High Circle 1 ตัว

10. ฐานยืนที่พิมพ์จากเครื่องพิมพ์ 3D

ขอขอบคุณ Petr Zverina ที่ช่วยพิมพ์ฐาน 3D ให้พวกพี่ด้วยนะ สุดยอดไปเลย!

Dual-Acoustic Stereoscopic Rendering: เรดาร์ 360 องศา

ปัญหาของเซ็นเซอร์อัลตราโซนิกตัวเดียวที่ส่ายไปมาคือ มันจะสร้างจุดบอดใหญ่โต 180 องศา และเสียเวลาสแกนพื้นที่ว่างเปล่าไปฟรีๆ เรดาร์สองเซ็นเซอร์ ตัวนี้จัดการปัญหานั้นได้หมดจด ด้วยการติดตั้งเซ็นเซอร์แบบสเตอริโอสโคปิกคู่! โดยการติดเซ็นเซอร์ HC-SR04 สองตัวแบบหันหลังชนกันบนฐานเซอร์โวที่หมุนได้ต่อเนื่อง Arduino จะส่งพัลส์ไปที่เซ็นเซอร์ทั้งคู่ รวบรวมข้อมูลตำแหน่งในพื้นที่แบบ 3 มิติได้ทั้งห้อง 360 องศา และเร็วขึ้นเป็นสองเท่า! จากนั้นก็ส่งข้อมูลดิบเลขฐานสิบหกนี้ผ่าน USB ไปยังจอแสดงผลที่สร้างด้วย Java Processing ซึ่งเลียนแบบคอนโซลเรดาร์ทางการทหารได้เป๊ะเวอร์!

วิธีป้องกันการชนกันของคลื่นเสียงแบบมว๊ากมว๊าก

การยิงพัลส์เสียง 40,000 เฮิรตซ์จากเซ็นเซอร์สองตัวในเวลาเดียวกันคือหายนะระดับชาติ! คลื่นที่สะท้อนจากเซ็นเซอร์ A จะวิ่งเข้าหาไมโครโฟนของเซ็นเซอร์ B พังข้อมูลจาก pulseIn() เรียบร้อย!

  1. Arduino ต้องยิงพัลส์ที่เซ็นเซอร์ด้านหน้า (Front Sensor) คำนวณค่า แล้วหยุดระบบทั้งหมดเป็นเวลา 30 มิลลิวินาที เพื่อให้คลื่นเสียงสลายตัวไปก่อน
  2. จากนั้นค่อยยิงพัลส์ที่เซ็นเซอร์ด้านหลัง (Rear sensor) อย่างรุนแรง!
  3. สตริงที่ส่งไปให้ PC จะมีหน้าตาแบบนี้: "มุม,ระยะด้านหน้า,ระยะด้านหลัง" (เช่น 120,54,12)
void loop() {
  for(int angle = 0; angle <= 180; angle++) {  
    radarServo.write(angle); // ส่ายฐานไป!
    delay(30);

    int distFront = executeSonarPing(TRIG_F, ECHO_F);
    delay(20); // ดีเลย์บังคับ รอคลื่นเสียงกระจายตัว! ห้ามช็อตนะตัวนี้
    
    int distRear = executeSonarPing(TRIG_R, ECHO_R);
    
    // ยิงข้อมูลพิกัด 3D ลง Serial Pipeline โลด!
    Serial.print(angle);
    Serial.print(",");
    Serial.print(distFront);
    Serial.print(",");
    Serial.println(distRear);
  }
}

The GUI Processing Visual Mapping Engine

Arduino มันตาบอดสนิทเลยจ้า มันเห็นแต่ตัวเลขกับสมการ! ส่วน Java Processing IDE นี่แหละที่ทำหน้าที่วาดแผนที่เรดาร์ให้เรา โดยใช้การแปลงพิกัดจาก Cartesian ไปเป็น Polar (คาร์ทีเซียนเป็นโพลาร์)!

  • แอป Processing จะแยกสตริง "120,54,12" ออกเป็นส่วนๆ อย่างละเอียด
  • มันใช้ฟังก์ชันตรีโกณฯ cos() กับ sin() ในการคำนวณเพื่อวางพิกเซลสีแดงสดใสลงบนหน้าจอได้อย่างแม่นยำ สะท้อนภาพเรขาคณิต 3 มิติของห้องนอนแบบเรียลไทม์!
  • เพราะเรามีเซ็นเซอร์สองตัว แอป Java จะพล็อตค่า FrontDist ที่มุม 120 พร้อมกับแมปค่า RearDist ที่มุม 120 + 180 (มุม 300) ไปพร้อมกัน ทำให้ได้แผนที่ 360° สมบูรณ์แบบจากแค่การกวาด 180°!

Deep Scanning Hardware Needs

  • Arduino Uno/Nano (เจ้าใหญ่คุมท่อ USB Host)
  • HC-SR04 Ultrasonic Sonar Modules 2 ตัว (ต้องติดตั้งโดยหันหน้าไปคนละทาง 180 องศาพอดี บนแกนหมุนเดียวกัน)
  • เซอร์โว SG90 หรือ MG996R แรงๆ (จำเป็นสำหรับการกวาดสแกนแบบลื่นไหล)
  • แอปพลิเคชัน Processing IDE (รันบน PC เพื่อคอมไพล์และเรนเดอร์กราฟิกพล็อตพิกัดตรีโกณฯ แบบจัดเต็ม)

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Processing 3"
  - "1x Arduino IDE"
author: "Microlab_Aigio_Greece"
category: "Sensors & Environment"
components:
  - "2x Ultrasonic Sensor - HC-SR04 (Generic)"
  - "1x Arduino Pro Mini 328 - 5V/16MHz"
  - "1x DC motor (generic)"
  - "1x Driver DRV8825 for Stepper Motors for Theremino System"
  - "3x 3V Lion battery 3000mAh"
  - "1x Arduino MKR1000"
description: "Dual-matrix acoustic tomography! Establish a terrifyingly complex stereoscopic mapping array using opposed HC-SR04 sonar pulses synced physically to a continuous-rotation servo base natively rendering Processing environment coordinates."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/xw/zZH3cGKSs8TIJyC8iIbyBu/aJVeMk/bPGdkaZI7GElu3uJs33TbZcDtJ8GeWqTX4zSJY1MduGN5l9+eCrDU4bZJUHJpIqjom3Yz3mBFRK1Wb+79iPN"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-two-ultrasonic-sensor-radar-360-degrees-rotation-216364_cover.jpg"
lang: "en"
likes: 23
passwordHash: "ef0862a6abdf92ae03c602d2a1c09db8bb770cf1bcc63c137d7fd61decb9a9a1"
price: 2450
seoDescription: "Arduino Two Ultrasonic Sensor Radar with 360 degrees rotation. Built by MicroLab using 2 Ultrasonic Sensor units and 1 Motor."
tags:
  - "bluetooth"
  - "radar"
  - "robotics"
  - "science & technology"
title: "เรดาร์ 360 องศา ตรวจจับรอบทิศด้วย Arduino + อัลตราโซนิก 2 ตัว (งานง่ายแต่หล่อ!)"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/KeK7nlrs7gY"
views: 46504