Obsah:

Kapacitný dotykový vstup ESP32 pomocou „zástrčiek s kovovou dierou“pre tlačidlá: 5 krokov (s obrázkami)
Kapacitný dotykový vstup ESP32 pomocou „zástrčiek s kovovou dierou“pre tlačidlá: 5 krokov (s obrázkami)

Video: Kapacitný dotykový vstup ESP32 pomocou „zástrčiek s kovovou dierou“pre tlačidlá: 5 krokov (s obrázkami)

Video: Kapacitný dotykový vstup ESP32 pomocou „zástrčiek s kovovou dierou“pre tlačidlá: 5 krokov (s obrázkami)
Video: Arduino návody | Raspberry Pi: Úvod a výběr desky 2024, November
Anonim
Image
Image
Hardvér
Hardvér

Keď som finalizoval konštrukčné rozhodnutia pre nadchádzajúci projekt založený na ESP32 WiFi Kit 32, ktorý vyžaduje vstup pomocou troch tlačidiel, jedným z viditeľných problémov bolo, že sada WiFi Kit 32 nemá jediné mechanické tlačidlo, ale iba tri mechanické tlačidlá, na zadávanie. WiFi Kit 32 však má veľa kapacitných dotykových vstupov, takže som strávil nejaký čas zostavovaním hardvéru, písaním softvéru a testovaním dizajnu trojtlačidlového vstupu využívajúceho funkciu kapacitného dotykového vstupu ESP32 a tri 3/8 "" zástrčky s kovovými dierami "pre tlačidlá.

Ako zistil každý, kto experimentoval s kapacitnými dotykovými vstupmi ESP32, dotykové vstupy sú určite dostatočne hlučné, aby vyžadovali filtrovanie na spoľahlivú detekciu vstupov. Aby som minimalizoval celkový počet súčiastok pre nadchádzajúci projekt, zistil som, že jednoduchý digitálny filter poháňaný prerušením (viac „debounce“ako filter, ale odbočil som), na rozdiel od pridania externého hardvéru filtra, by mohol stíšiť hlučné vstupy.. A po testovaní sa ukázalo, že kapacitné vstupy ESP32, tri záslepky s 3/8 kovovým otvorom a nejaký softvér pre digitálne„ filtrovanie “skutočne poskytujú spoľahlivý trojtlačidlový vstup.

Ak vás teda zaujíma testovanie kapacitného vstupu s digitálnym filtrovaním na ESP32, vložil som zdrojový kód „Buttons.ino“vo formáte prostredia Arduino spolu s montážnymi a programovacími pokynmi, plus stručný popis zdrojového kódu pre to, čo som zistil, je vysoko spoľahlivý vstup s tromi tlačidlami.

A ako obvykle, pravdepodobne som zabudol jeden alebo dva súbory alebo ktovie čo ešte, takže ak máte akékoľvek otázky, neváhajte sa ma opýtať, pretože robím veľa chýb.

A jedna poznámka na záver, nedostávam žiadnu náhradu v akejkoľvek forme, vrátane, ale nie výlučne, bezplatných vzoriek, za akékoľvek komponenty použité v tomto dizajne

Krok 1: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér
Hardvér
Hardvér

Konštrukcia využíva nasledujúci hardvér:

  • Jeden, súprava WiFi 32.
  • Tri 3/8 "kovové zátky s otvormi.
  • Tri, 4 "dĺžky 28awg drôtu.

Na zostavenie hardvéru som vykonal nasledujúce kroky:

  • Odizolujte a pocínujte konce každého 4 -palcového drôtu, ako je znázornené na obrázku.
  • Spájkujte prvý vodič na kolík 13 ESP32 (vstup TOUCH4 alebo „T4“).
  • Druhý vodič spájkujte na kolík 12 ESP32 (vstup TOUCH5 alebo „T5“).
  • Tretí vodič pripájajte na kolík 14 ESP32 (vstup TOUCH6 alebo „T6“).
  • Na voľné konce troch dĺžok drôtu spájajte jednu z troch z troch 3/8 "zástrčiek s kovovým otvorom.

Krok 2: Softvér

Softvér
Softvér

