🧭 معرفی ماژول MPU6050 و پروژه مدل سهبعدی با Arduino + Processing
📦 ماژول MPU6050 چیست؟
ماژول MPU6050 یک سنسور ترکیبی ژیروسکوپ و شتابسنج ۳ محوره است. یعنی میتونه زاویه چرخش (Gyro) و تغییر مکان (Accel) رو در محورهای X، Y و Z تشخیص بده. این ماژول از طریق پروتکل I2C با آردوینو ارتباط برقرار میکنه.
🔌 اتصالات ماژول MPU6050 به Arduino
MPU6050 | Arduino UNO |
---|---|
VCC | ۳.3V یا 5V |
GND | GND |
SDA | A4 (SDA) |
SCL | A5 (SCL) |
اگر از بردهایی مثل ESP32 استفاده میکنی، پینهای I2C رو متناسب با اون تغییر بده.
🧠 کد آردوینو (خواندن اطلاعات MPU6050)
ابتدا باید کتابخانههای مورد نیاز رو نصب کنید:
✅ کتابخانهها:
MPU6050
(توسط Electronic Cats یا Jeff Rowberg)Wire
✅ کد Arduino:
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("MPU6050 connection failed");
while (1);
}
}
void loop() {
int16_t ax, ay, az;
int16_t gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
Serial.print("aX:"); Serial.print(ax);
Serial.print("\taY:"); Serial.print(ay);
Serial.print("\taZ:"); Serial.print(az);
Serial.print("\tgX:"); Serial.print(gx);
Serial.print("\tgY:"); Serial.print(gy);
Serial.print("\tgZ:"); Serial.println(gz);
delay(50);
}
🧊 ساخت مدل سهبعدی با Processing
Processing یه محیط ساده برای طراحی گرافیک تعاملیه. اینجا با استفاده از دادههایی که از سریال میگیریم، یه مکعب سهبعدی رو مطابق چرخش MPU6050 میچرخونیم.
✅ کد Processing:
import processing.serial.*;
Serial myPort;
String val;
float ax, ay, az;
void setup() {
size(600, 600, P3D);
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil('\n');
}
void draw() {
background(100);
lights();
translate(width/2, height/2, 0);
rotateX(radians(ax));
rotateY(radians(ay));
rotateZ(radians(az));
fill(150, 200, 250);
box(200);
}
void serialEvent(Serial myPort) {
val = myPort.readStringUntil('\n');
if (val != null) {
val = trim(val);
if (val.startsWith("aX:")) {
String[] tokens = split(val, '\t');
ax = float(split(tokens[0], ':')[1]) / 16384.0 * 90;
ay = float(split(tokens[1], ':')[1]) / 16384.0 * 90;
az = float(split(tokens[2], ':')[1]) / 16384.0 * 90;
}
}
}
🎯 نکات مهم:
- با تغییر مقیاس دادهها (تقسیم بر ۱۶۳۸۴ یا …)، شدت چرخش رو کنترل میکنید.
- اگر مکعب در محور نادرست میچرخه، ترتیب محورهای چرخش در
rotateX/Y/Z
رو تغییر بدید. در برخی مدلها نیاز به کالیبراسیون اولیه وجود داره.
در ویدیوی زیر هم میتونید نحوه عملکرد ماژول MPU6050 رو مشاهده کنید
ویدیو به زودی منتشر میشود ….