Sadržaj:

ESP32 kapacitivni dodirni ulaz pomoću "metalnih utikača za rupe" za gumbe: 5 koraka (sa slikama)
ESP32 kapacitivni dodirni ulaz pomoću "metalnih utikača za rupe" za gumbe: 5 koraka (sa slikama)

Video: ESP32 kapacitivni dodirni ulaz pomoću "metalnih utikača za rupe" za gumbe: 5 koraka (sa slikama)

Video: ESP32 kapacitivni dodirni ulaz pomoću
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Srpanj
Anonim
Image
Image
Hardver
Hardver

Dok sam dovršavao dizajnerske odluke za nadolazeći projekt temeljen na ESP32 WiFi Kit 32 koji je zahtijevao unos s tri gumba, jedan je uočljiv problem bio što WiFi Kit 32 ne posjeduje niti jedno mehaničko dugme, ali samo tri mehanička gumba za unos. Međutim, WiFi Kit 32 ima dosta kapacitivnih ulaza na dodir, pa sam proveo neko vrijeme u sastavljanju hardvera, pisanju softvera i testiranju dizajna ulaza s tri tipke koristeći ESP32 kapacitivnu značajku unosa dodirom i tri 3/8 "" metalne utikače "za gumbi.

Kao što je otkrio svatko tko je eksperimentirao s ESP32 kapacitivnim ulazima na dodir, ulazi na dodir zasigurno su dovoljno bučni da zahtijevaju filtriranje radi pouzdane detekcije ulaza. Kako bih sveo na minimum ukupni broj dijelova za nadolazeći projekt, utvrdio sam da bi jednostavni digitalni filter s prekidima (više "debounce" nego filter, ali odstupam), za razliku od dodavanja hardvera vanjskog filtra, mogao utišati bučne ulaze. Nakon testiranja postalo je očito da će kapacitivni ulazi ESP32, tri čepa s metalnim rupama 3/8 "i neki softver za digitalno" filtriranje "doista pružiti pouzdan ulaz s tri tipke za dizajn.

Dakle, ako ste zainteresirani za testiranje kapacitivnog ulaza s digitalnim filtriranjem na ESP32, uključio sam izvorni kod "Buttons.ino" u format okruženja Arduino zajedno sa uputama za sastavljanje i programiranje, plus kratak opis izvornog koda, za za što sam otkrio da je vrlo pouzdan ulaz s tri tipke.

I kao i obično, vjerojatno sam zaboravio dosje ili dva ili tko zna što još, pa ako imate pitanja, ne ustručavajte se pitati jer griješim.

I posljednja napomena, ne dobivam nikakvu naknadu u bilo kojem obliku, uključujući, ali bez ograničenja, besplatne uzorke, za bilo koju od komponenti korištenih u ovom dizajnu

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Dizajn koristi sljedeći hardver:

  • Jedan, WiFi Kit 32.
  • Tri čepa s metalnim rupama 3/8 ".
  • Tri, 4 "duljine žice 28awg.

Za sastavljanje hardvera izvršio sam sljedeće korake:

  • Skinuti i pokositi krajeve svake 4 "žice duljine kako je prikazano.
  • Lemljena je prva žica na pin 13 ESP32 (ulaz TOUCH4 ili "T4").
  • Lemio je drugu žicu na pin 12 ESP32 (ulaz TOUCH5 ili "T5").
  • Lemio je treću žicu na pin 14 ESP32 (ulaz TOUCH6 ili "T6").
  • Lemljeno je po jedno od tri čepa s metalnim rupama 3/8 "na slobodne krajeve triju žica.

Korak 2: Softver

Softver
Softver

Datoteka "Buttons.ino" je datoteka okruženja Arduino koja sadrži softver za dizajn. Osim ove datoteke, trebat će vam i grafička knjižnica "U8g2lib" za WiFi Kit32 OLED zaslon (za više informacija o ovoj biblioteci pogledajte

S grafičkom bibliotekom U8g2lib instaliranom u vašem Arduino direktoriju i "Buttons.ino" učitanim u Arduino okruženje, kompajlirajte i preuzmite softver u ESP32.

Nakon preuzimanja i pokretanja, gornji redak zaslona trebao bi čitati "Gumbi", a drugi redak zaslona "1 2 3" kao indikatore gumba. Ispod svakog od indikatora gumba 1, 2, 3 nalaze se nefiltrirane vrijednosti čitanja dodirom, a ispod svakog od njih su indikatori pritiska tipke ("1" za pritisnuto, "0" za ne pritisnuto). Kao što se može vidjeti u videu (i što je dugoročno testirano potvrđeno), softverski filter pruža pouzdanu detekciju ulaza s gumbima bez lažnog aktiviranja.

Korak 3: O softveru

Softver sadrži tri glavna odjeljka koda; Arduino je zahtijevao odjeljke "setup ()" i "loop ()" te odjeljak "Prekidi". Odjeljak setup () sadrži kôd potreban za inicijalizaciju OLED -a i prekid usluga. OLED funkcije za postavljanje opisane su na gornjoj poveznici. Funkcije postavljanja usluge prekida su sljedeće:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" stvara semafor za "InterruptService ()" (rutinu usluge prekida) kako bi obavijestio loop () kada dođe vrijeme za izvršavanje prolaza petlje.
  • "timerInterruptService = timerBegin (0, 80, true)" stvara mjerač vremena pomoću hardverskog timera 0 s predznakom 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" pridružuje InterruptService () mjeraču vremena.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" postavlja brzinu usluge prekida na 1000Hz.
  • "timerAlarmEnable (timerInterruptService)" pokreće alarm timera i time prekida uslugu.

Kad je postavljanje dovršeno, unosi se loop () i odmah se zaustavlja na retku:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), što znači da će loop () u ovom trenutku čekati dok ne stigne semafor iz InterruptService (). Kad stigne semafor, izvršava se kod loop () koji ažurira OLED zaslon podacima gumba, a zatim se vraća na vrh kako bi ponovno čekao sljedeći semafor. Uz InterruptService () koji radi na 1000Hz i LOOP_DELAY vrijednost 30, loop () se izvršava svakih 30 ms ili pri brzini ažuriranja zaslona od 33,333Hz. Iako je ovo veća učestalost osvježavanja zaslona nego što je potrebno za većinu aplikacija ESP32, ovu sam postavku upotrijebio za ilustraciju odziva filtra. Učinio sam test i utvrdio da je vrijeme potrebno za izvođenje jedne petlje () prolaza 20 ms.

InterruptService () poziva tajmer stvoren u setup () brzinom od 1000Hz. Kad se pozove, ažurira dva brojača dolje, nLoopDelay i nButtonDelay. Kad se nLoopDelay dolje odbroji do nule, šalje semaforu dopuštajući loop () da izvrši jedan prolaz, a zatim resetira nLoopDelay. Kada se nButtonDelay dolje odbroji do nule, i on se poništava, a zatim se gumb "filtri" izvršava.

Svaki filter gumba ima jedinstveni brojač filtera (npr. NButton1Count, nButton2Count i nButton3Count). Sve dok je vrijednost unosa dodirom dodijeljena gumbu veća ili jednaka definiranoj vrijednosti praga (BUTTON_THRESHHOLD), brojač filtera dodijeljen gumbu i gumbu ostaje nula. Ako je ulazna vrijednost dodira dodijeljena gumbu manja od definiranog praga, brojač filtera dodijeljen gumbu povećava se za jedan svakih 20 ms. Kad brojač filtera premaši vrijednost filtra gumba (BUTTON_FILTER), gumb se smatra "pritisnutim". Učinak ove metode je stvaranje filtera koji zahtijeva 80 ms (20 ms nButtonDelay * 4ms nButtonCountN gdje je N broj gumba) neprekidnih ulaznih vrijednosti dodirom ispod definiranog praga kako bi se uzelo u obzir da je tipka stvarno pritisnuta. Svaki put kad se manje od 80 ms smatra "greškom" i filter ga odbija.

S obzirom na ovaj kratki opis, ako imate pitanja, slobodno pitajte, a ja ću se potruditi odgovoriti na njih.

Nadam se da ste uživali!

Korak 4: "Predstojeći projekt"

The
The

Predstojeći projekt, "Intelligrill® Pro", je monitor za pušače s sondom s dvije temperature, koji sadrži:

  • Steinhart-Hart-ovi proračuni temperaturnih sondi (za razliku od tablica "traženja") radi veće točnosti.
  • Prediktivno vrijeme dovršetka na sondi 1 koje uključuje povećanu točnost izvedenu iz Steinhart-Hartovih izračuna.
  • Druga sonda, sonda 2, za praćenje temperature pušača (ograničena na 32 do 399 stupnjeva).
  • Kapacitivne kontrole unosa dodirom (kao u ovoj uputi).
  • Daljinski nadzor temeljen na WIFI -ju (s fiksnom IP adresom, omogućuje praćenje napretka pušača s bilo koje lokacije na kojoj je dostupna internetska veza).
  • Prošireni temperaturni raspon (opet 32 do 399 stupnjeva).
  • Zvučni alarmi dovršetka i u odašiljaču Intelligrill® i na većini uređaja za nadzor koji podržavaju WiFi.
  • Prikaz temperature u stupnjevima F ili stupnjevima C.
  • Format vremena bilo u HH: MM: SS ili HH: MM.
  • Prikaz baterije u voltima ili % napunjenosti.
  • Uskoro i PID izlaz za pušače na bazi puževa.

"Intelligrill® Pro" testira se kako bi postao najprecizniji i najpouzdaniji Intelligrill® temeljen na HTML -u koji sam dizajnirao.

Još je na ispitu, ali s obrocima koje pomaže pripremiti tijekom testiranja, udebljao sam se više od nekoliko kilograma.

Još jednom, nadam se da ćete uživati!

Korak 5: Sljedeće: ESP32 NTP temperaturna sonda analogni ulaz sa Steinhart-Hartovom korekcijom

Budite spremni za ovu knjigu otprašiti svoje knjige iz algebre.

Preporučeni: