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

يبدو حقا مستقبلية.
وكم عدد المزايا:
- الثنائي الضوئي حساسة للغاية ، وانخفاض الضوضاء ADC
- الصمام السائقين مع التيارات 6 حتي 360 مللي أمبير
- مدعوم من 1.71 إلى 3.6 فولت
- وذكية I2C - ما يصل إلى 3.4 ميغابت في الثانية الواحدة
هذا هو مجرد حجم ضخ ما يصل فقط 5 في 3 ملليمتر. ليست هذه هي المرة الأولى التي تراها. حسنا ، هنا تحتاج إلى مزيد من الربط.

يمكن إزالة هذا؟ طلب شعوري الجمال. ثم سأحاول تلبية طلب هذا الضيف النادر في منطقتنا وإخفاء اللوحة في المبنى ، لكن في الوقت نفسه يمكنك استخدام القوة ومعرفة ما حدث.
التعليق على اليقظة. هناك بالفعل بعض التفاصيل أكثر مما كان متوقعا. أخذت العقدة من مشروع Enviriot كأساس. بالإضافة إلى متحكم STM32F051 ، تحتوي اللوحة أيضًا على جهاز إرسال واستقبال 868 ميجا هرتز CC1101 من Texas Instruments ، وبعد ملء البرامج الثابتة ، يكفي توفير الطاقة وسيقوم الجهاز بالاتصال بخادم MQTT-SN.
يعتمد مبدأ التشغيل على قياس مستوى الإشارة المنعكسة من كل من المصابيح الثلاثة. سأحاول تشغيله وإلقاء نظرة على الاستجابة.

نظرًا للترتيب غير المتناسق لمصابيح LED ، تكون الإشارة من LED 1 أكبر بشكل ملحوظ وستكون نتائج القياس أولية.

وبالتالي فإن الاعتماد مفهوم بالفعل. سأحاول ترميز الخوارزمية التالية:
حيث L1 + - الإشارة من LED 1 تزداد ، L1> L3 - الإشارة من LED 1 أكبر من الإشارة من LED 3.
كانت سلسة على الورق ، ولكن في ديناميات المشاكل بدأت. للحصول على ورقة بيضاء مثبتة بنفس الارتفاع ، تم الحصول على النتائج المتوقعة في حالتين من أصل ثلاث. عندما أحاول التلويح بيدي ، تبدأ الإشارة في القفز وبدأت الخوارزمية الرائعة في الخلط في القراءات. نظر إلى يده ، ولكن هناك اختلافات كثيرة من ورقة مسطحة من الورق الأبيض. ولكن بطريقة ما يجب أن تعمل. حسنا. أقنع! سأحاول قراءة الوثائق.
بالنسبة للمتضررين ، أصدرت مختبرات السيليكون AppNote AN580 - "تحسس لفتة حاسة". تم وصف طريقتين أساسيتين لتحديد الإيماءات ومجموعاتهما المحتملة. الطريقة الأولى هي تحديد الموضع في كل لحظة من الزمن وتحديد الإيماءات بناءً على الإحداثيات. الطريقة الثانية تحدد تحول المرحلة بين الإشارات. تم بالفعل اختبار أحد المتغيرات الخاصة بالطريقة الأولى ولم تكن مثيرة للإعجاب. سأحاول تنفيذ الثاني.
دعنا نذهب. من الضروري تنفيذ ما يصل إلى نقطتين. تحديد لحظة الدخول ونقل هذه البيانات إلى جهاز الحالة. تم تحديد عتبة الإدخال تجريبيًا عند 1/8 من إجمالي الإشارة. للحماية من الضوضاء ، سأضيف مشغل شميت ، وأبدأ التشغيل بنسبة 15٪ وأطفئ 10٪.
حسنا ، آلة الدولة نفسها. الدول من 1 إلى 3 - حركة تصاعدية ، وتنقل من -1 إلى -3 - حركة هبوطية والدولة 4 للحدث غير المحتمل أن يعمل كلاهما LED في وقت واحد.

الآن دعونا نحاول الإقلاع مع كل هذا.
var LSt = new Int8Array([-3, -3, -3, 1, 1, 3, 3, 4, -3, -3, -1, -1, 3, 3, 3, 4, -2, -2, -2, 4, 2, 2, 2, 4]); this.r1 = false; this.r3 = false; this.button = new Int8(0); if(n1 > 15) { this.r1 = true; } else if(n1 < 10) { this.r1 = false; } if(n3 > 15) { this.r3 = true; } else if(n3 < 10) { this.r3 = false; } let st = (this.r1?1:0) | (this.r3?2:0); if(st == 0){
تحتوي المتغيرات n1 و n3 على قيم طبيعية لمصابيح LED المقابلة. والنتيجة في حقل الزر.
لمزيد من الاستخدام ، تكون الحالات 2 - لأعلى و -2 لأسفل مفيدة.
البرنامج مكتوب في مجموعة فرعية من جافا سكريبت ، ثم يتم تجميعه في الرمز الفرعي وتحميله على الجهاز. يتم تحليل JavaScript ويتم إنشاء AST بواسطة مكتبة NiL.JS من الرفيق
IaIojek ، والذي
شكرًا جزيلاً له.

إذا استمرت الحالة 2 إلى أقل من 0.3 ثانية ، تكون كتل A14 و A15 مسؤولة عن ذلك ، يتم ضبط السطوع على الحد الأقصى. الكتل A01 و A13 تعيين السطوع إلى 0 لحركة هبوطية قصيرة.
عند التحرك للأعلى والاستمرار ، توفر الكتل A10 و A09 و A04 زيادة سلسة في السطوع. عند التحرك لأسفل والاستمرار ، تعمل القطع A12 و A11 و A08 وتتيح لك تقليل المستوى.
مظاهرة العمل. 20 ميغابايت GIF. حسنا ، ربما هذا كل شيء. العميل سعيد ، وبدأت أفكر في الإصدار التالي. من بين التغييرات الضرورية: ضع مصابيح LED في نفس المسافة من جهاز الاستقبال ، وعرض مؤشر العملية وإجراء استطلاع للرأي على وحدة تحكم منفصلة ، مما يقلل من الفاصل الزمني للاستطلاع.