- المواد المطلوبة
- يعمل مستشعر الصوت
- قياس تردد الصوت على راسم الذبذبات
- مخطط دائرة اردوينو للكشف عن الصافرة
- قياس التردد بالاردوينو
- برمجة Arduino الخاص بك للكشف عن الصافرة
- اردوينو كاشف الصافرة يعمل
عندما كنت طفلاً كنت مفتونًا بلعبة السيارة الموسيقية التي يتم تشغيلها عندما تصفق بيديك ، وبعد ذلك عندما كبرت تساءلت عما إذا كان بإمكاننا استخدام نفس الشيء لتبديل الأضواء والمراوح في منزلنا. سيكون من الرائع تشغيل المراوح والأضواء بمجرد التصفيق باليدين بدلاً من السير بنفسي الكسولة إلى لوحة التبديل. ولكن في كثير من الأحيان قد تتعطل لأن هذه الدائرة ستستجيب لأي ضوضاء عالية في البيئة ، مثل الراديو العالي أو جزازة العشب الخاصة بجاري. على الرغم من أن بناء مفتاح التصفيق يعد أيضًا مشروعًا ممتعًا للقيام به.
كان ذلك حينها ، عندما صادفت طريقة الكشف عن الصافرة التي ستكتشف فيها الدائرة صافرة. سيكون للصفارة على عكس الأصوات الأخرى تردد موحد لمدة معينة وبالتالي يمكن تمييزها عن الكلام أو الموسيقى. لذلك في هذا البرنامج التعليمي سوف نتعلم كيفية اكتشاف صوت الصفير من خلال ربط مستشعر الصوت مع Arduino وعندما يتم اكتشاف صافرة ، سنقوم بتبديل مصباح التيار المتردد من خلال مرحل. على طول الطريق سوف نتعلم أيضًا كيفية استقبال الإشارات الصوتية بواسطة الميكروفون وكيفية قياس التردد باستخدام Arduino. يبدو الأمر مثيرًا للاهتمام ، لذا فلنبدأ في مشروع أتمتة المنزل القائم على Arduino.
المواد المطلوبة
- اردوينو UNO
- وحدة استشعار الصوت
- وحدة الترحيل
- المشبك
- توصيل الأسلاك
- اللوح
يعمل مستشعر الصوت
قبل أن نتعمق في اتصال الأجهزة ورمزها لمشروع أتمتة المنزل هذا ، دعنا نلقي نظرة على مستشعر الصوت. جهاز استشعار الصوت المستخدم في هذه الوحدة موضح أدناه. يشبه مبدأ العمل لمعظم أجهزة استشعار الصوت المتوفرة في السوق هذا ، على الرغم من أن المظهر قد يتغير قليلاً.
كما نعلم فإن المكون الأساسي في مستشعر الصوت هو الميكروفون. الميكروفون هو نوع من المحولات التي تحول الموجات الصوتية (الطاقة الصوتية) إلى طاقة كهربائية. يهتز الحجاب الحاجز داخل الميكروفون بشكل أساسي مع الموجات الصوتية في الغلاف الجوي مما ينتج عنه إشارة كهربائية على دبوس الإخراج. لكن هذه الإشارات ستكون ذات حجم منخفض جدًا (mV) وبالتالي لا يمكن معالجتها مباشرة بواسطة متحكم مثل Arduino. أيضًا الإشارات الصوتية الافتراضية هي إشارات تناظرية بطبيعتها ، ومن ثم فإن الإخراج من الميكروفون سيكون موجة جيبية بتردد متغير ، لكن المتحكمات الدقيقة هي أجهزة رقمية وبالتالي تعمل بشكل أفضل مع الموجة المربعة.
لتضخيم هذه الموجات الجيبية ذات الإشارة المنخفضة وتحويلها إلى موجات مربعة ، تستخدم الوحدة وحدة المقارنة LM393 المدمجة كما هو موضح أعلاه. يتم توفير خرج الصوت منخفض الجهد من الميكروفون لدبوس واحد من المقارنة من خلال ترانزستور مضخم بينما يتم ضبط الجهد المرجعي على الطرف الآخر باستخدام دائرة مقسم الجهد التي تتضمن مقياس جهد. عندما يتجاوز جهد خرج الصوت من الميكروفون الجهد المحدد مسبقًا ، يرتفع المقارنة بجهد 5 فولت (جهد التشغيل) ، وإلا فإن المقارنة تظل منخفضة عند 0 فولت. بهذه الطريقة يمكن تحويل موجة جيبية منخفضة الإشارة إلى موجة مربعة عالية الجهد (5 فولت). تُظهر لقطة الذبذبات أدناه نفس الشيء حيث تكون الموجة الصفراء هي موجة جيبية منخفضة الإشارة والأزرق يمثل موجة مربعة الإخراج. اليمكن التحكم في الحساسية عن طريق تغيير مقياس الجهد في الوحدة.
قياس تردد الصوت على راسم الذبذبات
ستحول وحدة مستشعر الصوت هذه الموجات الصوتية في الغلاف الجوي إلى موجات مربعة يكون ترددها مساويًا لتردد الموجات الصوتية. لذلك بقياس تردد الموجة المربعة يمكننا إيجاد تردد الإشارات الصوتية في الغلاف الجوي. للتأكد من أن الأشياء تعمل كما هو مفترض ، قمت بتوصيل مستشعر الصوت بنطاقي لفحص إشارة الخرج كما هو موضح في الفيديو أدناه.
قمت بتشغيل وضع القياس في النطاق الخاص بي لقياس التردد واستخدمت تطبيق Android (مولد صوت التردد) من متجر Play لإنشاء إشارات صوتية بتردد معروف. كما ترون في GID أعلاه ، كان النطاق قادرًا على قياس الإشارات الصوتية بدقة مناسبة جدًا ، وقيمة التردد المعروض في النطاق قريبة جدًا من القيمة المعروضة على هاتفي. الآن ، بعد أن علمنا أن الوحدة تعمل ، دعنا نواصل ربط مستشعر الصوت مع Arduino.
مخطط دائرة اردوينو للكشف عن الصافرة
يظهر أدناه مخطط الدائرة الكامل لدائرة تبديل Arduino Whistle Detector Switch باستخدام مستشعر الصوت. تم رسم الدائرة باستخدام برنامج Fritzing.
يتم تشغيل مستشعر الصوت ووحدة الترحيل بواسطة دبوس 5 فولت من Arduino. يتم توصيل دبوس الإخراج الخاص بمستشعر الصوت بالدبوس الرقمي 8 من Arduino ، وهذا بسبب خاصية المؤقت لهذا الدبوس وسنناقش المزيد حول هذا الأمر في قسم البرمجة. يتم تشغيل وحدة الترحيل بواسطة الدبوس 13 المتصل أيضًا بمصباح LED المدمج في لوحة UNO.
على جانب إمداد التيار المتردد ، يتم توصيل السلك المحايد مباشرة بالدبوس المشترك (C) لوحدة الترحيل بينما يتم توصيل الطور بدبوس الفتح الطبيعي (NO) للمرحل من خلال حمل التيار المتردد (لمبة الإضاءة). بهذه الطريقة عندما يتم تشغيل المرحل ، سيتم توصيل دبوس NO بـ C وبالتالي سوف يتوهج المصباح. وإلا سيظل blub مغلقًا. بمجرد إجراء الاتصالات ، بدا أجهزتي شيئًا كهذا.
تحذير: قد يصبح العمل مع دائرة التيار المتردد أمرًا خطيرًا ، لذا توخ الحذر أثناء التعامل مع الأسلاك الحية وتجنب حدوث ماس كهربائي. يوصى باستخدام قاطع الدائرة الكهربائية أو إشراف شخص بالغ للأشخاص الذين ليس لديهم خبرة في مجال الإلكترونيات. لقد تم تحذيرك!!
قياس التردد بالاردوينو
على غرار نطاقنا الذي يقرأ تردد الموجات المربعة الواردة ، يتعين علينا برمجة Arduino لحساب التردد. لقد تعلمنا بالفعل كيفية القيام بذلك في برنامجنا التعليمي عداد التردد باستخدام وظيفة النبض. ولكن في هذا البرنامج التعليمي ، سنستخدم مكتبة Freqmeasure لقياس التردد للحصول على نتائج دقيقة. تستخدم هذه المكتبة مقاطعة المؤقت الداخلي على الرقم 8 لقياس مدة بقاء النبض في وضع التشغيل. بمجرد قياس الوقت يمكننا حساب التردد باستخدام الصيغ F = 1 / T. ومع ذلك ، نظرًا لأننا نستخدم المكتبة مباشرة ، فإننا لا نحتاج إلى الدخول في تفاصيل السجل والرياضيات الخاصة بكيفية قياس التردد. يمكن تنزيل المكتبة من الرابط أدناه:
- مكتبة قياس التردد بواسطة pjrc
سيقوم الرابط أعلاه بتنزيل ملف مضغوط ، يمكنك بعد ذلك إضافة ملف zip هذا إلى Arduino IDE الخاص بك باتباع المسار Sketch -> Include Library -> Add.ZIP Library.
ملاحظة: سيؤدي استخدام المكتبة إلى تعطيلوظيفة analogWrite في الدبوس 9 و 10 على UNO نظرًا لأن المؤقت سوف تشغله هذه المكتبة. كما ستتغير هذه المسامير إذا تم استخدام لوحات أخرى.
برمجة Arduino الخاص بك للكشف عن الصافرة
و البرنامج الكامل مع مظاهرة فيديو يمكن العثور عليها في الجزء السفلي من هذه الصفحة. في هذا العنوان سأشرح البرنامج بتقسيمه إلى قصاصات صغيرة.
كما هو الحال دائمًا ، نبدأ البرنامج من خلال تضمين المكتبات المطلوبة وإعلان المتغيرات المطلوبة. تأكد من أنك قمت بإضافة مكتبة FreqMeasure.h بالفعل كما هو موضح في العنوان أعلاه. تمثل الحالة المتغيرة حالة LED ويتم استخدام التردد المتغير والاستمرارية لإخراج التردد المقاس واستمراريته على التوالي.
#تضمن
داخل وظيفة الإعداد الفارغ ، نبدأ الشاشة التسلسلية بمعدل 9600 باود لتصحيح الأخطاء. ثم استخدم وظيفة FreqMeasure.begin () لتهيئة الدبوس 8 لقياس التردد. نعلن أيضًا أن الدبوس 13 (LED_BUILTIN) هو الإخراج.
إعداد باطل () { Serial.begin (9600) ؛ FreqMeasure.begin () ، // التدابير على الدبوس 8 بواسطة pinMode الافتراضي (LED_BUILTIN ، الإخراج) ؛ }
داخل الحلقة اللانهائية ، نستمر في الاستماع على الرقم 8 باستخدام الوظيفة FreqMeasure.available (). إذا كانت هناك إشارة واردة ، فنحن نقيس التردد باستخدام FreqMeasure.read (). لتجنب الخطأ بسبب الضوضاء ، قمنا بقياس 100 عينة وأخذنا متوسط ذلك. يظهر رمز القيام بالشيء نفسه أدناه.
if (FreqMeasure.available ()) { // متوسط عدد مرات القراءة معًا sum = sum + FreqMeasure.read () ؛ العد = العد + 1 ؛ إذا (العد> 100) { التردد = FreqMeasure.countToFrequency (المجموع / العدد) ؛ Serial.println (تردد) ؛ المجموع = 0 ؛ العد = 0 ؛ } }
يمكنك استخدام الوظيفة Serial.println () هنا للتحقق من قيمة التردد الخاص بصفارتك. في حالتي ، كانت القيمة المستلمة من 1800 هرتز إلى 2000 هرتز. سيقع تكرار صافرة معظم الأشخاص في هذا النطاق المحدد. ولكن حتى الأصوات الأخرى مثل الموسيقى أو الصوت قد تندرج تحت هذا التردد ، لذا لتمييزها سنراقبها للاستمرارية. إذا كان التردد مستمرًا لمدة 3 مرات ، فإننا نؤكد أنه صوت صافرة. لذلك ، إذا كان التردد بين 1800 و 2000 ، فإننا نزيد المتغير المسمى الاستمرارية.
إذا (التردد> 1800 && التردد <2000) {الاستمرارية ++ ؛ Serial.print ("الاستمرارية ->") ؛ Serial.println (استمرارية) ؛ التردد = 0 ؛}
إذا وصلت قيمة الاستمرارية إلى ثلاثة أو تجاوزتها ، فإننا نغير حالة LED عن طريق تبديل المتغير المسمى الحالة. إذا كانت الحالة صحيحة بالفعل ، فإننا نغيرها إلى خاطئة والعكس صحيح.
إذا (الاستمرارية> = 3 && state == false) {state = true ؛ الاستمرارية = 0 ؛ Serial.println ("تم تشغيل الضوء") ؛ تأخير (1000) ؛} إذا (الاستمرارية> = 3 && state == true) {state = false ؛ الاستمرارية = 0 ؛ Serial.println ("تم إيقاف تشغيل الضوء") ؛ تأخير (1000) ؛}
اردوينو كاشف الصافرة يعمل
بمجرد أن يصبح الكود والجهاز جاهزين ، يمكننا البدء في اختباره. تأكد من صحة التوصيلات وتشغيل الوحدة. افتح الشاشة التسلسلية وابدأ في التصفير ، يمكنك ملاحظة زيادة قيمة الاستمرارية وتشغيل المصباح أو إيقاف تشغيله في النهاية. يتم عرض عينة لقطة من الشاشة التسلسلية الخاصة بي أدناه.
عندما تشير الشاشة التسلسلية إلى أن الضوء قيد التشغيل ، فسيتم جعل الدبوس 13 مرتفعًا وسيتم تشغيل التتابع لتشغيل المصباح. وبالمثل ، سيتم إطفاء المصباح عندما تقول الشاشة التسلسلية إن الضوء مطفأ . بمجرد الانتهاء من اختبار العمل ، يمكنك تشغيل الإعداد باستخدام محول 12 فولت والبدء في التحكم في جهاز التيار المتردد المنزلي باستخدام صافرة.
و يمكن الاطلاع على استكمال العمل في هذا المشروع في فيديو مرتبطة أدناه. آمل أن تكون قد فهمت البرنامج التعليمي واستمتعت بتعلم شيء جديد. إذا كانت لديك أي مشكلة في جعل الأشياء تعمل ، فاتركها في قسم التعليقات أو استخدم منتدانا للاستفسارات الفنية الأخرى.