ARDUINO GY87 Combined Sensor Test Sketch
Introduction
Эгерде сиз ышкыбоз жасоочу же робототехника ышкыбозу болсоңуз, анда сиз бул кичинекей, бирок күчтүү модулга туш болдуңуз. Эгер сиз ышкыбоз жасоочу же робототехника ышкыбозу болсоңуз, анда сиз BMP085 барометринин кичинекей, бирок күчтүү модулун кезиктирдиңиз. GY-87 IMU модулу - бул өзүн-өзү теңдөөчү робот же квадрокоптер сыяктуу долбоорлоруңузга кыймылды сезүүнү кошуунун эң сонун жолу.
Бирок сиз GY-87 IMU модулу менен эксперимент жүргүзүүдөн мурун, аны Arduino тактаңыз менен кантип интерфейстөө керектигин билишиңиз керек. Бул блог келип жаткан жери! Кийинки абзацтарда биз GY-87 IMU модулунун негиздерин, аны кантип орнотууну жана сенсордун берилиштерин окуу үчүн Arduino кодун кантип жазууну карайбыз. Биз ошондой эле жалпы көйгөйлөрдү чечүү үчүн кээ бир кеңештерди жана ресурстарды беребиз.
Андыктан, эгер сиз баштоого даяр болсоңуз, келиңиз, GY-87 IMU модулун Arduino менен байланыштырууну үйрөнөлү!
GY-87 IMU MPU6050 деген эмне
GY-87 сыяктуу инерциялык өлчөө бирдиги (IMU) модулдары MPU6050 акселерометр/гироскоп, HMC5883L магнитометр жана BMP085 барометрдик басым сенсору сыяктуу көптөгөн сенсорлорду бир пакетке бириктирет. Демек, GY-87 IMU MPU6050 9 огу гироскопту, 3 огу акселерометрди, 3 огу магнитометрди жана санариптик кыймыл процессорун бириктирген бардыгы бир 3 огу кыймылды көзөмөлдөө модулу. Ал квадрокоптер жана башка учкучсуз учуучу аппараттар (UAV) сыяктуу роботтук долбоорлордо көп колдонулат, анткени ал багытты жана кыймылды так өлчөп, көзөмөлдөй алат. Ал ошондой эле навигация, оюн жана виртуалдык реалдуулук сыяктуу башка тиркемелерде колдонулат.
Аппараттык компоненттер
GY-87 IMU MPU6050 HMC5883L BMP085 модулун Arduino менен интерфейстөө үчүн сизге төмөнкү жабдык керек болот.
Компоненттер | Нарк | Саны |
Arduino UNO | – | 1 |
MPU6050 Сенсор модулу | GY-87 | 1 |
Breadboard | – | 1 |
Jumper Wires | – | 1 |
GY-87 Arduino менен
Эми сиз GY-87ди түшүнгөнүңүздөн кийин, Arduino менен интерфейске чыгууга убакыт келди. Бул үчүн, ээрчиңиз Эми сиз GY-87ди түшүнгөнүңүздөн кийин, Arduino менен интерфейске чыгууга убакыт келди. Бул үчүн, ээрчиңиз
БУУнун
Төмөндө берилген схемага ылайык байланыштарды түзүңүз
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoЗымдар / Туташуулар
Arduino | MPU6050 сенсор |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Arduino IDE орнотуу
Биринчиден, Arduino IDE программасын анын расмий сайтынан орнотушуңуз керек webArduino сайты. Бул жерде "Arduino IDEди кантип орнотуу керек" боюнча жөнөкөй кадам кадам.
Китепканаларды орнотуу
Кодду жүктөөнү баштоодон мурун, /Программада төмөнкү китепканаларды жүктөп алып, ачыңыз Files (x86)/Arduino/Libraries (демейки) сенсорду Arduino тактасы менен колдонуу үчүн. Бул жерде "Arduino IDEге китепканаларды кантип кошуу керек" боюнча жөнөкөй кадам-кадам көрсөтмөсү.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Жөнөкөй
Code
Эми төмөнкү кодду көчүрүп, аны Arduino IDE программасына жүктөңүз.
#include “I2Cdev.h” #include “MPU6050.h” #include #киргизүү MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simple Compass; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // түзмөктөрдү инициализациялоо Serial.println(“I13C түзмөктөрүн инициализациялоо…”); // bmp9600 инициализациясы if (!bmp.begin()) { Serial.println("Жарактуу BMP2 сенсору табылган жок, текшериңиз (!bmp.begin()) { Serial.println("Жарактуу BMP085 сенсору табылган жок, check Serial.println(accelgyro.testConnection() ? “MPU085 байланышы ийгиликтүү болбой калды” : “MPU085 байланышы ишке ашпай калды”); 6050, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // pinMode активдүүлүгүн текшерүү үчүн Arduino LEDди конфигурациялоо (LED_PIN, OUTPUT); } void loop() {
Serial.print("Температура = "); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print("Басым = ");
Serial.print(bmp.readPressure()); Serial.println("Pa"); // "Стандарттык" барометрдик бийиктикти эсептөө // басым 1013.25 миллибар = 101325 Pascal Serial.print(“Бийиктик = “); Serial.print(bmp.readAltitude()); Serial.println("метр"); Serial.print("Пломба деңгээлиндеги басым (эсептелген) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print("Чыныгы бийиктик = "); Serial.print(bmp.readAltitude(101500));
Serial.println("meter"); // accelgyro.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz) түзмөгүнөн чийки аксел/гиро өлчөөлөрүн окуу; // өтмөк менен бөлүнгөн accel/gyro x/y/z маанилерин көрсөтүү Serial.print(“a/g:\t”); Serial.print(ax);
Serial.print(“\t”); Serial.print(ay); Serial.print(“\t”); Serial.print(az);
Serial.print(“\t”); Serial.print(gx); Serial.print(“\t”); Serial.print(gy);
Serial.print(“\t”); Serial.println(gz); калкыма баш =
Compass.GetHeadingDegrees(); Serial.print("Белги: \t"); Serial.println( рубрика ); // активдүүлүктү көрсөтүү үчүн LEDди жымыңдоо blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); delay(500); }
Келгиле, аны сынап көрөлү
Кодду жүктөп бергенден кийин, схеманы сынап көрүүгө убакыт келди! Arduino программасындагы код сенсорлор менен алардын китепканаларын колдонуу менен интерфейстешет, бул ага сенсордун маалыматтарын окууга жана сенсорлордун ар кандай конфигурацияларын орнотууга мүмкүндүк берет. Андан кийин ал сериялык порт аркылуу сенсордун маалыматтарын басып чыгарат. LED чынжыр бир нерсе кылып жатканын көрсөтүү үчүн колдонулат. Бул цикл функциясы иштетилген сайын LED жыпылықтап, код сенсордун маанилерин активдүү окуп жатканын билдирет.
Иш түшүндүрмөсү
Код схеманын иштөөсү негизделген негизги нерсе. Ошентип, кодду түшүнүп көрөлү:.
- Биринчиден, ал сенсорлор менен иштөө үчүн бир нече китепканаларды камтыйт:
- “I2Cdev.h” жана “MPU6050.h” MPU6050 6-ок акселерометр/гироскоп сенсору үчүн китепканалар
- "Adafruit_BMP085.h" BMP085 барометрдик басым сенсор үчүн китепкана болуп саналат.
- "HMC5883L_Simple.h" HMC5883L магнитометр сенсор үчүн китепкана болуп саналат.
- Андан кийин ал үч сенсор үчүн глобалдык объекттерди түзөт: MPU6050 accelgyro, Adafruit_BMP085 bmp жана HMC5883L_Simple Compass.
- Андан кийин, ал MPU6050 акселерометри үчүн ax, ay жана az сыяктуу сенсордун маанилерин сактоо жана HMC5883L магнитометрине багыт алуу үчүн кээ бир өзгөрмөлөрдү аныктайт. Жана ал LED_PIN константасын жана blinkState өзгөрмөсүн аныктайт.
- setup() функциясы сериялык байланышты баштап, I2C байланышын баштайт. Андан кийин ал үч сенсорду инициализациялайт:
- BMP085 сенсор start() ыкмасын чакыруу менен инициализацияланат. Эгер бул сенсор табылбай калганын көрсөтүп, жалган деп кайтарса, программа чексиз циклге кирип, сериялык порт аркылуу ката билдирүүсүн басып чыгарат.
- MPU6050 сенсору initialize() ыкмасын чакырып, анын туура иштеп жатканын текшерүү аркылуу инициализацияланат. Ал MPU2 үчүн иштетилген I6050C айланып өтүүнү койду.
- HMC5883L сенсору SetDeclination, SetS сыяктуу кээ бир функцияларды чакыруу менен инициализацияланат.amplingMode, SetScale жана SetOrientation, сенсор үчүн ар кандай конфигурацияларды орнотуу үчүн.
- Loop() функциясында код үч сенсордон маалыматтарды окуп, сериялык порт аркылуу басып чыгарат:
- Ал сенсордон деңиз деңгээлиндеги температураны, басымды, бийиктикти жана басымды окуйт.
- Ал MPU6050 сенсорунан чийки ылдамданууну жана гироскоптун өлчөөлөрүн окуйт.
- Ал HMC5883L сенсорунун рубрикасын окуйт, бул сенсор көрсөткөн багыт менен магниттик түндүк жаткан багыттын ортосундагы бурч.
- Акыр-аягы, ал активдүүлүктү көрсөтүү үчүн LEDди күйгүзөт жана сенсорлорду кайра окуудан мурун бир аз күтөт.
Документтер / Ресурстар
![]() |
ARDUINO GY87 Combined Sensor Test Sketch [pdf] Колдонуучунун колдонмосу GY87 Combined Sensor Test Sketch, GY87, Combined Sensor Test Sketch, Sensor Test Sketch, Test Sketch |