مقدمـــــــة عن المشروع
مرحبا بالجميع !!!
اليوم نتحدث عن حساس التسارع أو المعروف بأسم حساس التوازن MPU-6050 والذي بواسطته يمكن تحقيق توازن الطائرات وخاصة التي من دون طيار أو الطائرات السيرة , كما يمكن أستخدامه في مجالات الذكاء الأصطناعي ولعله أبرز أستخدام له فيها هي الروبوتات أو ما يعرف بالانسان الالي .
الحساس يمكن من قياس الزوايا علي المحاور الثلاث , بجانب قياسه للدوران حول أي محور .
بعد ربط الحساس وتحميل الكود على الاردوينو , قم بتحريك الحساس حركة منتظمة أو غير منتظمة وأفتح شاشة السيريل من داخل البيئة التطويرية للاردوينو ستلاحظ قيم المحاور الثلاث وهي تتغير وفقا لحركة الحساس .
متطلبات المشروع
- Arduino Uno
- Hook Up Wires
- breadboard Board
- GY-521(MPU-6050) sensor
طريقة العمل والتوصيل
يتعين علينا توصيل MPU-6050 بأردوينو UNO كما هو موضح في الصورة أعلاه . وبالتالي طريقة التوصيل كالتالي :
- VCC to 5V(MPU-6050 works with 3.3V but GY-521 increases it to 5V.),
- GND to GND,
- SCL to A5,
- SDA to A4,
- ADO to GND,
- INT to digital pin 2.
الكـــــــــود البرمجي
لتحميل الكود البرمجي اضغط هنا
//Measurement of Angle with MPU-6050(GY-521) #include<Wire.h> const int MPU_addr=0x68; int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; int minVal=265; int maxVal=402; double x; double y; double z; void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); Serial.begin(9600); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); AcX=Wire.read()<<8|Wire.read(); AcY=Wire.read()<<8|Wire.read(); AcZ=Wire.read()<<8|Wire.read(); int xAng = map(AcX,minVal,maxVal,-90,90); int yAng = map(AcY,minVal,maxVal,-90,90); int zAng = map(AcZ,minVal,maxVal,-90,90); x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI); y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI); z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI); Serial.print("AngleX= "); Serial.println(x); Serial.print("AngleY= "); Serial.println(y); Serial.print("AngleZ= "); Serial.println(z); Serial.println("-----------------------------------------"); delay(400); }