MPU-6050 เป็นอุปกรณ์ติดตามการเคลื่อนไหว 6 แกนที่มีเครื่องไจโรสโคปและ accelerometer ทำให้เหมาะสำหรับการตรวจจับการเคลื่อนไหวเช่นหุ่นยนต์โดรนและโครงการ IoT ในคู่มือนี้คุณจะได้เรียนรู้วิธีการเชื่อมต่อและใช้ MPU-6050 ด้วย Raspberry Pi เพื่อจับภาพการเคลื่อนไหวและการวางแนว
สิ่งที่คุณต้องการ
- Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
- โมดูล MPU-6050
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่มีการเข้าถึง SSH ไปยัง Raspberry Pi หรือแป้นพิมพ์และจอภาพที่เชื่อมต่อ
- Python ติดตั้งบน Raspberry Pi
ขั้นตอนที่ 1: การเดินสาย MPU-6050 ไปยัง Raspberry Pi
MPU-6050 สื่อสารกับ Raspberry Pi โดยใช้โปรโตคอล I2C
การเชื่อมต่อ
MPU-6050 PIN | Raspberry Pi Pin |
---|---|
VCC | 3.3V (พิน 1) |
gnd | พื้นดิน (พิน 6) |
SDA | SDA (พิน 3, GPIO2) |
SCL | SCL (PIN 5, GPIO3) |
บันทึก: ตรวจสอบให้แน่ใจว่าโมดูล MPU-6050 ทำงานที่ 3.3V โมดูลส่วนใหญ่รวมถึงตัวควบคุมแรงดันไฟฟ้าทำให้สามารถขับเคลื่อนด้วย 5V
ขั้นตอนที่ 2: เปิดใช้งานอินเทอร์เฟซ I2C บน Raspberry Pi
- เปิดเครื่องมือกำหนดค่า Raspberry Pi:
sudo raspi-config
- นำทางไปยัง ตัวเลือกอินเตอร์เฟส> i2c และเปิดใช้งาน
- รีบูตราสเบอร์รี่ pi:
sudo reboot
ขั้นตอนที่ 3: ติดตั้งเครื่องมือและไลบรารีที่จำเป็น
- อัปเดต Raspberry Pi ของคุณ:
sudo apt update && sudo apt upgrade -y
- ติดตั้งเครื่องมือ I2C:
sudo apt install -y i2c-tools
- ติดตั้งไลบรารี Python สำหรับการสื่อสาร I2C และการประมวลผลข้อมูล:
pip install smbus2
ขั้นตอนที่ 4: ตรวจสอบการเชื่อมต่อ
- ใช้
i2cdetect
ในการตรวจสอบ MPU-6050 จะถูกตรวจพบบนบัส I2C:sudo i2cdetect -y 1
- คุณควรเห็น MPU-6050 ตามที่อยู่
0x68
(หรือ0x69
หากดึง AD0 PIN สูง) ถ้าไม่:- ตรวจสอบสายไฟของคุณ
- ตรวจสอบให้แน่ใจว่า MPU-6050 ใช้พลังงาน
ขั้นตอนที่ 5: การอ่านข้อมูลจาก MPU-6050
สคริปต์ Python ต่อไปนี้อ่านข้อมูล accelerometer และ gyroscope จาก MPU-6050
ตัวอย่างรหัส Python
import smbus2
import time
# MPU-6050 Registers and Address
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43
# Initialize I2C bus
bus = smbus2.SMBus(1)
# Wake up the MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)
def read_raw_data(addr):
# Read two bytes of data from the given address
high = bus.read_byte_data(MPU6050_ADDR, addr)
low = bus.read_byte_data(MPU6050_ADDR, addr+1)
value = (high << 8) | low
# Convert to signed value
if value > 32767:
value -= 65536
return value
try:
while True:
# Read accelerometer data
accel_x = read_raw_data(ACCEL_XOUT_H)
accel_y = read_raw_data(ACCEL_XOUT_H + 2)
accel_z = read_raw_data(ACCEL_XOUT_H + 4)
# Read gyroscope data
gyro_x = read_raw_data(GYRO_XOUT_H)
gyro_y = read_raw_data(GYRO_XOUT_H + 2)
gyro_z = read_raw_data(GYRO_XOUT_H + 4)
# Convert raw data to meaningful values (optional scaling may be needed)
accel_x_scaled = accel_x / 16384.0
accel_y_scaled = accel_y / 16384.0
accel_z_scaled = accel_z / 16384.0
gyro_x_scaled = gyro_x / 131.0
gyro_y_scaled = gyro_y / 131.0
gyro_z_scaled = gyro_z / 131.0
print(f"Accelerometer: X={accel_x_scaled:.2f}, Y={accel_y_scaled:.2f}, Z={accel_z_scaled:.2f}")
print(f"Gyroscope: X={gyro_x_scaled:.2f}, Y={gyro_y_scaled:.2f}, Z={gyro_z_scaled:.2f}")
time.sleep(1)
except KeyboardInterrupt:
print("Exiting...")
ขั้นตอนที่ 6: แอปพลิเคชันของ MPU-6050
- การติดตามการเคลื่อนไหว: ติดตามการเคลื่อนไหวและการปฐมนิเทศในหุ่นยนต์หรืออุปกรณ์สวมใส่
- ระบบการรักษาเสถียรภาพ: ใช้การรักษาเสถียรภาพของการหมุนเวียนสำหรับโดรนหรือ gimbals
- เกม: สร้างตัวควบคุมเกมที่ใช้การเคลื่อนไหว
- โครงการ IoT: ใช้ข้อมูลการเคลื่อนไหวเพื่อเรียกเหตุการณ์ระบบอัตโนมัติ
การแก้ไขปัญหา
-
ไม่พบอุปกรณ์:
- ตรวจสอบการเชื่อมต่อ SDA และ SCL
- ตรวจสอบให้แน่ใจว่าอินเทอร์เฟซ I2C เปิดใช้งานบน Raspberry Pi
- ตรวจสอบแหล่งจ่ายไฟไปยัง MPU-6050
-
การอ่านที่ไม่ถูกต้อง:
- ปรับเทียบเซ็นเซอร์โดยใช้การชดเชยสำหรับแต่ละแกน
- ตรวจสอบให้แน่ใจว่าเซ็นเซอร์วางอยู่บนพื้นผิวที่มั่นคง
-
ข้อผิดพลาด I2C:
- ตรวจสอบให้แน่ใจว่าไม่มีอุปกรณ์ที่ขัดแย้งกันบนรถบัส I2C
บทสรุป
MPU-6050 เป็นเซ็นเซอร์ตรวจจับการเคลื่อนไหวอเนกประสงค์ที่สามารถเพิ่มความสามารถในการติดตามการเคลื่อนไหวที่แม่นยำให้กับโครงการ Raspberry Pi ของคุณ โดยทำตามคำแนะนำนี้คุณสามารถตั้งค่าและใช้ MPU-6050 สำหรับแอพพลิเคชั่นเช่นหุ่นยนต์ระบบรักษาเสถียรภาพและระบบอัตโนมัติ IoT ทดลองกับการปรับขนาดและการกรองข้อมูลเพื่อปรับแต่งเซ็นเซอร์สำหรับความต้องการของคุณ!