يُقدّر عدد الأشخاص المصابين بالعمى التّام بحوالي 30 مليون شخص حول العالم وذلك وفقاً لمنظّمة الصّحّة العالميّة، ويعتمدون بشكل كلّي على الآخرين في حركتهم.
يعرض هذا المقال آليّة تصميم نموذج عصا ذكيّة للمكفوفين باستخدام حسّاس مسافة لمساعدتهم على التّنقّل بسهولة وبشكل مستقلّ، وكذلك توجيه التّحذيرات لهم عندما يعترض مسارهم جسم ما، وذلك عن طريق استخدام buzzer في الدّارة يختلف تردّد إصدارها للصّوت باختلاف المسافة التي تفصل الحسّاس عن الجسم الواقع أمامه، وهذا التّردّد يتناسب عكساً مع المسافة.
استخدمنا في هذا التّصميم حسّاسَ مسافة واحداً، ويمكن استخدام حسّاسين أو أكثر للحصول على دقّة أكبر.
يعمل حسّاس المسافة وفق تقنيّة الأمواج فوق الصّوتيّة، حيث يرسل أمواجاً ذاتَ تردّد ٍمرتفع ٍثمّ يحسب الزّمن اللّازم لاستقبالها كإشارة صدى مرتدّة.
يتكوّن حسّاس المسافة من دارتين، إحداها تعمل كمرسِل للأمواج فوق الصّوتيّة، والأخرى متلقٍّ –غالباً تكون ميكروفوناً صغيراً- لإشارة الصّدى المرتدّة.
يُعايَر هذا الحسّاس وفقاً لسرعة الصّوت في الهواء، حيث يُحدّد فرق الوقت بين إرسال الموجة واستقبالِها اعتماداً على الإدخال المعاير، ومنه نستطيع حساب المسافة بين الحسّاس والجسم الواقع أمامه.
العناصر المستخدمة:
• أردوينو Nano.
• حسّاس مسافة Ultrasonic نوع HC-SR04.
• Buzzer 5v.
• مفتاح DPDT.
• بطّارية 9V.
تصميم الدّارة:
يتكوّن حسّاس المسافة من أربعة أرجل هي:
• رِجل جهد التغذية 5v وتُوصل إلى الرّجل 5v من الأردوينو.
• رِجل القدحTrigger وتُوصل الى الرّجل D12 من الأردوينو.
• رِجل المستقبِل Echo وتُوصل إلى الرّجل D11 من الأردوينو.
• رجِل التّأريض وتوصَل إلى الرّجل GND من الأردوينو.
تُستخدَم لوجة التّطوير أردوينو نانو في هذه الدّارة لوصلها مع حسّاس المسافة المستخدم، يوصل قطب البطّاريّة الموجب 9v إلى دخْل الأردوينو عبر مفتاح DPDT ، وقطب البّطاريّة السّالب إلى قطب التّأريض GND في الأردوينو، كما يوصل الـbuzzer مع إحدى الأقطاب الرقميّة الواقعة بين D9 وقطب التّأريض.
يُوضّح الشّكل (1) تصميم المشروع كاملاً على برنامج الEagle.
الشّكل(1)مخطّط Eagle لدارة عصا ذكيّة للمكفوفين باستخدام حسّاس مسافة وأردوينو
كما يمكن تصميم تلك الدّارة باستخدام آلية طباعة الدّارات الإلكترونية PCB كما هو موضّح في الشّكل(2) والشّكل (3).
الشّكل(2) مخطّط PCBلدارة عصا ذكيّة للمكفوفين باستخدام حسّاس مسافة وأردوينو
الشّكل(3) لوح PCB
تنفيذ التّصميم:
يُوضِّح الشّكل (4) أنّ حسّاس المسافة له فجوتان، الأولى هي الـ Trigger والثّانية هي المستقبل, يرسل حسّاس المسافة أمواجاً ذات تردُّد مرتفع تصطدم بالجسم الواقع أمام الحسّاس ثُمّ تنعكس ويستقبلها المستقبِل, يقيس الأردوينو الوقت اللازم بين الإرسال والاستقبال والّذي يتناسب طرداً مع المسافة بين الحسّاس والجسم.
تبلغ سرعة الصّوت في الهواء 340 متراً في الثّانية، وتحسب المسافة بين الجسم والحسّاس بجُداء الزّمن في سرعة الصّوت مقسومةً على اثنين وفق العلاقة:
المسافة=(سرعة الصّوت * الزّمن)/2
بعد قياس المسافة يُصدر الـ buzzer صوتاً تتغيّر شدّتُه وفقاً للمسافة بين الحسّاس والجسم، حيث تزداد شدّة الصّوت عندما تصبح المسافة بينهما قليلة.
إنّ حسّاسات المسافة من نوع HC_05 لا تقيس لمسافات بعيدة، حيث مجال استقبالها لإشارة الخَرجْ يبلغ موالي 50cm فقط, ويمكن استخدام أنواع أخرى من حسّاسات المسافة لزيادة مجال عمل الحسّاس.
الشّكل (4)نموذج تنفيذ الدّارة
الكود البرمجي : التحميل من هنا
مناقشة الكود البرمجي:
بداية يتم تضمين المكتبة الخاصّة بحسّاس المسافة عن طريق تنزيل الملف المضغوط الخاصّ بها من الرّابط :https://github.com/JRodrigoTech/Ultrasonic-HC-SR04، ثمّ ننسخ المجلّد بداخله إلى ملفّ المكتبات الخاصّ بالأردوينو PC > Document > Arduino > libraries.
تُضمّن مكتبة حسّاس المسافة باستخدام التعليمة include# ، ثم يُعلن عن أقطاب الحسّاس بالتّعليمة
(Ultrasonic ultrasonic (12, 11، حيث يوصَل المستقبِل مع الرّجل 11D للأردوينو، ورجل القدح توصَل مع الرّجل 12D للأردوينو، كما يُصرّح عن الـbuzzer الموصول مع الرّجل 9D للأردوينو على أنّه مُخرج بالتّعليمة (PinMode(buzzer,OUTPUT ضمن تابع ()void setup.
نعرّف عددا صحيحاً ضمن حلقة LOOP يمثِّل المسافة المقاسة بين الحسّاس والجسم، حيث نستخدم التّعليمة (ultrasonic.Ranging(CM) لقياس المسافة بالسنتيمتر.
يُفعّل الـ buzzerبالتّعليمة (digitalWrite(buzzer,HIGH ويمكن التّحكّم بتفعيله عندما تصبح المسافة أقلّ من حد ّمعين، ونستخدم التّعليمة(if(distance<50 لتحقيق ذلك،
وعندما يتحقَّق هذا الشّرط يقيس الأردوينو المسافة وفق العلاقة dil=2*distance.
ويُعطى الـbuzzer انتظاراً زمنيّاً قدره المسافة المحسوبة (delay(dil، ثم يتوقّف بعدها تفعيلُه باستخدام نفس التاّبع
( digitalWrite(buzzer,LOW.