وحدة مستشعر الحركة بالأشعة تحت الحمراء HC-SR501

25,00 DH 28,00 DH

التوفر:

1005 متوفر في المخزون

رمز المنتج: 0122 التصنيفات: ,

الوصف

وحدة مستشعر الحركة بالأشعة تحت الحمراء HC-SR501

تستخدم وحدة كشف الحركة HC-SR501 مستشعرًا سلبيًا للأشعة تحت الحمراء لاكتشاف الحركة ضمن مجال يصل إلى 7 أمتار وزاوية 120 درجة.

المواصفات التفصيلية

  • جهد التغذية: من 4.5V إلى 20V DC
  • الخرج: إشارة رقمية HIGH (3.3V) أو LOW (0V)
  • زاوية الكشف: < 120 درجة
  • مسافة الكشف: حتى 7 أمتار
  • زمن التأخير: قابل للضبط من 5 ثوانٍ إلى 5 دقائق
  • الأبعاد: 32 mm x 24 mm
  • استهلاك التيار: < 60µA
  • درجة حرارة التشغيل: من -15°C إلى 70°C

طريقة العمل

يكتشف مستشعر PIR HC-SR501 التغيرات في مستويات الأشعة تحت الحمراء ضمن مجال رؤيته. عند دخول جسم دافئ، مثل إنسان أو حيوان، إلى هذا المجال، يرسل المستشعر إشارة HIGH. وتتيح مقاومتان متغيرتان على الوحدة ضبط الحساسية وزمن التأخير.

الاستخدامات

  • أنظمة الأمان
  • الإضاءة التلقائية
  • عدّ الأشخاص
  • أنظمة الإنذار
  • مشاريع المنزل الذكي

توزيع الأطراف

  • VCC: مصدر الطاقة (من 4.5V إلى 20V)
  • OUT: خرج رقمي
  • GND: الأرضي

طريقة الاستخدام

لاستخدام HC-SR501 مع Arduino، صِل VCC بمصدر 5V في Arduino، وGND بالأرضي، وOUT بمدخل رقمي في Arduino (مثل D2).

طريقة الاستخدام مع Arduino Uno

مثال أساسي على كود Arduino

#define PIR_PIN 2
#define LED_PIN 13


void setup() {
  pinMode(PIR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}


void loop() {
  int pirState = digitalRead(PIR_PIN);
  if (pirState == HIGH) {
    digitalWrite(LED_PIN, HIGH);
    Serial.println("Mouvement détecté !");
  } else {
    digitalWrite(LED_PIN, LOW);
    Serial.println("Pas de mouvement.");
  }
  delay(1000);
}

هدف الكود

يقرأ هذا الكود حالة مستشعر الحركة ويضيء LED عند اكتشاف حركة. كما يعرض حالة المستشعر في Serial Monitor.

المكونات المطلوبة للمثال الأساسي

  • Arduino Uno
  • وحدة مستشعر الحركة HC-SR501
  • أسلاك توصيل

شرح تفصيلي للكود الأساسي

  1. التهيئة: يُضبط الاتصال التسلسلي على 9600 baud. ويُهيأ الطرفان PIR_PIN وLED_PIN كمدخل ومخرج على التوالي.
  2. قراءة البيانات: تُقرأ قيمة PIR_PIN وتُخزن في pirState. عند اكتشاف حركة، يضيء LED وتظهر رسالة في Serial Monitor. وإلا ينطفئ LED وتظهر رسالة أخرى.

توصيلات المثال الأساسي

  • VCC: يُوصل بمصدر 5V في Arduino
  • GND: يُوصل بأرضي Arduino
  • OUT: يُوصل بالطرف D2 في Arduino

مثال Arduino متقدم: عرض على LCD ومعالجة الأخطاء وتحسينات

#include <LiquidCrystal_I2C.h>


// Constantes
const int PIR_PIN = 2; // Broche du capteur PIR
const int LED_PIN = 13; // Broche de la LED interne de l'Arduino
const int DELAY_TIME = 1000; // Délai entre les lectures en millisecondes


LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialisation de l'écran LCD I2C avec l'adresse 0x27 et une taille de 16x2


void setup() {
  pinMode(PIR_PIN, INPUT); // Configurer la broche PIR_PIN en entrée
  pinMode(LED_PIN, OUTPUT); // Configurer la broche LED_PIN en sortie
  lcd.begin(); // Initialisation de l'écran LCD
  lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
  Serial.begin(9600); // Initialisation de la communication série à 9600 bauds
}


void readSensorValue(int& pirState) {
  pirState = digitalRead(PIR_PIN); // Lire l'état du capteur PIR
}


void displayValuesOnLCD(int pirState) {
  static int lastPirState = -1; // Variable pour stocker le dernier état du capteur PIR affiché


  if (pirState != lastPirState) { // Met à jour l'affichage uniquement si l'état a changé
    lcd.clear(); // Efface l'écran LCD
    lcd.setCursor(0, 0); // Positionne le curseur à la première ligne
    lcd.print("PIR Sensor: "); // Affiche le texte "PIR Sensor: "
    if (pirState == HIGH) {
      lcd.setCursor(0, 1); // Positionne le curseur à la deuxième ligne
      lcd.print("Mouvement!"); // Affiche "Mouvement!"
    } else {
      lcd.setCursor(0, 1); // Positionne le curseur à la deuxième ligne
      lcd.print("Pas de mouv."); // Affiche "Pas de mouv."
    }
    lastPirState = pirState; // Met à jour le dernier état affiché
  }
}


void displayValuesOnSerialConsole(int pirState) {
  if (pirState == HIGH) {
    Serial.println("Mouvement détecté !"); // Affiche "Mouvement détecté !" sur la console série
  } else {
    Serial.println("Pas de mouvement."); // Affiche "Pas de mouvement." sur la console série
  }
}


void loop() {
  int pirState;
  readSensorValue(pirState); // Lire l'état du capteur PIR
  digitalWrite(LED_PIN, pirState); // Allumer ou éteindre la LED en fonction de l'état du capteur PIR
  displayValuesOnLCD(pirState); // Afficher l'état sur l'écran LCD
  displayValuesOnSerialConsole(pirState); // Afficher l'état sur la console série
  delay(DELAY_TIME); // Attendre avant de refaire une lecture
}

المكونات المطلوبة للمثال المتقدم

  • Arduino Uno
  • وحدة مستشعر الحركة HC-SR501
  • شاشة LCD 1602 بواجهة I2C
  • أسلاك توصيل

شرح تفصيلي للكود المحسّن

  1. إضافة المكتبة: تتيح LiquidCrystal_I2C.h الاتصال بشاشة LCD باستخدام بروتوكول I2C.
  2. تعريف الثوابت: تحدد الثوابت طرف مستشعر PIR (PIR_PIN) وطرف LED (LED_PIN) والفاصل بين القراءات (DELAY_TIME).
  3. تهيئة شاشة LCD: تهيئ setup() الشاشة والاتصال التسلسلي بسرعة 9600 baud، كما تهيئ PIR_PIN وLED_PIN كمدخل ومخرج.
  4. قراءة قيم المستشعر: تقرأ readSensorValue(int& pirState) حالة مستشعر PIR وتخزنها في pirState.
  5. عرض القيم على شاشة LCD: تعرض displayValuesOnLCD(int pirState) حالة المستشعر ولا تحدّث الشاشة إلا عند تغير الحالة. ويُستخدم متغير static لحفظ آخر حالة معروضة.
  6. عرض القيم في Serial Monitor: ترسل displayValuesOnSerialConsole(int pirState) حالة مستشعر PIR إلى وحدة التحكم التسلسلية.
  7. الحلقة الرئيسية: تقرأ loop() حالة المستشعر، وتحدّث LED، وتعرض الحالة على الشاشة ووحدة التحكم التسلسلية، ثم تنتظر ثانية قبل القراءة مجددًا.

تثبيت المكتبات

الكود الأساسي والمتقدم: لا يحتاج المثال الأساسي إلى مكتبة خاصة. لاستخدام المثال المتقدم مع شاشة I2C، ثبّت LiquidCrystal_I2C عبر مدير المكتبات في Arduino IDE.

  1. افتح Arduino IDE.
  2. انتقل إلى Sketch -> Include Library -> Manage Libraries…
  3. ابحث عن LiquidCrystal_I2C واضغط Install.

 
الكلمات المفتاحية: مستشعر الحركة، الأشعة تحت الحمراء السلبية، كشف PIR، HC-SR501، أمان المنزل، الأتمتة الصناعية، توفير الطاقة.

شكرًا لولائك!

AR