فهرست مطالب:
- مرحله 1: سخت افزار
- مرحله 2: نرم افزار
- مرحله 3: درباره نرم افزار
- مرحله 4: "پروژه آینده"
- مرحله 5: بعدی: ورودی آنالوگ پروب دمای ESP32 NTP با تصحیح Steinhart-Hart
تصویری: ورودی لمسی خازنی ESP32 با استفاده از "دوشاخه های متالیک سوراخ" برای دکمه ها: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
همانطور که در حال نهایی کردن تصمیمات طراحی برای پروژه آینده 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: درباره نرم افزار
نرم افزار شامل سه بخش اصلی کد می باشد. آردوینو به بخش "setup ()" و "loop ()" و یک بخش "وقفه" نیاز داشت. بخش setup () شامل کد لازم برای راه اندازی اولیه OLED و وقفه در خدمات می باشد. توابع راه اندازی OLED در پیوند بالا توضیح داده شده است. توابع راه اندازی سرویس وقفه به شرح زیر است:
- "timerLoopSemaphore = xSemaphoreCreateBinary ()" یک سمفور برای "InterruptService ()" (روال سرویس وقفه) برای اطلاع از حلقه () در زمان اجرای یک حلقه گذر ایجاد می کند.
- "timerInterruptService = timerBegin (0 ، 80 ، true)" یک تایمر با استفاده از تایمر سخت افزاری 0 با پیش مقیاس 80 ایجاد می کند.
- "timerAttachInterrupt (timerInterruptService، & InterruptService، true)" InterruptService () را به تایمر متصل می کند.
- "timerAlarmWrite (timerInterruptService، 1000، true)" میزان وقفه سرویس را روی 1000 هرتز تنظیم می کند.
- "timerAlarmEnable (timerInterruptService)" زنگ ساعت را شروع می کند و بنابراین سرویس را قطع می کند.
با نصب کامل ، حلقه () وارد شده و بلافاصله در خط متوقف می شود:
if (xSemaphoreTake (timerLoopSemaphore ، portMAX_DELAY) == pdTRUE) ،
به معنی حلقه () در این مرحله منتظر می ماند تا semaphore از InterruptService () برسد. هنگامی که سمافور وارد می شود ، کد حلقه () اجرا می شود و صفحه OLED را با داده های دکمه به روز می کند و سپس به بالا باز می گردد تا دوباره منتظر سمافور بعدی باشد. با InterruptService () با سرعت 1000 هرتز و مقدار LOOP_DELAY 30 ، حلقه () هر 30 میلی ثانیه اجرا می شود ، یا با سرعت نمایش 33.333 هرتز. در حالی که این نرخ تازه سازی صفحه نمایش بیشتر از مورد نیاز برای اکثر برنامه های ESP32 است ، من از این تنظیم برای نشان دادن پاسخگویی فیلتر استفاده کردم. من آزمایش کردم و زمان مورد نیاز برای اجرای یک حلقه () را 20ms تعیین کردم.
InterruptService () با تایمر ایجاد شده در setup () با نرخ 1000 هرتز فراخوانی می شود. هنگام فراخوانی ، دو شمارنده پایین ، nLoopDelay و nButtonDelay را به روز می کند. هنگامی که nLoopDelay به صورت صفر شمارش می شود ، سمافور را به حلقه () اجازه می دهد تا یک گذر را اجرا کند و nLoopDelay را بازنشانی می کند. هنگامی که nButtonDelay شمارش معکوس تا صفر است ، آن را نیز تنظیم مجدد می کند سپس دکمه "filter" اجرا می شود.
هر فیلتر دکمه دارای یک شمارنده فیلتر منحصر به فرد است (به عنوان مثال nButton1Count ، nButton2Count و nButton3Count). تا زمانی که مقدار ورودی لمسی اختصاص داده شده به دکمه بیشتر یا مساوی مقدار آستانه تعریف شده باشد (BUTTON_THRESHHOLD) ، شمارنده فیلتر اختصاص داده شده به دکمه و دکمه صفر باقی می ماند. اگر مقدار ورودی لمسی اختصاص داده شده به دکمه کمتر از آستانه تعیین شده باشد ، شمارنده فیلتر اختصاص داده شده به دکمه هر 20 میلی ثانیه یک عدد افزایش می یابد. وقتی شمارنده فیلتر از مقدار فیلتر دکمه (BUTTON_FILTER) بیشتر شود ، دکمه "فشرده" در نظر گرفته می شود. اثر این روش ایجاد فیلتری است که به 80ms (20ms nButtonDelay * 4ms nButtonCountN که N شماره دکمه است) دارای مقادیر ورودی لمسی پیوسته زیر آستانه تعریف شده برای در نظر گرفتن دکمه واقعاً فشرده شده است. هر زمان کمتر از 80 میلی ثانیه "اشکال" تلقی می شود و توسط فیلتر رد می شود.
با توجه به این توضیح مختصر ، اگر س questionsالی دارید ، لطفاً بپرسید و من تمام تلاش خود را برای پاسخ دادن به آنها انجام خواهم داد.
امیدوارم که لذت برده باشید!
مرحله 4: "پروژه آینده"
پروژه آینده ، "Intelligrill® Pro" ، یک مانیتور سیگاری دو پروب دما است که شامل موارد زیر است:
- محاسبات کاوشگر دما Steinhart-Hart (برخلاف جداول "جستجو") برای افزایش دقت.
- زمان پیش بینی برای تکمیل کاوشگر 1 با افزودن دقت بیشتر ناشی از محاسبات استاینهارت-هارت.
- کاوشگر دوم ، کاوشگر 2 ، برای نظارت بر دمای افراد سیگاری (محدود به 32 تا 399 درجه).
- کنترل های ورودی لمسی خازنی (مانند این دستورالعمل).
- نظارت از راه دور مبتنی بر WIFI (با آدرس IP ثابت ، امکان نظارت بر پیشرفت افراد سیگاری را از هرجایی که اتصال اینترنت در دسترس باشد).
- محدوده دما افزایش یافته (دوباره 32 تا 399 درجه).
- هشدارهای تکمیل صوتی هم در فرستنده Intelligrill® و هم در اکثر دستگاه های نظارت کننده با قابلیت WiFi.
- نمایش دما در دو درجه F یا درجه C.
- قالب زمان به دو صورت HH: MM: SS یا HH: MM.
- نمایش باتری در ولتاژ یا درصد شارژ.
- و به زودی ، خروجی PID برای افراد سیگاری مبتنی بر سنجه.
"Intelligrill® Pro" در حال آزمایش است تا بتواند دقیق ترین ، قابل اطمینان ترین و قابل اعتمادترین HTML مبتنی بر Intelligrill® طراحی شده من باشد.
هنوز در حال آزمایش است ، اما با غذاهایی که در حین آزمایش آماده می شود ، من بیش از چند کیلو وزن اضافه کرده ام.
باز هم امیدوارم لذت ببرید!
مرحله 5: بعدی: ورودی آنالوگ پروب دمای ESP32 NTP با تصحیح Steinhart-Hart
آماده باشید که برای این کتاب کتابهای جبری خود را گردگیری کنید.
توصیه شده:
Test Bare Arduino ، با نرم افزار بازی با استفاده از ورودی خازنی و LED: 4 مرحله
Test Bare Arduino ، با نرم افزار بازی با استفاده از ورودی خازنی و LED: & quot؛ Push-It & quot؛ بازی تعاملی با استفاده از یک برد آردوینو بدون نیاز به قطعات خارجی یا سیم کشی (از ورودی لمسی خازنی استفاده می کند). در بالا نشان داده شده است ، نشان می دهد که روی دو تخته مختلف اجرا می شود. Push-It دو منظور دارد. برای نمایش سریع/v
4 بازی دکمه با استفاده از یک ورودی آنالوگ: 6 مرحله (همراه با تصاویر)
بازی های 4 دکمه با استفاده از یک ورودی آنالوگ: این دستورالعمل بر استفاده از یک خط ورودی آنالوگ برای دکمه های متعدد که می توانند مستقل از یکدیگر تشخیص داده شوند ، متمرکز شده است. و برای برجسته کردن استفاده از این دکمه ها ، نرم افزار بازی چهار بازی مختلف 4 دکمه است. همه بازی ها (8 اینچ در
Visuino نحوه استفاده از دکمه به عنوان ورودی برای کنترل مواردی مانند LED: 6 مرحله
Visuino نحوه استفاده از دکمه به عنوان ورودی برای کنترل مواردی مانند LED: در این آموزش ما نحوه روشن و خاموش کردن LED با استفاده از یک دکمه ساده و Visuino را یاد می گیریم
بلندگوی بلوتوث میز با تجسم صدا ، دکمه های لمسی و NFC .: 24 مرحله (همراه با تصاویر)
بلندگوی بلوتوث میز با تجسم صدا ، دکمه های لمسی و NFC: سلام! در این دستورالعمل ها من قصد دارم نشان دهم که چگونه این بلندگوی بلوتوث رومیزی را ساخته ام که دارای تجسم صوتی شگفت انگیز با دکمه های لمسی و NFC است. فقط با یک ضربه با دستگاه های NFC Enabled جفت می شود. هیچ دکمه فیزیکی وجود ندارد
از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: 6 مرحله
از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: من اغلب فکر می کردم که چگونه می توانم ورودی های دیجیتالی بیشتری برای آردوینو دریافت کنم. اخیراً به ذهنم رسید که باید بتوانم از یکی از ورودی های آنالوگ برای وارد کردن چندین ورودی دیجیتال استفاده کنم. من یک جستجوی سریع کردم و جایی که مردم در آنجا بودند را پیدا کردم