ARDUINO GY87 គំនូរព្រាងសាកល្បងឧបករណ៍ចាប់សញ្ញារួមបញ្ចូលគ្នា
សេចក្តីផ្តើម
ប្រសិនបើអ្នកជាអ្នកផលិតចូលចិត្ត ឬជាអ្នកចូលចិត្តមនុស្សយន្ត អ្នកបានឆ្លងកាត់ម៉ូឌុលដ៏តូច ប៉ុន្តែមានថាមពលនេះ ប្រសិនបើអ្នកជាអ្នកផលិតចូលចិត្ត ឬជាអ្នកចូលចិត្តមនុស្សយន្ត អ្នកបានឆ្លងកាត់ម៉ូឌុលដ៏តូចមួយនេះ ប៉ុន្តែមានអនុភាព BMP085 barometer ។ ម៉ូឌុល GY-87 IMU គឺជាមធ្យោបាយដ៏ល្អមួយដើម្បីបន្ថែមការចាប់ចលនាទៅក្នុងគម្រោងរបស់អ្នក ដូចជាមនុស្សយន្តដែលមានតុល្យភាពដោយខ្លួនឯង ឬម៉ាស៊ីន quadcopter ជាដើម។
ប៉ុន្តែមុនពេលអ្នកអាចចាប់ផ្តើមពិសោធន៍ជាមួយម៉ូឌុល GY-87 IMU អ្នកត្រូវដឹងពីរបៀបធ្វើអន្តរកម្មវាជាមួយបន្ទះ Arduino របស់អ្នក។ នោះហើយជាកន្លែងដែលប្លុកនេះចូលមក! នៅក្នុងកថាខណ្ឌខាងក្រោម យើងនឹងរៀបរាប់អំពីមូលដ្ឋានគ្រឹះនៃម៉ូឌុល GY-87 IMU របៀបកំណត់វា និងរបៀបសរសេរកូដ Arduino ដើម្បីអានទិន្នន័យឧបករណ៍ចាប់សញ្ញា។ យើងក៏នឹងផ្តល់នូវគន្លឹះ និងធនធានមួយចំនួនសម្រាប់ការដោះស្រាយបញ្ហាទូទៅផងដែរ។
ដូច្នេះ ប្រសិនបើអ្នកត្រៀមខ្លួនរួចជាស្រេចដើម្បីចាប់ផ្តើម សូមចូលមើល និងស្វែងយល់អំពីការភ្ជាប់ម៉ូឌុល GY-87 IMU ជាមួយ Arduino!
តើអ្វីទៅជា GY-87 IMU MPU6050
ម៉ូឌុលវាស់និចលភាព (IMU) ដូចជា GY-87 រួមបញ្ចូលគ្នានូវឧបករណ៍ចាប់សញ្ញាជាច្រើនទៅក្នុងកញ្ចប់តែមួយ ដូចជា MPU6050 accelerometer/gyroscope, ម៉ាញេទិក HMC5883L និងឧបករណ៍ចាប់សញ្ញាសម្ពាធបារ៉ូម៉ែត្រ BMP085 ។ ដូច្នេះ GY-87 IMU MPU6050 គឺជាម៉ូឌុលតាមដានចលនា 9-axis ដែលរួមបញ្ចូលគ្នានូវ gyroscope 3-axis, 3-axis accelerometer, 3-axis magnetometer និង digital motion processor។ វាត្រូវបានគេប្រើច្រើននៅក្នុងគម្រោងមនុស្សយន្ត ដូចជា quadcopters និងយានជំនិះគ្មានមនុស្សបើកផ្សេងទៀត (UAVs) ព្រោះវាអាចវាស់វែង និងតាមដានការតំរង់ទិស និងចលនាបានយ៉ាងត្រឹមត្រូវ។ វាក៏ត្រូវបានប្រើនៅក្នុងកម្មវិធីផ្សេងទៀតដូចជា ការរុករក ការលេងហ្គេម និងការពិតនិម្មិត។
សមាសធាតុផ្នែករឹង
អ្នកនឹងត្រូវការផ្នែករឹងខាងក្រោមសម្រាប់ Interfacing GY-87 IMU MPU6050 HMC5883L BMP085 Module ជាមួយ Arduino ។
សមាសធាតុ | តម្លៃ | ចំនួន |
Arduino UNO | – | 1 |
MPU ៦០០០ ម៉ូឌុលឧបករណ៍ចាប់សញ្ញា | GY-87 | 1 |
ក្តារនំប៉័ង | – | 1 |
Jumper Wires | – | 1 |
GY-87 ជាមួយ Arduino
ឥឡូវនេះអ្នកបានយល់ពី GY-87 ហើយវាដល់ពេលដែលត្រូវទាក់ទងជាមួយ Arduino ។ ដើម្បីធ្វើដូច្នេះ សូមធ្វើតាមឥឡូវនេះ ដែលអ្នកបានយល់ពី GY-87 វាដល់ពេលដែលត្រូវភ្ជាប់ជាមួយ Arduino ។ ដើម្បីធ្វើដូច្នេះ សូមធ្វើតាម
គ្រោងការណ៍
ធ្វើការតភ្ជាប់តាមដ្យាក្រាមសៀគ្វីដែលបានផ្តល់ឱ្យខាងក្រោម
GY-87 IMU MPU6050 HMC5883L BMP085 Arduinoខ្សែ / ការតភ្ជាប់
អាឌូណូ | ឧបករណ៍ចាប់សញ្ញា MPU6050 |
5V | វី.ស៊ី.ស៊ី |
GND | GND |
A4 | អេសឌីអេ |
A5 | SCA |
ការដំឡើង Arduino IDE
ដំបូងអ្នកត្រូវដំឡើងកម្មវិធី Arduino IDE ពីផ្លូវការរបស់វា។ webគេហទំព័រ Arduino ។ នេះគឺជាការណែនាំជាជំហាន ៗ សាមញ្ញមួយនៅលើ "របៀបតំឡើង Arduino IDE" ។
ការដំឡើងបណ្ណាល័យ
មុនពេលអ្នកចាប់ផ្តើមផ្ទុកឡើងកូដ សូមទាញយក និងពន្លាបណ្ណាល័យខាងក្រោមនៅ /កម្មវិធី Files (x86)/Arduino/Libraries (លំនាំដើម) ដើម្បីប្រើឧបករណ៍ចាប់សញ្ញាជាមួយបន្ទះ Arduino ។ នេះគឺជាការណែនាំជាជំហាន ៗ សាមញ្ញមួយស្តីពី "របៀបបន្ថែមបណ្ណាល័យនៅក្នុង Arduino IDE" ។
- MPU ៦០០០
- Adafruit_BMP085
- HMC5883L_សាមញ្ញ
កូដ
ឥឡូវចម្លងកូដខាងក្រោម ហើយបង្ហោះវាទៅកម្មវិធី Arduino IDE ។
#include “I2Cdev.h” #include “MPU6050.h” #include # រួមបញ្ចូល MPU085 accelgyro; 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 ត្រឹមត្រូវទេ, ពិនិត្យមើល Serial.println(accelgyro.testConnection() ? "ការភ្ជាប់ MPU085 ជោគជ័យ" : "ការតភ្ជាប់ MPU085 បានបរាជ័យ"); accelgyro.setI6050CBypassEnabled(ពិត); 6050, 'E');amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // កំណត់រចនាសម្ព័ន្ធ Arduino LED សម្រាប់ពិនិត្យមើលសកម្មភាព pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“សីតុណ្ហភាព = “); Serial.print(bmp.readTemperature());
Serial.println(“*C”); Serial.print(“សម្ពាធ = “);
Serial.print(bmp.readPressure()); Serial.println("ប៉ា"); // គណនារយៈកំពស់សន្មត់ថា 'ស្តង់ដារ' barometric // សម្ពាធ 1013.25 millibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println("ម៉ែត្រ"); Serial.print(“សម្ពាធនៅកម្រិតទឹកសមុទ្រ (គណនា) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println("ប៉ា");
Serial.print("កម្ពស់ពិត = "); Serial.print(bmp.readAltitude(101500));
Serial.println("ម៉ែត្រ"); // អានការវាស់វែង accel/gyro ឆៅពីឧបករណ៍ accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // បង្ហាញតម្លៃបំបែកដោយផ្ទាំង 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 ភ្ជាប់ជាមួយឧបករណ៍ចាប់សញ្ញាដោយប្រើបណ្ណាល័យរបស់ពួកគេ ដែលអនុញ្ញាតឱ្យវាអានទិន្នន័យឧបករណ៍ចាប់សញ្ញា និងកំណត់ការកំណត់រចនាសម្ព័ន្ធផ្សេងៗនៃឧបករណ៍ចាប់សញ្ញា។ បន្ទាប់មកវាបោះពុម្ពទិន្នន័យឧបករណ៍ចាប់សញ្ញានៅលើច្រកសៀរៀល។ LED ត្រូវបានប្រើដើម្បីបង្ហាញថាសៀគ្វីកំពុងធ្វើអ្វីមួយ។ នេះមានន័យថា LED ភ្លឹបភ្លែតៗរាល់ពេលដែលមុខងាររង្វិលជុំត្រូវបានដំណើរការ ដែលបង្ហាញថាលេខកូដកំពុងអានតម្លៃឧបករណ៍ចាប់សញ្ញាយ៉ាងសកម្ម។
ការពន្យល់ការងារ
កូដគឺជារឿងសំខាន់ដែលដំណើរការរបស់សៀគ្វីមានមូលដ្ឋាន។ ដូច្នេះសូមយើងយល់អំពីកូដ៖ .
- ជាដំបូង វារួមបញ្ចូលបណ្ណាល័យជាច្រើន ដើម្បីភ្ជាប់ជាមួយឧបករណ៍ចាប់សញ្ញា៖
- “I2Cdev.h” និង “MPU6050.h” គឺជាបណ្ណាល័យសម្រាប់ MPU6050 6-axis accelerometer/gyroscope sensor
- “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() ចាប់ផ្តើមទំនាក់ទំនងសៀរៀល ហើយចាប់ផ្តើមទំនាក់ទំនង I2C ។ បន្ទាប់មកវាចាប់ផ្តើមឧបករណ៍ចាប់សញ្ញាទាំងបី៖
- ឧបករណ៍ចាប់សញ្ញា BMP085 ត្រូវបានចាប់ផ្តើមដោយហៅវិធីសាស្ត្រ start() ។ ប្រសិនបើវាត្រឡប់មិនពិត ដោយបង្ហាញថាមិនអាចរកឃើញឧបករណ៍ចាប់សញ្ញានោះ កម្មវិធីនឹងចូលទៅក្នុងរង្វិលជុំគ្មានកំណត់ ហើយបោះពុម្ពសារកំហុសនៅលើច្រកសៀរៀល។
- ឧបករណ៍ចាប់សញ្ញា MPU6050 ត្រូវបានចាប់ផ្តើមដោយហៅវិធីសាស្ត្រ initialize() ហើយពិនិត្យមើលថាតើវាដំណើរការត្រឹមត្រូវឬអត់។ ហើយវាកំណត់ផ្លូវវាង I2C បានបើកសម្រាប់ MPU6050។
- ឧបករណ៍ចាប់សញ្ញា HMC5883L ត្រូវបានចាប់ផ្តើមដោយការហៅមុខងារមួយចំនួនដូចជា SetDeclination, SetSamplingMode, SetScale, និង SetOrientation សម្រាប់កំណត់ការកំណត់ផ្សេងៗសម្រាប់ឧបករណ៍ចាប់សញ្ញា។
- នៅក្នុងមុខងារ loop() កូដអានទិន្នន័យពីឧបករណ៍ចាប់សញ្ញាទាំងបី ហើយបោះពុម្ពវាចេញតាមច្រកសៀរៀល៖
- វាអានសីតុណ្ហភាព សម្ពាធ កម្ពស់ និងសម្ពាធនៅកម្រិតទឹកសមុទ្រពីឧបករណ៍ចាប់សញ្ញា។
- វាអានការបង្កើនល្បឿនឆៅ និងការវាស់វែង gyroscope ពីឧបករណ៍ចាប់សញ្ញា MPU6050។
- វាអានក្បាលពីឧបករណ៍ចាប់សញ្ញា HMC5883L ដែលជាមុំរវាងទិសដៅដែលឧបករណ៍ចាប់សញ្ញាកំពុងចង្អុល និងទិសដៅដែលម៉ាញ៉េទិចស្ថិតនៅខាងជើង។
- ជាចុងក្រោយ វានឹងព្រិចភ្នែក LED ដើម្បីបង្ហាញពីសកម្មភាព ហើយរង់ចាំមួយភ្លែត មុនពេលអានឧបករណ៍ចាប់សញ្ញាឡើងវិញ។
ឯកសារ/ធនធាន
![]() |
ARDUINO GY87 គំនូរព្រាងសាកល្បងឧបករណ៍ចាប់សញ្ញារួមបញ្ចូលគ្នា [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់ GY87 Combined Sensor Test Sketch, GY87, Combined Sensor Test Sketch, Sensor Test Sketch, Test Sketch |