Koodu MPU-9250 Accelerometer, Gyroscope, ati Magnetometer
Nínú ẹ̀kọ́ yìí, a óò ṣàwárí bí a ṣe le lo sẹ́nsọ MPU-9250, èyí tí ó so àwọn ẹ̀rọ mẹ́ta pọ̀: accelerometer, gyroscope, àti magnetometer nínú module kan tí ó kúnjú. Ní ìparí ìtọ́sọ́nà yìí, o óò le ka àwọn data sẹ́nsọ kí o sì túmọ̀ ìtumọ̀ rẹ̀ nínú àwọn iṣẹ́ rẹ. Sẹ́nsọ yìí wúlò pàtàkì fún àwọn ohun èlò bíi robotics àti drones, níbi tí ìtọ́kasí ìdarí àti ìmọ́tó èròjà ti ṣe pàtàkì. O le wo fídíò náà fún àlàyé àfikún lórí ìtòlẹ́sẹẹsẹ àti kóòdù (nínú fídíò ní 00:20).
Àlàyé Hardware
Module MPU-9250 ṣepọ̀ àwọn sẹ́nsọ mẹ́ta: accelerometer, gyroscope, àti magnetometer. Accelerometer náà ń wọn àwọn agbára ìsáré, tí ó jẹ́ kí o le pinnu ìyára àti ìtọ́kasí. Gyroscope náà ń pèsè ìyára igun, tí ó ń ràn ọ́ lọ́wọ́ láti lóye ìyípadà ìtọ́kasí lórí àkókò. Ní ìkẹyìn, magnetometer náà ń ṣiṣẹ́ bí kọ́mpásì, tí ó ń pèsè data aṣọ́gun oòrùn tí ó ń ràn ní ìṣàkóso.
Àpapọ̀ àwọn sẹ́nsọ yìí wúlò pàtàkì ní àwọn ohun èlò níbi tí ìmọ́tó èròjà pípéye ti ṣe pàtàkì, bíi nínú drones tàbí fóónù. MPU-9250 ń bára ṣe nípasẹ̀ I2C tàbí SPI, tí ó mú kí ó wúlò fún oríṣiríṣi àwọn microcontroller.
Àwọn Àlàyé Datasheet
| Olùṣelọ́pọ̀ | InvenSense |
|---|---|
| Nọ́mbà apá | MPU-9250 |
| Folti Logic/IO | 1.8 V (I/O), 3.3 V (ìpèsè) |
| Folti ìpèsè | 2.4 - 3.6 V |
| Ìjáde lọ́wọ́lọ́wọ́ (fún ikanni kọ̀ọ̀kan) | 3.2 mA (iṣẹ́ déédé) |
| Ìjáde tí ó ga jùlọ (fún ikanni kọ̀ọ̀kan) | 19.8 mA (púpọ̀ jùlọ) |
| Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM | N/A |
| Àwọn ìpele ìwọ̀n ìkópa | 0.3 * VDD (rẹ̀lẹ̀), 0.7 * VDD (ga) |
| Ìdìndì folti / RDS(on) / ìkúnlọ́wọ́ | N/A |
| Àwọn ìwọ̀n ooru | -40 sí 85 °C |
| Àpótí | QFN |
| Àwọn àkíyèsí / àwọn oríṣi | Ó ní olùṣàkóso folti inú |
- Rí i dájú pé folti ìpèsè tó tọ́ (2.4 - 3.6 V) wà láti yẹra fún ìbàjẹ́ module náà.
- Lo resistor ìfà sókè fún àwọn ìlà SDA àti SCL bí kò bá ti wà lórí bọ́ọ̀dù rẹ.
- Ṣààyẹ̀wò àdírẹ́sì I2C (àfẹ́nusọ̀ jẹ́ 0x68) kí o sì ṣàtúnṣe pin ADO ní ìbámu pẹ̀lú àwọn àdírẹ́sì mìíràn.
- Ṣàyẹ̀wò àwọn ìsopọ̀ fún ìdúróṣinṣin láti ṣègbọ́dọ̀gbọ́n àwọn ìwọ̀n tí kò tọ́.
- Ṣe ìmúdọ́gba àwọn sẹ́nsọ nígbà gbogbo fún àwọn ìwọ̀n pípéye.
Àwọn Ìtọ́sọ́nà Ìsopọ̀


Láti sopọ̀ MPU-9250 sí Arduino rẹ, bẹ̀rẹ̀ nípa sísopọ̀ pin VCC lórí MPU-9250 sí pin 5V lórí Arduino. Module náà ní olùṣàkóso inú, nítorí náà ó ṣeé ṣe láti fi 5V ṣe agbára rẹ̀. Ní àtẹ̀yìnwá, sopọ̀ pin GND sí ilẹ̀ (GND) lórí Arduino. Fún ìbára ṣe data, sopọ̀ pin SDA sí pin A4 lórí Arduino àti pin SCL sí pin A5. Ìtòlẹ́sẹẹsẹ yìí jẹ́ àfẹ́nusọ̀ fún ọ̀pọ̀lọpọ̀ àwọn bọ́ọ̀dù Arduino.
Bí o bá ń lo Arduino Mega, àwọn pin SDA àti SCL wà ní àwọn pin 20 àti 21, ní àtẹ̀yìnwá. Rí i dájú pé àwọn ìsopọ̀ náà dúró ṣinṣin láti yẹra fún àwọn àṣìṣe ìbára ṣe. Bí o bá nílò láti yí àdírẹ́sì I2C ti MPU-9250 padà, sopọ̀ pin ADO sí 5V láti ṣètò rẹ̀ sí 0x69. Yíyọ kúrò yóò dá a padà sí 0x68.
Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà
Nínú àkọlé Arduino, a bẹ̀rẹ̀ nípa fífi library MPU9250 sí i àti ṣíṣe àpẹẹrẹ kan ti sẹ́nsọ náà:
#include "MPU9250.h"
MPU9250 IMU(Wire,0x68);
Kóòdù náà ń bẹ̀rẹ̀ sẹ́nsọ náà kí ó sì bẹ̀rẹ̀ ìbára ṣe nínú iṣẹ́ setup():
void setup() {
Serial.begin(115200);
status = IMU.begin();
if (status < 0) {
Serial.println("IMU initialization unsuccessful");
while(1) {}
}
}
Nínú iṣẹ́ loop(), a ń ka àti tẹ̀ àwọn data sẹ́nsọ jáde nígbà gbogbo:
void loop() {
IMU.readSensor();
Serial.print("AccelX: ");
Serial.print(IMU.getAccelX_mss(),6);
// Àwọn gbólóhùn títẹ̀ síwájú fún àwọn ẹ̀yà mìíràn
}
Apá yìí ń ka àwọn iye accelerometer, gyroscope, àti magnetometer, tí ó ń fi wọ́n hàn nínú Serial Monitor. Rí i dájú pé o wo kóòdù kíkún tí a tẹ̀ sí ìsàlẹ̀ àpilẹ̀kọ náà fún ìmúṣẹ kíkún.
Ìfihàn / Ohun Tí O Lè Retí
Nígbà tí o bá ṣiṣẹ́ kóòdù náà, o yẹ kí o rí àwọn iye sẹ́nsọ tí ń yípadà ní àkókò gidi lórí Serial Monitor. Àwọn iye accelerometer yóò yípadà bí o ṣe ń gbé sẹ́nsọ náà, nígbà tí àwọn iye gyroscope yóò fi ìyára yíyí hàn. Magnetometer yóò fún ọ ní agbára aṣọ́gun oòrùn ní ẹ̀yà mẹ́ta, èyí tí a le lò láti pinnu ìtọ́kasí. Ṣọ́ra fún àwọn ìkópa tí ń fò, nítorí wọ́n le yọrí sí àwọn ìwọ̀n tí kò tọ́ (nínú fídíò ní 12:30).
Àwọn orí-ọ̀rọ̀
- Ìfáàwọ́ (00:00)
- Àlàyé Ohun-èlò (01:30)
- Àwọn Ìtọ́ni Ìsopọ̀ (04:00)
- Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́wọ́nà (06:00)
- Ìfihàn (10:00)
/*
* Library: https://github.com/bolderflight/MPU9250
Basic_I2C.ino
Brian R Taylor
brian.taylor@bolderflight.com
Copyright (c) 2017 Bolder Flight Systems
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Updated by Ahmad Shamshiri on July 9, 2018 for Robojax.com
* in Ajax, Ontario, Canada
* Watch instruction video for this code:
For this sketch you need to connect:
VCC to 5V and GND to GND of Arduino
SDA to A4 and SCL to A5
S20A is 3.3V voltage regulator MIC5205-3.3BM5
*/
#include "MPU9250.h"
// An MPU9250 object with the MPU-9250 sensor on I2C bus 0 with address 0x68
MPU9250 IMU(Wire,0x68);
int status;
void setup() {
// Serial to display data
Serial.begin(115200);
while(!Serial) {}
// Start communication with IMU
status = IMU.begin();
if (status < 0) {
Serial.println("IMU initialization unsuccessful");
Serial.println("Check IMU wiring or try cycling power");
Serial.print("Status: ");
Serial.println(status);
while(1) {}
}
}
void loop() {
// Read the sensor
IMU.readSensor();
// Display the data
Serial.print("AccelX: ");
Serial.print(IMU.getAccelX_mss(),6);
Serial.print("\t");
Serial.print("AccelY: ");
Serial.print(IMU.getAccelY_mss(),6);
Serial.print("\t");
Serial.print("AccelZ: ");
Serial.println(IMU.getAccelZ_mss(),6);
Serial.print("GyroX: ");
Serial.print(IMU.getGyroX_rads(),6);
Serial.print("\t");
Serial.print("GyroY: ");
Serial.print(IMU.getGyroY_rads(),6);
Serial.print("\t");
Serial.print("GyroZ: ");
Serial.println(IMU.getGyroZ_rads(),6);
Serial.print("MagX: ");
Serial.print(IMU.getMagX_uT(),6);
Serial.print("\t");
Serial.print("MagY: ");
Serial.print(IMU.getMagY_uT(),6);
Serial.print("\t");
Serial.print("MagZ: ");
Serial.println(IMU.getMagZ_uT(),6);
Serial.print("Temperature in C: ");
Serial.println(IMU.getTemperature_C(),6);
Serial.println();
delay(200);
}
Orisun & itọkasi
-
Ita gbangbaDatasheet for MPU-9250invensense.com
-
Ita gbangbaGet the MPU-9250 library from GitHubgithub.com
-
Ita gbangbaMPU-9250 register mapinvensense.com
Fáìlìs📁
Ko si awọn faili ti o wa.