Съдържание:

ESP32 капацитивен сензорен вход, използващ „Метални щепсели за отвори“за бутони: 5 стъпки (със снимки)
ESP32 капацитивен сензорен вход, използващ „Метални щепсели за отвори“за бутони: 5 стъпки (със снимки)

Видео: ESP32 капацитивен сензорен вход, използващ „Метални щепсели за отвори“за бутони: 5 стъпки (със снимки)

Видео: ESP32 капацитивен сензорен вход, използващ „Метални щепсели за отвори“за бутони: 5 стъпки (със снимки)
Видео: ESP32 Tutorial 2 - What's ESP32, Camera Extension Board, unboxing SunFounder's ESP32 IoT Learnig kit 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: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер
Хардуер
Хардуер

Дизайнът използва следния хардуер:

  • Първо, WiFi Kit 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" за OLED дисплея WiFi Kit32 (вижте https://github.com/olikraus/u8g2/wiki за допълнителна информация за тази библиотека).

С графичната библиотека U8g2lib, инсталирана във вашата директория на Arduino, и „Buttons.ino“, заредена в средата на Arduino, компилирайте и изтеглете софтуера в ESP32.

След като бъде изтеглен и стартиран, горният ред на дисплея трябва да чете „Бутони“, а вторият ред на дисплея да показва „1 2 3“като индикатори на бутоните. Под всеки от индикаторите на бутоните 1, 2, 3 са нефилтрираните стойности за четене на докосване, а под всеки от тях са показателите за натискане на бутоните ("1" за натиснат, "0" за не натиснат). Както може да се види във видеото (и като дългосрочно тествано потвърдено), софтуерният филтър осигурява надеждно откриване на вход с бутони без фалшиво задействане.

Стъпка 3: За софтуера

Софтуерът съдържа три основни кодови секции; Arduino изисква раздели "setup ()" и "loop ()" и раздел "Прекъсвания". Разделът setup () съдържа кода, необходим за инициализиране на OLED и прекъсване на услуги. Функциите за настройка на OLED са описани в горната връзка. Функциите за настройка на услугата за прекъсване са следните:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" създава семафор за "InterruptService ()" (рутинната услуга за прекъсване), за да информира loop (), когато дойде време за изпълнение на цикъл.
  • "timerInterruptService = timerBegin (0, 80, true)" създава таймер, използващ хардуерен таймер 0 с предварително зададено ниво 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" прикрепя InterruptService () към таймера.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" задава скоростта на прекъсване на услугата 1000hz.
  • "timerAlarmEnable (timerInterruptService)" стартира алармата на таймера и по този начин прекъсва услугата.

След завършване на настройката се въвежда цикъл () и веднага спира на реда:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), което означава loop () ще изчака в този момент, докато семафорът от InterruptService () пристигне. Когато семафорът пристигне, кодът loop () се изпълнява, актуализирайки OLED дисплея с данните от бутона, след което се връща към върха, за да изчака отново следващия семафор. С InterruptService (), работещ при 1000Hz и стойност LOOP_DELAY от 30, loop () се изпълнява на всеки 30ms или при скорост на актуализация на дисплея 33.333Hz. Въпреки че това е по -висока честота на опресняване на дисплея, отколкото се изисква за повечето приложения на ESP32, използвах тази настройка, за да илюстрирам отзивчивостта на филтъра. Направих тест и определих времето, необходимо за изпълнение на един цикъл (), да бъде 20 ms.

InterruptService () се извиква от таймера, създаден в setup () със скорост 1000hz. Когато се извика, той актуализира два брояча надолу, nLoopDelay и nButtonDelay. Когато nLoopDelay се отброява надолу до нула, той изпраща семафора, позволяващ на loop () да изпълни единичен проход, след което нулира nLoopDelay. Когато nButtonDelay е отброен до нула, той също се нулира, след което бутонът „филтри“се изпълнява.

Всеки филтър с бутони има уникален брояч на филтри (например nButton1Count, nButton2Count и nButton3Count). Докато стойността на вход за докосване, присвоена на бутона, е по -голяма или равна на определената прагова стойност (BUTTON_THRESHHOLD), броячът на филтри, присвоен на бутона и бутона, остава нула. Ако стойността на вход за докосване, присвоена на бутона, е по -малка от определения праг, броячът на филтри, присвоен на бутона, се увеличава с по един на всеки 20 ms. Когато броячът на филтъра надвиши стойността на филтъра на бутона (BUTTON_FILTER), бутонът се счита за "натиснат". Ефектът от този метод е да се създаде филтър, изискващ 80ms (20ms nButtonDelay * 4ms nButtonCountN, където N е номерът на бутона) на непрекъснати входни стойности с докосване под определения праг, за да се отчете действително натиснатият бутон. Всеки път, когато по -малко от 80ms се счита за "бъг" и се отхвърля от филтъра.

Предвид това кратко описание, ако имате въпроси, не се колебайте да попитате и аз ще направя всичко възможно да отговоря на тях.

Надявам се да ви е харесало!

Стъпка 4: „Предстоящ проект“

The
The

Предстоящият проект, "Intelligrill® Pro", е монитор за пушачи с двойна температурна сонда, включващ:

  • Изчисленията на температурната сонда на Steinhart-Hart (за разлика от таблиците "търсене") за повишена точност.
  • Предсказващо време за завършване на сонда 1, включващо повишената точност, получена от изчисленията на Steinhart-Hart.
  • Втора сонда, сонда 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

Бъдете готови да изхвърлите праха от книгите си по алгебра за това.

Препоръчано: