Sisällysluettelo:
- Vaihe 1: Laitteisto
- Vaihe 2: Ohjelmisto
- Vaihe 3: Tietoja ohjelmistosta
- Vaihe 4: "Tuleva projekti"
- Vaihe 5: Seuraavaksi: ESP32 NTP -lämpötila-anturin analoginen tulo Steinhart-Hart-korjauksella
Video: ESP32 -kapasitiivinen kosketussyöttö painikkeiden "metallisilla reiätulpilla": 5 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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"
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:
TV -kaukosäätimen painikkeiden korjaaminen: 5 vaihetta
TV -kaukosäätimen painikkeiden korjaaminen: Tietyt television kaukosäätimen painikkeet voivat kulua ajan myötä. Minun tapauksessani se oli kanava ylös ja kanava alas -painikkeet. Painikkeen pohjassa olevat koskettimet ovat todennäköisesti kuluneet. Näin korjasin omani
AVR -mikrokontrolleri. Vaihda LED -valoja painonapilla. Painikkeiden poistaminen käytöstä: 4 vaihetta
AVR -mikrokontrolleri. Vaihda LED -valoja painonapilla. Painikkeiden poistaminen käytöstä: Tässä osiossa opimme tekemään ohjelmointikoodin ATMega328PU: lle kolmen LED -valon tilan vaihtamiseksi painikekytkimen tulon mukaan. Olemme myös tutkineet ratkaisuja "Switch Bounce" -ongelmaan. Kuten yleensä, me
Arduinon valikko ja painikkeiden käyttö: 10 vaihetta (kuvilla)
Arduinon valikko ja painikkeiden käyttö: Arduino 101 -opetusohjelmassani sinulle opetetaan ympäristön asettamista Tinkercadissa. Käytän Tinkercadia, koska se on melko tehokas online -alusta, jonka avulla voin osoittaa erilaisia taitoja opiskelijoille piirien rakentamisessa. Voit vapaasti
Useiden painikkeiden yhdistäminen yhteen nastaan Arduinossa: 4 vaihetta
Useiden painikkeiden yhdistäminen yhteen nastaan Arduinossa: Hei kaikki! Näytän sinulle temppun, jota voit käyttää, jos sinulla voi olla useita painikkeita, jotka kaikki on kytketty samaan analogiseen nastaan
Älykästä musiikkia makuuhuoneessa ja kylpyammeessa Raspberry Pi: n avulla - Monihuone, hälytys, painikkeiden hallinta ja kotiautomaatio: 7 vaihetta
Älykästä musiikkia makuuhuoneessa ja kylpyammeessa Raspberry Pi: n avulla - Monihuoneen, hälytyksen, painikkeiden ohjauksen ja kodin automaation integrointi: Tänään haluamme antaa sinulle kaksi esimerkkiä siitä, kuinka voit käyttää Raspberry Pi: tä Max2Play -ohjelmistomme kanssa kodin automaatioon: kylpyhuoneessa ja makuuhuoneessa . Molemmat projektit ovat samankaltaisia, koska eri lähteistä peräisin olevaa korkealaatuista musiikkia voidaan suoratoistaa