Turinys:

ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: 5 žingsniai (su paveikslėliais)
ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: 5 žingsniai (su paveikslėliais)

Video: ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: 5 žingsniai (su paveikslėliais)

Video: ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: 5 žingsniai (su paveikslėliais)
Video: How to user Makerfabs ESP32 3.5" TFT Capacitive Touch with Camera 2024, Liepa
Anonim
Image
Image
Techninė įranga
Techninė įranga

Kai baigiau rengti būsimo ESP32 „WiFi Kit 32“projekto, kuriam reikalingas trijų mygtukų įvestis, dizaino sprendimus, viena pastebima problema buvo ta, kad „WiFi Kit 32“nėra vieno mechaninio mygtuko, bet tik trijų mechaninių įvesties mygtukų. Tačiau „WiFi Kit 32“turi daug talpinių įvesties įėjimų, todėl aš šiek tiek laiko surinkau aparatūrą, rašiau programinę įrangą ir išbandžiau trijų mygtukų įvesties dizainą, naudodamas ESP32 talpinio jutiklinio įvesties funkciją ir tris 3/8 colių „metalinių skylių kištukus“. mygtukus.

Kaip pastebėjo visi, kurie eksperimentavo su ESP32 talpinėmis jutiklinėmis įvestimis, jutiklinės įvestys tikrai yra pakankamai triukšmingos, todėl jas reikia filtruoti, kad būtų galima patikimai įvesti įvestį. Norėdami sumažinti bendrą būsimo projekto dalių skaičių, nusprendžiau, kad paprastas pertraukimo varomas skaitmeninis filtras (labiau „atmušimas“nei filtras, bet aš nukrypstu), o ne išorinės filtro aparatūros pridėjimas, gali nutildyti triukšmingus įėjimus. Ir po bandymų paaiškėjo, kad ESP32 talpiniai įėjimai, trys 3/8 "metaliniai skylių kištukai ir tam tikra skaitmeninė" filtravimo "programinė įranga iš tikrųjų užtikrins patikimą trijų mygtukų įvestį.

Taigi, jei jus domina išbandyti talpinį įvestį su skaitmeniniu filtravimu naudojant ESP32, aš įtraukiau šaltinio kodą „Buttons.ino“į „Arduino“aplinkos formatą kartu su surinkimo ir programavimo instrukcijomis bei trumpu šaltinio kodo aprašymu. Aš atradau labai patikimą trijų mygtukų įvestį.

Ir kaip įprasta, aš tikriausiai pamiršau vieną ar du failus arba kas dar žino, todėl jei turite klausimų, nedvejodami klauskite, nes aš darau daug klaidų.

Ir paskutinė pastaba: aš negaunu jokios formos kompensacijos, įskaitant, bet neapsiribojant nemokamais pavyzdžiais, už bet kokius šio dizaino komponentus

1 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Projektuojant naudojama ši aparatinė įranga:

  • Vienas, „WiFi“rinkinys 32.
  • Trys 3/8 colių metaliniai kištukai.
  • Trys, 4 colių ilgio 28awg viela.

Norėdami surinkti aparatūrą, atlikiau šiuos veiksmus:

  • Nuplėšti ir alavuoti kiekvieno 4 colių vielos ilgio galai, kaip parodyta.
  • Lituotas pirmasis laidas prie ESP32 13 kaiščio (įvestis TOUCH4 arba „T4“).
  • Antrasis laidas buvo lituojamas prie ESP32 12 kaiščio (įvestis TOUCH5 arba „T5“).
  • Trečiasis laidas buvo lituojamas prie ESP32 14 kaiščio (įvesties TOUCH6 arba „T6“).
  • Lituokite po vieną iš trijų 3/8 colių metalinių skylių kištukų prie laisvų trijų laidų galų.

2 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Failas „Buttons.ino“yra „Arduino“aplinkos failas, kuriame yra dizaino programinė įranga. Be šio failo, jums reikės „U8g2lib“grafikos bibliotekos, skirtos „WiFi Kit32 OLED“ekranui (daugiau informacijos apie šią biblioteką rasite

Kai „Arduino“kataloge įdiegta grafikos biblioteka „U8g2lib“, o „Buttons.ino“įkelta į „Arduino“aplinką, sukompiliuokite ir atsisiųskite programinę įrangą į ESP32.

Atsisiuntus ir paleidus, viršutinėje ekrano eilutėje turėtų būti užrašas „Mygtukai“, o antrojoje ekrano eilutėje - „1 2 3“. Po kiekvienu 1, 2, 3 mygtuko indikatoriumi yra nefiltruotos jutiklinio nuskaitymo vertės, o po kiekvienu iš jų yra mygtukų paspaudimo indikatoriai („1“- paspaudus, „0“- nepaspaudus). Kaip matyti iš vaizdo įrašo (ir patvirtintas ilgalaikis bandymas), programinės įrangos filtras užtikrina patikimą mygtukų įvesties aptikimą be klaidingo suveikimo.

3 žingsnis: Apie programinę įrangą

Programinėje įrangoje yra trys pagrindiniai kodo skyriai; „Arduino“reikėjo skyrių „setup ()“ir „loop ()“bei skyrių „Interrupts“. Sąrankos () skyriuje yra kodas, būtinas OLED inicijuoti ir paslaugoms nutraukti. OLED sąrankos funkcijos aprašytos aukščiau esančioje nuorodoje. Nutraukimo paslaugos sąrankos funkcijos yra šios:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" sukuria semaforą "InterruptService ()" (pertraukimo paslaugos rutina), kad informuotų ciklą (), kai atėjo laikas įvykdyti ciklo perdavimą.
  • "timerInterruptService = timerBegin (0, 80, true)" sukuria laikmatį, naudojant aparatūros laikmatį 0, kurio skalė yra 80.
  • „timerAttachInterrupt (timerInterruptService, & InterruptService, true)“prideda „InterruptService“() prie laikmačio.
  • „timerAlarmWrite (timerInterruptService, 1000, true)“nustato pertraukimo paslaugų dažnį iki 1000 Hz.
  • „timerAlarmEnable (timerInterruptService)“paleidžia laikmačio aliarmą ir taip nutraukia paslaugą.

Kai sąranka baigta, įvedama kilpa () ir iškart sustoja ties eilute:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), reikšmė kilpa () šiuo metu lauks, kol atvyks semaforas iš „InterruptService“(). Kai atvyksta semaforas, vykdomas ciklo () kodas, atnaujinamas OLED ekranas mygtuko duomenimis, tada grįžtama į viršų ir vėl laukiama kito semaforo. Kai „InterruptService“() veikia 1000 hz, o „LOOP_DELAY“vertė yra 30, „loop“() vykdoma kas 30 ms arba ekrano atnaujinimo dažnis yra 33,3333 Hz. Nors tai yra didesnis ekrano atnaujinimo dažnis, nei reikalaujama daugumai ESP32 programų, aš naudoju šį nustatymą, norėdamas iliustruoti filtro jautrumą. Aš išbandžiau ir nustatiau, kad laikas, reikalingas vienos kilpos () praėjimui įvykdyti, yra 20 ms.

„InterruptService“() iškviečia sąrankoje () sukurtas laikmatis 1000 Hz dažniu. Kai iškviečiamas, jis atnaujina du žemyn esančius skaitiklius - „nLoopDelay“ir „nButtonDelay“. Kai „nLoopDelay“yra skaičiuojamas iki nulio, jis siunčia semaforą, leidžiantį ciklui () vykdyti vieną leidimą, o tada iš naujo nustato „nLoopDelay“. Kai „nButtonDelay“yra skaičiuojamas iki nulio, jis taip pat iš naujo nustatomas, tada vykdomas mygtukas „filtrai“.

Kiekvienas mygtukų filtras turi unikalų filtrų skaitiklį (pvz., „NButton1Count“, „nButton2Count“ir „nButton3Count“). Kol mygtukui priskirtos jutiklinės įvesties vertės yra didesnės arba lygios apibrėžtai ribinei vertei (BUTTON_THRESHHOLD), mygtukui priskirtas filtro skaitiklis ir mygtukas lieka nulis. Jei mygtukui priskirtas jutiklinis įvesties dydis yra mažesnis už nustatytą slenkstį, mygtukui priskirtas filtro skaitiklis padidinamas vienu kas 20 ms. Kai filtro skaitiklis viršija mygtuko filtro vertę (BUTTON_FILTER), mygtukas laikomas „paspaustu“. Šio metodo rezultatas yra sukurti filtrą, kuriam reikia 80 ms (20 ms nButtonDelay * 4ms nButtonCountN, kur N yra mygtukų skaičius) nuolatinės jutiklinės įvesties vertės žemiau nustatytos ribos, kad būtų galima atsižvelgti į iš tikrųjų paspaustą mygtuką. Bet koks trumpesnis nei 80 ms laikas laikomas „gedimu“ir filtras jį atmeta.

Atsižvelgiant į šį trumpą aprašymą, jei turite kokių nors klausimų, nedvejodami klauskite ir aš padarysiu viską, kad į juos atsakyčiau.

Tikimės, kad patiko!

4 žingsnis: „Būsimas projektas“

The
The

Būsimas projektas „Intelligrill® Pro“yra dvigubos temperatūros zondo rūkalių monitorius, kuriame yra:

  • Steinhart-Hart temperatūros zondo skaičiavimai (priešingai nei „paieškos“lentelės), siekiant didesnio tikslumo.
  • Numatomas laikas iki 1 zondo užbaigimo, įskaitant didesnį tikslumą, gautą iš Steinhart-Hart skaičiavimų.
  • Antrasis zondas, 2 zondas, skirtas rūkančiojo temperatūrai stebėti (ribojama iki 32–399 laipsnių).
  • Talpūs jutiklinio įvesties valdikliai (kaip šioje instrukcijoje).
  • WIFI pagrįstas nuotolinis stebėjimas (su fiksuotu IP adresu leidžia stebėti rūkančiojo pažangą iš bet kur, kur yra interneto ryšys).
  • Išplėstas temperatūros diapazonas (vėl nuo 32 iki 399 laipsnių).
  • Garsiniai užbaigimo aliarmai tiek „Intelligrill®“siųstuve, tiek daugumoje „Wi -Fi“palaikančių stebėjimo įrenginių.
  • Temperatūra rodoma F arba C laipsniais.
  • Laiko formatas HH: MM: SS arba HH: MM.
  • Baterijos ekranas įkrautas voltais arba %.
  • Netrukus pasirodys PID išvestis sraigtiniams rūkaliams.

„Intelligrill® Pro“bando tapti tiksliausiu, funkcijomis supakuotu ir patikimiausiu mano sukurtu HTML pagrindu sukurtu „Intelligrill®“.

Tai vis dar bandoma, tačiau su maistu, kurį padeda paruošti bandymų metu, priaugau daugiau nei kelis kilogramus.

Dar kartą tikiuosi, kad jums patiks!

5 veiksmas: Kitas: ESP32 NTP temperatūros zondo analoginis įėjimas su Steinhart-Hart korekcija

Būkite pasirengę dulkėms nuo savo algebros knygų.

Rekomenduojamas: