أنت هنا:إصنعها»الحساسات»برمجة الحساسات»برمجة حساس تحديد الاهتزازات

برمجة حساس تحديد الاهتزازات

كتبه برمجة الحساسات 42997 كن أول من يعلق
آخر تعديل في الأحد, 06 كانون1/ديسمبر 2020 20:36
برمجة حساس تحديد الاهتزازات
قيم الموضوع
(1 تصويت)

سلسلة برمجة المستشعرات الاليكترونية مهمة جدا في برمجة الروبوتات،

بحيث أنها تمثل الحواس التي من خلالها يمكن للروبوت التفاعل مع محيطه.

يمكن أن تجعل روبوتك يحس بالاهتزازت كالطرق على الباب أو الطاولة أو

أي شي آخر صلب عن طريق مستشعر بسيط جدا ومتواجد في كثير من الأجهزة.


 تعريف 

 

مستشعر الاهتزاز (أو الطقطقة) (knock sensor أو Piezo) عبارة عن مركب اليكتروني بسيط جدا يمكن استعماله كمولد لنوتات صوتية أو كمستشعر للاهتزاز.

 

تجدر الاشارة إلى أن مستشعر الاهتزاز يتميز بالقطبية، يعني أنه غالبا ما يكون مزودا بمربط أحمر وآخر أسود لتسهيل عملية تركيبه (أعني التمييز بين قطبه السالب وقطبه الموجب أو 5 فولط واﻷرضية).

01

 {jumi [*3]}


تفكر

  

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

 02

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

 

ويستطيع هذا الضفدع من تلقي الاهتزازت من طرف أقرانه عن طريق رجليه الخلفيتين أيضا، ويقوم بالإجابة على هذه الإشارات بإرسال اهتزازات أخرى أحيانا.

 

ويؤمن الباحثون أن هذا النوع من الضفادع يمكن أن يستعمل لغة الاهتزازات لتبادل رسائل أخرى وتنبيه بعضها البعض في حالة وجود خطر.

 03

بل وكثير من الحشرات تعتمد على لغة الاهتزازات للتواصل والصيد وما إلى ذلك....

  


أنواعها  

  

 


كيف تركب في الروبوت؟


غالبا ما يستعمل هذا المستشعر ﻹصدار نوتات صوتية (أو قل موسيقية) تعبر عن حالة ما للجهاز. فمثلا تجد جهاز الحاسوب (خصوصا القديم منها) مزودا بواحد من هذه المستشعرات، وانتبه عندما تريد تشغيل الحاسوب فستسمع نوتات صوتية متفرقة لها معان قل ما يعرفها الناس. من بين هذه النوتات: نوتة يصدرها الحاسوب عند إيجاده للذاكرة وأخرى عند إيجاده للشاشة أو لبطاقة الغرافيكس وهكذا...

 


اﻷجزاء الرئيسية

 

لامتحان هذا المستشعر سنحتاج للتالي:  

  • بطاقة Arduino
  • مستشعر الاهتزاز (Piezo sensor)
  • أسلاك كهربائية (يمكنك الحصول عليها من حاسوب قديم مثلا)
  • مقاومة كهربائية (1MegaOhm) أي 1000 كيلوأوم
  • صماما ثنائيا ضوئيا (LED)  

تركيب الدارة الكهربائية 

 

 

أرأيت؟ اﻷمر بسيط جدا يا حبيبي؟؟؟ ما عليك إلا أن تصل السلك اﻷسود للمستشعر بالمربط GND للبطاقة والسلك اﻷحمر بالمربط التناظري Analog 0. صل أيضا مربطي المقاومة بالمربط GND للبطاقة والمربط التناظري Analog 0 كما ترى في الصورة.

 

ربما تساءلت عن الغاية وراء استعمال المقاومة! إيه، المقاومة مركبة على التوازي مع المستشعر لحماية المربط التناظري للبطاقة من التلف إذا ما قام المستشعر بانتاج تيار كهربائي قوي عند تنشيطه.

 04

يمكنك أن تزيل الغطاء البلاستيكي اﻷسود للمستشعر، سيكون أحسن إن فعلت ذلك لا سيما إذا أردنا أن نبرمجه على أنه مستشعر الاهتزاز، أما إذا أردت أن تبرمجه على أنه منتج لنوتات صوتية فلابأس أن تترك الغطاء ﻷنه سيساعد على تكبير الصوت.

  


آلية عمل المستشعر 

 

النموذج الذي سنستعمله اليوم يستطيع تحديد اهتزازات محددة كالضرب على بطاقة Arduino أو الجهاز المركب فيه. لا أدري هل يستطيع أن يستشعر الهزات اﻷرضية كالزلزال أم لا!!! المهم، عندما تجرب ذلك أخبرنا من فضلك...   

 


برمجة

 

اسمعني جيدا! عندما نذكر كلمة تناظري Analog نعني به عكس رقمي digital، يعني أن النظام الرقمي يكون إحدى الحالتين (0 أو 1، صح أو خطأ، 0 فولط أو 5 فولط، نعم أو لا، ON أو OFF ….) أما النظام التناظري فيعطيك الكثير من الحالات (مثلا جميع القيم بين 0 فولط و 5 فولط أو جميع الأرقام بين 7 و 100 مثلا).

 

