Përmbajtje:

ESP32 Hyrja me prekje me kapacitet duke përdorur "Priza metalike të vrimave" për butona: 5 hapa (me fotografi)
ESP32 Hyrja me prekje me kapacitet duke përdorur "Priza metalike të vrimave" për butona: 5 hapa (me fotografi)

Video: ESP32 Hyrja me prekje me kapacitet duke përdorur "Priza metalike të vrimave" për butona: 5 hapa (me fotografi)

Video: ESP32 Hyrja me prekje me kapacitet duke përdorur
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Nëntor
Anonim
Image
Image
Hardware
Hardware

Ndërsa po përfundoja vendimet e projektimit për një projekt të ardhshëm të bazuar në ESP32 WiFi Kit 32 që kërkon tre hyrje të butonave, një problem i dukshëm ishte se WiFi Kit 32 nuk posedon një buton të vetëm mekanik, por vetëm tre butona mekanikë, për hyrje. Sidoqoftë, WiFi Kit 32 ka shumë hyrje prekëse kapacitore, kështu që kalova ca kohë duke montuar pajisje, duke shkruar softuer dhe duke testuar një dizajn të hyrjes me tre butona duke përdorur veçorinë hyrëse me prekje ESP32 dhe tre priza vrima metalike 3/8 "" butona.

Siç ka zbuluar çdokush që ka eksperimentuar me hyrjet kapacitore të prekjes ESP32, hyrjet e prekjes janë sigurisht mjaft të zhurmshme për të kërkuar filtrim për zbulimin e besueshëm të hyrjeve. Për të minimizuar numrin e përgjithshëm të pjesëve për projektin e ardhshëm, përcaktova se një filtër i thjeshtë dixhital i ndërprerë (më shumë një "debounce" sesa një filtër, por unë tërhiqem), në krahasim me shtimin e pajisjeve të jashtme të filtrit, mund të qetësojë hyrjet e zhurmshme Me Dhe pas testimit, u bë e qartë se hyrjet kapacitive ESP32, tre priza vrima metalike 3/8 "dhe disa programe dixhitale" filtruese ", do të siguronin vërtet një input të besueshëm me tre butona për dizajnin.

Pra, nëse jeni të interesuar të testoni hyrjen kapacitore me filtrim dixhital në një ESP32, kam përfshirë kodin burimor "Buttons.ino" në formatin e mjedisit Arduino së bashku me udhëzimet e montimit dhe programimit, plus një përshkrim të shkurtër të kodit burimor, për ajo që zbulova të ishte një hyrje me tre butona shumë e besueshme.

Dhe si zakonisht, ndoshta kam harruar një ose dy skedarë ose kush e di çfarë tjetër, kështu që nëse keni ndonjë pyetje, ju lutem mos hezitoni të pyesni pasi unë bëj shumë gabime.

Dhe një shënim i fundit, unë nuk marr asnjë kompensim në asnjë formë, përfshirë por pa u kufizuar në mostra falas, për asnjë nga përbërësit e përdorur në këtë dizajn

Hapi 1: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Dizajni përdor pajisjet e mëposhtme:

  • Një, WiFi Kit 32.
  • Tre priza vrima metalike 3/8 ".
  • Tre, 4 "gjatësi prej teli 28awg.

Për të mbledhur harduerin, kam kryer hapat e mëposhtëm:

  • Zhvesh dhe kallaji skajet e secilës gjatësi teli 4 "siç tregohet.
  • Bashkoi tela e parë në kunjin 13 të ESP32 (hyrja TOUCH4, ose "T4").
  • Bashkoi tela e dytë në kunjin 12 të ESP32 (hyrja TOUCH5, ose "T5").
  • Bashkoi tela e tretë në kunjin 14 të ESP32 (hyrja TOUCH6, ose "T6").
  • Lidhni një nga secilën prej tre prizave vrima metalike 3/8 "në skajet e lira të tre gjatësive të telit.

Hapi 2: Softueri

Softuer
Softuer

Skedari "Buttons.ino" është një skedar i mjedisit Arduino që përmban softuerin për dizajnin. Përveç këtij skedari, do t'ju duhet biblioteka grafike "U8g2lib" për ekranin WiFi Kit32 OLED (shikoni https://github.com/olikraus/u8g2/wiki për më shumë informacion mbi këtë bibliotekë).

Me bibliotekën grafike U8g2lib të instaluar në drejtorinë tuaj Arduino dhe "Buttons.ino" të ngarkuar në mjedisin Arduino, përpiloni dhe shkarkoni programin në ESP32.

Pasi të shkarkohet dhe të funksionojë, rreshti i lartë i ekranit duhet të lexojë "Buttons" me rreshtin e dytë të ekranit që lexon "1 2 3" si tregues të butonave. Poshtë secilit prej treguesve të butonit 1, 2, 3 janë vlerat e pafiltruara të leximit të prekjes, dhe më poshtë secilit prej tyre janë treguesit e shtypjes së butonit ("1" për të shtypur, "0" për jo të shtypur). Siç mund të shihet në video (dhe testimi afatgjatë i konfirmuar), filtri i softuerit siguron zbulimin e besueshëm të hyrjes së butonit pa ndezje të rreme.

Hapi 3: Rreth Softuerit

Softueri përmban tre seksione kryesore të kodit; Arduino kërkoi seksionet "setup ()" dhe "loop ()" dhe një seksion "Ndërpret". Seksioni setup () përmban kodin e nevojshëm për të inicializuar OLED dhe ndërprerë shërbimet. Funksionet e konfigurimit OLED janë përshkruar në lidhjen e mësipërme. Funksionet e konfigurimit të shërbimit të ndërprerjes janë si më poshtë:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" krijon një semafor për "InterruptService ()" (rutina e shërbimit të ndërprerjes) për të informuar lakin () kur është koha për të ekzekutuar një kalim loop.
  • "timerInterruptService = timerBegin (0, 80, e vërtetë)" krijon një kohëmatës duke përdorur kohëmatës hardueri 0 me një shkallë të paracaktuar prej 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" i bashkon kohëmatësit InterruptService ().
  • "timerAlarmWrite (timerInterruptService, 1000, true)" e vendos normën e shërbimit të ndërprerjes në 1000hz.
  • "timerAlarmEnable (timerInterruptService)" fillon alarmin e kohëmatësit dhe kështu ndërpret shërbimin.

Me konfigurimin e plotë, loop () futet dhe ndalon menjëherë në rresht:

nëse (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), kuptimi loop () do të presë në këtë pikë derisa të arrijë semafori nga InterruptService (). Kur të arrijë semafori, kodi i lakut () ekzekutohet, duke azhurnuar ekranin OLED me të dhënat e butonit, pastaj duke u kthyer në krye për të pritur përsëri semaforin tjetër. Me InterruptService () që funksionon në 1000hz dhe një vlerë LOOP_DELAY prej 30, loop () ekzekutohet çdo 30ms, ose me një normë të azhurnimit të ekranit prej 33.333hz. Ndërsa kjo është një normë më e lartë e rifreskimit të ekranit sesa kërkohet për shumicën e aplikacioneve ESP32, unë e përdor këtë cilësim për të ilustruar reagueshmërinë e filtrit. Unë testova dhe përcaktova se koha e kërkuar për të ekzekutuar një kalim të vetëm të lakut () ishte 20ms.

InterruptService () thirret nga kohëmatësi i krijuar në konfigurim () me një shpejtësi prej 1000hz. Kur thirret, përditëson dy sportele poshtë, nLoopDelay dhe nButtonDelay. Kur nLoopDelay numërohet poshtë në zero, ai dërgon semaforin që lejon lakin () të ekzekutojë një kalim të vetëm pastaj rivendos nLoopDelay. Kur nButtonDelay numërohet poshtë në zero, ajo gjithashtu rivendoset pastaj butoni "filtron" ekzekutohet.

Çdo filtër butoni ka një numërues filtri unik (p.sh. nButton1Count, nButton2Count dhe nButton3Count). Përderisa vlera e hyrjes së prekjes e caktuar për butonin është më e madhe ose e barabartë me vlerën e përcaktuar të pragut (BUTTON_THRESHHOLD), numëruesi i filtrit i caktuar butonit dhe butonit mbetet zero. Nëse vlera e hyrjes së prekjes e caktuar për butonin është më e vogël se pragu i përcaktuar, numëruesi i filtrit i caktuar butonit rritet me një në çdo 20ms. Kur numëruesi i filtrit tejkalon vlerën e filtrit të butonit (BUTTON_FILTER), butoni konsiderohet "i shtypur". Efekti i kësaj metode është krijimi i një filtri që kërkon 80ms (20ms nButtonDelay * 4ms nButtonCountN ku N është numri i butonit) të vlerave të vazhdueshme të hyrjes së prekjes nën pragun e përcaktuar për të marrë parasysh butonin e shtypur në të vërtetë. Çdo herë më pak se 80ms konsiderohet një "defekt" dhe refuzohet nga filtri.

Duke pasur parasysh këtë përshkrim të shkurtër, nëse keni ndonjë pyetje, ju lutem mos ngurroni të pyesni dhe unë do të bëj çmos për t'iu përgjigjur atyre.

Shpresoj se ju ka pelqyer!

Hapi 4: "Projekti i ardhshëm"

E
E

Projekti i ardhshëm, "Intelligrill® Pro", është një monitor i duhanit i sondës së temperaturës që përmban:

  • Llogaritjet e sondës së temperaturës Steinhart-Hart (në krahasim me tabelat e "shikimit") për rritjen e saktësisë.
  • Koha parashikuese për përfundimin e sondës 1 duke përfshirë saktësinë e shtuar që rrjedh nga llogaritjet e Steinhart-Hart.
  • Një sondë e dytë, sonda 2, për monitorimin e temperaturës së duhanpirësve (e kufizuar në 32 deri në 399 gradë).
  • Kontrollet kapacitive të hyrjes me prekje (si në këtë Udhëzues).
  • Monitorimi në distancë i bazuar në WIFI (me një adresë IP fikse, mundëson monitorimin e përparimit të duhanpirësve nga kudo që të ketë një lidhje interneti).
  • Gama e zgjatur e temperaturës (përsëri nga 32 në 399 gradë).
  • Alarmet e përfundimit të dëgjueshëm si brenda transmetuesit Intelligrill® ashtu edhe në shumicën e pajisjeve monitoruese të afta për WiFi.
  • Shfaqja e temperaturës ose në gradë F ose gradë C.
  • Formati i kohës në HH: MM: SS ose HH: MM.
  • Ekrani i baterisë në volt ose % të ngarkuar.
  • Dhe së shpejti, prodhimi PID për duhanpirësit me bazë auger.

"Intelligrill® Pro" është duke u testuar për t'u bërë më i sakti, i mbushur me veçori dhe i besueshëm në HTML i bazuar në Intelligrill® që kam projektuar.

Stillshtë ende në provë, por me ushqimet që po ndihmon për të përgatitur gjatë testimit, kam shtuar më shumë se disa kilogramë.

Përsëri, shpresoj që ta shijoni!

Hapi 5: Tjetra: ESP32 NTP Temperatura e sondës së hyrjes analoge me korrigjim Steinhart-Hart

Jini të përgatitur të pastroni librat tuaj të algjebrës për këtë.

Recommended: