Sisällysluettelo:

ESP32 -kapasitiivinen kosketussyöttö painikkeiden "metallisilla reiätulpilla": 5 vaihetta (kuvilla)
ESP32 -kapasitiivinen kosketussyöttö painikkeiden "metallisilla reiätulpilla": 5 vaihetta (kuvilla)

Video: ESP32 -kapasitiivinen kosketussyöttö painikkeiden "metallisilla reiätulpilla": 5 vaihetta (kuvilla)

Video: ESP32 -kapasitiivinen kosketussyöttö painikkeiden
Video: openHASP ESP32-2432s024c 2024, Heinäkuu
Anonim
Image
Image
Laitteisto
Laitteisto

Kun olin viimeistelemässä suunnittelupäätöksiä tulevaa ESP32 WiFi Kit 32 -pohjaista projektia varten, joka vaatii kolmen painikkeen syöttämisen, yksi havaittava ongelma oli, että WiFi -paketissa 32 ei ole yhtä mekaanista painiketta, mutta yksinään kolme mekaanista painiketta syöttöön. WiFi Kit 32 -laitteessa on kuitenkin runsaasti kapasitiivisia kosketustuloja, joten käytin jonkin aikaa laitteiston kokoamista, ohjelmiston kirjoittamista ja kolmen painikkeen tulomallin testaamista hyödyntäen ESP32 -kapasitiivista kosketustulotoimintoa ja kolmea 3/8 "" metallireikäpistoketta " painikkeita.

Kuten jokainen, joka on kokeillut ESP32 -kapasitiivisia kosketustuloja, on havainnut, että kosketustulot ovat varmasti riittävän meluisia vaatiakseen suodatuksen luotettavan tulon havaitsemiseksi. Tulevan projektin osien kokonaismäärän minimoimiseksi päätin, että yksinkertainen keskeytyskäyttöinen digitaalinen suodatin (enemmän "poistumista" kuin suodatin, mutta olen siirtymässä), toisin kuin ulkoisen suodatinlaitteiston lisääminen, voisi hiljentää meluisia tuloja. Ja testin jälkeen kävi selväksi, että ESP32 -kapasitiiviset tulot, kolme 3/8 "metallista reiätulppaa ja jotkut digitaaliset" suodatus "-ohjelmistot todella tarjoavat luotettavan kolmen painikkeen tulon suunnittelulle.

Joten jos olet kiinnostunut testaamaan kapasitiivista tuloa digitaalisella suodatuksella ESP32: lla, olen sisällyttänyt lähdekoodin "Buttons.ino" Arduino -ympäristömuodossa sekä asennus- ja ohjelmointiohjeet sekä lyhyt kuvaus lähdekoodista. Huomasin olevan erittäin luotettava kolmen painikkeen syöttö.

Ja kuten tavallista, olen todennäköisesti unohtanut tiedoston tai kaksi tai kuka tietää mitä muuta, joten jos sinulla on kysyttävää, älä epäröi kysyä, koska teen paljon virheitä.

Ja viimeinen huomautus, en saa mitään korvausta missään muodossa, mukaan lukien, mutta ei rajoittuen ilmaisiin näytteisiin, mistään tässä mallissa käytetyistä komponenteista

Vaihe 1: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Suunnittelussa käytetään seuraavia laitteita:

  • Yksi, WiFi Kit 32.
  • Kolme 3/8 "metallista reikää.
  • Kolme, 4 "pituista 28wg johtoa.

Laitteiston kokoamiseksi tein seuraavat vaiheet:

  • Irrotettu ja tinattu jokaisen 4 tuuman langan päät kuvan mukaisesti.
  • Juotettiin ensimmäinen johto ESP32: n nastaan 13 (tulo TOUCH4 tai "T4").
  • Juotettu toinen johto ESP32: n nastaan 12 (tulo TOUCH5 tai "T5").
  • Juotettiin kolmas johto ESP32: n nastaan 14 (TOUCH6- tai "T6" -tulo).
  • Juotettu yksi kolmesta 3/8 "metallireiätulpasta kolmen langan pituuden vapaisiin päihin.

Vaihe 2: Ohjelmisto

Ohjelmisto
Ohjelmisto

Tiedosto "Buttons.ino" on Arduino -ympäristötiedosto, joka sisältää suunnitteluohjelmiston. Tämän tiedoston lisäksi tarvitset WiFi Kit32 OLED -näytön "U8g2lib" -grafiikkakirjastoa (lisätietoja tästä kirjastosta on osoitteessa

Kun U8g2lib -grafiikkakirjasto on asennettu Arduino -hakemistoosi ja "Buttons.ino" on ladattu Arduino -ympäristöön, koota ja lataa ohjelmisto ESP32: een.

Kun lataus on suoritettu ja käynnissä, näytön ylärivillä pitäisi olla "Buttons" ja näytön toisella rivillä lukee "1 2 3" painikkeiden ilmaisimina. Kunkin 1, 2, 3 painikkeen osoittimen alapuolella on suodattamattomat kosketuslukema -arvot, ja kunkin alla on painikkeen painalluksen ilmaisimet ("1" painettuna, "0" ei painettuna). Kuten videosta näkyy (ja kun pitkän aikavälin testit vahvistetaan), ohjelmistosuodatin tarjoaa luotettavan painikkeentunnistuksen ilman väärää laukaisua.

Vaihe 3: Tietoja ohjelmistosta

Ohjelmisto sisältää kolme pääkoodiosaa; Arduino vaati osioita "setup ()" ja "loop ()" ja "keskeytyksiä". Setup () -osiossa on koodi, joka tarvitaan OLEDin alustamiseen ja palvelujen keskeyttämiseen. OLED -asetustoiminnot on kuvattu yllä olevassa linkissä. Palvelun keskeytystoiminnot ovat seuraavat:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" luo semaforin "InterruptService ()": lle (keskeytyspalvelurutiini) ilmoittamaan silmukalle (), kun on aika suorittaa silmukan kulku.
  • "timerInterruptService = timerBegin (0, 80, true)" luo ajastimen käyttäen laitteistoajastinta 0, jonka esiasteikko on 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" liittää InterruptService (): n ajastimeen.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" asettaa keskeytyspalvelunopeudeksi 1000 Hz.
  • "timerAlarmEnable (timerInterruptService)" käynnistää ajastinhälytyksen ja keskeyttää siten palvelun.

Kun asennus on valmis, silmukka () syötetään ja pysähtyy välittömästi riville:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), merkitys silmukka () odottaa tässä vaiheessa, kunnes InterfaService (): n semaforit saapuvat. Kun semafoori saapuu, silmukka () -koodi suoritetaan ja päivittää OLED -näytön painikkeilla ja palaa sitten alkuun odottamaan seuraavaa semaforia. Kun InterruptService () on käynnissä 1000 Hz: n taajuudella ja LOOP_DELAY -arvo on 30, loop () suoritetaan 30 ms: n välein tai näytön päivitysnopeudella 33,333 Hz. Vaikka tämä näytön virkistystaajuus on korkeampi kuin useimmissa ESP32 -sovelluksissa vaaditaan, käytin tätä asetusta havainnollistamaan suodattimen reagointikykyä. Tein testin ja määritin, että yksittäisen silmukan () kulun suorittamiseen tarvittava aika on 20 ms.

InterruptService () kutsutaan asetuksella () luodulla ajastimella nopeudella 1000 Hz. Kun sitä kutsutaan, se päivittää kaksi alaslaskuria, nLoopDelay ja nButtonDelay. Kun nLoopDelay lasketaan alas nollaan, se lähettää semaforin sallivan silmukan () suorittaa yhden passin ja nollaa sitten nLoopDelay. Kun nButtonDelay lasketaan alas nollaan, myös se nollataan ja painike "suodattimet" suoritetaan.

Jokaisella painikesuodattimella on ainutlaatuinen suodatinlaskuri (esim. NButton1Count, nButton2Count ja nButton3Count). Niin kauan kuin painikkeelle määritetty kosketustulon arvo on suurempi tai yhtä suuri kuin määritetty kynnysarvo (BUTTON_THRESHHOLD), painikkeelle ja painikkeelle määritetty suodatinlaskuri pysyy nollassa. Jos painikkeelle määritetty kosketustulon arvo on pienempi kuin määritetty kynnys, painikkeelle määritettyä suodatinlaskuria lisätään yhdellä 20 ms: n välein. Kun suodatinlaskuri ylittää painikesuodattimen arvon (BUTTON_FILTER), painiketta pidetään "painettuna". Tämän menetelmän seurauksena luodaan suodatin, joka vaatii 80 ms (20 ms nButtonDelay * 4ms nButtonCountN jossa N on painikkeen numero) jatkuvan kosketuksen syöttöarvot määritetyn kynnyksen alapuolella, jotta painike voidaan todella painaa. Aina kun alle 80 ms katsotaan "häiriöksi" ja suodatin hylkää sen.

Tämän lyhyen kuvauksen perusteella, jos sinulla on kysyttävää, kysy rohkeasti, ja yritän parhaani mukaan vastata niihin.

Toivottavasti nautit siitä!

Vaihe 4: "Tuleva projekti"

The
The

Tuleva projekti "Intelligrill® Pro" on kaksoislämpötila -anturinen tupakointimonitori, jossa on:

  • Steinhart-Hart-lämpötila-anturin laskelmat (toisin kuin "hakutaulukot") tarkkuuden lisäämiseksi.
  • Ennakoiva aika mittauksen 1 loppuun saattamiseen, joka sisältää Steinhart-Hart-laskelmista saadun paremman tarkkuuden.
  • Toinen anturi, anturi 2, tupakoitsijan lämpötilan seuraamiseen (rajoitettu 32-399 asteeseen).
  • Kapasitiiviset kosketustulon ohjaimet (kuten tässä oppaassa).
  • WIFI -pohjainen etävalvonta (kiinteällä IP -osoitteella mahdollistaa tupakoitsijan edistymisen seurannan missä tahansa Internet -yhteys).
  • Laajennettu lämpötila -alue (jälleen 32-399 astetta).
  • Äänimerkintähälytykset sekä Intelligrill® -lähettimessä että useimmissa WiFi -yhteensopivissa valvontalaitteissa.
  • Lämpötilanäyttö joko F tai C asteina.
  • Aikaformaatti joko HH: MM: SS tai HH: MM.
  • Akun näyttö joko voltteina tai % ladattuna.
  • Ja pian tulossa PID -lähtö ruuvipohjaisille tupakoitsijoille.

"Intelligrill® Pro" testaa olevansa tarkin, ominaisuuksin pakattu ja luotettavin HTML -pohjainen Intelligrill®, jonka olen suunnitellut.

Se on vielä testissä, mutta aterioiden kanssa, joita se auttaa valmistamaan testauksen aikana, olen saanut enemmän kuin muutaman kilon.

Jälleen toivon, että pidät siitä!

Vaihe 5: Seuraavaksi: ESP32 NTP -lämpötila-anturin analoginen tulo Steinhart-Hart-korjauksella

Valmistaudu pyyhkimään algebrakirjasi tästä.

Suositeltava: