حر اليدين ، ولكن ليس الهاتف. طاعة المنزل عندما لا يكون هناك ما يكفي من اليدين

مرحبًا أيها المجتمع!

كان لدي رغبة في العبث مع وحدة التحكم الدقيقة مرة أخرى والقيام بشيء مفيد. تم تشكيل الهدف على الفور تقريبًا ، حيث أزعجني شيء في الشقة.

كما تعلمون ، طاولة الكمبيوتر هي طاولة طعام لمشاهدة Drobyshevsky أو ​​قراءة Giktayms / Green Cat / إلخ. في نفس وقت العشاء. ولكن هناك مشكلة - عادة ما أخرج من المطبخ بكلتا يدي مشغولة ، والعودة أيضًا ، لأن الأكواب مكدسة في 3 قطع. قم بتشغيل وإطفاء الضوء في المطبخ (المفتاح الثلاثي - المطبخ / الحمام / المرحاض) هو الكتف والأنف والإصبع الصغير. أي أنها غير ملائمة بأي شكل من الأشكال ، ولكن من المستحيل إعادة ترتيبها. كانت هناك مهمة لإدارة بطريقة أو بأخرى عن بعد.

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

جزء الأجهزة.


كان هناك لوح مع Atmega32 مع الكوارتز والأجهزة الطرفية SEM0007M-32A وتناثر الإلكترونيات.

الصورة

كان هناك ميكروفون ومضخم تشغيلي. بالنسبة للإخراج ، يوجد ترانزستور في حزمة sot32 على اللوحة ، وهناك أيضًا تتابع 7 أمبير. يتم تجميع كل شيء في صندوق لبطاقات العمل ، ويتم تتابع التتابع مع المفتاح ، ويتم إخفاء الميكروفون تحت المخرج. المخطط شائع ، حتى أنني لم أرسمه. يتم استخدام إدخال تناظري واحد فقط وإخراج MK منفصل واحد. SEM زائدة عن الحاجة ، ولكن دعها الآن.

الصورة
لوح وأسلاك غير مجمعة. ثم قام بإعادة تصميمه بدقة أكبر.

الصورة
التبديل نفسه ، الميكروفون غير مرئي تحت المخرج المفكك.

ابحث عن خوارزمية.


الغرض: يجب أن يستجيب المستشعر لكلمة ، على سبيل المثال ، " ضوء! »بحد أدنى من الرمز.
المهمة: تحديد كلمة الأمر على خلفية الضوضاء المحتملة ، والضربات ، والنقرات باستخدام نفس المفتاح. أي أن تحليل السعة فقط غير مناسب ، وأظهر التحليل الطيفي أن هناك الكثير من التوافقيات في الكلمة وبالطبع تتغير. لذلك ، كان من الضروري البحث عن حل بسيط ، ولكن مع مناعة ضوضاء مقبولة. يمكنك إجراء عدة فلاتر لتردد الوقت ومقارنة بعينة من الكلمة ، لكنك لست بحاجة إلى التعامل مع التعرف. تقرر تحليل وجود صوت متحرك فقط ، على سبيل المثال ، الصوت "E" أو "E".

الصورة
الصوت هو "E". العديد من التوافقيات مرئية ، بسبب هذا التحليل صعب.

الصورة
الصوت هو "أ". الطيف يبدو أنظف ، هناك تردد رئيسي.

جزء البرنامج


من أجل معرفة المكونات الطيفية للإشارة ، يمكنك استخدام المرشحات الرقمية. هناك برنامج جيد على الإنترنت لبناء فلاتر FIR و IIR الرقمية وحساب معاملاتها - من الواضح هناك ويتم إنشاء رمز C تلقائيًا.

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

float ACoef[NCoef+1] = { 0.00000347268864059354, 0.00000000000000000000, -0.00001389075456237415, 0.00000000000000000000, 0.00002083613184356122, 0.00000000000000000000, -0.00001389075456237415, 0.00000000000000000000, 0.00000347268864059354 }; float BCoef[NCoef+1] = { 1.00000000000000000000, -7.09708794063733790000, 22.77454294680684300000, -43.03321836036351300000, 52.29813665034108500000, -41.84199842886619100000, 21.53121088556695300000, -6.52398963450972500000, 0.89383378261285684000 }; 

ربما يكون المعالج الدقيق قد تعامل معه ، ولكن كانت هناك مشكلات في تصحيح الأخطاء - ليس من السهل دفع حدود المرشح - فهذه معاملات جديدة لحسابها.

بعد بعض البحث ، استقرت على تحويل فورييه ذات التردد الواحد عبر الإنترنت. أي أن تحويل فورييه الكلاسيكي المنفصل ، الذي يتم إجراؤه عند وصول كل عينة من الإشارة بتردد أخذ العينات (1600 هرتز) ، لا يوجد تمرير عبر الترددات ، يوجد تردد واحد فقط ، لذلك من السهل تكوينه عبر RS-232 أثناء التكليف. ونتيجة لذلك ، تم إجراء التحليل بتردد 128 هرتز.

نظرًا للعينات القصيرة (الكتل) والنافذة المستطيلة ، فإن دقة التردد منخفضة ، مما يعطي حساسية انتقائية في النطاق 114 ... 140 هرتز ، وهذا هو مرشح P الذي أردت الحصول عليه.

تحتاج أولاً إلى فهم مكان بدء إشارة الأوامر الصوتية بالصراخ . للقيام بذلك ، أولاً ، يتم حساب مستوى إشارة صفرية ، من خلال تمهيد الأسي مع ثابت تمهيد 1/64. الرمز أدناه.

جزء من رمز المؤقت لمعالجة الإشارات. تردد الموقت 1600 هرتز
تطبيع الإشارة إلى المتوسط. لتحديد مستوى شدة الصوت ، يتم أيضًا حساب القيم المطلقة للإشارة مع ثابت قدره 1/16 ، لتصفية التمرير العالي من نصف موجات الإشارة الفردية (هذا هو تناظري لـ RMS ، ولكن يسهل حسابه). تجاوز هذا المستوى فوق العتبة هو بداية الأمر الصوتي ، ويبدأ التحليل المتسلسل لـ 5 كتل من 135 عينة (84.3 مللي ثانية).

 // Timer 0 output compare interrupt service routine interrupt [TIM0_COMP] void timer0_comp_isr(void) { a = adc_data[0] << 2 ; //       4   . a0 = (a0*63 + a+ 63) >> 6; // .   "0".   10%  150  ae = (int)(a - a0); // a = ae; //      . ae = abs(ae); if (ae < 32) { //      ae = 0; }; d = (int)((15 * (long int) d + ae + 15) >> 4); //  .  //   10%  35  if (d > 100) { //    if (snd == 0) { Yz=0; snd++; } //    PORTB.1 = 1; //      }; ..... 

يوضح الشكل أدناه الإشارة ومستوى الإشارة والعتبة و 5 كتل.

الصورة

حماية التدخل


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

تحويل التردد


في كل كتلة ، يتم إجراء تحويل فورييه بتردد واحد لتردد واحد f.

تقليديا ، لتسريع الحسابات ، يتم جدولة دالات sin و cos وتحجيمها إلى -127 .. + 127.
يتم حساب مؤشر si(ps) للصفيف si(ps) من الوسيطة sin (2 * π * f * t / T) ، بالطبع مع استرجاع داخل نفس الفترة. يتم دفع مؤشر pc لـ cos (2 * π * f * t / T) بكل بساطة 12 موضعًا للأمام في نفس مجموعة si .

النتيجة ص - يتم الحصول على مستوى الخط الطيفي كمجموع القيم المطلقة للأجزاء الحقيقية والخيالية خلال كتلة واحدة.
لذا
بالطريقة الصحيحة ، تحتاج إلى القيام بمجموع المربعات والجذر ، ولكن هذا أمر فظيع بالنسبة لـ MK 8-bit.

في نفس المؤقت:
  a_si = (long int) (a * si[ps]) >> 4; // a*sin a_co = (long int) (a * si[pc]) >> 4; // a*cos Ysi = Ysi + a_si ; // Yco = Yco + a_co; Y = (labs(Ysi) + labs(Yco)) >> 7; //   128    int    rs-232. 

في نهاية كل كتلة ، تتم مقارنة Y مع العتبة ، ويتم حساب عدد الكتل التي تتجاوز العتبات التي تم تشغيلها العتبة. بعد التجارب ، اتضح أن الحد الأدنى لعدد الكتل التي تم تشغيلها هو 3 من أصل 5.

الصورة
مثال على الكثافة الطيفية للكتل بأمر صوتي. لقد مر الفريق.

يتم تفسير ثلاث كتل تشغيل أو أكثر على أنها أمر مستلم بشكل صحيح. يتم عكس الإشارة عند الإخراج المنفصل لـ MK ، مما يؤدي إلى تشغيل الضوء أو إيقافه. نظرًا لأن التحليل بالكامل يتم داخل الكتل ، فلا يوجد تأخير في التشغيل بعد الكتلة الأخيرة.

يبلغ زمن الحساب 1600 دورة تقريبًا ، ويتم استدعاء المؤقت كل 9000 دورة ، وبالتالي فإن حمل MK منخفض - هناك مساحة لمزيد من التجارب مع التعرف. أو يمكنك عمل حل كامل بأحجام أصغر وعلى عضو الكنيست الضعيف.

تم التحكم في صحة الخوارزميات من خلال تبادل المتغيرات الضرورية (السجل) عبر RS-232 مع البرنامج على VBasic. يتم تخزين التردد f والعتبات في eeprom.

ونتيجة لذلك: تبين أن المستشعر مريح للغاية ، فهو يستجيب لكلمات " A " ، على سبيل المثال ، " Waaau " ، " Taaam " ، " Laite " ، " Miaaa " ، " Yao-Yao " . الحجم شائع في المحادثة البشرية. ترفض كلمة " Lit " بعناد الاستماع. نقرات ، طرق على الأبواب ، خطوات ، صب الماء يتجاهل. الآن يمكنك المشي بأكواب وأطباق كاملة)).

Source: https://habr.com/ru/post/ar408745/


All Articles