ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

ใช้ MPU-6050 กับ Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

The MPU-6050 เป็นอุปกรณ์ติดตามการเคลื่อนไหว 6 แกนที่มีไจโรสโคปและอุปกรณ์วัดความเร่ง เหมาะสำหรับแอปพลิเคชันการตรวจจับการเคลื่อนไหวเช่น หุ่นยนต์, โดรน และโครงการ IoT ในคู่มือนี้ คุณจะได้เรียนรู้วิธีการเชื่อมต่อและใช้งาน MPU-6050 กับ Raspberry Pi เพื่อเก็บข้อมูลการเคลื่อนไหวและการวางแนว


สิ่งที่คุณจะต้องมี

  1. Raspberry Pi (รุ่นใดก็ได้ที่รองรับ GPIO เช่น Pi 3, Pi 4)
  2. MPU-6050 Module
  3. บอร์ดทดลองและสาย Jumper
  4. คอมพิวเตอร์ที่สามารถเข้าถึง Raspberry Pi ผ่าน SSH หรือคีย์บอร์ดและจอภาพที่เชื่อมต่ออยู่
  5. Python ติดตั้งบน Raspberry Pi

ขั้นตอนที่ 1: การต่อสาย MPU-6050 กับ Raspberry Pi

ตัว MPU-6050 สื่อสารกับ Raspberry Pi โดยใช้โปรโตคอล I2C

การเชื่อมต่อ

MPU-6050 ขา Raspberry Pi ขา
VCC 3.3V (Pin 1)
GND Ground (Pin 6)
SDA SDA (Pin 3, GPIO2)
SCL SCL (Pin 5, GPIO3)

หมายเหตุ: ให้แน่ใจว่า MPU-6050 module ทำงานที่ 3.3V โมดูลส่วนใหญ่มีวงจรควบคุมแรงดันไฟฟ้า ทำให้สามารถจ่ายไฟด้วย 5V ได้


ขั้นตอนที่ 2: เปิดใช้งานอินเทอร์เฟซ I2C บน Raspberry Pi

  1. เปิดเครื่องมือกำหนดค่าของ Raspberry Pi:
    sudo raspi-config
    
  2. ไปที่ Interface Options > I2C และเปิดใช้งาน
  3. รีบูต Raspberry Pi:
    sudo reboot
    

ขั้นตอนที่ 3: ติดตั้งเครื่องมือและไลบรารีที่ต้องการ

  1. อัปเดต Raspberry Pi ของคุณ:
    sudo apt update && sudo apt upgrade -y
    
  2. ติดตั้งเครื่องมือ I2C:
    sudo apt install -y i2c-tools
    
  3. ติดตั้งไลบรารี Python สำหรับการสื่อสาร I2C และการประมวลผลข้อมูล:
    pip install smbus2
    

ขั้นตอนที่ 4: ยืนยันการเชื่อมต่อ

  1. ใช้ i2cdetect เพื่อตรวจสอบว่า MPU-6050 ถูกตรวจพบบนบัส I2C หรือไม่:
    sudo i2cdetect -y 1
    
  2. คุณควรเห็น MPU-6050 ที่ที่อยู่ 0x68 (หรือ 0x69 หากขา AD0 ถูกดึงขึ้น). หากไม่พบ:
    • ตรวจสอบการต่อสายของคุณ.
    • ตรวจสอบให้แน่ใจว่า MPU-6050 ได้รับพลังงาน.

ขั้นตอนที่ 5: การอ่านข้อมูลจาก MPU-6050

สคริปต์ Python ต่อไปนี้อ่านข้อมูลอุปกรณ์วัดความเร่งและไจโรสโคปจาก 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

  1. การติดตามการเคลื่อนไหว: ติดตามการเคลื่อนไหวและการวางแนวในหุ่นยนต์หรืออุปกรณ์สวมใส่
  2. ระบบความเสถียร: นำไจโรสโคปมาใช้เพื่อการทรงตัวสำหรับโดรนหรือกิมบอล
  3. เกม: สร้างตัวควบคุมเกมแบบใช้การเคลื่อนไหว
  4. โครงการ IoT: ใช้ข้อมูลการเคลื่อนไหวเพื่อทริกเกอร์เหตุการณ์อัตโนมัติ

การแก้ไขปัญหา

  1. อุปกรณ์ไม่ถูกตรวจพบ:

    • ยืนยันการเชื่อมต่อ SDA และ SCL.
    • ตรวจสอบให้แน่ใจว่าอินเทอร์เฟซ I2C ถูกเปิดใช้งานบน Raspberry Pi.
    • ตรวจสอบแหล่งจ่ายไฟไปยัง MPU-6050.
  2. ค่าที่อ่านไม่ถูกต้อง:

    • ปรับเทียบเซนเซอร์โดยการกำหนดออฟเซ็ตสำหรับแต่ละแกน.
    • ตรวจสอบให้แน่ใจว่าเซนเซอร์วางบนพื้นผิวที่มั่นคง.
  3. ข้อผิดพลาด I2C:

    • ตรวจสอบว่าไม่มีอุปกรณ์ขัดแย้งกันบนบัส I2C.

บทสรุป

The MPU-6050 เป็นเซนเซอร์การเคลื่อนไหวที่มีความสามารถหลากหลายซึ่งสามารถเพิ่มความสามารถในการติดตามการเคลื่อนไหวที่แม่นยำให้กับโครงการ Raspberry Pi ของคุณ โดยทำตามคู่มือนี้ คุณสามารถตั้งค่าและใช้งาน MPU-6050 สำหรับแอปพลิเคชันเช่น หุ่นยนต์ ระบบทรงตัว และการทำงานอัตโนมัติของ IoT ทดลองปรับสเกลและกรองข้อมูลเพื่อปรับจูนเซนเซอร์ตามความต้องการของคุณ!

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

แสดงความคิดเห็น