Obsah:
- Krok 1: Hardware
- Krok 2: Software
- Krok 3: O softwaru
- Krok 4: „Připravovaný projekt“
- Krok 5: Další krok: Analogový vstup teplotní sondy ESP32 NTP s korekcí Steinhart-Hart
Video: Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka: 5 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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
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
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“
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:
Otestujte Bare Arduino s herním softwarem využívajícím kapacitní vstup a LED: 4 kroky
Otestujte Bare Arduino s herním softwarem využívajícím kapacitní vstup a LED: " Push-It " Interaktivní hra využívající holou desku Arduino, nejsou potřeba žádné externí součásti ani zapojení (využívá kapacitní „dotykový“vstup). Zobrazeno výše, ukazuje, že běží na dvou různých deskách. Push-It má dva účely. Rychle předvést/v
Upgradujte svůj vesmírný start pomocí tlačítka fyzické fáze pro vesmírný program Kerbal: 6 kroků
Upgradujte svůj vesmírný start pomocí tlačítka fyzické fáze pro program Kerbal Space: Nedávno jsem si vybral demo verzi programu Kerbal Space Program. Kerbal Space Program je simulátorová hra, která vám umožní navrhovat a vypouštět rakety a navigovat je na vzdálené měsíce a planety. Stále se pokouším úspěšně přistát na Měsíci (o
PŘIDAT kapacitní dotykový přepínač k vašim projektům: 7 kroků
PŘIDAT kapacitní dotykový přepínač k vašim projektům: Jak přidat kapacitní dotykový přepínač do vašich projektů doma Ahoj elektroničtí přátelé v tomto tutoriálu vám ukážu, jak můžete levně přidat kapacitní dotykový přepínač do svých elektronických projektů a dát svůj vlastní projekt profesionální vzhled
DOTYKOVÝ SPÍNAČ - Jak vytvořit dotykový přepínač pomocí tranzistoru a Breadboardu: 4 kroky
DOTYKOVÝ SPÍNAČ | Jak vytvořit dotykový spínač pomocí tranzistoru a Breadboardu: Dotykový přepínač je velmi jednoduchý projekt založený na aplikaci tranzistorů. V tomto projektu je použit tranzistor BC547, který funguje jako dotykový spínač. ZAJIŠTĚTE SE NA VIDEO, KTERÉ VÁM DÁ ÚPLNÉ PODROBNOSTI O PROJEKTU
Kapacitní měřič s TM1637 pomocí Arduina .: 5 kroků (s obrázky)
Kapacitní měřič s TM1637 pomocí Arduina: Jak vyrobit kapacitní měřič pomocí Arduina zobrazeného na TM1637. Rozsah 1 uF až přibližně 2 000 uF