Raadi Koodka

Sida loo isticmaalo MPU-6050 Accelerometer iyo Gyroscope Module

Sida loo isticmaalo MPU-6050 Accelerometer iyo Gyroscope Module

MPU-6050 waa dareeme (sensor) badan oo isku daraya xawaare-qiyaase (accelerometer) 3-dhidibeed iyo girooskoob (gyroscope) 3-dhidibeed hal baakad gudihiis. Casharradan, waxaan sahamin doonnaa sida loogu xiro modhulkan Arduino si loo qiyaaso xawaaraha iyo xawaaraha wareega. Natiijadu waxay noqon doontaa barnaamij fudud oo soo bandhiga xogta waqtiga-dhabta ah ee dareemaha, taasoo kuu oggolaanaysa inaad la socotid xawaaraha iyo jihada qalabkaaga.

Adigoo raacaya hagahan, waxaad baran doontaa sida loo habeeyo qalabka, si sax ah ugu xiro qaybaha, iyo inaad qorto koodhka lagama maarmaanka u ah si MPU-6050 uu u shaqeeyo. Tani waxay kuu siin doontaa aasaas mashaariic dheeri ah oo ku lug leh dareenka dhaqdhaqaaqa iyo ogaanshaha jihada. Si aad u hesho caddayn dheeri ah, hubi inaad daawato fiidiyowga la socda casharradan (fiidiyowga 00:00).

Qalabka La Sharxay

Qaybta ugu weyn ee mashruucan waa dareemaha MPU-6050, kaas oo bixiya xogta xawaare-qiyaase iyo girooskoob labadaba. Xawaare-qiyaasku wuxuu qiyaasaa xawaaraha tooska ah ee dhidibada X, Y, iyo Z, halka girooskoobku uu qiyaaso heerka wareega ee ku wareegsan isla dhidibadaas. Isku darkani wuxuu ka dhigayaa MPU-6050 doorasho aad u fiican codsiyada u baahan raadraaca dhaqdhaqaaqa.

Intaa waxaa dheer, modhulku wuxuu isticmaalaa interface-ka I2C ee isgaarsiinta, kaas oo fududeeya ku xirnaanshaha oo u oggolaanaya in qalabyo badan lagu xiro isla baska. Dareemaha waxaa lagu shideeyaa biinanka VCC, kaas oo sida caadiga ah u baahan danab u dhexeeya 3.3V iyo 5V. Dhulka (ground) waxaa lagu xiraa dhulka guud ee Arduino-ga.

Faahfaahinta Xaashida Xogta

Soo saarahaInvenSense
Nambarka qaybtaMPU-6050
Danabka Logic/IO3.3 – 5 V
Danabka sahayda3.3 – 5 V
Korontada soo-saarka (kanaal kasta)
Korontada ugu sarreysa (kanaal kasta)
Hagaha soo noqnoqoshada PWM
Heerarka caqabadda gelinta
Hoos u dhaca danabka / RDS(on) / dheregsanaanta
Xadka kulaylka
BaakadQFN
Qoraallo / noocyo kale

  • Ku xir biinanka VCC 3.3V ama 5V.
  • Ku xir biinanka GND dhulka.
  • Isticmaal isgaarsiinta I2C ee SDA (xogta) iyo SCL (saacadda).
  • Hubi in ay jiraan resistors-ka kor-u-jiidashada ee khadadka SDA iyo SCL.
  • Hubi heerarka danabka saxda ah si aad uga hortagto dhaawaca dareemaha.

Tilmaamaha Xirista

arduino_wiring_MPU-6050

Si aad MPU-6050 ugu xirto Arduino-gaaga, ku bilow adigoo ku xira biinanka VCC ee MPU-6050 biinanka 5V ee Arduino-ga. Marka xigta, ku xir biinanka GND ee MPU-6050 mid ka mid ah biinannada GND ee Arduino-ga. Isgaarsiinta I2C, ku xir biinanka SDA ee MPU-6050 biinanka A4 ee Arduino-ga, iyo biinanka SCL biinanka A5. Hubi in Arduino-gaagu loo habeeyay inuu isticmaalo isgaarsiinta I2C adigoo ku daraya maktabadaha (libraries) ku habboon koodhkaaga.

Labo jeer hubi xiristaada ka hor intaadan shidin nidaamka. Haddii aad isticmaalayso breadboard, hubi in xiristu ay adag tahay oo ayna jirin wareegyo gaaban. Haddii modhulku uusan u jawaabin sida la filayo, xaqiiji xirista oo hubi cinwaanka I2C ee MPU-6050 koodhkaaga.

Tusaalooyinka Koodhka & Sharaxaad

Qaybta koodhka ee soo socota waxay bilaabaysaa MPU-6050 waxayna bilaabaysaa inay akhrido xogta ka timaadda. Aqoonsiyada muhiimka ah waxaa ka mid ah mpu6050, kaas oo ah tusaalaha fasalka MPU6050, iyo timer, kaas oo loo isticmaalo in lagu xakameeyo waqtiga soo-saarka xogta.

MPU6050 mpu6050(Wire);
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

Halkan shaqada setup, waxaan bilaabaynaa isgaarsiinta serial-ka iyo dareemaha MPU-6050. Wicitaanka mpu6050.calcGyroOffsets(true) ayaa muhiim ah sababtoo ah wuxuu hagaajiyaa qiyaasaha eexda girooskoobka, isagoo hubinaya akhrin sax ah.

Shaqada loop-ka, waxaan si joogto ah u cusboonaysiinaynaa xogta dareemaha oo waxaan u daabacaynaa kormeeraha serial-ka. Qaybta koodhka ee soo socota waxay muujinaysaa sida loo akhriyo oo loo daabaco xogta heerkulka iyo xawaaraha:

if(millis() - timer > 1000){
  Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}

Qaybtani waxay hubinaysaa in ilbidhiqsi uu dhaafay tan iyo markii la soo saaray markii ugu dambeysay. Kadib waxay soo qaadaa qiimaha heerkulka iyo xawaaraha MPU-6050 waxayna ku daabacdaa kormeeraha serial-ka. Waxaad arki kartaa qiimahan oo si waqtiga-dhabta ah u cusboonaysiimaya.

Bixinta / Waxa Lagu Filan Karaa

Marka wax walba la xiro oo koodhka la soo geliyo, waxaad filan kartaa inaad aragto xogta heerkulka iyo xawaaraha oo lagu daabacayo kormeeraha serial-ka ilbidhiqsi kasta. Haddii aad leexiso ama dhaqaajiso MPU-6050, qiimaha xawaaruhu waa inay si waafaqsan isu beddelaan. Ogow in xirista qaldan ama sahayda danab oo aan ku filnayn ay u horseedi karto akhrin aan joogto ahayn ama xog la'aan (fiidiyowga 01:30).

Sawirro

arduino_wiring_MPU-6050
arduino_wiring_MPU-6050
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
116-Arduino code for the MPU-6050 accelerometer and gyroscope sensor (all data)
Luqadda: C++
/*
 * 
 * This code is basic usage of the MPU-6050 Accelerometer and Gyroscope.
 * 
 * This code displays all data:
 * -Gyroscope X, Gyroscope Y, Gyroscope Z
 * -Gyroscope Angle X, Gyroscope Angle Y, Gyroscope Angle Z 
 * -Accel X, Accel Y, Accel Z
 * -Accel Angle X, Accel Angle Y, Accel Angle Z,
 * 
 * Library and code have been taken from:
 * https://github.com/tockn/MPU6050_tockn
 * 
 * Updated by Ahmad Shamshiri on July 03, 2018 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/uhh7ik02aDc
 * 
 */
#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

void loop() {
  mpu6050.update();

  if(millis() - timer > 1000){
    
    Serial.println("=======================================================");
    Serial.print("temp : ");Serial.println(mpu6050.getTemp());
    Serial.print("accX : ");Serial.print(mpu6050.getAccX());
    Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
    Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
  
    Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
    Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
    Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
  
    Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
    Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
  
    Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
    Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
    Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
    
    Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
    Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
    Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
    Serial.println("=======================================================\n");
    timer = millis();
    
  }

}
117-Arduino code for an MPU-6050 accelerometer and gyroscope sensor (just angle)
Luqadda: C++
/*
 * 
 * This code is basic usage of the MPU-6050 Accelerometer and Gyroscope.
 * 
 * This code displays:
 * - Angle X, Angle Y, Angle Z,
 * 
 * Library and code have been taken from:
 * https://github.com/tockn/MPU6050_tockn
 * 
 * Updated by Ahmad Shamshiri on July 03, 2018 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/uhh7ik02aDc
 * 
 */
#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

void loop() {
  mpu6050.update();

  if(millis() - timer > 1000){
    
    Serial.println("=======================================================");
    Serial.print("temp : ");Serial.println(mpu6050.getTemp());
    Serial.print("accX : ");Serial.print(mpu6050.getAccX());
    Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
    Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
  
    Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
    Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
    Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
  
    Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
    Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
  
    Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
    Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
    Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
    
    Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
    Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
    Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
    Serial.println("=======================================================\n");
    timer = millis();
    
  }

}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Faylasha📁

Arduino Libraries (zip)

Faylal kale

  • MPU6050_tockn-master
    Arduino library for the MPU6050 accelerometer and gyroscope module. Provides functions to read acceleration, gyro, and temperature data, with calibration and angle calculation. Designed for easy integration into motion-sensing projects.
    robojax-MPU6050_tockn-master.zip