ARDUINO GY87 аралас сенсордың сынақ эскизі
Кіріспе
Егер сіз әуесқой жасаушы немесе робототехника әуесқойы болсаңыз, сіз осы кішкентай, бірақ қуатты модульді кездестірдіңіз. Егер сіз әуесқой жасаушы немесе робототехника әуесқойы болсаңыз, сіз осы кішкентай, бірақ қуатты 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 осьті қозғалысты бақылау модулі. Ол квадрокоптер және басқа да ұшқышсыз ұшатын аппараттар (ұшқышсыз ұшу аппараттары) сияқты роботтық жобаларда көп қолданылады, өйткені ол бағдар мен қозғалысты дәл өлшей және бақылай алады. Ол навигация, ойын және виртуалды шындық сияқты басқа қолданбаларда да қолданылады.
Аппараттық құрамдас бөліктер
Arduino-мен GY-87 IMU MPU6050 HMC5883L BMP085 модулін интерфейстеу үшін сізге келесі жабдық қажет болады.
Құрамдас бөліктер | Мән | Саны |
Arduino UNO | – | 1 |
MPU6050 Сенсор модулі | GY-87 | 1 |
Нан тақтасы | – | 1 |
Секіргіш сымдар | – | 1 |
Arduino бар GY-87
Енді сіз 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 орнату жолы» бойынша қарапайым қадамдық нұсқаулық берілген.
Кітапханаларды орнату
Кодты жүктеп салуды бастамас бұрын, /Program мекенжайында келесі кітапханаларды жүктеп алып, ашыңыз Files (x86)/Arduino/Libraries (әдепкі) сенсорды Arduino тақтасымен бірге пайдалану үшін. Міне, «Arduino IDE-де кітапханаларды қалай қосуға болады» бойынша қарапайым қадамдық нұсқаулық.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Қарапайым
Код
Енді келесі кодты көшіріп, оны Arduino IDE бағдарламалық құралына жүктеңіз.
#“I2Cdev.h” қосу #“MPU6050.h” қосу #қосу #қосу MPU085 акселгиро; Adafruit_BMP5883 bmp; HMC6050L_Қарапайым компас; 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 егер (!bmp.begin()) { Serial.println("Жарамды BMP2 сенсоры табылмады, (!bmp.begin()) тексеріңіз) { Serial.println("Жарамды BMP085 сенсоры табылмады, тексеру Serial.println(accelgyro.testConnection() ? “MPU085 қосылымы сәтті болды” : “MPU085 қосылымы сәтсіз аяқталды”); accelgyro.setI6050CBypassEnabled(true); // hmc6050L шлюзіне айналма режимді орнатыңыз // hmc2L(S5883) инициализациясы 5883, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // белсенділікті тексеру үшін Arduino жарық диодты конфигурациялау pinMode(LED_PIN, OUTPUT); } жарамсыз цикл() {
Serial.print («Температура = «); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print («Қысым = «);
Serial.print(bmp.readPressure()); Serial.println("Па"); // 'стандартты' барометрлік есептеп биіктікті есептеу // қысым 1013.25 миллибар = 101325 Pascal Serial.print(“Биіктік = “); Serial.print(bmp.readAltitude()); Serial.println («метр»); Serial.print(“Тығыздау деңгейіндегі қысым (есептелген) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println("Па");
Serial.print («Нақты биіктік = «); Serial.print(bmp.readAltitude(101500));
Serial.println («метр»); // 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(тақырып); // белсенділікті көрсету үшін жарық диоды жыпылықтайды blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); кешіктіру(500); }
Оны сынап көрейік
Кодты жүктеп салғаннан кейін, тізбекті тексеру уақыты келді! Arduino бағдарламасындағы код сенсорлармен олардың кітапханаларын пайдаланып интерфейс жасайды, бұл оған сенсор деректерін оқуға және сенсорлардың әртүрлі конфигурацияларын орнатуға мүмкіндік береді. Содан кейін ол сенсор деректерін сериялық порт арқылы басып шығарады. Жарық диодты шам схеманың бірдеңе істеп жатқанын көрсету үшін қолданылады. Бұл цикл функциясы іске қосылған сайын ЖШД жыпылықтайтынын білдіреді, бұл код сенсор мәндерін белсенді түрде оқып жатқанын көрсетеді.
Жұмыс туралы түсініктеме
Код - бұл схеманың жұмысы негізделген негізгі нәрсе. Сонымен, кодты түсінейік:.
- Біріншіден, ол сенсорлармен интерфейс үшін бірнеше кітапхананы қамтиды:
- “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 сенсоры begin() әдісін шақыру арқылы инициализацияланады. Егер бұл сенсорды табу мүмкін емес екенін көрсететін жалған мәнін қайтарса, бағдарлама шексіз циклге еніп, сериялық порт арқылы қате туралы хабарды басып шығарады.
- MPU6050 сенсоры initialize() әдісін шақыру және оның дұрыс жұмыс істеп тұрғанын тексеру арқылы инициализацияланады. Және ол MPU2 үшін қосылған I6050C айналма жолын орнатты.
- HMC5883L сенсоры SetDeclination, SetS сияқты кейбір функцияларды шақыру арқылы іске қосылады.amplingMode, SetScale және SetOrientation, сенсор үшін әртүрлі конфигурацияларды орнатуға арналған.
- Loop() функциясында код үш сенсордан деректерді оқиды және оны сериялық порт арқылы басып шығарады:
- Ол сенсордан теңіз деңгейіндегі температураны, қысымды, биіктікті және қысымды оқиды.
- Ол MPU6050 сенсорынан шикі үдеу мен гироскоп өлшемдерін оқиды.
- Ол HMC5883L сенсорының тақырыбын оқиды, бұл сенсор көрсететін бағыт пен магниттік солтүстік жатқан бағыт арасындағы бұрыш.
- Соңында ол белсенділікті көрсету үшін жарық диоды жыпылықтайды және сенсорларды қайта оқудан бұрын біраз күтеді.
Құжаттар / Ресурстар
![]() |
ARDUINO GY87 аралас сенсордың сынақ эскизі [pdf] Пайдаланушы нұсқаулығы GY87 аралас сенсордың сынақ нобайы, GY87, аралас сенсордың сынақ нобайы, сенсордың сынақ нобайы, сынақ эскизі |