Súbor „Buttons.ino“je súborom prostredia Arduino obsahujúcim softvér pre návrh. Okrem tohto súboru budete potrebovať grafickú knižnicu "U8g2lib" pre OLED displej WiFi Kit32 (ďalšie informácie o tejto knižnici nájdete na

S nainštalovanou grafickou knižnicou U8g2lib vo vašom adresári Arduino a načítaním „Buttons.ino“do prostredia Arduino skompilujte a stiahnite softvér do ESP32.

Po stiahnutí a spustení by mal horný riadok displeja ukazovať „tlačidlá“a druhý riadok displeja ukazovať „1 2 3“ako indikátory tlačidiel. Pod každým z 1, 2, 3 indikátorov tlačidiel sú nefiltrované hodnoty čítania dotyku a pod každým z nich sú indikátory stlačenia tlačidla („1“pre stlačené, „0“pre nestlačené). Ako je vidieť na videu (a ako bolo dlhodobé testovanie potvrdené), softvérový filter poskytuje spoľahlivú detekciu vstupu tlačidla bez falošného spustenia.

Krok 3: O softvéri

Softvér obsahuje tri hlavné sekcie kódu; Arduino vyžadovalo sekcie „setup ()“a „loop ()“a sekciu „Interrupts“. Časť setup () obsahuje kód potrebný na inicializáciu OLED a prerušenie služieb. Funkcie nastavenia OLED sú popísané v odkaze vyššie. Funkcie nastavenia služby prerušenia sú nasledujúce:

  • "TimerLoopSemaphore = xSemaphoreCreateBinary ()" vytvára semafor pre "InterruptService ()" (rutina služby prerušenia), ktorá informuje loop (), keď je čas vykonať prechod slučky.
  • "TimerInterruptService = timerBegin (0, 80, true)" vytvorí časovač pomocou hardvérového časovača 0 s predvoľbou 80.
  • "TimerAttachInterrupt (timerInterruptService, & InterruptService, true)" pripojí InterruptService () k časovaču.
  • "TimerAlarmWrite (timerInterruptService, 1000, true)" nastaví rýchlosť služby prerušenia na 1000 Hz.
  • „TimerAlarmEnable (timerInterruptService)“spustí alarm časovača, a tým preruší službu.

Po dokončení nastavenia sa zadá slučka () a okamžite sa zastaví na riadku:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), význam loop () bude v tomto bode čakať, kým príde semafor od InterruptService (). Keď príde semafor, spustí sa kód loop (), aktualizuje OLED displej údajmi o tlačidlách a potom sa vráti na začiatok, aby opäť čakal na ďalší semafor. Keď je služba InterruptService () spustená na 1000 Hz a hodnota LOOP_DELAY je 30, loop () sa spustí každých 30 ms alebo pri rýchlosti aktualizácie displeja 33,333 Hz. Aj keď je to vyššia obnovovacia frekvencia displeja, ako je požadované pre väčšinu aplikácií ESP32, toto nastavenie som použil na ilustráciu odozvy filtra. Testoval som a určil čas potrebný na vykonanie jednej slučky () na 20 ms.

Služba InterruptService () sa nazýva časovač vytvorený v programe setup () s frekvenciou 1 000 Hz. Po zavolaní aktualizuje dva čítače nadol, nLoopDelay a nButtonDelay. Keď je nLoopDelay odpočítavaný nadol na nulu, odošle semafor, ktorý umožní slučke () vykonať jeden prechod, potom resetuje nLoopDelay. Keď je nButtonDelay odpočítavaný nadol až na nulu, resetuje sa tiež a potom sa spustí tlačidlo „filtre“.

Každý gombíkový filter má jedinečné počítadlo filtra (napr. NButton1Count, nButton2Count a nButton3Count). Pokiaľ je hodnota dotykového vstupu priradená tlačidlu väčšia alebo rovná definovanej prahovej hodnote (BUTTON_THRESHHOLD), počítadlo filtra priradené tlačidlu a tlačidlu zostane nulové. Ak je dotyková vstupná hodnota priradená k tlačidlu menšia ako definovaná prahová hodnota, počítadlo filtra priradené k tlačidlu sa zvýši o každých 20 ms. Keď počítadlo filtra prekročí hodnotu filtra tlačidla (BUTTON_FILTER), tlačidlo sa považuje za „stlačené“. Účelom tejto metódy je vytvoriť filter vyžadujúci 80 ms (20 ms nButtonDelay * 4 ms nButtonCountN, kde N je číslo tlačidla) nepretržitých dotykových vstupných hodnôt pod definovanou prahovou hodnotou, aby sa zvážilo skutočne stlačené tlačidlo. Kedykoľvek kratšia ako 80 ms sa považuje za „závadu“a filter ju odmietne.

Vzhľadom na tento stručný popis, ak máte akékoľvek otázky, neváhajte sa ich opýtať a ja sa pokúsim na ne odpovedať.

Dúfam, že ste si to užili!

Krok 4: „Pripravovaný projekt“

The
The

Nadchádzajúci projekt „Intelligrill® Pro“je monitor s fajčením s dvojitou teplotou, ktorý ponúka:

  • Výpočty teplotnej sondy Steinhart-Hart (na rozdiel od „vyhľadávacích“tabuliek) na zvýšenie presnosti.
  • Prediktívny čas na dokončenie na sonde 1 zahŕňajúci zvýšenú presnosť odvodenú z výpočtov Steinhart-Hart.
  • Druhá sonda, sonda 2, na monitorovanie teploty fajčiara (obmedzená na 32 až 399 stupňov).
  • Kapacitné dotykové ovládanie vstupu (ako v tomto návode).
  • Diaľkové monitorovanie WIFI (s pevnou IP adresou umožňuje monitorovanie postupu fajčiara odkiaľkoľvek, kde je k dispozícii internetové pripojenie).
  • Rozšírený teplotný rozsah (opäť 32 až 399 stupňov).
  • Zvukové alarmy dokončenia vo vysielači Intelligrill® a na väčšine monitorovacích zariadení s podporou WiFi.
  • Zobrazenie teploty v stupňoch F alebo stupňoch C.
  • Formát času buď v HH: MM: SS alebo HH: MM.
  • Zobrazenie batérie vo voltoch alebo v % nabitých.
  • A už čoskoro, výstup PID pre fajčiarov na báze šneku.

„Intelligrill® Pro“testuje, aby sa stal najpresnejším, funkciami nabitým a spoľahlivým procesorom Intelligrill založeným na HTML, ktorý som navrhol.

Je to stále v teste, ale s jedlom, ktoré mi pomáha pripraviť sa počas testovania, som pribral viac ako niekoľko kíl.

Ešte raz dúfam, že si to užijete!

Krok 5: Nasledujúci krok: Analógový vstup teplotnej sondy ESP32 NTP s korekciou Steinhart-Hart

Na túto knihu sa pripravte oprášiť knihy z algebry.

Odporúča: