Bí ọ̀ ṣe máa ṣe àmúlò MPU-6050 Accelerometer àti Gyroscope Module
MPU-6050 jẹ́ ẹ̀rọ̀ tó wúlò tó darapọ̀ mọ́ ẹ̀rọ̀ amúṣewọ́n ìyára (3-axis accelerometer) àti ẹ̀rọ̀ amúṣewọ́n yíyí (3-axis gyroscope) nínú àpótí kan ṣoṣo. Nínú ẹ̀kọ́ yìí, a óò ṣàwárí bí a ṣe lè so ẹ̀rọ̀ yìí pọ̀ mọ́ Arduino láti wọn ìyára àti ìyára yíyí. Àbájáde rẹ̀ yóò jẹ́ ètò tó rọrùn tó máa ṣàfihàn àwọn ìsọfúnni tó ń yí padà láti inú ẹ̀rọ̀, tó máa jẹ́ kí o ṣèmójútó ìyára àti ìṣísẹ̀ ẹ̀rọ̀ rẹ.

Nípa títẹ̀lé ìtọ́sọ́nà yìí, o óò kọ́ bí a ṣe ń ṣètò ẹ̀rọ̀, bí a ṣe ń so àwọn ẹ̀yà pọ̀ dáradára, àti bí a ṣe ń kọ kóòdù tó pọn dandan láti mú MPU-6050 ṣiṣẹ́. Èyí yóò fún ọ ní ìpìlẹ̀ fún àwọn iṣẹ́ mìíràn tó ní í ṣe pẹ̀lú ìmọ̀ ìyára àti ìdámọ̀ ìṣísẹ̀. Fún àlàyé síwájú sí i, rí i pé o wo fídíò tó bá ẹ̀kọ́ yìí lọ (nínú fídíò ní 00:00).
Àlàyé Ẹ̀rọ̀
Ẹ̀yà pàtàkì nínú iṣẹ́ yìí ni ẹ̀rọ̀ MPU-6050, tó ń pèsè ìsọfúnni accelerometer àti gyroscope. Ẹ̀rọ̀ amúṣewọ́n ìyára ń wọn ìyára tó ń lọ ní ọ̀nà títọ́ (linear acceleration) lórí àwọn ẹ̀gbẹ́ X, Y, àti Z, nígbà tí ẹ̀rọ̀ amúṣewọ́n yíyí ń wọn ìwọ̀n yíyí ní àyíká àwọn ẹ̀gbẹ́ kan náà. Ìdarapọ̀ yìí mú MPU-6050 di yíyan tó dára jùlọ fún àwọn ohun èlò tó nílò ìtọ́pa ìyára.
Pẹ̀lúpẹ̀, ẹ̀rọ̀ náà ń lo ìbánisọ̀rọ̀ I2C fún ìkórè, èyí tó rọrùn láti so pọ̀ àti tó jẹ́ kí ọ̀pọ̀lọpọ̀ ẹ̀rọ̀ lè so pọ̀ mọ́ ọ̀nà kan náà. A ń fi agbára pèsè fún ẹ̀rọ̀ náà nípasẹ̀ ẹ̀yà VCC, tó sábà máa ń nílò foltiège láàárín 3.3V àti 5V. A so ilẹ̀ (ground) pọ̀ mọ́ ilẹ̀ tó wọ́pọ̀ ti Arduino.
Àwọn Àlàyé Láti Inú Datasheet
| Olùṣe | InvenSense |
|---|---|
| Nọ́mbà ẹ̀yà | MPU-6050 |
| Foltiège Logic/IO | 3.3 – 5 V |
| Foltiège ìpèsè | 3.3 – 5 V |
| Ìwọ̀n ìjàde (fún ikanni) | … |
| Ìwọ̀n tó ga jùlọ (fún ikanni) | … |
| Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM | … |
| Àwọn ìpele ìwọ̀n ìkórè | … |
| Ìdínkù foltiège / RDS(on) / ìkún | … |
| Àwọn ìwọ̀n ooru | … |
| Àpótí | QFN |
| Àwọn àkíyèsí / àwọn oríṣiríṣi | … |
- So ẹ̀yà VCC pọ̀ mọ́ 3.3V tàbí 5V.
- So ẹ̀yà GND pọ̀ mọ́ ilẹ̀.
- Lo ìbánisọ̀rọ̀ I2C nípasẹ̀ SDA (ìsọfúnni) àti SCL (aago).
- Rí i pé àwọn resistor ìfà (pull-up) wà lórí àwọn ọ̀nà SDA àti SCL.
- Ṣàyẹ̀wò àwọn ìpele foltiège láti yẹra fún ìbàjẹ́ ẹ̀rọ̀.
Àwọn Ìtọ́sọ́nà Ìsopọ̀

Láti so MPU-6050 pọ̀ mọ́ Arduino rẹ, bẹ̀rẹ̀ nípa sísopọ̀ ẹ̀yà VCC ti MPU-6050 pọ̀ mọ́ ẹ̀yà 5V lórí Arduino. Lẹ́yìn náà, so ẹ̀yà GND ti MPU-6050 pọ̀ mọ́ ọ̀kan lára àwọn ẹ̀yà GND lórí Arduino. Fún ìbánisọ̀rọ̀ I2C, so ẹ̀yà SDA ti MPU-6050 pọ̀ mọ́ ẹ̀yà A4 ti Arduino, àti ẹ̀yà SCL pọ̀ mọ́ ẹ̀yà A5. Rí i pé Arduino rẹ ti ṣètò láti lo ìbánisọ̀rọ̀ I2C nípa fífi àwọn àkójọpọ̀ (libraries) tó yẹ sínú kóòdù rẹ.
Ṣàyẹ̀wò àwọn ìsopọ̀ rẹ lẹ́ẹ̀mejì kí o tó dá agbára sí i. Bí o bá ń lo breadboard, rí i pé àwọn ìsopọ̀ ṣinṣin àti pé kò sí ìsopọ̀ kúkúrú (short circuits). Bí ẹ̀rọ̀ náà kò bá dáhùn bí o ṣe retí, ṣàyẹ̀wò ìsopọ̀ náà kí o sì ṣàyẹ̀wò àdírẹ́ẹ̀sì I2C ti MPU-6050 nínú kóòdù rẹ.
Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà
Ìsopọ̀ kóòdù tó tẹ̀le yìí ń bẹ̀rẹ̀ MPU-6050 ó sì ń bẹ̀rẹ̀ sí í ka ìsọfúnni láti inú rẹ̀. Àwọn ìdámọ̀ pàtàkì ní mpu6050, tó jẹ́ àpẹẹrẹ ti ẹ̀ka MPU6050, àti timer, tí a ń lò láti ṣàkóso àkókò ìjàde ìsọfúnni.
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
Nínú ìṣiṣẹ́ ìṣètò yìí, a ń bẹ̀rẹ̀ ìbánisọ̀rọ̀ serial àti ẹ̀rọ̀ MPU-6050. Ìpè mpu6050.calcGyroOffsets(true) ṣe pàtàkì gan-an níwọ̀n bí ó ti ń ṣàtúnṣe àwọn àìpé gyroscope, tó ń rí i pé àwọn ìwọ̀n náà péye.
Nínú ìṣiṣẹ́ loop, a ń ṣàtúnṣe ìsọfúnni ẹ̀rọ̀ nígbà gbogbo a sì ń tẹ̀ ẹ́ jáde sí ibi ìṣàmì serial. Ìsopọ̀ kóòdù tó tẹ̀le yìí fi hàn bí a ṣe ń ka àti tẹ̀ ìwọ̀n ooru àti ìyára jáde:
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());
}
Àkọsílẹ̀ yìí ń ṣàyẹ̀wò bí ìṣẹ́jú ààyè kan bá ti kọjá láti ìgbà tí a kẹ́yìn jáde. Lẹ́yìn náà, ó ń gba àwọn iye ooru àti ìyára láti inú MPU-6050 ó sì ń tẹ̀ wọ́n jáde sí ibi ìṣàmì serial. O lè ṣàkíyèsí àwọn iye wọ̀nyí tí ń yí padà ní àkókò gidi.
Ìfihàn / Ohun Tó O Lè Retí
Nígbà tí gbogbo nǹkan bá ti sopọ̀ tán tí a sì ti gbé kóòdù náà sílẹ̀, o lè retí láti rí ìwọ̀n ooru àti ìyára tí ń jáde ní ibi ìṣàmì serial ní gbogbo ìṣẹ́jú ààyè. Bí o bá tẹ̀ ẹ́ sílẹ̀ tàbí gbé MPU-6050, àwọn iye ìyára yóò yí padà ní ìbámu. Ṣọ́ra kí o mọ̀ pé ìsopọ̀ tí kò tọ́ tàbí ìpèsè agbára tí kò tó lè yọrí sí àwọn ìwọ̀n tí kò dúró ṣinṣin tàbí kò sí ìsọfúnni rárá (nínú fídíò ní 01:30).
/*
*
* 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();
}
}
/*
*
* 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();
}
}
Ohun ti o le nilo
-
AmazonPurchase MPU-6050 from Amazonamzn.to
Orisun & itọkasi
-
Ita gbangbaManufacturer websiteinvensense.com
Fáìlìs📁
Awọn ile-ikawe Arduino (zip)
-
Arduino library for MPU9250
robojax-MPU9250-master.zip3.38 MB
Awọn faili miiran
-
MPU6050_tockn-masterArduino 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