Kazalo:

ESP32 kapacitivni vnos na dotik z uporabo "kovinskih vtičev za luknje" za gumbe: 5 korakov (s slikami)
ESP32 kapacitivni vnos na dotik z uporabo "kovinskih vtičev za luknje" za gumbe: 5 korakov (s slikami)

Video: ESP32 kapacitivni vnos na dotik z uporabo "kovinskih vtičev za luknje" za gumbe: 5 korakov (s slikami)

Video: ESP32 kapacitivni vnos na dotik z uporabo
Video: How to user Makerfabs ESP32 3.5" TFT Capacitive Touch with Camera 2024, Julij
Anonim
Image
Image
Strojna oprema
Strojna oprema

Ko sem dokončeval oblikovalske odločitve za prihajajoči projekt, ki temelji na ESP32 WiFi Kit 32, ki zahteva vnos s tremi gumbi, je bila ena opazna težava, da WiFi Kit 32 nima enega samega mehanskega gumba, ampak samo tri mehanske gumbe za vnos. Vendar ima WiFi Kit 32 veliko kapacitivnih vhodov na dotik, zato sem nekaj časa sestavljal strojno opremo, pisal programsko opremo in preizkušal vhodno zasnovo s tremi gumbi z uporabo kapacitivnega vhodnega vmesnika ESP32 in tremi 3/8 "" kovinskimi vtiči "za gumbi.

Kot je odkril vsak, ki je preizkusil kapacitivne vhode na dotik ESP32, so vnosi na dotik zagotovo dovolj hrupni, da zahtevajo filtriranje za zanesljivo zaznavanje vhodov. Da bi čim bolj zmanjšali skupno število delov za prihajajoči projekt, sem ugotovil, da bi preprost digitalni filter s prekinitvami (bolj "debounce" kot filter, vendar se odmičem), v nasprotju z dodajanjem strojne opreme zunanjega filtra, lahko utiša hrupne vhode. Po preskusu je postalo očitno, da bi kapacitivni vhodi ESP32, trije 3/8 "vtiči s kovinskimi luknjami in nekaj digitalne programske opreme za" filtriranje "resnično zagotovili zanesljiv vhod s tremi gumbi za zasnovo.

Torej, če vas zanima testiranje kapacitivnega vhoda z digitalnim filtriranjem na ESP32, sem vključil izvorno kodo "Buttons.ino" v obliko okolja Arduino skupaj z navodili za sestavljanje in programiranje ter kratek opis izvorne kode za kar sem odkril kot zelo zanesljiv vnos s tremi gumbi.

In kot ponavadi sem verjetno pozabil kakšno datoteko ali dve ali kdo ve, kaj še, zato če imate kakšno vprašanje, ne oklevajte in vprašajte, saj delam veliko napak.

In še zadnja opomba: ne prejemam nobene odškodnine v nobeni obliki, vključno z, vendar ne omejeno na brezplačne vzorce, za katero koli komponento, uporabljeno v tej zasnovi

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Zasnova uporablja naslednjo strojno opremo:

  • Prvi, WiFi Kit 32.
  • Tri, 3/8 "čepi s kovinskimi luknjami.
  • Tri, 4 "dolžine žice 28awg.

Za sestavljanje strojne opreme sem izvedel naslednje korake:

  • Odstranite in pokosite konce vsake 4 "dolžine žice, kot je prikazano.
  • Spajkali smo prvo žico na pin 13 ESP32 (vhod TOUCH4 ali "T4").
  • Drugo žico spajkamo na pin 12 ESP32 (vhod TOUCH5 ali "T5").
  • Spajkala je tretja žica na pin 14 ESP32 (vhod TOUCH6 ali "T6").
  • Na proste konce treh dolžin žice spajkamo enega od vsakega od treh 3/8 "kovinskih čepov.

2. korak: Programska oprema

Programska oprema
Programska oprema

Datoteka "Buttons.ino" je datoteka okolja Arduino, ki vsebuje programsko opremo za oblikovanje. Poleg te datoteke boste potrebovali grafično knjižnico "U8g2lib" za zaslon OLED WiFi Kit32 (za dodatne informacije o tej knjižnici glejte

Z grafično knjižnico U8g2lib, nameščeno v vašem imeniku Arduino, in »Buttons.ino«, naloženimi v okolje Arduino, prevedite in prenesite programsko opremo v ESP32.

Ko se naloži in zažene, mora biti v zgornji vrstici zaslona prikazano "Gumbi", v drugi vrstici zaslona pa "1 2 3" kot indikatorji gumbov. Pod vsakim od indikatorjev gumbov 1, 2, 3 so nefiltrirane vrednosti branja na dotik, pod vsakim od teh pa indikatorji pritiska na gumb ("1" za pritisnjeno, "0" za ne pritisnjeno). Kot je razvidno iz videoposnetka (in kot je dolgoročno testirano potrjeno), filter programske opreme zagotavlja zanesljivo zaznavanje vnosa gumbov brez lažnega sprožanja.

3. korak: O programski opremi

Programska oprema vsebuje tri glavne kode; Arduino zahteva razdelke "setup ()" in "loop ()" ter razdelek "Prekinitve". Razdelek setup () vsebuje kodo, potrebno za inicializacijo OLED in prekinitev storitev. Nastavitvene funkcije OLED so opisane na zgornji povezavi. Funkcije nastavitve prekinitvenih storitev so naslednje:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" ustvari semafor za "InterruptService ()" (rutino prekinitvene storitve), da obvesti zanko (), ko je čas za izvedbo prehoda zanke.
  • "timerInterruptService = timerBegin (0, 80, true)" ustvari časovnik z uporabo časovnika strojne opreme 0 s predrazmerjem 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" prišteje časovniku InterruptService ().
  • "timerAlarmWrite (timerInterruptService, 1000, true)" nastavi hitrost storitve prekinitve na 1000Hz.
  • "timerAlarmEnable (timerInterruptService)" zažene alarm časovnika in s tem prekine storitev.

Ko je nastavitev končana, se vnese zanka () in se takoj ustavi na vrstici:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), pomeni loop () bo na tej točki počakal, dokler ne prispe semafor iz InterruptService (). Ko pride semafor, se izvede koda zanke (), ki posodobi zaslon OLED s podatki o gumbih, nato pa se vrne na vrh in spet čaka na naslednji semafor. Z InterruptService (), ki deluje pri 1000 Hz in je vrednost LOOP_DELAY 30, se zanka () izvaja vsakih 30 ms ali pri hitrosti posodabljanja zaslona 33,333 Hz. Čeprav je to višja hitrost osveževanja zaslona, kot je potrebna za večino aplikacij ESP32, sem s to nastavitvijo ponazoril odzivnost filtra. Naredil sem test in določil, da je čas, potreben za izvedbo ene same zanke (), 20 ms.

InterruptService () pokliče časovnik, ustvarjen v setup () s hitrostjo 1000Hz. Ob klicu posodobi dva števca navzdol, nLoopDelay in nButtonDelay. Ko se nLoopDelay odšteje navzdol do nič, pošlje semaforju, ki dovoljuje zanki (), da izvede en sam prehod, nato pa ponastavi nLoopDelay. Ko se nButtonDelay navzdol odšteje do nič, se tudi ponastavi, nato pa se izvede gumb "filtri".

Vsak gumbni filter ima edinstven števec filtrov (npr. NButton1Count, nButton2Count in nButton3Count). Dokler je vhodna vrednost na dotik, dodeljena gumbu, večja ali enaka določeni mejni vrednosti (BUTTON_THRESHHOLD), števec filtrov, dodeljen gumbu in gumbu, ostane nič. Če je vhodna vrednost na dotik, dodeljena gumbu, manjša od določenega praga, se števec filtrov, dodeljen gumbu, poveča za vsakih 20 ms. Ko števec filtra preseže vrednost filtra gumba (BUTTON_FILTER), se šteje, da je gumb "pritisnjen". Učinek te metode je ustvariti filter, ki zahteva 80 ms (20 ms nButtonDelay * 4ms nButtonCountN, kjer je N številka gumba) neprekinjenih vnosnih vrednosti na dotik pod določenim pragom, da se upošteva dejansko pritisnjen gumb. Kadar koli manj kot 80 ms velja za "napako" in ga filter zavrne.

Glede na ta kratek opis vas prosimo, da vprašate in potrudil se bom, da na njih odgovorim.

Upam, da ste uživali!

4. korak: "Prihajajoči projekt"

The
The

Prihajajoči projekt, "Intelligrill® Pro", je monitor za kadilce z dvojno temperaturno sondo, ki vsebuje:

  • Izračuni temperaturnih sond Steinhart-Hart (v nasprotju s tabelami za iskanje) za večjo natančnost.
  • Predvidljivi čas dokončanja na sondi 1, ki vključuje povečano natančnost, pridobljeno iz Steinhart-Hartovih izračunov.
  • Druga sonda, sonda 2, za nadzor temperature kadilca (omejena na 32 do 399 stopinj).
  • Kapacitivne kontrole vnosa na dotik (kot v tem navodilu).
  • Oddaljeno spremljanje na osnovi WIFI (s fiksnim naslovom IP omogoča spremljanje napredka kadilca od koder koli je na voljo internetna povezava).
  • Razširjeno temperaturno območje (spet od 32 do 399 stopinj).
  • Zvočni alarmi za dokončanje tako v oddajniku Intelligrill® kot na večini nadzornih naprav, ki podpirajo WiFi.
  • Prikaz temperature v stopinjah F ali stopinjah C.
  • Časovna oblika v HH: MM: SS ali HH: MM.
  • Prikaz baterije v voltih ali % napolnjenosti.
  • In kmalu, PID izhod za kadilce na osnovi polža.

"Intelligrill® Pro" se preizkuša kot najnatančnejši, najbolj zmogljiv in zanesljiv Intelligrill® na osnovi HTML, ki sem ga oblikoval.

Še vedno je na preizkušnji, a z obroki, ki si jih pomaga pripraviti med testiranjem, sem pridobil več kot nekaj kilogramov.

Še enkrat upam, da boste uživali!

5. korak: Naprej: analogni vhod za temperaturno sondo ESP32 NTP s korekcijo Steinhart-Hart

Za to bodite pripravljeni odprašiti knjige iz algebre.

Priporočena: