Obsah:

Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka: 5 kroků (s obrázky)
Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka: 5 kroků (s obrázky)

Video: Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka: 5 kroků (s obrázky)

Video: Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka: 5 kroků (s obrázky)
Video: Arduino návody | Raspberry Pi: Úvod a výběr desky 2024, Červenec
Anonim
Image
Image
Hardware
Hardware

Když jsem finalizoval návrhová rozhodnutí pro nadcházející projekt založený na ESP32 WiFi Kit 32, který vyžadoval vstup se třemi tlačítky, jeden znatelný problém byl v tom, že WiFi Kit 32 nemá jediné mechanické tlačítko, ale sama tři mechanická tlačítka, pro vstup. WiFi Kit 32 však má spoustu kapacitních dotykových vstupů, takže jsem strávil nějaký čas sestavováním hardwaru, psaním softwaru a testováním návrhu třítlačítkového vstupu využívajícího kapacitní dotykový vstup ESP32 a tři 3/8 "" zástrčky s kovovými otvory "pro tlačítka.

Jak zjistil každý, kdo experimentoval s kapacitními dotykovými vstupy ESP32, dotykové vstupy jsou určitě dostatečně hlučné, aby vyžadovaly filtrování pro spolehlivou detekci vstupů. Abych minimalizoval celkový počet dílů pro nadcházející projekt, rozhodl jsem se, že jednoduchý digitální filtr řízený přerušením (spíše „debounce“než filtr, ale odbočím), na rozdíl od přidání externího hardwaru filtru, by mohl ztišit hlučné vstupy. A po testování se ukázalo, že kapacitní vstupy ESP32, tři zástrčky s kovovými otvory 3/8 "a nějaký software pro digitální" filtrování "skutečně poskytnou spolehlivý třítlačítkový vstup pro návrh.

Pokud vás tedy zajímá testování kapacitního vstupu s digitálním filtrováním na ESP32, vložil jsem zdrojový kód „Buttons.ino“ve formátu prostředí Arduino spolu s montážními a programovacími pokyny, plus stručný popis zdrojového kódu, pro co jsem objevil jako vysoce spolehlivý vstup se třemi tlačítky.

A jako obvykle jsem pravděpodobně zapomněl jeden nebo dva soubory nebo kdo ví co ještě, takže pokud máte nějaké dotazy, neváhejte se zeptat, protože dělám spoustu chyb.

A jedna poznámka na závěr, nedostávám žádnou kompenzaci v jakékoli formě, včetně, ale bez omezení na bezplatné vzorky, za jakékoli komponenty použité v tomto designu

Krok 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Konstrukce využívá následující hardware:

  • Jeden, WiFi Kit 32.
  • Tři 3/8 "kovové zátky.
  • Tři, 4 "délky 28awg drátu.

Při sestavování hardwaru jsem provedl následující kroky:

  • Odizolujte a pocínujte konce každého drátu o délce 4 palce, jak je znázorněno na obrázku.
  • První vodič připájejte na pin 13 ESP32 (vstup TOUCH4 nebo „T4“).
  • Druhý vodič připájejte na pin 12 ESP32 (vstup TOUCH5 nebo „T5“).
  • Třetí vodič připájejte na pin 14 ESP32 (vstup TOUCH6 nebo „T6“).
  • Na volné konce tří délek drátu připájejte jeden z každého ze tří 3/8 "kovových otvorů.

Krok 2: Software

Software
Software

Soubor "Buttons.ino" je soubor prostředí Arduino obsahující software pro návrh. Kromě tohoto souboru budete potřebovat grafickou knihovnu „U8g2lib“pro OLED displej WiFi Kit32 (další informace o této knihovně najdete na

S nainstalovanou grafickou knihovnou U8g2lib ve vašem adresáři Arduino a načtením „Buttons.ino“do prostředí Arduino zkompilujte a stáhněte software do ESP32.

Jakmile je stažen a spuštěn, horní řádek displeje by měl ukazovat „Tlačítka“a druhý řádek displeje ukazovat „1 2 3“jako indikátory tlačítek. Pod každým z 1, 2, 3 indikátorů tlačítek jsou nefiltrované hodnoty čtení dotyku a pod každým z nich jsou indikátory stisknutí tlačítka ("1" pro stisknutí, "0" pro nestisknutí). Jak je vidět na videu (a jak bylo dlouhodobé testování potvrzeno), softwarový filtr poskytuje spolehlivou detekci vstupu tlačítka bez falešného spouštění.

Krok 3: O softwaru

Software obsahuje tři hlavní sekce kódu; Arduino vyžadovalo sekce „setup ()“a „loop ()“a sekci „Interrupts“. Část setup () obsahuje kód nezbytný k inicializaci OLED a přerušení služeb. Funkce nastavení OLED jsou popsány v odkazu výše. Funkce nastavení služby přerušení jsou následující:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" vytvoří semafor pro "InterruptService ()" (rutina služby přerušení), která bude informovat loop (), když je čas provést smyčkový průchod.
  • "timerInterruptService = timerBegin (0, 80, true)" vytvoří časovač pomocí hardwaru časovače 0 s předvolbou 80.
  • "TimerAttachInterrupt (timerInterruptService, & InterruptService, true)" připojí InterruptService () k časovači.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" nastaví rychlost služby přerušení na 1000 Hz.
  • „timerAlarmEnable (timerInterruptService)“spustí alarm časovače, a tím přeruší službu.

Po dokončení nastavení je zadána smyčka () a okamžitě se zastaví na řádku:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), význam loop () bude v tomto okamžiku čekat, dokud nedojde k semaforu z InterruptService (). Když dorazí semafor, spustí se kód loop (), který aktualizuje OLED displej pomocí údajů o tlačítku, poté se vrátí na začátek a čeká na další semafor. S InterruptService () běžícím na 1000 Hz a hodnotou LOOP_DELAY 30 se smyčka () spouští každých 30 ms nebo při rychlosti aktualizace zobrazení 33,333 Hz. I když se jedná o vyšší obnovovací frekvenci zobrazení, než je požadováno u většiny aplikací ESP32, použil jsem toto nastavení pro ilustraci odezvy filtru. Testoval jsem a určil čas potřebný k provedení průchodu jednou smyčkou () na 20 ms.

InterruptService () je volán časovačem vytvořeným v setup () rychlostí 1 000 Hz. Při volání aktualizuje dva čítače dolů, nLoopDelay a nButtonDelay. Když je nLoopDelay odpočítáván dolů na nulu, odešle semafor umožňující smyčce () provést jeden průchod a poté resetuje nLoopDelay. Když je nButtonDelay odpočítáván dolů na nulu, je také resetován a poté se spustí tlačítko „filtry“.

Každý filtr tlačítka má jedinečný čítač filtrů (např. NButton1Count, nButton2Count a nButton3Count). Dokud je dotyková vstupní hodnota přiřazená tlačítku větší nebo rovna definované prahové hodnotě (BUTTON_THRESHHOLD), čítač filtrů přiřazený tlačítku a tlačítku zůstane nulový. Pokud je dotyková vstupní hodnota přiřazená tlačítku menší než definovaná prahová hodnota, čítač filtrů přiřazený tlačítku se zvýší o každých 20 ms. Když čítač filtru překročí hodnotu filtru tlačítka (BUTTON_FILTER), je tlačítko považováno za „stisknuté“. Výsledkem této metody je vytvoření filtru vyžadujícího 80ms (20ms nButtonDelay * 4ms nButtonCountN, kde N je číslo tlačítka) nepřetržitých dotykových vstupních hodnot pod definovanou prahovou hodnotou, aby bylo možné považovat skutečně stisknuté tlačítko. Kdykoli méně než 80 ms je považováno za „závadu“a je filtrem odmítnuto.

Vzhledem k tomuto stručnému popisu, pokud máte nějaké dotazy, neváhejte se zeptat a já se budu snažit na ně odpovědět.

Doufám, že jste si to užili!

Krok 4: „Připravovaný projekt“

The
The

Nadcházející projekt „Intelligrill® Pro“je kuřácký monitor se dvěma teplotními sondami, který obsahuje:

  • Výpočty teplotní sondy Steinhart-Hart (na rozdíl od „vyhledávacích“tabulek) pro zvýšení přesnosti.
  • Prediktivní čas do dokončení na sondě 1 zahrnující zvýšenou přesnost odvozenou z výpočtů Steinhart-Hart.
  • Druhá sonda, sonda 2, pro sledování teploty kuřáka (omezena na 32 až 399 stupňů).
  • Kapacitní dotykové ovládací prvky vstupu (jako v tomto Instructable).
  • Vzdálené monitorování založené na WIFI (s pevnou IP adresou umožňuje sledování pokroku kuřáka odkudkoli, kde je k dispozici připojení k internetu).
  • Rozšířený teplotní rozsah (opět 32 až 399 stupňů).
  • Zvukové alarmy dokončení jak ve vysílači Intelligrill®, tak na většině monitorovacích zařízení s podporou WiFi.
  • Zobrazení teploty ve stupních F nebo stupních C.
  • Časový formát buď v HH: MM: SS nebo HH: MM.
  • Zobrazení baterie buď ve voltech, nebo v % nabitých.
  • A již brzy, výstup PID pro kuřáky na bázi šneku.

„Intelligrill® Pro“testuje, aby se stal nejpřesnějším, funkcemi nabitým a spolehlivým Intelligrill® založeným na HTML, který jsem navrhl.

Je to stále pod testem, ale s jídlem, které mi pomáhá připravit se během testování, jsem přibral více než pár liber.

Opět doufám, že si to užijete!

Krok 5: Další krok: Analogový vstup teplotní sondy ESP32 NTP s korekcí Steinhart-Hart

Připravte se na to, že oprášíte své algebraické knihy.

Doporučuje: