جدول المحتويات:

مدخلات اللمس بالسعة ESP32 باستخدام "سدادات الفتحات المعدنية" للأزرار: 5 خطوات (بالصور)
مدخلات اللمس بالسعة ESP32 باستخدام "سدادات الفتحات المعدنية" للأزرار: 5 خطوات (بالصور)

فيديو: مدخلات اللمس بالسعة ESP32 باستخدام "سدادات الفتحات المعدنية" للأزرار: 5 خطوات (بالصور)

فيديو: مدخلات اللمس بالسعة ESP32 باستخدام
فيديو: Arduino Capacitive Touch-Free Touch Sensor Tutorial 2024, يوليو
Anonim
Image
Image
المعدات
المعدات

عندما كنت بصدد الانتهاء من قرارات التصميم لمشروع ESP32 WiFi Kit 32 القادم الذي يتطلب إدخال ثلاثة أزرار ، كانت إحدى المشكلات الملحوظة هي أن WiFi Kit 32 لا يمتلك زرًا ميكانيكيًا واحدًا ، ولكنه يحتوي على ثلاثة أزرار ميكانيكية للإدخال. ومع ذلك ، فإن WiFi Kit 32 لديها الكثير من مدخلات اللمس السعوية ، لذلك أمضيت بعض الوقت في تجميع الأجهزة ، وبرامج الكتابة ، واختبار تصميم إدخال ثلاثة أزرار باستخدام ميزة الإدخال باللمس بالسعة ESP32 وثلاثة 3/8 "مقابس ثقب معدنية" من أجل أزرار.

كما اكتشف أي شخص جرب مدخلات اللمس السعوية ESP32 ، فإن مدخلات اللمس هي بالتأكيد صاخبة بما يكفي لتطلب تصفية لاكتشاف المدخلات بشكل موثوق. لتقليل عدد الأجزاء الإجمالية للمشروع القادم ، قررت أن مرشحًا رقميًا بسيطًا يحركه المقاطعة (أكثر من "ارتداد" من الفلتر ، ولكني استطرد) ، بدلاً من إضافة أجهزة مرشح خارجي ، يمكن أن يهدئ المدخلات الصاخبة. وبعد الاختبار ، أصبح من الواضح أن المدخلات السعوية ESP32 ، وثلاثة مقابس ثقب معدنية 3/8 بوصة ، وبعض برامج "التصفية" الرقمية ، ستوفر بالفعل مدخلات بثلاثة أزرار موثوقة للتصميم.

لذلك إذا كنت مهتمًا باختبار الإدخال السعوي باستخدام التصفية الرقمية على ESP32 ، فقد قمت بتضمين الكود المصدري "Buttons.ino" في تنسيق بيئة Arduino جنبًا إلى جنب مع تعليمات التجميع والبرمجة ، بالإضافة إلى وصف موجز لكود المصدر ، من أجل ما اكتشفت أنه إدخال بثلاثة أزرار موثوق للغاية.

وكالعادة ، ربما نسيت ملفًا أو ملفين أو من يعرف ماذا أيضًا ، لذا إذا كان لديك أي أسئلة ، فلا تتردد في طرحها لأنني أرتكب الكثير من الأخطاء.

وملاحظة أخيرة ، لا أتلقى أي تعويض بأي شكل ، بما في ذلك على سبيل المثال لا الحصر ، العينات المجانية ، لأي من المكونات المستخدمة في هذا التصميم

الخطوة 1: الأجهزة

المعدات
المعدات
المعدات
المعدات
المعدات
المعدات

يستخدم التصميم الأجهزة التالية:

  • واحد ، واي فاي كيت 32.
  • ثلاثة ، 3/8 "سدادات ثقب معدنية.
  • ثلاثة أطوال 4 بوصات من سلك 28awg.

لتجميع الأجهزة ، قمت بتنفيذ الخطوات التالية:

  • يتم تجريده وتغليفه في نهايات كل سلك بطول 4 بوصات كما هو موضح.
  • ملحوم السلك الأول بالدبوس 13 من ESP32 (إدخال TOUCH4 ، أو "T4").
  • قم بلحام السلك الثاني بالدبوس 12 من ESP32 (إدخال TOUCH5 ، أو "T5").
  • قم بلحام السلك الثالث بالدبوس 14 من ESP32 (إدخال TOUCH6 ، أو "T6").
  • يتم لحام أحد سدادات الفتحات المعدنية الثلاثة 3/8 بوصة للأطراف الحرة لأطوال الأسلاك الثلاثة.

الخطوة 2: البرمجيات

برمجة
برمجة

الملف "Buttons.ino" هو ملف بيئة Arduino يحتوي على برنامج التصميم. بالإضافة إلى هذا الملف ، ستحتاج إلى مكتبة الرسومات "U8g2lib" لشاشة WiFi Kit32 OLED (راجع https://github.com/olikraus/u8g2/wiki للحصول على مزيد من المعلومات حول هذه المكتبة).

مع تثبيت مكتبة الرسومات U8g2lib في دليل Arduino ، وتحميل "Buttons.ino" في بيئة Arduino ، قم بتجميع وتنزيل البرنامج في ESP32.

بمجرد التنزيل والتشغيل ، يجب أن يقرأ السطر العلوي من الشاشة "الأزرار" مع قراءة السطر الثاني من الشاشة "1 2 3" كمؤشرات الزر. يوجد أسفل كل مؤشر من مؤشرات الأزرار 1 ، 2 ، 3 قيم قراءة اللمس غير المفلترة ، وأسفل كل من هذه مؤشرات الضغط على الزر ("1" للضغط ، و "0" لعدم الضغط عليه). كما يمكن رؤيته في الفيديو (وكما تم التأكد من اختباره على المدى الطويل) ، يوفر مرشح البرنامج اكتشافًا موثوقًا لمدخلات الزر دون أي تشغيل خاطئ.

الخطوة 3: حول البرنامج

يحتوي البرنامج على ثلاثة أقسام رمز رئيسية ؛ يتطلب Arduino أقسام "setup ()" و "loop ()" ، وقسم "المقاطعات". يحتوي قسم الإعداد () على الكود اللازم لتهيئة خدمات OLED والمقاطعة. تم وصف وظائف إعداد OLED في الرابط أعلاه. وظائف إعداد خدمة المقاطعة هي كما يلي:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" ينشئ إشارة لـ "InterruptService ()" (روتين خدمة المقاطعة) لإعلام loop () عندما يحين وقت تنفيذ تمرير حلقة.
  • ينشئ "timerInterruptService = timerBegin (0، 80، true)" مؤقتًا باستخدام مؤقت الأجهزة 0 بمقياس مسبق 80.
  • يقوم "timerAttachInterrupt (timerInterruptService، & InterruptService، true)" بإرفاق InterruptService () بالمؤقت.
  • يحدد "timerAlarmWrite (timerInterruptService، 1000، true)" معدل خدمة المقاطعة إلى 1000 هرتز.
  • يبدأ "timerAlarmEnable (timerInterruptService)" تنبيه جهاز ضبط الوقت ، وبالتالي مقاطعة الخدمة.

بعد اكتمال الإعداد ، يتم إدخال الحلقة () وتتوقف فورًا عند السطر:

إذا كان (xSemaphoreTake (timerLoopSemaphore ، portMAX_DELAY) == pdTRUE) ،

ستنتظر حلقة المعنى () عند هذه النقطة حتى تصل الإشارة من InterruptService (). عند وصول الإشارة ، يتم تنفيذ رمز الحلقة () ، وتحديث شاشة OLED ببيانات الزر ، ثم العودة إلى الأعلى مرة أخرى في انتظار الإشارة التالية. مع تشغيل InterruptService () بسرعة 1000 هرتز وقيمة LOOP_DELAY 30 ، يتم تنفيذ loop () كل 30 مللي ثانية ، أو بمعدل تحديث للعرض يبلغ 33.333 هرتز. على الرغم من أن هذا معدل تحديث للعرض أعلى من المطلوب لمعظم تطبيقات ESP32 ، فقد استخدمت هذا الإعداد لتوضيح استجابة الفلتر. لقد اختبرت وحدد الوقت المطلوب لتنفيذ تمرير حلقة واحدة () ليكون 20 مللي ثانية.

يتم استدعاء InterruptService () بواسطة عداد الوقت الذي تم إنشاؤه في الإعداد () بمعدل 1000 هرتز. عند استدعائه ، يقوم بتحديث اثنين من العدادات السفلية ، nLoopDelay و nButtonDelay. عندما يتم عد nLoopDelay تنازليًا إلى الصفر ، فإنه يرسل إشارة تسمح للحلقة () بتنفيذ تمريرة واحدة ثم تعيد تعيين nLoopDelay. عندما يتم العد التنازلي لـ nButtonDelay إلى الصفر ، يتم إعادة تعيينه أيضًا ، ثم يتم تنفيذ الزر "عوامل التصفية".

يحتوي كل مرشح زر على عداد مرشح فريد (مثل nButton1Count و nButton2Count و nButton3Count). طالما أن قيمة الإدخال باللمس المعينة للزر أكبر من أو تساوي قيمة العتبة المحددة (BUTTON_THRESHHOLD) ، يظل عداد المرشح المعين للزر والزر صفراً. إذا كانت قيمة إدخال اللمس المخصصة للزر أقل من الحد المحدد ، فإن عداد المرشح المعين للزر يزداد بمقدار واحد كل 20 مللي ثانية. عندما يتجاوز عداد المرشح قيمة مرشح الزر (BUTTON_FILTER) ، يعتبر الزر "مضغوطًا". تأثير هذه الطريقة هو إنشاء مرشح يتطلب 80 مللي ثانية (20 مللي ثانية nButtonDelay * 4 مللي ثانية nButtonCountN حيث N هو رقم الزر) لقيم إدخال اللمس المستمر أسفل العتبة المحددة للنظر في الضغط على الزر بالفعل. يعتبر أي وقت أقل من 80 مللي ثانية "خللًا" ويرفضه الفلتر.

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

أتمنى انك استمتعت به!

الخطوة الرابعة: "المشروع القادم"

ال
ال

المشروع القادم ، "Intelligrill® Pro" ، عبارة عن جهاز مراقبة مدخن مزدوج مسبار درجة الحرارة يتميز بما يلي:

  • حسابات مسبار درجة الحرارة Steinhart-Hart (على عكس جداول "البحث") لزيادة الدقة.
  • الوقت التنبئي حتى الانتهاء على المسبار 1 متضمنًا الدقة المتزايدة المستمدة من حسابات Steinhart-Hart.
  • مسبار ثان ، مسبار 2 ، لمراقبة درجة حرارة المدخن (محدد من 32 إلى 399 درجة).
  • ضوابط الإدخال باللمس بالسعة (كما في Instructable).
  • المراقبة عن بعد القائمة على WIFI (مع عنوان IP ثابت ، تمكن من مراقبة تقدم المدخن من أي مكان يتوفر فيه اتصال بالإنترنت).
  • نطاق درجة حرارة ممتد (مرة أخرى من 32 إلى 399 درجة).
  • تنبيهات الإكمال المسموعة داخل جهاز الإرسال Intelligrill® وعلى معظم أجهزة المراقبة التي تدعم تقنية WiFi.
  • عرض درجة الحرارة إما درجة فهرنهايت أو درجة مئوية.
  • تنسيق الوقت في أي من HH: MM: SS أو HH: MM.
  • عرض البطارية إما بالفولت أو٪ مشحونة.
  • وقريبًا ، خرج PID للمدخنين على أساس البريمة.

يتم اختبار برنامج "Intelligrill® Pro" ليصبح أكثر الميزات دقة وموثوقية وقائمة على HTML التي صممتها Intelligrill®.

لا يزال قيد الاختبار ، ولكن مع الوجبات التي تساعد في التحضير أثناء الاختبار ، اكتسبت أكثر من بضعة أرطال.

مرة أخرى ، أتمنى أن تستمتع به!

الخطوة 5: التالي: إدخال تناظري لمسبار درجة الحرارة ESP32 NTP مع تصحيح Steinhart-Hart

كن مستعدًا لإزالة الغبار عن كتب الجبر من أجل هذا الكتاب.

موصى به: