عناوين الدرس

استشعار الاهتزاز باستخدام Piezo Element

مبتدئ

خلال هذا المشروع، سنتعلم كيفية استخدام عنصر الـ piezo مع الاردوينو لإستشعار الإهتزازات.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو

المكونات المطلوبة

arduino uno r3

Arduino Uno

piezo-element-murata-electronics-7bb

Piezo Element

LED 5mm

220 Ω resistor

مقاومة 220 اوم

 

 

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

Piezo Element

يستخدم عنصر البيزو للكشف عن الأصوات. يمتلك هذا العنصر مواد لها القدرة على توليد فرق جهد كهربائي عندما تتعرض لإجهاد ميكانيكي مثل الطرق عليه أو تعرضه للإهتزاز. فهو بعمل بشكل معاكس لفكرة عمل الـ Buzzer الذي يتكون من piezo crystal ويصدر النغمات عند تعرضه إلى جهد كهربائي.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو
piezo-element-murata-electronics-7bb

توصيل الدارة

قم بتوصيل الدارة كما هو مبين بالشكل التالي :

piezo_element

 

يولد عنصر الـ Piezo اشارة تناظرية (analog) ، اي يتم توصيله على احد منافذ الاردوينو التناظرية من A0 إلى A5 ، والطرف الأخر يتم توصيله إلى الـ GND.

الطرف التوصيل
1 A0
2 Ground

سنقوم بكتابه برنامج بحيث يقوم الـ LED بعمل فلاش عند تعرض عنصر الـ piezo للإهتزاز. طالما مصدر الإهتزاز موجود يظل الفلاش يعمل حتى يتوقف الإهتزاز.

استشعار الاهتزاز باستخدام Piezo مع الاردوينو

الكود البرمجي

 

#define ledPin  13
#define knockSensor  A0

int threshold = 100;
int sensorReading = 0;
int ledState = LOW;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  sensorReading = analogRead(knockSensor);
  if (sensorReading >= threshold) {
    ledState = !ledState;
    digitalWrite(ledPin, ledState);
    Serial.println("Knock!"); 
  }
  delay(500);
}

شرح الكود :

في البداية، نقوم بتعريف متغيرات لمنافذ الاردوينو التي تم استخدامها في المشروع. وتعريف متغيرات اخرى لإستخدامها في البرمجة. سيتم استخدام متغير threshold لحفظ القيمة التي تستخدم للدلاله على حدوث اهتزاز عند وصول قراءة عنصر البيزو إلى هذه القيمة. ومتغير sensorReading لحفظ قيمة قراءة العنصر. والمتغير ledState لحفظ حالة الـ LED .

#define ledPin  13
#define knockSensor  A0

int threshold = 100;
int sensorReading = 0;
int ledState = LOW;

في الدالة ()setup، نقوم بضبط الـ LED كمخرج، وتشغيل الشاشة التسلسلية Serial Monitor .

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

في الدالة ()loop ، نقوم بقراءة قيمة عنصر البيزو ومقارنتها بالقيمة المحفوظة داخل المتغير threshold. عندما تكون قيمة العنصر اكبر، اي ان العنصر قد اهتز، نقوم بعمل فلاش على الـ LED وكتابة “knock!” على الشاشة التسلسلية.

void loop() {
  sensorReading = analogRead(knockSensor);
  if (sensorReading >= threshold) {
    ledState = !ledState;
    digitalWrite(ledPin, ledState);
    Serial.println("Knock!"); 
  }
  delay(500);
}

ملاحظة

تحدث ضوضاء في البيئة المحيطة نتيجة لترددات الراديو، فبدون استخدام المتغير threshold سيعمل الفلاش لأن هذه الضوضاء يقوم الأردوينو بقراءتها على انها جهود صغيرة. فعند إستخدام المتغير بقيمة اكبر من قيمة الضوضاء الموجودة يمكن اهمال تأثيرها.

X
Product added to the cart