ARDUINO GY87 კომბინირებული სენსორის ტესტის ესკიზი
შესავალი
თუ მოყვარული მწარმოებელი ან რობოტიკის მოყვარული ხართ, თქვენ წააწყდით ამ პატარა, მაგრამ ძლიერ მოდულს. GY-085 IMU მოდული არის შესანიშნავი გზა თქვენი პროექტებისთვის მოძრაობის სენსორების დასამატებლად, როგორიცაა თვითდაბალანსებული რობოტი ან კვადკოპტერი.
მაგრამ სანამ დაიწყებთ ექსპერიმენტებს GY-87 IMU მოდულზე, თქვენ უნდა იცოდეთ როგორ დააკავშიროთ იგი თქვენს Arduino დაფასთან. სწორედ აქ შემოდის ეს ბლოგი! შემდეგ აბზაცებში განვიხილავთ GY-87 IMU მოდულის საფუძვლებს, როგორ დავაყენოთ ის და როგორ დავწეროთ Arduino კოდი სენსორის მონაცემების წასაკითხად. ჩვენ ასევე შემოგთავაზებთ რამდენიმე რჩევას და რესურსს საერთო პრობლემების გადასაჭრელად.
ასე რომ, თუ მზად ხართ დასაწყებად, მოდით ჩავუღრმავდეთ და ვისწავლოთ GY-87 IMU მოდულის Arduino-სთან დაკავშირების შესახებ!
რა არის GY-87 IMU MPU6050
ინერციული საზომი ერთეულის (IMU) მოდულები, როგორიცაა GY-87, აერთიანებს ბევრ სენსორს ერთ პაკეტში, როგორიცაა 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 |
Jumper მავთულები | – | 1 |
GY-87 Arduino-სთან ერთად
ახლა, როცა გაიგეთ GY-87, დროა დაუკავშირდეთ Arduino-ს. ამისათვის მიჰყევით ახლა, როცა გაიგეთ GY-87, დროა დაუკავშირდეთ Arduino-ს. ამისათვის მიჰყევით
სქემატური
გააკეთეთ კავშირები ქვემოთ მოცემული მიკროსქემის მიხედვით
GY-87 IMU MPU6050 HMC5883L BMP085 Arduinoგაყვანილობა / კავშირები
არდუინო | MPU6050 სენსორი |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Arduino IDE-ის ინსტალაცია
პირველ რიგში, თქვენ უნდა დააინსტალიროთ Arduino IDE პროგრამული უზრუნველყოფა მისი ოფიციალურიდან webსაიტი Arduino. აქ არის მარტივი ნაბიჯ-ნაბიჯ სახელმძღვანელო "როგორ დავაყენოთ Arduino IDE".
ბიბლიოთეკების ინსტალაცია
სანამ კოდის ატვირთვას დაიწყებდეთ, ჩამოტვირთეთ და გახსენით შემდეგი ბიბლიოთეკები /Program-ზე Files (x86)/Arduino/Libraries (ნაგულისხმევი) სენსორის გამოსაყენებლად Arduino დაფაზე. აქ მოცემულია მარტივი ნაბიჯ-ნაბიჯ სახელმძღვანელო „როგორ დავამატოთ ბიბლიოთეკები Arduino IDE-ში“.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
კოდი
ახლა დააკოპირეთ შემდეგი კოდი და ატვირთეთ იგი Arduino IDE Software-ში.
#include "I2Cdev.h" #include "MPU6050.h" #include #include MPU085 accelgyro; 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 if (!bmp.begin()) { Serial.println("ვერ ვიპოვე მოქმედი BMP2 სენსორი, შეამოწმეთ (!bmp.begin()) { Serial.println("ვერ ვიპოვე მოქმედი BMP085 სენსორი, შეამოწმეთ Serial.println(accelgyro.testConnection() ? "MPU085 კავშირი წარმატებული": "MPU085 კავშირი ვერ მოხერხდა"); accelgyro.setI6050CBypassEnabled(true); // დააყენეთ შემოვლითი რეჟიმი კარიბჭისთვის hmc6050L // ინიციალიზაცია hmc2etlDeclination. 5883, 'E'); Compass.SetSamplingMode (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 ("Pressure = ");
Serial.print(bmp.readPressure()); Serial.println ("Pa"); // სიმაღლის გამოთვლა "სტანდარტული" ბარომეტრიული ვარაუდით // წნევა 1013.25 მილიბარი = 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("meter"); // წაიკითხეთ დაუმუშავებელი accel/gyro გაზომვები მოწყობილობიდან 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); float heading =
Compass.GetHeadingDegrees(); Serial.print (“Heading: \t”); Serial.println( heading ); // მოციმციმე 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.
- შემდეგი, ის განსაზღვრავს ზოგიერთ ცვლადს სენსორის მნიშვნელობების შესანახად, როგორიცაა ax, ay და az MPU6050-ის ამაჩქარებლისთვის და HMC5883L-ის მაგნიტომეტრის სათავეში. და ის განსაზღვრავს LED_PIN მუდმივობას და blinkState ცვლადს.
- setup() ფუნქცია იწყებს სერიულ კომუნიკაციას და იწყებს I2C კომუნიკაციას. შემდეგ იგი ახდენს სამი სენსორის ინიციალიზაციას:
- BMP085 სენსორის ინიციალიზაცია ხდება start() მეთოდის გამოძახებით. თუ ეს დააბრუნებს false-ს, რაც მიუთითებს, რომ სენსორი ვერ მოიძებნა, პროგრამა შედის უსასრულო ციკლში და ბეჭდავს შეცდომის შეტყობინებას სერიულ პორტზე.
- MPU6050 სენსორის ინიციალიზაცია ხდება ინიციალიზაციის() მეთოდის გამოძახებით და სწორად მუშაობს თუ არა. და დააყენა I2C შემოვლითი გზა MPU6050-ისთვის.
- HMC5883L სენსორი ინიციალიზებულია ზოგიერთი ფუნქციის გამოძახებით, როგორიცაა SetDeclination, SetSamplingMode, SetScale და SetOrientation, სენსორისთვის სხვადასხვა კონფიგურაციის დასაყენებლად.
- loop() ფუნქციაში კოდი კითხულობს მონაცემებს სამი სენსორიდან და ბეჭდავს მათ სერიულ პორტზე:
- ის კითხულობს ტემპერატურას, წნევას, სიმაღლეს და წნევას ზღვის დონეზე სენსორიდან.
- ის კითხულობს დაუმუშავებელ აჩქარებას და გიროსკოპის გაზომვებს MPU6050 სენსორიდან.
- ის კითხულობს სათაურს HMC5883L სენსორიდან, რომელიც არის კუთხე იმ მიმართულებას შორის, რომელზეც სენსორი არის მიმართული და მიმართულებას შორის, რომელშიც მდებარეობს მაგნიტური ჩრდილოეთი.
- და ბოლოს, ის ციმციმებს LED-ს, რათა მიუთითოს აქტივობა და ელოდება ერთ წუთს სენსორების ხელახლა წაკითხვამდე.
დოკუმენტები / რესურსები
![]() |
ARDUINO GY87 კომბინირებული სენსორის ტესტის ესკიზი [pdf] მომხმარებლის სახელმძღვანელო GY87 კომბინირებული სენსორის ტესტის ესკიზი, GY87, კომბინირებული სენსორის ტესტის ესკიზი, სენსორის ტესტის ესკიზი, ტესტის ესკიზი |