АРДУИНО-гоо

ARDUINO GY87 Combined Sensor Test Sketch

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 тэнхлэгт хөдөлгөөнийг хянах бүх модуль юм. Энэ нь квадрокоптер болон бусад нисгэгчгүй агаарын тээврийн хэрэгсэл (UAVs) зэрэг роботын төслүүдэд маш их ашиглагддаг, учир нь энэ нь чиг баримжаа, хөдөлгөөнийг нарийн хэмжиж, хянах боломжтой юм. Энэ нь мөн навигаци, тоглоом, виртуал бодит байдал зэрэг бусад програмуудад ашиглагддаг.

Техник хангамжийн бүрэлдэхүүн хэсгүүд

GY-87 IMU MPU6050 HMC5883L BMP085 модулийг Arduino-той холбоход танд дараах техник хангамж хэрэгтэй болно.

Бүрэлдэхүүн хэсгүүд Үнэ цэнэ Тоо ширхэг
Arduino UNO 1
MPU6050 Мэдрэгчийн модуль GY-87 1
Талхны самбар 1
Холболтын утас 1

Arduino-той GY-87 

Одоо та GY-87-г ойлгосон тул Arduino-тай холбогдох цаг болжээ. Үүнийг хийхийн тулд дагаарай. Одоо та GY-87-г ойлгосон тул Arduino-той холбогдох цаг болжээ. Үүнийг хийхийн тулд дага

Бүдүүвч

Доор өгөгдсөн хэлхээний схемийн дагуу холболтыг хийнэ

GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoARDUINO-GY87-хосолсон-мэдрэгч-туршилт-норог зураг 1Утас / Холболт

Arduino MPU6050 мэдрэгч
5V VCC
GND GND
A4 SDA
A5 SCA

Arduino IDE суулгаж байна 

Эхлээд та Arduino IDE програм хангамжийг албан ёсны програмаас нь суулгах хэрэгтэй webArduino сайт. Энд "Arduino IDE-г хэрхэн суулгах талаар" алхам алхмаар энгийн гарын авлага байна.

Номын сангуудыг суулгаж байна 

Та кодыг байршуулж эхлэхээсээ өмнө /Program-аас дараах сангуудыг татаж аваад задлаарай FileМэдрэгчийг Arduino самбартай ашиглахын тулд s (x86)/Arduino/Libraries (анхдагч). Энд "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 = худал; хүчингүй тохиргоо() { Serial.begin(16); Wire.begin(); // төхөөрөмжүүдийг эхлүүлэх Serial.println("I13C төхөөрөмжүүдийг эхлүүлж байна..."); // bmp9600-г эхлүүлэх (!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 (LED_PIN, OUTPUT) шалгах Arduino LED-г тохируулах; } хүчингүй давталт() {
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(“\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); саатал (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 мэдрэгчийг begin() аргыг дуудаж эхлүүлдэг. Хэрэв энэ нь мэдрэгч олдохгүй байгааг харуулж, худал буцаавал програм хязгааргүй давталт руу орж, цуваа портоор алдааны мэдэгдлийг хэвлэнэ.
  • MPU6050 мэдрэгчийг initialize() аргыг дуудаж, зөв ​​ажиллаж байгаа эсэхийг шалгаснаар эхлүүлдэг. Мөн MPU2-д зориулсан I6050C bypass-ийг идэвхжүүлсэн.
  • HMC5883L мэдрэгчийг SetDeclination, SetS гэх мэт зарим функцийг дуудаж эхлүүлдэг.amplingMode, SetScale болон SetOrientation нь мэдрэгчийн өөр өөр тохиргоог тохируулахад зориулагдсан.
  • Loop() функцэд код нь гурван мэдрэгчээс өгөгдлийг уншиж, цуваа портоор хэвлэнэ.
  • Энэ нь мэдрэгчээс далайн түвшний температур, даралт, өндөр, даралтыг уншдаг.
  • Энэ нь MPU6050 мэдрэгчээс түүхий хурдатгал болон гироскопын хэмжилтийг уншдаг.
  • Энэ нь HMC5883L мэдрэгчээс гарчгийг уншдаг бөгөөд энэ нь мэдрэгчийн зааж буй чиглэл ба соронзон хойд зүгийн чиглэлийн хоорондох өнцөг юм.
  • Эцэст нь энэ нь үйл ажиллагааг харуулахын тулд LED-г анивчих ба мэдрэгчийг дахин уншихаас өмнө хэсэг хүлээдэг.

Баримт бичиг / нөөц

ARDUINO GY87 Combined Sensor Test Sketch [pdf] Хэрэглэгчийн гарын авлага
GY87 Хосолсон мэдрэгчийн туршилтын зураг, GY87, мэдрэгчийн хосолсон туршилтын тойм, мэдрэгчийн туршилтын тойм, туршилтын тойм

Лавлагаа

Сэтгэгдэл үлдээгээрэй

Таны имэйл хаягийг нийтлэхгүй. Шаардлагатай талбаруудыг тэмдэглэсэн *