Sisukord:

ESP32 mahtuvuslik puutetundlik sisend nuppude metallist augukorkide abil: 5 sammu (piltidega)
ESP32 mahtuvuslik puutetundlik sisend nuppude metallist augukorkide abil: 5 sammu (piltidega)

Video: ESP32 mahtuvuslik puutetundlik sisend nuppude metallist augukorkide abil: 5 sammu (piltidega)

Video: ESP32 mahtuvuslik puutetundlik sisend nuppude metallist augukorkide abil: 5 sammu (piltidega)
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, Detsember
Anonim
Image
Image
Riistvara
Riistvara

Kui olin viimistlemas eelseisva ESP32 WiFi Kit 32 -põhise projekti projekteerimisotsuseid, mis nõudsid kolme nupu sisestamist, oli üks märgatav probleem see, et WiFi -komplektil 32 ei ole sisendiks ühtki mehaanilist nuppu, kuid üksi kolme mehaanilist nuppu. WiFi -komplektil 32 on aga palju mahtuvuslikke puutetundlikke sisendeid, nii et veetsin mõnda aega riistvara kokkupanekul, tarkvara kirjutamisel ja kolme nupuga sisendkonstruktsiooni testimisel, kasutades ESP32 mahtuvuslikku puutetundlikku sisendfunktsiooni ja kolme 3/8 "" metallist aukudega pistikut " nuppe.

Nagu igaüks, kes on katsetanud ESP32 mahtuvuslikke puutetundlikke sisendeid, on avastanud, et puutetundlikud sisendid on kindlasti piisavalt mürarikkad, et sisendi usaldusväärseks tuvastamiseks oleks vaja filtreerida. Eelseisva projekti osade koguarvu minimeerimiseks otsustasin, et lihtne katkestusega juhitav digitaalne filter (pigem "tagasilöök" kui filter, kuid ma kõrvale kaldun) võib vastupidiselt välise filtri riistvara lisamisele vaigistada mürarikkaid sisendeid. Ja pärast katsetamist selgus, et ESP32 mahtuvuslikud sisendid, kolm 3/8 "metallist aukudega pistikut ja mõni digitaalne" filtreerimistarkvara "pakuvad disainile tõepoolest usaldusväärset kolme nupuga sisendit.

Nii et kui olete huvitatud mahtuvusliku sisendi testimisest digitaalse filtreerimisega ESP32 -l, olen lisanud lähtekoodi "Buttons.ino" Arduino keskkonnavormingus koos kokkupaneku- ja programmeerimisjuhistega ning lähtekoodi lühikirjelduse. avastasin, et see on väga usaldusväärne kolme nupuga sisend.

Ja nagu tavaliselt, unustasin tõenäoliselt faili või kaks või kes teab veel midagi, nii et kui teil on küsimusi, ärge kartke küsida, sest ma teen palju vigu.

Ja viimane märkus: ma ei saa mingis vormis, sealhulgas, kuid mitte ainult, tasuta näidiseid, hüvitist ühegi selles disainis kasutatud komponendi eest

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara

Disain kasutab järgmist riistvara:

  • Üks, WiFi komplekt 32.
  • Kolm 3/8 tolli metallist aukudega pistikut.
  • Kolm, 4 "pikkust 28awg traati.

Riistvara kokkupanekuks tegin järgmised sammud:

  • Iga 4 -tollise traadi otsad eemaldati ja konserveeriti, nagu näidatud.
  • Jooteti esimene juhe ESP32 tihvti 13 külge (sisend TOUCH4 või "T4").
  • Teine juhe joodeti ESP32 tihvti 12 külge (sisend TOUCH5 või "T5").
  • Kolmas juhe joodeti ESP32 tihvti 14 külge (sisend TOUCH6 või "T6").
  • Joodeti üks kolmest 3/8 tolli metallist augukorkidest kolme juhtme pikkuse vabade otste külge.

Samm 2: Tarkvara

Tarkvara
Tarkvara

Fail "Buttons.ino" on Arduino keskkonnafail, mis sisaldab disaini tarkvara. Lisaks sellele failile vajate WiFi Kit32 OLED -ekraani jaoks graafikakogu "U8g2lib" (selle teegi kohta lisateabe saamiseks vt

Kui teie Arduino kataloogi on installitud graafikakogu U8g2lib ja "Buttons.ino" on Arduino keskkonda laaditud, kompileerige ja laadige tarkvara alla ESP32 -sse.

Pärast allalaadimist ja käivitamist peaks ekraani ülemine rida lugema "Nupud" ja ekraani teine rida "1 2 3". Iga 1, 2, 3 nupunäidiku all on filtreerimata puutetundliku lugemise väärtused ja nende all on nupuvajutuse näidikud ("1" vajutatud, "0" vajutamata). Nagu videost näha (ja kui pikaajaline testimine on kinnitatud), pakub tarkvarafilter usaldusväärset nupuvajutuse tuvastamist ilma vale käivitamiseta.

3. samm. Teave tarkvara kohta

Tarkvara sisaldab kolme peamist koodiosa; Arduino nõudis jaotisi "setup ()" ja "loop ()" ning sektsiooni "Katkestused". Jaotis setup () sisaldab koodi, mis on vajalik OLED -i initsialiseerimiseks ja teenuste katkestamiseks. OLED -i seadistusfunktsioone kirjeldatakse ülaltoodud lingil. Teenuse katkestamise seadistusfunktsioonid on järgmised.

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" loob "InterruptService ()" (katkestusteenuse rutiin) jaoks semafoori, et teavitada tsüklit (), millal on aeg tsükli edastamiseks.
  • "timerInterruptService = timerBegin (0, 80, true)" loob taimeri, kasutades riistvara taimerit 0, eelseadistusega 80.
  • "timerAttachInterrupt (timerInterruptService ja & InterruptService, true)" lisab taimerile InterruptService ().
  • "timerAlarmWrite (timerInterruptService, 1000, true)" määrab katkestusteenuse sageduseks 1000 Hz.
  • "timerAlarmEnable (timerInterruptService)" käivitab taimeri alarmi ja katkestab seega teenuse.

Kui seadistamine on lõpule viidud, sisestatakse silmus () ja peatub kohe reas:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), tähendab silmus () ootab sel hetkel, kuni saabub interfaasiteenuse () semafoor. Semafoori saabudes käivitatakse silmuse () kood, värskendades OLED -ekraani nupuandmetega, seejärel naastes tippu ja oodates uuesti järgmist semaforit. Kui InterruptService () töötab 1000 hz ja LOOP_DELAY väärtus 30, käivitatakse loop () iga 30 ms järel või ekraani värskendamise kiirusega 33,333 Hz. Kuigi see on ekraani värskendussagedus suurem kui enamiku ESP32 rakenduste puhul nõutud, kasutasin seda seadet filtri reageerimisvõime illustreerimiseks. Tegin testi ja määrasin ühe silmuse () läbimise jaoks vajaliku aja 20 ms.

InterruptService () kutsub üles seadistuses () loodud taimer kiirusega 1000 Hz. Kui seda kutsutakse, värskendab see kahte aluloendurit, nLoopDelay ja nButtonDelay. Kui nLoopDelay loendatakse nullini, saadab see semafoori, mis võimaldab silmusel () täita ühe korra, seejärel lähtestab nLoopDelay. Kui nButtonDelay loendatakse nullini, lähtestatakse ka see ja seejärel käivitatakse nupp "filtrid".

Igal nupufiltril on ainulaadne filtriloendur (nt nButton1Count, nButton2Count ja nButton3Count). Niikaua kui nupule määratud puutesisendi väärtus on suurem või võrdne määratletud läviväärtusega (BUTTON_THRESHHOLD), jäävad nupule ja nupule määratud filtri loendur nulli. Kui nupule määratud puutesisendi väärtus on väiksem kui määratud lävi, suurendatakse nupule määratud filtri loendurit iga 20 ms järel ühe võrra. Kui filtri loendur ületab nupu filtri väärtuse (BUTTON_FILTER), loetakse nuppu "vajutatuks". Selle meetodi tulemuseks on filtri loomine, mis nõuab 80 ms (20 ms nButtonDelay * 4ms nButtonCountN kus N on nupu number) pidevaid puute sisendväärtusi alla määratletud läve, et arvestada nupu tegelikku vajutamist. Vähem kui 80 ms loetakse veaks ja filter lükkab selle tagasi.

Arvestades seda lühikest kirjeldust, küsige julgelt, kui teil on küsimusi, ja ma annan endast parima, et neile vastata.

Loodan, et teile meeldis!

4. samm: tulevane projekt

The
The

Tulevane projekt "Intelligrill® Pro" on kahe temperatuuriga sondi suitsetajamonitor, mis sisaldab:

  • Steinhart-Harti temperatuurianduri arvutused (erinevalt "otsingu" tabelitest) suurema täpsuse saavutamiseks.
  • Prognoositav aeg lõpuleviimiseni sondil 1, mis sisaldab Steinhart-Harti arvutustest saadud täpsust.
  • Teine sond, sond 2, suitsetaja temperatuuri jälgimiseks (piiratud 32 kuni 399 kraadi).
  • Mahtuvuslikud puutesisendi juhtnupud (nagu käesolevas juhendis).
  • WIFI -põhine kaugjälgimine (fikseeritud IP -aadressiga võimaldab jälgida suitsetaja arengut kõikjal, kus Interneti -ühendus on saadaval).
  • Laiendatud temperatuurivahemik (jällegi 32–399 kraadi).
  • Helisignaalid lõpetamiseks nii Intelligrill® saatjas kui ka enamikus WiFi -toega jälgimisseadmetes.
  • Temperatuuri näidik kas F või C kraadides.
  • Ajavorming kas HH: MM: SS või HH: MM.
  • Aku kuva kas voltides või % laetud.
  • Ja varsti saabub PID väljund tigupõhistele suitsetajatele.

"Intelligrill® Pro" testib, et saada kõige täpsemaks, funktsionaalsemaks ja usaldusväärsemaks HTML -põhiseks Intelligrill®iks, mille olen välja töötanud.

See on veel testimisel, kuid söögikordadega, mida see testimise ajal aitab valmistada, olen juurde võtnud paar kilo.

Jällegi, loodan, et naudite!

5. samm: järgmine ülesanne: ESP32 NTP temperatuurisondi analoogsisend koos Steinhart-Harti korrektsiooniga

Olge selleks valmis oma algebraraamatute tolmust eemaldamiseks.

Soovitan: