ARDUINO GY87 Combined Sensor Test Sketch
ແນະນຳ
ຖ້າທ່ານເປັນຜູ້ສ້າງຕົວຢາກ ຫຼືຜູ້ທີ່ມັກຫຸ່ນຍົນ, ທ່ານໄດ້ພົບກັບໂມດູນຂະໜາດນ້ອຍແຕ່ມີພະລັງນີ້ແລ້ວ ຖ້າເຈົ້າເປັນຜູ້ສ້າງຕົວຢາກ ຫຼືຜູ້ທີ່ມັກຫຸ່ນຍົນ, ເຈົ້າໄດ້ພົບກັບໂມດູນຂະໜາດນ້ອຍແຕ່ມີພະລັງ BMP085 barometer ນີ້. ໂມດູນ GY-87 IMU ເປັນວິທີທີ່ດີທີ່ຈະເພີ່ມການຮັບຮູ້ການເຄື່ອນໄຫວໃຫ້ກັບໂຄງການຂອງທ່ານ, ເຊັ່ນ: ຫຸ່ນຍົນປັບສົມດຸນຕົນເອງ ຫຼື quadcopter.
ແຕ່ກ່ອນທີ່ທ່ານຈະສາມາດເລີ່ມຕົ້ນການທົດລອງກັບໂມດູນ GY-87 IMU, ທ່ານຈໍາເປັນຕ້ອງຮູ້ວິທີການໂຕ້ຕອບກັບກະດານ Arduino ຂອງທ່ານ. ນັ້ນແມ່ນບ່ອນທີ່ blog ນີ້ເຂົ້າມາ! ໃນວັກຕໍ່ໄປນີ້, ພວກເຮົາຈະກວມເອົາພື້ນຖານຂອງໂມດູນ GY-87 IMU, ວິທີການຕັ້ງມັນ, ແລະວິທີການຂຽນລະຫັດ Arduino ເພື່ອອ່ານຂໍ້ມູນເຊັນເຊີ. ພວກເຮົາຍັງຈະໃຫ້ຄໍາແນະນໍາ ແລະຊັບພະຍາກອນບາງຢ່າງສໍາລັບການແກ້ໄຂບັນຫາທົ່ວໄປ.
ດັ່ງນັ້ນ, ຖ້າທ່ານພ້ອມທີ່ຈະເລີ່ມຕົ້ນ, ໃຫ້ພວກເຮົາເຂົ້າໄປໃນແລະຮຽນຮູ້ກ່ຽວກັບການຕິດຕໍ່ພົວພັນຂອງໂມດູນ GY-87 IMU ກັບ Arduino!
GY-87 IMU MPU6050 ແມ່ນຫຍັງ
ໂມດູນຫນ່ວຍວັດແທກ inertial (IMU) ເຊັ່ນ GY-87 ລວມເຊັນເຊີຈໍານວນຫຼາຍເຂົ້າໄປໃນຊຸດດຽວ, ເຊັ່ນ: MPU6050 accelerometer/gyroscope, ເຄື່ອງວັດແທກແມ່ເຫຼັກ HMC5883L, ແລະເຊັນເຊີຄວາມກົດດັນ barometric BMP085. ດັ່ງນັ້ນ, GY-87 IMU MPU6050 ແມ່ນໂມດູນຕິດຕາມການເຄື່ອນໄຫວ 9 ແກນແບບທັງໝົດໃນໜຶ່ງດຽວ ທີ່ປະສົມປະສານ 3 ແກນ, ເຄື່ອງວັດຄວາມໄວ 3 ແກນ, 3 ແກນ, ແລະໂຮງງານຜະລິດການເຄື່ອນໄຫວດິຈິຕອນ. ມັນຖືກນໍາໃຊ້ຫຼາຍໃນໂຄງການຫຸ່ນຍົນ, ເຊັ່ນ quadcopters ແລະຍານພາຫະນະທາງອາກາດທີ່ບໍ່ມີຄົນຂັບ (UAVs), ເນື່ອງຈາກວ່າມັນສາມາດວັດແທກແລະຕິດຕາມທິດທາງແລະການເຄື່ອນໄຫວໄດ້ຢ່າງຖືກຕ້ອງ. ມັນຍັງຖືກນໍາໃຊ້ໃນຄໍາຮ້ອງສະຫມັກອື່ນໆ, ເຊັ່ນການນໍາທາງ, ເກມ, ແລະ virtual reality.
ອົງປະກອບຮາດແວ
ທ່ານຈະຕ້ອງການຮາດແວຕໍ່ໄປນີ້ສໍາລັບ Interfacing GY-87 IMU MPU6050 HMC5883L BMP085 Module ກັບ Arduino.
ອົງປະກອບ | ມູນຄ່າ | ຈຳນວນ |
Arduino UNO | – | 1 |
MPU6050 ໂມດູນເຊັນເຊີ | ຈີ -87 | 1 |
ກະດານເຂົ້າຈີ່ | – | 1 |
ສາຍ Jumper | – | 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 ຈາກຢ່າງເປັນທາງການຂອງຕົນ webເວັບໄຊ Arduino. ນີ້ແມ່ນຄໍາແນະນໍາຂັ້ນຕອນໂດຍຂັ້ນຕອນງ່າຍໆກ່ຽວກັບ "ວິທີການຕິດຕັ້ງ Arduino IDE."
ການຕິດຕັ້ງຫ້ອງສະຫມຸດ
ກ່ອນທີ່ທ່ານຈະເລີ່ມຕົ້ນການອັບໂຫລດລະຫັດ, ດາວນ໌ໂຫລດແລະ unzip ຫ້ອງສະຫມຸດດັ່ງຕໍ່ໄປນີ້ຢູ່ / ໂຄງການ Files (x86)/Arduino/Libraries (ຄ່າເລີ່ມຕົ້ນ) ເພື່ອໃຊ້ເຊັນເຊີກັບກະດານ Arduino. ນີ້ແມ່ນຄໍາແນະນໍາຂັ້ນຕອນໂດຍຂັ້ນຕອນງ່າຍໆກ່ຽວກັບ "ວິທີການເພີ່ມຫ້ອງສະຫມຸດໃນ Arduino IDE."
- MPU6050
- Adafruit_BMP085
- HMC5883L_ງ່າຍດາຍ
ລະຫັດ
ຕອນນີ້ສຳເນົາລະຫັດຕໍ່ໄປນີ້ແລ້ວອັບໂຫຼດມັນໃສ່ຊອບແວ 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(); // initialize devices Serial.println(“Initializing I13C devices…”); // initialize bmp9600 if (!bmp.begin()) { Serial.println(“ບໍ່ສາມາດຊອກຫາເຊັນເຊີ BMP2 ທີ່ຖືກຕ້ອງ, ກວດເບິ່ງ (!bmp.begin()) { Serial.println(“ບໍ່ສາມາດຊອກຫາເຊັນເຊີ BMP085 ທີ່ຖືກຕ້ອງ, ກວດເບິ່ງ Serial.println(accelgyro.testConnection() ? “ການເຊື່ອມຕໍ່ MPU085 ສຳເລັດ” : “ການເຊື່ອມຕໍ່ MPU085 ລົ້ມເຫລວ”); accelgyro.setI6050CBypassEnabled(true); 6050, 'E');amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // configure Arduino LED ສໍາລັບການກວດສອບກິດຈະກໍາ pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“ອຸນຫະພູມ = “); Serial.print(bmp.readTemperature());
Serial.println(“*C”); Serial.print(“Pressure = “);
Serial.print(bmp.readPressure()); Serial.println(“Pa”); // ຄິດໄລ່ລະດັບຄວາມສູງສົມມຸດວ່າ 'ມາດຕະຖານ' barometric // ຄວາມກົດດັນຂອງ 1013.25 millibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println(“ແມັດ”); Serial.print(“ຄວາມກົດດັນຢູ່ລະດັບທະເລ (ຄິດໄລ່) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(“Pa”);
Serial.print(“ລະດັບຄວາມສູງຈິງ = “); Serial.print(bmp.readAltitude(101500));
Serial.println(“ແມັດ”); // ອ່ານການວັດແທກ accel/gyro ດິບຈາກອຸປະກອນ accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // ສະແດງ tab-separated accel/gyro x/y/z ຄ່າ Serial.print(“a/g:\t”); Serial.print(ຂວານ);
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 ພົວພັນກັບເຊັນເຊີໂດຍໃຊ້ຫ້ອງສະຫມຸດຂອງພວກເຂົາ, ເຊິ່ງອະນຸຍາດໃຫ້ມັນອ່ານຂໍ້ມູນເຊັນເຊີແລະກໍານົດການຕັ້ງຄ່າຕ່າງໆຂອງເຊັນເຊີ. ຫຼັງຈາກນັ້ນ, ມັນພິມອອກຂໍ້ມູນເຊັນເຊີຜ່ານພອດ serial. LED ຖືກນໍາໃຊ້ເພື່ອສະແດງໃຫ້ເຫັນວ່າວົງຈອນກໍາລັງເຮັດບາງສິ່ງບາງຢ່າງ. ນີ້ຫມາຍຄວາມວ່າ LED ກະພິບທຸກຄັ້ງທີ່ຟັງຊັນ loop ຖືກແລ່ນ, ສະແດງໃຫ້ເຫັນວ່າລະຫັດກໍາລັງອ່ານຄ່າເຊັນເຊີຢ່າງຫ້າວຫັນ.
ຄໍາອະທິບາຍການເຮັດວຽກ
ລະຫັດແມ່ນສິ່ງທີ່ສໍາຄັນທີ່ການເຮັດວຽກຂອງວົງຈອນແມ່ນອີງໃສ່. ດັ່ງນັ້ນ, ໃຫ້ເຂົ້າໃຈລະຫັດ:.
- ກ່ອນອື່ນ ໝົດ, ມັນປະກອບມີຫ້ອງສະ ໝຸດ ຫຼາຍເພື່ອໂຕ້ຕອບກັບເຊັນເຊີ:
- “I2Cdev.h” ແລະ “MPU6050.h” ແມ່ນຫ້ອງສະໝຸດສຳລັບເຊັນເຊີ MPU6050 6-axis accelerometer/gyroscope.
- “Adafruit_BMP085.h” ເປັນຫ້ອງສະໝຸດສຳລັບເຊັນເຊີຄວາມດັນບາໂຣແມັດ BMP085.
- “HMC5883L_Simple.h” ເປັນຫ້ອງສະໝຸດສຳລັບເຊັນເຊີແມ່ເຫຼັກ HMC5883L.
- ຫຼັງຈາກນັ້ນ, ມັນຈະສ້າງວັດຖຸທົ່ວໂລກສໍາລັບສາມເຊັນເຊີ: MPU6050 accelgyro, Adafruit_BMP085 bmp, ແລະ HMC5883L_Simple Compass.
- ຕໍ່ໄປ, ມັນກໍານົດຕົວແປບາງຢ່າງເພື່ອເກັບຄ່າຂອງເຊັນເຊີ, ເຊັ່ນ: ax, ay, ແລະ az ສໍາລັບ accelerometer ຂອງ MPU6050 ແລະໄປຫາເຄື່ອງວັດແທກແມ່ເຫຼັກຂອງ HMC5883L. ແລະມັນກໍານົດຄ່າຄົງທີ່ LED_PIN ແລະຕົວແປ blinkState.
- ຟັງຊັນ setup() ເລີ່ມການສື່ສານ serial ແລະເລີ່ມການສື່ສານ I2C. ຫຼັງຈາກນັ້ນ, ມັນເລີ່ມຕົ້ນສາມເຊັນເຊີ:
- ເຊັນເຊີ BMP085 ແມ່ນເລີ່ມຕົ້ນໂດຍການໂທຫາວິທີການເລີ່ມຕົ້ນ (). ຖ້າອັນນີ້ສົ່ງຄືນເປັນຜິດ, ຊີ້ບອກວ່າບໍ່ສາມາດຊອກຫາເຊັນເຊີໄດ້, ໂປຣແກຣມຈະເຂົ້າສູ່ວົງວຽນທີ່ບໍ່ມີຂອບເຂດ ແລະພິມຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຜ່ານພອດ serial.
- ເຊັນເຊີ MPU6050 ຖືກເລີ່ມຕົ້ນໂດຍການໂທຫາວິທີການ initialize() ແລະກວດເບິ່ງວ່າມັນເຮັດວຽກຢ່າງຖືກຕ້ອງຫຼືບໍ່. ແລະມັນຕັ້ງ I2C bypass ເປີດໃຊ້ສໍາລັບ MPU6050.
- ເຊັນເຊີ HMC5883L ແມ່ນເລີ່ມຕົ້ນໂດຍການໂທຫາບາງຫນ້າທີ່, ເຊັ່ນ SetDeclination, SetSamplingMode, SetScale, ແລະ SetOrientation, ສໍາລັບການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນສໍາລັບເຊັນເຊີ.
- ໃນຟັງຊັນ loop() ລະຫັດຈະອ່ານຂໍ້ມູນຈາກສາມເຊັນເຊີແລະພິມອອກຜ່ານພອດ serial:
- ມັນອ່ານອຸນຫະພູມ, ຄວາມກົດດັນ, ລະດັບຄວາມສູງ, ແລະຄວາມກົດດັນໃນລະດັບນ້ໍາທະເລຈາກເຊັນເຊີ.
- ມັນອ່ານການເລັ່ງຄວາມໄວດິບແລະການວັດແທກ gyroscope ຈາກເຊັນເຊີ MPU6050.
- ມັນອ່ານຫົວຂໍ້ຈາກເຊັນເຊີ HMC5883L, ເຊິ່ງເປັນມຸມລະຫວ່າງທິດທາງທີ່ເຊັນເຊີຊີ້ແລະທິດທາງທີ່ແມ່ເຫຼັກຢູ່ເຫນືອ.
- ສຸດທ້າຍ, ມັນກະພິບໄຟ LED ເພື່ອຊີ້ບອກການເຄື່ອນໄຫວ ແລະລໍຖ້າຈັກໜ່ອຍກ່ອນທີ່ຈະອ່ານເຊັນເຊີຄືນໃໝ່.
ເອກະສານ / ຊັບພະຍາກອນ
![]() |
ARDUINO GY87 Combined Sensor Test Sketch [pdf] ຄູ່ມືຜູ້ໃຊ້ GY87 Combined Sensor Test Sketch, GY87, Combined Sensor Test Sketch, Sensor ທົດສອບ Sketch, Test Sketch |