الأردوينو

كيف يعمل حساس الحركة مع الأردوينو؟

يوجد العديد من أنواع مستشعرات الحركة التي يمكن استخدامها مع Arduino، ومن أشهرها مستشعر الحركة PIR (Passive Infrared) ومستشعر الحركة MPU6050.

لتوصيل مستشعر الحركة PIR مع Arduino ، يتم توصيل الأسلاك كما هو موضح في الصورة التالية:

![توصيل مستشعر الحركة PIR مع Arduino](https://i.stack.imgur.com/xn7le.jpg)

بعد التوصيل بشكل صحيح ، يمكن استخدام المكتبات المتاحة في Arduino IDE لقراءة القيم من المستشعر واستخدامها في مشاريع مختلفة. يمكن استخدام الكود التالي كنموذج للتحقق من عمل المستشعر:

“`
int pirPin = 2; // تعيين المدخل الذي يتم توصيله مع مستشعر الحركة
int ledPin = 13;// تعيين المخرج الذي يتم توصيله مع LED
int pirState = LOW; // تعيين حالة المستشعر بدءاً من “منخفض”
int val = 0; // تعيين قيمة القراءة المقروءة من المستشعر

void setup() {
pinMode(pirPin, INPUT); // تعيين المدخل كمدخل للإشارة الرقمية
pinMode(ledPin, OUTPUT); // تعيين المخرج كمخرج للإشارة الرقمية
Serial.begin(9600); // فتح المنفذ التسلسلي
}

void loop() {
val = digitalRead(pirPin); // قراءة قيمة المستشعر
if (val == HIGH) { //إذا رصد المستشعر حركة
digitalWrite(ledPin, HIGH); // التبديل إلى حالة “عالية” لتشغيل LED
if (pirState == LOW) { // إذا كان المستشعر كان “منخفض”
Serial.println(“Motion detected!”); // إرسال رسالة إلى Serial Monitor
pirState = HIGH; // تعيين حالة المستشعر إلى “عالية”
}
} else {
digitalWrite(ledPin, LOW); // التبديل إلى حالة “منخفضة” لإيقاف تشغيل LED
if (pirState == HIGH){ // إذا كان المستشعر في “حالة عالية” سابقة
Serial.println(“Motion ended!”); // إرسال رسالة إلى Serial Monitor
pirState = LOW; // تعيين حالة المستشعر إلى “منخفضة”
}
}
}
“`

لتوصيل مستشعر الحركة MPU6050 مع Arduino ، يتم توصيل الأسلاك كما هو موضح في الصورة التالية:

![توصيل مستشعر الحركة MPU6050 مع Arduino](https://i.stack.imgur.com/yPB25.png)

يمكن استخدام مكتبة MPU6050 المتاحة في Arduino IDE لقراءة البيانات من المستشعر (على سبيل المثال: تسارع وزاوية الدوران). يمكن استخدام الكود التالي كنموذج للتحقق من عمل المستشعر:

“`
#include //تشغيل ارتباط I2C بين MPU6050 وArduino
#include //تفعيل مكتبة MPU6050 والدالات الخاصة بها

MPU6050 mpu; //تعيين متغير الكائن من فئة MPU6050

void setup() {
Wire.begin(); //البدء في ارتباط I2C
Serial.begin(9600); //البدء في إرسال البيانات النصية
mpu.initialize(); //تهيئة مستشعر الحركة
Serial.println(mpu.testConnection() ? “MPU6050 connection successful” : “MPU6050 connection failed”); // التحقق من الاتصال بمستشعر الحركة
}

void loop() {
// قراءة القيم الحالية للتسارع وزاوية الدوران
int16_t ax, ay, az, gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

// إرسال القيم المقروءة إلى Serial Monitor
Serial.print(“a(x,y,z)=”);
Serial.print(ax);
Serial.print(“, “);
Serial.print(ay);
Serial.print(“, “);
Serial.println(az);
Serial.print(“g(x,y,z)=”);
Serial.print(gx);
Serial.print(“, “);
Serial.print(gy);
Serial.print(“, “);
Serial.println(gz);
Serial.println(“”);
delay(100); //تأخير لعرض البيانات بهدوء
}
“`