Phác thảo thử nghiệm cảm biến kết hợp ARDUINO GY87
Giới thiệu
Nếu bạn là người đam mê chế tạo hoặc đam mê chế tạo rô-bốt, thì bạn đã bắt gặp mô-đun nhỏ bé nhưng mạnh mẽ này. Nếu bạn là người đam mê chế tạo hoặc say mê chế tạo rô-bốt, thì bạn đã bắt gặp phong vũ biểu BMP085 mô-đun nhỏ bé nhưng mạnh mẽ này. Mô-đun GY-87 IMU là một cách tuyệt vời để thêm cảm biến chuyển động vào các dự án của bạn, chẳng hạn như rô-bốt tự cân bằng hoặc máy bay quadcopter.
Nhưng trước khi bạn có thể bắt đầu thử nghiệm với mô-đun GY-87 IMU, bạn cần biết cách kết nối nó với bo mạch Arduino của mình. Đó là nơi blog này xuất hiện! Trong các đoạn sau, chúng tôi sẽ đề cập đến những kiến thức cơ bản về mô-đun GY-87 IMU, cách thiết lập mô-đun này và cách viết mã Arduino để đọc dữ liệu cảm biến. Chúng tôi cũng sẽ cung cấp một số mẹo và tài nguyên để khắc phục sự cố phổ biến.
Vì vậy, nếu bạn đã sẵn sàng bắt đầu, hãy đi sâu vào và tìm hiểu về cách kết nối mô-đun GY-87 IMU với Arduino!
GY-87 IMU MPU6050 là gì
Các mô-đun đơn vị đo lường quán tính (IMU) như GY-87 kết hợp nhiều cảm biến thành một gói duy nhất, chẳng hạn như gia tốc kế/con quay hồi chuyển MPU6050, từ kế HMC5883L và cảm biến áp suất khí quyển BMP085. Do đó, GY-87 IMU MPU6050 là mô-đun theo dõi chuyển động 9 trục tất cả trong một kết hợp con quay hồi chuyển 3 trục, gia tốc kế 3 trục, từ kế 3 trục và bộ xử lý chuyển động kỹ thuật số. Nó được sử dụng rất nhiều trong các dự án robot, như quadcopters và các phương tiện bay không người lái (UAV) khác, bởi vì nó có thể đo lường và theo dõi chính xác hướng và chuyển động. Nó cũng được sử dụng trong các ứng dụng khác, chẳng hạn như điều hướng, chơi trò chơi và thực tế ảo.
Linh kiện phần cứng
Bạn sẽ cần phần cứng sau để Giao tiếp Mô-đun GY-87 IMU MPU6050 HMC5883L BMP085 với Arduino.
Thành phần | Giá trị | Số lượng |
Arduino UNO | – | 1 |
MPU6050 Mô-đun cảm biến | GY-87 | 1 |
Bảng mạch cắm | – | 1 |
Dây nối | – | 1 |
GY-87 với Arduino
Bây giờ bạn đã hiểu về GY-87, đã đến lúc giao tiếp với Arduino. Để làm điều đó, hãy làm theo Bây giờ bạn đã hiểu về GY-87, đã đến lúc giao tiếp với Arduino. Để làm điều đó, hãy làm theo
Sơ đồ
Thực hiện kết nối theo sơ đồ mạch dưới đây
Arduino GY-87 IMU MPU6050 HMC5883L BMP085Đi dây / Kết nối
Arduino | Cảm biến MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Cài đặt Arduino IDE
Trước tiên, bạn cần cài đặt Phần mềm Arduino IDE từ chính thức của nó webtrang web Arduino. Dưới đây là hướng dẫn từng bước đơn giản về “Cách cài đặt Arduino IDE.”
Cài đặt thư viện
Trước khi bạn bắt đầu tải mã lên, hãy tải xuống và giải nén các thư viện sau tại /Program Files (x86)/Arduino/Libraries (mặc định) để sử dụng cảm biến với bo mạch Arduino. Dưới đây là hướng dẫn từng bước đơn giản về “Cách thêm thư viện trong Arduino IDE.”
- MPU6050
- Adaf nhung_BMP085
- HMC5883L_Đơn giản
Mã số
Bây giờ hãy sao chép đoạn mã sau và tải nó lên Phần mềm Arduino IDE.
#include “I2Cdev.h” #include “MPU6050.h” #include #bao gồm con quay hồi chuyển MPU085; Adaf nhung_BMP5883 bmp; HMC6050L_La Bàn Đơn Giản; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool nháyState = false; thiết lập void () { Nối tiếp.bắt đầu (16); Dây.bắt đầu(); // khởi tạo thiết bị Serial.println(“Khởi tạo thiết bị I13C…”); // khởi tạo bmp9600 if (!bmp.begin()) { Serial.println(“Không thể tìm thấy cảm biến BMP2 hợp lệ, hãy kiểm tra (!bmp.begin()) { Serial.println(“Không thể tìm thấy cảm biến BMP085 hợp lệ, kiểm tra Serial.println(accelgyro.testConnection() ? “Kết nối MPU085 thành công” : “Kết nối MPU085 không thành công”); accelgyro.setI6050CBypassEnabled(true); // đặt chế độ bỏ qua cổng vào hmc6050L // khởi tạo hmc2l Compass.SetDeclination(5883, 5883, 'E'); La bàn.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // cấu hình Arduino LED để kiểm tra hoạt động pinMode(LED_PIN, OUTPUT); } vòng lặp vô hiệu () {
Serial.print(“Nhiệt độ = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Áp suất = “);
Serial.print(bmp.readPressure()); Serial.println("Pa"); // Tính toán độ cao giả định khí áp 'tiêu chuẩn' // áp suất 1013.25 millibar = 101325 Pascal Serial.print(“Độ cao = “); Serial.print(bmp.readAltitude()); Serial.println(“mét”); Serial.print(“Áp suất ở mực nước biển (được tính toán) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print(“Độ cao thực = “); Serial.print(bmp.readAltitude(101500));
Serial.println(”mét”); // đọc số đo accel/gyro thô từ thiết bị accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // hiển thị các giá trị accel/gyro x/y/z được phân tách bằng tab 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); tiêu đề nổi =
La bàn.GetHeadingDegrees(); Serial.print(“Tiêu đề: \t”); Serial.println(tiêu đề); // nhấp nháy đèn LED để chỉ hoạt động BlinkState = !blinkState;
kỹ thuật sốWrite (LED_PIN, nháy mắt); độ trễ (500); }
Hãy kiểm tra nó
Sau khi bạn tải mã lên, đã đến lúc kiểm tra mạch! Mã trong chương trình Arduino giao tiếp với các cảm biến bằng thư viện của chúng, cho phép nó đọc dữ liệu cảm biến và đặt các cấu hình khác nhau của cảm biến. Sau đó, nó in ra dữ liệu cảm biến qua cổng nối tiếp. Đèn LED được sử dụng để chỉ ra rằng mạch đang làm gì đó. Điều này có nghĩa là đèn LED nhấp nháy mỗi khi chức năng vòng lặp được chạy, cho biết rằng mã đang tích cực đọc các giá trị cảm biến.
giải thích làm việc
Mã này là thứ chính dựa trên hoạt động của mạch. Vì vậy, hãy hiểu mã:.
- Đầu tiên, nó bao gồm một số thư viện để giao tiếp với các cảm biến:
- “I2Cdev.h” và “MPU6050.h” là các thư viện dành cho cảm biến gia tốc kế/con quay hồi chuyển 6050 trục MPU6
- “Adaf nhung_BMP085.h” là thư viện dành cho cảm biến áp suất khí quyển BMP085.
- “HMC5883L_Simple.h” là thư viện dành cho cảm biến từ kế HMC5883L.
- Sau đó, nó tạo các đối tượng chung cho ba cảm biến: MPU6050 accelgyro, Adaf nhung_BMP085 bmp và HMC5883L_Simple Compass.
- Tiếp theo, nó xác định một số biến để lưu trữ các giá trị cảm biến, chẳng hạn như ax, ay và az cho gia tốc kế của MPU6050 và hướng tới từ kế của HMC5883L. Và nó định nghĩa một hằng số LED_PIN và một biến nháyState.
- Hàm setup() bắt đầu giao tiếp nối tiếp và bắt đầu giao tiếp I2C. Sau đó, nó khởi tạo ba cảm biến:
- Cảm biến BMP085 được khởi tạo bằng cách gọi phương thức begin(). Nếu điều này trả về false, nghĩa là không tìm thấy cảm biến, chương trình sẽ đi vào vòng lặp vô hạn và in thông báo lỗi qua cổng nối tiếp.
- Cảm biến MPU6050 được khởi tạo bằng cách gọi phương thức initialize() và kiểm tra xem nó có hoạt động bình thường không. Và nó đã bật bỏ qua I2C cho MPU6050.
- Cảm biến HMC5883L được khởi tạo bằng cách gọi một số chức năng, chẳng hạn như SetDeclination, SetSamplingMode, SetScale và SetOrientation, để đặt các cấu hình khác nhau cho cảm biến.
- Trong hàm loop(), đoạn mã đọc dữ liệu từ ba cảm biến và in ra qua cổng nối tiếp:
- Nó đọc nhiệt độ, áp suất, độ cao và áp suất ở mực nước biển từ cảm biến.
- Nó đọc các phép đo gia tốc thô và con quay hồi chuyển từ cảm biến MPU6050.
- Nó đọc tiêu đề từ cảm biến HMC5883L, là góc giữa hướng mà cảm biến đang chỉ và hướng mà từ trường bắc nằm.
- Cuối cùng, nó nhấp nháy đèn LED để biểu thị hoạt động và đợi một lúc trước khi đọc lại các cảm biến.
Tài liệu / Tài nguyên
![]() |
Phác thảo thử nghiệm cảm biến kết hợp ARDUINO GY87 [tập tin pdf] Hướng dẫn sử dụng Phác thảo kiểm tra cảm biến kết hợp GY87, GY87, Phác thảo kiểm tra cảm biến kết hợp, Phác thảo kiểm tra cảm biến, Phác thảo kiểm tra |