لماذا هذه الثرثرة كلها؟ فقط لنقول لك أن مستشعر الاهتزاز عبارة عن نظام تناظري، ولهذا تم إيصاله بالمربط التناظري للبطاقة. ولنقول لك أيضا أن القيم التي يزودك بها المستشعر ستنحصر بين 0 فولط و5 فولط. 

 

لقراءة القيم الصادرة من المستشعر نستعمل دالة اسمها analogRead، التي ستقوم بتحويل القيم بين 0 فولط و5 فولط الى قيم عددية محصورة بين 0 و 1023. 

 

بطبيعة الحال أن المستشعر سيزودك دائما بقيم قد تكون صغيرة أو متوسطة أو كبيرة. لكن هل سألت نفسك كيف سنبرمجه حتى يحدد لنا فقط الاهتزازات القوية؟؟؟ هنا سنعتبر قيمة (نسميها عتبة)، إذا تجاوز القيمة المقروءة من المستشعر العتبة نقول أننا عندنا اهتزازا في هذه الحالة والعكس بالعكس. 

 

سنستعمل البطاقة البرمجية Arduino للتفاعل مع المستشعر. وبإمكانك عن طريق هذه الشيفرة أن تقوم ببرمجة مماثلة عندما تريد أن تزود روبوتك بمستشعر للاهتزاز مثلا لاسيما إذا استطدم أو صدم بأشياء في طريقه مثلا. 

 

/* مستشعر الاهتزاز

تقوم هذه الشيفرة بقراءة القيم الصادرة من المستشعر لتحديد إذا ما كان هناك أي اهتزاز.
ستعمل الشيفرة على مقارنة القيمة المحصول عليها بعتبة محددة
"taqtaq" إذا كانت القيمة المحصول عليها أكبر من العتبة سنكتب كلمة
ونشعل الصمام الثنائي الموصول بالمربط 13 للبطاقة

:الدارة الكهربائية
*
Analogالقطب الموجب للمستشعر موصول بالمربط التناظري 0
*
GND القطب السالب للمستشعر موصول باﻷرضية
*
مقاومة مركبة على التوازي مع المستشعر من المربط التناظري 0 ألى اﻷرضية

http://www.arduino.cc/en/Tutorial/Knock

أنشأت هذه الشيفرة يوم25 مارس2007
<http://www.0j0.org> David Cuartielles
من طرف
وتم تعديلها يوم30 غشت2011
Tom Igoe
من طرف

وتمت ترجمتها من طرف محمد السهلي يوم 30 نوفمبر 2011

يمكن استعال هذه الشيفرة بكل حرية
*/


//
تعريف الثوابت
const int ledPin = 13;                // الصمام الضوئي موصول بالمربط 13
const int knockSensor = A0;  // المستشعر موصول بالمربط التناظري 0
const int threshold = 100;       // العتبة لتحديد هل هناك اهتزازا


// تعريف المتغيرات
int sensorReading = 0;  //متغير يحتفظ بالقيمة المقروءة من المستشعر
int ledState = LOW;        // متغير من أجل إشعال الصمام الضوئي وإطفائه

void setup()

{
  pinMode(ledPin,OUTPUT);  // سيكون مربط الصمام مخرجا
  Serial.begin(9600);                // تهيئة سرعة التحويل
}

void loop()

{
  // sensorReading تقوم هذه الدالة بقراءة القيمة الصادرة من المستشعر وتضعها في
  sensorReading= analogRead(knockSensor);

  // هل القيمة الصادرة من المستشعر أكبر من أو تساوي العتية
  if(sensorReading>=threshold)

  {
     ledState=!ledState;                     // غير حالة الصمام
     digitalWrite(ledPin,ledState);   // أرسل الحالة الجديدة إلى الصمام
     // نرسلة كلمة الطقطقة لتظهر على الحاسوب في حالة إذا ما كانت البطاقة موصولة به
     Serial.println("taqtaq!");
  }
  delay(100);// ننتظر بعض اﻷجزاء من الثانية لتأخذ البطاقة أنفاسها
}

  


تمرين

 

قم بتعديل الشيفرة بحيث يشتعل الصمام إذا كان هناك اهتزاز وينطفئ إذ لم يكن.

 

قم بتجربته الآن على قلبك لترى نبضات قلبك عن طريق ضوء الصمام. قم بتجربته عند معصمك أيضا. ما رأيك؟

 05


تأليف

محمد السهلي 

 

{jumi [*3]}

{jumi [*3]}

{jumi [*3]}


 المراجع 

http://www.telegraph.co.uk/earth/wildlife/7782831/Tree-frogs-communicate-with-good-vibrations.html

http://www.arduino.cc/en/Tutorial/Knock 


 
مقالات أخرى من نفس الفئة « برمجة الموجات فوق الصوتية

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث