يوجد العديد من أنواع مستشعرات الحركة التي يمكن استخدامها مع 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
#include
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); //تأخير لعرض البيانات بهدوء
}
“`