ویژگی های ماژول IMU نه محوره GY-801
ماژول سنسور GY-801 یک سنسور 9 محوره فوق دقیق میباشد که شامل آیسیهای L3G4200D (سنسور زاویهسنج) و ADXL345 (سنسور شتابسنج) و MMC5883MC (سنسور قطبنمای دیجیتال) و BMP180 (سنسور فشار و دما) میباشد.
تمامی آیسیها از پروتکل I2C جهت ارتباط استفاده میکنند. از این ماژول در ساخت رباتهای پرنده و زمینی استفاده میشود.
جهت دریافت دیتاشیت ماژول GY-801 اینجا کلیک کنید.
GY-801 Moudle Datasheet
جهت دریافت دیتاشیت L3G4200D اینجا کلیک کنید.
L3G4200D Sensor Datasheet
جهت دریافت دیتاشیت ADXL345 اینجا کلیک کنید.
ADXL345 Sensor Datasheet
جهت دریافت دیتاشیت MMC5883MC اینجا کلیک کنید.
MMC5883MC Sensor Datasheet
جهت دریافت دیتاشیت BMP180 اینجا کلیک کنید.
BMP180 Sensor Datasheet
معرفی پایه ها (Pinout) ماژول IMU نه محوره GY-801
ماژول GY-801دارای 10 پایه به شرح زیر است:
- VIN: تغذیه ماژول 5 ولت
- 3.3V: تغذیه ماژول 3.3 ولت
- GND: زمین
- SLC: همزمان سازی برای پروتکل I2C
- SDA: اطلاعات برای پروتکل I2C
- M_DRDY: آماده شدن اطلاعات برای ماژول MMC5883
- A_INT1: آماده شدن اطلاعات برای ماژول ADXL345
- A_INT2: آماده شدن اطلاعات برای ماژول ADXL345
- G_INT1: آماده شدن اطلاعات برای ماژول L3G4200D
- G_INT2: آماده شدن اطلاعات برای ماژول L3G4200D
پین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راهاندازی ماژول IMU نه محوره GY-801 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: کد
تمامی فایل ها را از اینجا دانلود کرده و در یک پوشه قرار دهید.
فایل CodeArduino را باز کرده و بر روی برد آردوینوی خود آپلود کنید.
/*
Create on May 19, 2021
Create by MohammedDamirchi base of https://github.com/DMohammed/GY-801
https://electropeak.com/learn/
*/
#include <Arduino.h>
#include "Wire.h"
#include "MMC5883.h"
#include <I2Cdev.h>
#include "L3G4200D.h"
#include "ADXL345.h"
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP085_U.h"
L3G4200D gyro;
ADXL345 accel;
MMC5883MA MMC5883(Wire);
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
int16_t ax, ay, az;
int16_t avx, avy, avz;
double baseline; // baseline pressure
void setup()
{
Serial.begin(9600);
Wire.begin();
Serial.println("Initializing I2C devices...");
gyro.initialize();
accel.initialize();
// verify connection
Serial.println("Testing device connections...");
Serial.println(gyro.testConnection() ? "L3G4200D connection successful" : "L3G4200D connection failed");
Serial.println("Testing device connections...");
Serial.println(accel.testConnection() ? "ADXL345 connection successful" : "ADXL345 connection failed");
// data seems to be best when full scale is 2000
gyro.setFullScale(2000);
if (!bmp.begin())
Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
Serial.print("MMC5883MA ");
MMC5883.begin();
MMC5883.calibrate();
}
void loop()
{
Serial.print(MMC5883.readData());
Serial.print(" ");
gyro.getAngularVelocity(&avx, &avy, &avz);
Serial.print("gyro X:");
Serial.print(avx);
Serial.print("\tY:");
Serial.print(avy);
Serial.print("\tZ:");
Serial.print(avz);
// read raw accel measurements from device
accel.getAcceleration(&ax, &ay, &az);
// display tab-separated accel x/y/z values
Serial.print("\taccel X:");
Serial.print(ax);
Serial.print("\tY:");
Serial.print(ay);
Serial.print("\tZ:");
Serial.print(az);
/* Get a new sensor event */
sensors_event_t event;
bmp.getEvent(&event);
/* Display the results (barometric pressure is measure in hPa) */
if (event.pressure)
{
/* Display atmospheric pressue in hPa */
Serial.print("\tPressure:");
Serial.print(event.pressure);
Serial.print(" hPa");
/* First we get the current temperature from the BMP085 */
float temperature;
bmp.getTemperature(&temperature);
Serial.print("\tTemp:");
Serial.print(temperature);
Serial.print(" C");
/* Then convert the atmospheric pressure, and SLP to altitude */
/* Update this next line with the current SLP for better results */
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
Serial.print("\tAltitude:");
Serial.println(bmp.pressureToAltitude(seaLevelPressure,
event.pressure));
}
else
{
Serial.println("BME Sensor error");
}
delay(1000);
}
پس از آپلود کد در سریال مانیتور مشاهده می کنید.
Comments (7)
سلام . موقع فروش ماژول نوشته شده بود که قطب نما ممکنه روی محصول MMCیا HMC باشه . چطور می تونم مطمئن شم کدوم چیپ روی ماژول هست تا از کتابخونه ش داخل برنامه استفاده کنم؟
سلام.
این دو IC بسیار مشابه هم هستند و کتابخونههایی که نوشته میشه برای جفتشون قابل استفادهان. در نتیجه نیازی نیست نگران نوع دقیق چیپ روی ماژول باشید.
سلام چطوری میتونم این رو روی esp32 اجرا کنم ؟
سلام
میشه از این مجموعه بعنوان اتوپایلوت و رکوردر حالتهای پرواز استفاده کرد ؟
با سلام
اتوپایلت یک میکروکنترلر می باشد که پردازش های مورد نظر را اجرا می کند، این ماژول در کنار اتوپایلت قرار میگیرد و دیتا مورد نیاز جهت تنظیم تعادل را به اتوپایلت میدهد. برای اطلاعات بیشتر برای اتوپایلت های سری آردوینو می توانید به سایت multiwii مراجعه کنید
سلام محمدآقا خوبین
من میخوام با جی وای 801 و آردینیو سیستمی درست کنم که روی هواپیما نصب بشه و حالتهای پرواز رو ثبت و ضبط کنه یعنی رکورد کنه
سوال 1 با کدوم مدل آردینیو این ماژول بهتر مچ میشه
2_ چه ماژول دیگری نیاز هست برای ریکورد اظلاعات
و اینها رو از کجا بخرم ؟
ممنون
09011229780 لفا پیام بدین تماس میگیرم
با سلام
هیچ تفاوتی بین کدام نسخه آردوینو یا میکروکنترلر های دیگر برای ذخیره سازی داده ندارد.
برای ذخیره سازی حالت های پرواز که داشته اید اکثر اتوپایلت ها این کار را انجام میدهند، در هر صورت این کار انجام نشود می توانید از هر مدل میکروکنتلر به همراه یک ماژول SD یا MicroSD که یک حافظه رم را به آن اضافه کنید و دیتا های مورد نظر را در آن ذخیره کنید و سپس در برنامه اکسل به پردازش داده های خود بپردازید.
پیشنهاد میکنم مابین داده های خود از , یا هر کارکتر خاصل دیگری استفاده کنید و آخر هر لاین با اینتر به خط بعدی بروید و بر روی حافظه ذخیره کنید. چون به این صورت شما میتوانید فایل را به فرمت csv تغییر بدهید و در اکسل باز کنید.