ماژول MPU6050 ژایرو 3 محوره GY-52
ماژول MPU6050 GY-52 یک سنسور ژایروسکوپ و شتابسنج 3 محوره است که توسط شرکت InvenSense تولید شده است. این ماژول از یک چیپ MPU6050 استفاده میکند که دارای قابلیت اندازهگیری شتاب و سرعت زاویهای در سه محور x، y و z است.MPU6050 یکی از سنسورهای اینونس در فرمت چیپ است که شامل یک سنسور ژایروسکوپ 3 محوره و یک شتابسنج 3 محوره است. این سنسورها از تکنولوژی MEMS (سیستم میکرو الکترومکانیکی) استفاده میکنند و با استفاده از اصول جاذبهسنجی و زاویهسنجی عمل میکنند.
ویژگیهای ماژول MPU6050 GY-52
- قابلیت اندازهگیری شتاب و سرعت زاویهای در سه محور x، y و z.
- ولتاژ کاری 3.3 ولت.
- رابط ارتباطی I2C برای ارتباط با میکروکنترلرها و سایر دستگاهها.
- دقت بالا و عملکرد قابل اعتماد.
- قابلیت تنظیم دامنه اندازهگیری شتاب و سرعت زاویهای.
- قابلیت اندازهگیری شتاب و سرعت زاویهای بهصورت همزمان.
- قابلیت تشخیص حرکت و جهتیابی در فضا.
- پشتیبانی از مجموعهای از قراردادها و پروتکلهای ارتباطی.
بررسی پایه های ماژول MPU6050 GY-52
- VCC: این پایه برای تامین تغذیه به ماژول استفاده میشود و به ولتاژ کاری 3.3 ولت وصل میشود.
- GND: این پایه مربوط به زمین ماژول است و به منبع تغذیه منفی وصل میشود.
- SDA: این پایه برای ارتباط از طریق رابط I2C استفاده میشود. اطلاعات دیجیتالی بین ماژول و میکروکنترلر از طریق این پایه منتقل میشود.
- SCL: این پایه همچنین برای ارتباط I2C استفاده میشود. این پایه سیگنال ساعت را ارائه میدهد که برای هماهنگی انتقال دادهها استفاده میشود.
- AD0: این پایه برای تنظیم آدرس I2C دستگاه استفاده میشود. با تنظیم این پایه به وضعیت HIGH یا LOW میتوان آدرس دستگاه را تغییر داد.
- INT: این پایه مربوط به خروجی قابل برنامهریزی تعریف شده است. میکروکنترلر میتواند به وسیله این پایه از رویدادهایی مانند تغییر حالت، تشخیص حرکت و غیره مطلع شود.
به همراه ماژول MPU6050 GY-52 چه اقلامی باید خریداری شود؟
میکروکنترلر یا بردهای توسعه: برای خواندن دادههای سنسور MPU6050 و کنترل ماژول، شما نیاز به یک میکروکنترلر مثل Arduino یا STM32 و یا یک برد توسعه مشابه خواهید داشت.
کابلهای ارتباطی: برای اتصال ماژول MPU6050 GY-52 به میکروکنترلر، نیاز به کابلهای ارتباطی دارید.
منبع تغذیه: ماژول MPU6050 GY-52 نیاز به تغذیه 3.3 ولت دارد. بنابراین، شما باید یک منبع تغذیه 3.3 ولت مناسب را تهیه کنید. میتوانید از یک منبع تغذیه ثابت استفاده کنید یا از منابع تغذیه سوئیچینگ استفاده کنید.
مقاومتهای pull-up: در صورتی که رابط I2C را برای ارتباط با ماژول استفاده میکنید، نیاز به مقاومتهای pull-up برای خطوط SDA و SCL خواهید داشت. این مقاومتها به مقدار 4.7 کیلواهم است.
راه اندازی ماژول MPU6050 GY-52 با آردوینو
قبل از آپلود کد بر روی برد آردوینو خود، مطمئن شوید کتابخانه Wire در محیط توسعه آردوینو شما نصب شده باشد. این کد ماژول MPU6050 را مقداردهی اولیه کرده و به طور پیوسته دادههای شتابسنج و ژایروسکوپ را از آن خوانده است. سپس دادهها به نرمافزار نمایش سریال با سرعت بودریت 9600 چاپ میشود.مطمئن شوید که پینهای SDA و SCL ماژول MPU6050 را به پینهای متناظر برد آردوینو خود (A4 و A5) متصل کردهاید. همچنین اطمینان حاصل کنید که ماژول با ولتاژ مورد نیاز (3.3 ولت) تغذیه شده است و پین GND به زمین آردوینو متصل شده است.
#include <Wire.h>
const int MPU6050_addr = 0x68; // MPU6050 I2C address
int16_t accelerometer_x, accelerometer_y, accelerometer_z;
int16_t gyro_x, gyro_y, gyro_z;
void setup() {
Wire.begin();
Serial.begin(9600);
// Initialize MPU6050
Wire.beginTransmission(MPU6050_addr);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // Wake up MPU6050
Wire.endTransmission(true);
}
void loop() {
// Read accelerometer and gyroscope data
Wire.beginTransmission(MPU6050_addr);
Wire.write(0x3B); // Starting register for accelerometer data
Wire.endTransmission(false);
Wire.requestFrom(MPU6050_addr, 14, true);
// Read accelerometer data
accelerometer_x = Wire.read() << 8 | Wire.read();
accelerometer_y = Wire.read() << 8 | Wire.read();
accelerometer_z = Wire.read() << 8 | Wire.read();
// Read gyroscope data
gyro_x = Wire.read() << 8 | Wire.read();
gyro_y = Wire.read() << 8 | Wire.read();
gyro_z = Wire.read() << 8 | Wire.read();
// Print the sensor data
Serial.print("Accelerometer: ");
Serial.print("X = "); Serial.print(accelerometer_x);
Serial.print(" Y = "); Serial.print(accelerometer_y);
Serial.print(" Z = "); Serial.println(accelerometer_z);
Serial.print("Gyroscope: ");
Serial.print("X = "); Serial.print(gyro_x);
Serial.print(" Y = "); Serial.print(gyro_y);
Serial.print(" Z = "); Serial.println(gyro_z);
delay(500);
}
راه اندازی ماژول MPU6050 GY-52 با میکروپایتون
در این کد، ماژول MicroPython با نام machine برای مقداردهی اولیه رابط I2C و خواندن دادهها از ماژول MPU6050 استفاده میشود. سپس دادههای شتابسنج و ژایروسکوپ از مقادیر خام به مقادیر مقیاسدار تبدیل میشوند. دادههای سنسور هر ۰.۵ ثانیه در کنسول چاپ میشوند.مطمئن شوید که پینهای SDA و SCL ماژول MPU6050 را به پینهای متناظر روی میکروکنترلر یا برد توسعه خود متصل کردهاید.
همچنین، مطمئن شوید که ماژول با ولتاژ مورد نیاز (3.3 ولت) تغذیه شده است و پین GND به زمین برد شما متصل شده است. توجه داشته باشید که شماره پینهای استفاده شده در کد (Pin(5) و Pin(4)) بسته به برد یا میکروکنترلر خاص شما ممکن است متفاوت باشد. لطفاً شماره پینها را مطابق با نیاز خود تنظیم کنید.شما میتوانید این کد را با استفاده از یک دستگاه قابلیت MicroPython، مانند برد ESP32 یا ESP8266، اجرا کرده و دادههای سنسور را در خروجی کنسول مشاهده کنید.
from machine import Pin, I2C
import time
# MPU6050 I2C address
MPU6050_ADDR = 0x68
# MPU6050 registers
REG_ACCEL_XOUT_H = 0x3B
REG_GYRO_XOUT_H = 0x43
# Initialize I2C
i2c = I2C(scl=Pin(5), sda=Pin(4))
accel_data = bytearray(6)
gyro_data = bytearray(6)
def read_mpu6050_data(reg_addr, data_buf):
i2c.writeto(MPU6050_ADDR, bytes([reg_addr]))
i2c.readfrom_into(MPU6050_ADDR, data_buf)
def convert_raw_data(data_buf):
raw_data = int.from_bytes(data_buf, 'big', signed=True)
scaled_data = raw_data / 16384.0 # MPU6050 sensitivity scale factor for +/- 2g range
return scaled_data
while True:
# Read accelerometer data
read_mpu6050_data(REG_ACCEL_XOUT_H, accel_data)
accel_x = convert_raw_data(accel_data[0:2])
accel_y = convert_raw_data(accel_data[2:4])
accel_z = convert_raw_data(accel_data[4:6])
# Read gyroscope data
read_mpu6050_data(REG_GYRO_XOUT_H, gyro_data)
gyro_x = convert_raw_data(gyro_data[0:2])
gyro_y = convert_raw_data(gyro_data[2:4])
gyro_z = convert_raw_data(gyro_data[4:6])
# Print the sensor data
print("Accelerometer: X = {:.2f}g, Y = {:.2f}g, Z = {:.2f}g".format(accel_x, accel_y, accel_z))
print("Gyroscope: X = {:.2f}°/s, Y = {:.2f}°/s, Z = {:.2f}°/s".format(gyro_x, gyro_y, gyro_z))
time.sleep(0.5)
مشخصات
- کاربری
- مناسب برای استفاده صنعتی
- نوع ماژول
- شتاب و ژایرو
- نوع سنسور
- ژایرو
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.