Sadržaj:

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

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

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

Dok sam dovršavao dizajnerske odluke za nadolazeći projekt zasnovan na ESP32 WiFi Kit 32 koji je zahtijevao unos sa tri dugmeta, jedan uočljiv problem bio je što WiFi Kit 32 nema jedno mehaničko dugme, ali samo tri mehanička dugmeta za unos. Međutim, WiFi Kit 32 ima dosta kapacitivnih ulaza na dodir, pa sam proveo neko vrijeme sastavljajući hardver, pišući softver i testirajući ulazni dizajn s tri tipke koristeći ESP32 kapacitivnu funkciju unosa dodirom i tri 3/8 "" metalne utikače "za dugmad.

Kao što je otkrio svatko tko je eksperimentirao s ESP32 kapacitivnim dodirnim ulazima, dodirni ulazi su zasigurno dovoljno bučni da zahtijevaju filtriranje radi pouzdane detekcije ulaza. Kako bih sveo na minimum ukupan broj dijelova za nadolazeći projekt, utvrdio sam da bi jednostavni digitalni filter s prekidom (više "debounce" nego filter, ali odstupam), za razliku od dodavanja hardvera vanjskog filtra, mogao utišati bučne ulaze. I nakon testiranja, postalo je očito da će kapacitivni ulazi ESP32, tri metalna utikača od 3/8 "i neki digitalni softver za" filtriranje "zaista 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 Arduino okruženja zajedno sa uputama za sastavljanje i programiranje, plus kratak opis izvornog koda, za za šta sam otkrio da je vrlo pouzdan ulaz sa tri dugmeta.

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 primam nikakvu nadoknadu u bilo kojem obliku, uključujući, ali ne ograničavajući se na besplatne uzorke, za bilo koju komponentu korištenu u ovom dizajnu

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Dizajn koristi sljedeći hardver:

  • Prvo, WiFi Kit 32.
  • Tri čepa sa metalnim rupama 3/8 ".
  • Tri, 4 "dužine žice 28awg.

Da bih sastavio hardver, izvršio sam sljedeće korake:

  • Ogoljeni i kalajisani krajevi svake 4 "žice dužine 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").
  • Lemljen po jedan od tri čepa sa metalnim rupama 3/8 "na slobodne krajeve tri dužine žice.

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 biblioteka "U8g2lib" za WiFi Kit32 OLED ekran (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 što se preuzme i pokrene, gornji red ekrana trebao bi čitati "Dugmad", a drugi red ekrana kao "dugmad" pokazuje "1 2 3". Ispod svakog od 1, 2, 3 indikatora dugmeta nalaze se nefiltrirane vrijednosti očitavanja dodirom, a ispod svakog od njih su indikatori pritiskanja gumba ("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 putem dugmeta 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 prekidanje usluga. OLED funkcije za postavljanje opisane su na gornjoj vezi. 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 mjerača vremena 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.

Sa završenim postavljanjem, petlja () se unosi i odmah se zaustavlja na redu:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), što znači da će loop () čekati dok semafor iz InterruptService () ne stigne. Kada stigne semafor, kod loop () se izvršava, ažurira OLED ekran 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 vrijednosti 30, loop () se izvršava svakih 30ms ili pri brzini ažuriranja ekrana od 33.333Hz. Iako je ovo veća učestalost osvježavanja ekrana nego što je potrebno za većinu ESP32 aplikacija, ovu postavku sam upotrijebio za ilustraciju odziva filtera. Uradio sam test i odredio vrijeme potrebno za izvršavanje jedne petlje () na 20 ms.

InterruptService () poziva tajmer kreiran u setup () brzinom od 1000hz. Kada se pozove, ažurira dva brojača nadole, nLoopDelay i nButtonDelay. Kada se nLoopDelay odbroji prema dolje, šalje semaforu koji dozvoljava loop () da izvrši jedan prolaz, a zatim poništava nLoopDelay. Kada se nButtonDelay dolje odbroji do nule, i on se poništava, a zatim se dugme "filtri" izvršava.

Svaki filter dugmeta 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 vrijednost unosa dodirom dodijeljena gumbu manja od definiranog praga, brojač filtera dodijeljen gumbu povećava se za jedan svakih 20 ms. Kada brojač filtera premaši vrijednost filtera dugmeta (BUTTON_FILTER), dugme se smatra "pritisnutim". Učinak ove metode je stvaranje filtera za koji je potrebno 80ms (20ms nButtonDelay * 4ms nButtonCountN gdje je N broj dugmeta) neprekidnih vrijednosti unosa dodirom ispod definiranog praga kako bi se uzelo u obzir da je dugme stvarno pritisnuto. Svaki put kada se manje od 80 ms smatra "greškom" i filter ga odbija.

S obzirom na ovaj kratak opis, ako imate pitanja, slobodno pitajte, a ja ću se potruditi da na njih odgovorim.

Nadam se da ste uživali!

Korak 4: "Predstojeći projekat"

The
The

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

  • Steinhart-Hart-ovi proračuni temperaturnih sondi (za razliku od tabela "traženja") radi veće tačnosti.
  • Prediktivno vrijeme dovršetka na sondi 1 koje uključuje povećanu tačnost izvedenu iz Steinhart-Hartovih proračuna.
  • Druga sonda, sonda 2, za praćenje temperature pušača (ograničena na 32 do 399 stepeni).
  • Kapacitivne kontrole unosa dodirom (kao u ovom uputstvu).
  • WIFI daljinski nadzor (sa fiksnom IP adresom, omogućava praćenje napretka pušača s bilo koje lokacije koja je dostupna na internetu).
  • Prošireni temperaturni opseg (ponovo 32 do 399 stepeni).
  • Zvučni alarmi završetka kako u okviru odašiljača Intelligrill®, tako 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ža.

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

Još uvijek se testira, ali uz obroke koje pomaže u pripremi 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 da za ovo otprašite svoje knjige iz algebre.

Preporučuje se: