กลับไปหน้ารวมไฟล์
3d-artificial-horizon-gyroscope-with-mpu6050-gy-521-7b8fe4.md

3D Artificial Horizon/ Gyroscope ใช้ Arduino กับ Processing3+

อยากใช้เมาส์ควบคุมก็จัดไปได้นะวัยรุ่น

ใช้กับเซ็นเซอร์ ADXL345 และ MPU6050/GY-521 Accelerometer/Gyroscope รุ่นอื่นๆ ก็ได้เหมือนกัน

หมายเห็ด: โปรเจกต์นี้ยังไม่เสร็จสมบูรณ์นะน้อง เก็บโค้ดไว้ใน HDD กลัวหายเฉยเลย

Azimuth ยังไม่ทำงาน แต่ก็ใช้การได้ปกติโดยไม่ต้องพึ่งมัน

ภาพยังกระตุกนิดหน่อย ส่วน Altitude ก็ยังไม่เวิร์ค... เดี๋ยวค่อยมาทำกันต่อ

ไอเดียมาจากเกม Kerbal Space Program (KSP)

เวลาทำงาน ให้หันหน้าโมดูล ไปทางนี้ นะ จ๊ะ

หันหน้า Accelerometer/Gyroscope module แบบนี้เวลาทำงานนะน้อง

Aerospace Navigational Geometry: 3D Artificial Horizon

เวลาที่เครื่องบินบินเข้าไปในเมฆ นักบินจะมองไม่เห็นพื้นดินเป็นหลักอ้างอิง ถ้าปีกเอียงนิดเดียว อาจจะเผลอบินคว่ำหัวลงพื้นโดยไม่รู้ตัวก็ได้! 3D Artificial Horizon นี่คือสุดยอดผลงานวิศวะเลยนะ มันดึงข้อมูล Cartesian Acceleration กับ Gyroscopic vectors ออกมาจาก MPU6050 (GY-521) IMU ชิปเล็กๆ นี่แหละ แล้วส่งค่าผ่าน Serial ไปให้ Processing IDE คำนวณต่อจนวาดกล่อง 3D ขนาดใหญ่ที่ขยับได้ลื่นไหลบนหน้าจอคอมเราได้!

The I2C MPU6050 Quaternion Output Framework

ข้อมูลดิบจาก Accelerometer (X=15000, Y=3000, Z=-1500) มันวุ่นวายมาก ถ้า Uno สั่นนิดหน่อยบนโต๊ะ ตัวเลขก็จะกระเพื่อมรัวๆ จนทำให้เครื่องบิน 3D บนหน้าจอแตกเป็นเสี่ยงๆ ได้เลย!

  1. MPU6050 มันมีฟีเจอร์ขั้นเทพซ่อนอยู่ชื่อ DMP (Digital Motion Processor)
  2. Arduino ของเราต้องใช้ไลบรารี่ตัวใหญ่ยักษ์อย่าง I2Cdev.h และ MPU6050_6Axis_MotionApps20.h เพื่อเข้าถึงพลังในชิปตัวนี้!
  3. DMP ข้างในจะรวมข้อมูลแรงโน้มถ่วงจาก Accelerometer กับโมเมนตัมการหมุนจาก Gyroscope เข้าด้วยกัน แล้วคำนวณออกมาเป็น Quaternions และ Euler Angles!
  4. มันจะส่งค่าออกมาเป็นทศนิยมที่ลื่นปรื๊ดๆ แบบนี้: Pitch: 14.5 degrees, Roll: 32.1 degrees, Yaw: 180.0 degrees

สะพาน Serial สู่ Processing IDE (เรนเดอร์ด้วย Java)

Uno ตัวนี้มันวาดเครื่องบิน 3D โคตรเท่ไม่ได้หรอกน้อง

  • Uno ทำหน้าที่เป็นท่อส่งข้อมูลอย่างเดียว มันพ่นตัวเลขทศนิยมที่แม่นยำสุดๆ ออกมา Serial.println(String(ypr[0]) + "," + String(ypr[1]) + "," + String(ypr[2])); ด้วยความเร็วสูงสุด 115200 baud!
  • สถาปัตยกรรม Java บน PC: โปรแกรมเมอร์เปิดโปรเจค Java ใน Processing IDE ที่โคตรซับซ้อนขึ้นมา
  • ผ่านสาย USB, Processing จะดักจับสตริงข้อมูลนั้น!
// Java code applying physical rotation directly to a 3D geometry shape!
rotateZ(radians(roll));
rotateX(radians(pitch));
rotateY(radians(yaw));
box(200, 10, 200); // วาดปีกเครื่องบิน 3D แบบอัพเดทค่าต่อเนื่อง 60 เฟรมต่อวินาที!

เมทริกซ์ชิ้นส่วน Inertial

  • Arduino Uno/Nano (ฟังก์ชันมาตรฐาน)
  • โมดูล MPU6050 (GY-521) 6-Axis Accelerometer/Gyroscope (ต้องมั่นใจว่าเชื่อมสาย I2C SDA และ SCL แน่นหนานะ! สายหลวมนิดเดียว DMP initialization array พังยกใหญ่!)
  • ซอฟต์แวร์ Processing IDE (ติดตั้งบน PC/Mac เพื่อจัดการการเรนเดอร์ 3D แบบ WebGL ที่หนักหน่วง!)
  • สาย USB ขนาด 12 นิ้ว ที่เชื่อมโยงสถาปัตยกรรมทั้งหมดเข้ากับหน้าจอโฮสต์อย่างราบรื่น!

เชื่อมต่อ ADXL345 หรือ MPU6050/GY-521 เข้ากับ Arduino

เราจะใช้ A4 และ A5 ตรงนี้

SCL - A5

SDA - A4

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

apps:
  - "1x Processing"
  - "1x Arduino IDE"
author: "Gallax"
category: "Gadgets, Games & Toys"
components:
  - "1x 6 DOF Sensor - MPU6050"
  - "1x Jumper wires (generic)"
  - "1x Arduino UNO"
description: "หลังจากงมหามรุ่งหามค่ำ งานนี้ก็มาถึงจุดที่จัดแสดงได้! นี่เลย "Navi" หรือ NavBall หน้าปัดทรงกลมสุดเท่ (แบบในเกม Kerbal Space Program) เอาไว้ดูมุมเอียง-มุมเงยของเซนเซอร์ ควบคุมด้วยเมาส์ก็ได้ หรือจะอัพเกรดใช้ ADXL345 ก็เทพๆ งานง่ายแต่หล่อมาก วัยรุ่นต้องลอง!"
difficulty: "Advanced"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX196usOXd7iLGIUWM07o40p6eps7CUADPx6t1AvzMmoBw1FZNTBuqvPERMvEBEFYU6DLNfUbd5UalDwvwpMwSgus/LXZqWe8SL8cCpQi0BtQ1OWFMGyzBAg0"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/3d-artificial-horizon-gyroscope-with-mpu6050-gy-521-7b8fe4_cover.jpg"
lang: "en"
likes: 6
passwordHash: "ec957531affa441c577a55494bdfc4dec34c0da0f56754962dba93854554582c"
price: 1120
seoDescription: "Create a 3D Artificial Horizon using Gyroscope MPU6050 GY-521. Inspired by NavBall in Kerbal Space Program. Works with ADXL345 and Mouse."
tags:
  - "gy521"
  - "gy-521"
  - "mpu6050"
  - "gyroscope"
  - "kerbal space program"
  - "arduino"
  - "accelerometer"
  - "3d"
  - "processing"
  - "navball"
  - "artificial horizon"
  - "adxl345"
title: "3D หน้าปัดเทียมสุดตึง - หมุนกันให้โลกคว่ำกับ MPU6050 GY-521"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/51FFv0W7VIY"
  - "https://www.youtube.com/embed/veFDSi6lUJg"
views: 17000