สารบัญ:

ระบบเรดาร์อย่างง่ายจาก Magicbit: 6 ขั้นตอน
ระบบเรดาร์อย่างง่ายจาก Magicbit: 6 ขั้นตอน

วีดีโอ: ระบบเรดาร์อย่างง่ายจาก Magicbit: 6 ขั้นตอน

วีดีโอ: ระบบเรดาร์อย่างง่ายจาก Magicbit: 6 ขั้นตอน
วีดีโอ: CPU optimized data structures - more fun with assembler - CB Bailey [ACCU 2019] 2024, กรกฎาคม
Anonim

บทช่วยสอนนี้แสดงวิธีสร้างระบบเรดาร์อย่างง่ายโดยใช้เซ็นเซอร์ HC-SR04 และบอร์ด Microbit dev พร้อมการประมวลผลและ Arduino IDE

เสบียง:

  • SG90 ไมโครเซอร์โวมอเตอร์
  • สายจัมเปอร์ (ทั่วไป)
  • เขียงหั่นขนม (ทั่วไป)
  • Magicbit
  • สาย USB-A เป็น Micro-USB
  • อัลตราโซนิกเซนเซอร์ - HC-SR04 (ทั่วไป)

ขั้นตอนที่ 1: เรื่องราว

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีสร้างระบบเรดาร์อย่างง่ายโดยใช้บอร์ดพัฒนาหลักของ Magicbit เพื่อจุดประสงค์นี้ เราใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 และเพื่อแสดงข้อมูล เราใช้สภาพแวดล้อมการประมวลผล มาเริ่มกันเลย

ขั้นตอนที่ 2: ทฤษฎีและระเบียบวิธี

ขั้นแรก มาพูดคุยกันว่ามันทำงานอย่างไร หลักการนั้นง่ายมาก ขั้นแรก เราหมุนเซ็นเซอร์ของเรารอบแกนแนวตั้งในช่วง 180 องศาอย่างต่อเนื่อง ระหว่างการเคลื่อนไหวนั้น เราจะนำข้อมูลเกี่ยวกับระยะทางไปยังวัตถุที่ใกล้ที่สุดจากเซ็นเซอร์อัลตราโซนิกทุกมุม สำหรับกระบวนการนี้ เราใช้บอร์ดหลักของ Magicbit หลังจากนั้น เราต้องสร้างการเชื่อมต่อกับสภาพแวดล้อมการประมวลผลเพื่อแสดงข้อมูลของเรา ดังนั้นเราจึงใช้โปรโตคอลการสื่อสารแบบอนุกรมที่มีอัตรารับส่งข้อมูลที่เหมาะสม จากนั้นเราออกแบบอินเทอร์เฟซระบบเรดาร์ของเราโดยใช้การประมวลผล IDE ใน IDE นั้น เรากำหนดค่าการสื่อสารซีเรียลเพื่อรับข้อมูลแบบเรียลไทม์ผ่านซีเรียล ดังนั้นเราจึงทำการสื่อสารแบบเรียลไทม์กับ Magicbit และแสดงข้อมูลที่ส่งจาก Magicbit ไปยัง IDE การประมวลผล

ขั้นตอนที่ 3: การตั้งค่าฮาร์ดแวร์

การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์

สำหรับโครงการนี้ เราใช้ส่วนประกอบฮาร์ดแวร์สามส่วนเป็นหลัก ได้แก่ Magicbit, เซอร์โวมอเตอร์และเซ็นเซอร์อัลตราโซนิก การเชื่อมต่อระหว่างส่วนเหล่านี้ทั้งหมดแสดงในรูปด้านบน

เซ็นเซอร์อัลตราโซนิกใช้ 3.3 v สำหรับเปิดเครื่อง ดังนั้นเราจึงใช้พอร์ตด้านล่างขวาของบอร์ด Magicbit เพื่อเชื่อมต่อเซ็นเซอร์อัลตราโซนิกกับ Magicbit แต่เซอร์โวมอเตอร์ใช้ 5V เพื่อการทำงานที่เหมาะสม ดังนั้นเราจึงใช้พอร์ตล่างซ้ายเพื่อเชื่อมต่อเซอร์โวมอเตอร์กับ Magicbit ในกรณีนี้ เราใช้โมดูลตัวเชื่อมต่อเซอร์โวเมจิกบิต แต่ถ้าคุณไม่มีโมดูลนั้น คุณสามารถใช้สายจัมเปอร์สามเส้นเพื่อเชื่อมต่อ 5V ถึง 5V, Gnd ถึง Gnd และพินสัญญาณเป็น 26 พินบน magicbit

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

ขั้นตอนที่ 4: การติดตั้งซอฟต์แวร์

การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์

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

magicbit-arduino.readthedocs.io/en/latest/

hello.processing.org/editor/

มาดูโค้ด Arduino IDE กัน และโค้ดนั้นทำงานอย่างไร

สำหรับการขับเซอร์โวเราใช้ไลบรารีเซอร์โว ESP32 ไลบรารีนี้เกือบจะรวมอยู่ในตัวจัดการบอร์ดบิตวิเศษใน Arduino IDE เพื่อจัดการกับเซ็นเซอร์อัลตราโซนิกเราใช้ไลบรารี newPing สามารถดาวน์โหลดได้จากลิงค์ต่อไปนี้

bitbucket.org/teckel12/arduino-new-ping/do…

ดาวน์โหลดไฟล์ zip และไปที่เครื่องมือ > รวมไลบรารี > เพิ่มไลบรารี Zip ใน Arduino ตอนนี้เลือกไฟล์ zip ที่คุณดาวน์โหลดของไลบรารีพินใหม่ สำหรับการสื่อสารกับการประมวลผล เราใช้การสื่อสารแบบอนุกรมที่มีอัตรารับส่งข้อมูล 115200 นี่เป็นความถี่ที่เหมาะสมที่สุดสำหรับ ESP32 ในทุกมุม เราส่งข้อมูลของเราไปยังคอมพิวเตอร์โดยใช้โปรโตคอลนี้ ข้อมูลนี้รวมระยะทางไปยังวัตถุด้านหน้าที่ใกล้ที่สุดจากเซ็นเซอร์ ทิศทางการหมุน และมุมการหมุน การใช้ two for loops เราหมุนเซอร์โวของเราในสองทิศทาง ในขณะที่การหมุนหนึ่งองศา เราส่งข้อมูลอนุกรมที่ 4 ครั้ง เหตุผลที่คุณสามารถเข้าใจในการประมวลผลคำอธิบายส่วน

ตอนนี้ได้เวลาดูสภาพแวดล้อมการประมวลผลแล้ว นี่คือซอฟต์แวร์การเขียนโปรแกรมที่ใช้จาวา เราสามารถเขียนแบบสเก็ตช์ของโปรแกรมของเราในแบบสเก็ตช์นี้ในการประมวลผล IDE นอกจากนี้เรายังสามารถสร้างการแสดงผลจากการรันโปรแกรมของเราได้อีกด้วย นอกจากนี้คุณยังสามารถส่งออกเป็นวัตถุ 2D และ 3d ไม่เพียงเท่านั้น ยังสามารถใช้สำหรับการประมวลผลภาพและอื่นๆ อีกมากมาย

ในร่างการประมวลผลขั้นแรก เราออกแบบอินเทอร์เฟซการแสดงข้อมูลของเราโดยใช้ฟังก์ชันกราฟิกอย่างง่าย ในตอนเริ่มต้นของรหัส เราจะสร้างการสื่อสารแบบอนุกรมของเราโดยรวมไลบรารีซีเรียล ในฟังก์ชันการตั้งค่า คุณต้องทำการเปลี่ยนแปลงบางอย่างตามพอร์ต USB ที่คุณใช้เชื่อมต่อ Magicbit กับคอมพิวเตอร์ คุณสามารถตรวจสอบพอร์ตของคุณโดยใช้ Arduino IDE เมื่อคุณตั้งค่า Arduino IDE เพื่ออัปโหลดโค้ด จากนั้นเปลี่ยนชื่อพอร์ต com ในส่วนการตั้งค่าในการประมวลผลแบบร่าง เมื่อข้อมูลซีเรียลพร้อมใช้งาน ฟังก์ชัน Serialevent จะทริกเกอร์โดยอัตโนมัติ ด้วยเหตุนี้ ตรรกะหลักของรหัสจึงรวมอยู่ในเหตุการณ์แบบอนุกรมเพื่อป้องกันมุมและข้อมูลขาดหายไป เมื่อมีข้อมูลใหม่ เราจะวาดเส้นในหน้าจอตามมุมของเรา ในขณะนั้นหากไม่มีการตรวจจับวัตถุ เส้นเต็มจะเป็นสีเขียว หากไม่เป็นเช่นนั้น บางส่วนของเส้นจะเป็นสีแดงตามระยะห่างจากเซ็นเซอร์ไปยังวัตถุ นอกจากนี้ ทิศทางการหมุนตามนั้น เราวาดอีก 200 เส้นใกล้กับเส้นนั้นโดยลดระดับสีเขียวลง ระหว่างแต่ละ Main เรามีความแตกต่าง 0.25 องศา ดังนั้นเราจึงได้รับการอ่าน 4 ครั้งจาก Magicbit ในแต่ละการหมุนองศา ด้วยเหตุนี้เราจึงสามารถสร้างการค้นหาที่สวยงามด้วยมือในหน้าจอ

หลังจากอัปโหลดโค้ดสำเร็จจนเต็มเป็นเวทย์มนตร์และตั้งค่าส่วนฮาร์ดแวร์สำเร็จแล้ว ให้เปิด IDE การประมวลผลและเรียกใช้โค้ดโดยคลิกปุ่มเรียกใช้ ตอนนี้คุณมีระบบเรดาร์ที่ง่ายมาก

คุณสามารถปรับแต่งรหัสตามที่คุณต้องการให้แสดง

ขั้นตอนที่ 5: การแก้ไขปัญหา

กำลังประมวลผลสเก็ตช์ไม่ทำงาน

  • รอสักครู่ เนื่องจากเวลาเริ่มต้นขึ้นอยู่กับประสิทธิภาพของพีซีและ GPU ของคุณ
  • ตรวจสอบว่าหมายเลขพอร์ตอนุกรมถูกต้องในการประมวลผลแบบร่าง
  • ตรวจสอบว่าการเชื่อมต่อ USB ได้รับการแก้ไขอย่างถูกต้อง
  • ตรวจสอบการเชื่อมต่อระหว่างเซ็นเซอร์อัลตราโซนิกกับ Magicbit
  • เปิดมอนิเตอร์แบบอนุกรมและตรวจสอบว่าข้อมูลมาจาก Arduino ถ้าไม่เช่นนั้น ปัญหาคือรหัส Arduino หรือการเชื่อมต่อ USB ของคุณ

เซอร์โวไม่ทำงาน

  • ตรวจสอบว่าการเชื่อมต่อ USB ได้รับการแก้ไขอย่างถูกต้อง
  • ตรวจสอบสายไฟ
  • ตรวจสอบว่าเซอร์โวอยู่ในสภาพดี

ขั้นตอนที่ 6: รหัส Arduino

#รวม

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 โซนาร์ Ping ใหม่ (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // รวมระยะทาง int ของไลบรารีเซอร์โว เรดาร์เซอร์โวเซอร์โว; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); RadarServo.attach (26); // กำหนดว่าขาใดเป็นความล่าช้าของเซอร์โวมอเตอร์ที่แนบมา (3000); } void loop() {// หมุนเซอร์โวมอเตอร์จาก 15 ถึง 165 องศาสำหรับ (int i=0;i<=180;i++){ RadarServo.write(i); ล่าช้า (50); distance = sonar.ping_cm();// เรียกใช้ฟังก์ชันสำหรับคำนวณระยะทางที่วัดโดยเซ็นเซอร์อัลตราโซนิกสำหรับแต่ละองศาสำหรับ (int j=0;j0){ break; } Serial.print(i); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print(", "); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(j); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print("*"); Serial.print(1); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("/"); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(ระยะทาง); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("."); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี } } // ทำซ้ำบรรทัดก่อนหน้าจาก 165 ถึง 15 องศาสำหรับ (int i=180;i>=0;i--){ RadarServo.write(i); ล่าช้า (50); ระยะทาง = sonar.ping_cm(); สำหรับ(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){ ดำเนินการต่อ; } Serial.print(i); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print(", "); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(j); // ส่งค่าดีกรีปัจจุบันไปที่ Serial Port Serial.print("*"); Serial.print(-1); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("/"); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี Serial.print(ระยะทาง); // ส่งค่าระยะทางไปยัง Serial Port Serial.print("."); // ส่งอักขระเพิ่มเติมถัดจากค่าก่อนหน้าที่จำเป็นในการประมวลผล IDE สำหรับการจัดทำดัชนี } }

}

แนะนำ: