Sadržaj:
- Korak 1: Hardver
- Korak 2: Softver
- Korak 3: O softveru
- Korak 4: "Predstojeći projekat"
- Korak 5: Sljedeće: ESP32 NTP temperaturna sonda analogni ulaz sa Steinhart-Hartovom korekcijom
Video: ESP32 kapacitivni dodirni ulaz pomoću "metalnih utikača za rupe" za dugmad: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
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
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
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"
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:
Testirajte Bare Arduino, sa softverom za igre koji koristi kapacitivni ulaz i LED: 4 koraka
Testirajte Bare Arduino, sa softverom za igre koji koristi kapacitivni ulaz i LED: " Push-It " Interaktivna igra koja koristi golu Arduino ploču, nisu potrebni vanjski dijelovi niti ožičenje (koristi kapacitivni ulaz na dodir). Gore prikazano, pokazuje da radi na dvije različite ploče. Pritisnite-Ima dvije svrhe. Za brzo demonstriranje/v
Kako napajati Gopro pomoću Lipo Balance utikača: 3 koraka
Kako napajati Gopro pomoću Lipo Balance utikača: Zdravo momci, ovaj put vam pokazujem kako koristiti balans utikač lipo baterije za napajanje USB uređaja. Obično se utikač za balansiranje koristi pri punjenju lipo baterije. Štiti isti napon na svim ćelijama. Ali s ovim hakiranjem možete ga koristiti kao snagu
Dugmad za bežični računar/dugmad za točkiće: 4 koraka (sa slikama)
Bežični džojstik za PC/dugmad za točkove: U posljednjih nekoliko godina pravio sam novu trkačku sim karticu i odlučio sam da idem sa volanom sa direktnim pogonom uradi sam. Iako bi sam taj projekt mogao imati nekoliko instrukcija za sebe, ovo je uputstvo o izradi svih tipki na t
DODAJTE kapacitivni dodirni prekidač na svoje projekte: 7 koraka
DODAJTE kapacitivni dodirni prekidač vašim projektima: Kako dodati kapacitivni dodirni prekidač svojim projektima kod kuće. Zdravo, prijatelji elektronički sami u ovom vodiču pokazat ću vam kako možete jeftino dodati kapacitivni dodirni prekidač svojim elektroničkim projektima i dati svoj projekt sam. profesionalni izgled
Kako lemiti dijelove kroz rupe: 7 koraka (sa slikama)
Kako lemiti dijelove kroz rupe: U ovom uputstvu ću vam pokazati kako lemiti dijelove rupa. Provest ću vas korak po korak kroz postupak, kao i dati vam nekoliko savjeta & trikovi koji bi trebali vaše vještine lemljenja podići na novu razinu. Ovaj vodič je