Përmbajtje:
- Hapi 1: Pajisje kompjuterike
- Hapi 2: Softueri
- Hapi 3: Rreth Softuerit
- Hapi 4: "Projekti i ardhshëm"
- Hapi 5: Tjetra: ESP32 NTP Temperatura e sondës së hyrjes analoge me korrigjim Steinhart-Hart
Video: ESP32 Hyrja me prekje me kapacitet duke përdorur "Priza metalike të vrimave" për butona: 5 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
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
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
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"
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:
4 lojëra me butona duke përdorur një hyrje analoge: 6 hapa (me fotografi)
Lojëra me 4 butona duke përdorur një hyrje analoge: Ky udhëzues fokusohet në përdorimin e një linje hyrëse analoge për butona të shumtë të cilët mund të zbulohen të pavarur nga njëri-tjetri. Dhe për të nxjerrë në pah përdorimin e këtyre butonave të përfshirë është softueri për të luajtur katër lojëra të ndryshme me 4 butona. Të gjitha ndeshjet (8 në t
Kontrolli i Ndriçimit Kontrolli LED i bazuar në PWM duke përdorur butona Push, Raspberry Pi dhe Scratch: 8 hapa (me fotografi)
Kontrolli i Ndriçimit PWM Bazuar në Kontrollin LED duke përdorur Butonat Push, Raspberry Pi dhe Scratch: Unë po përpiqesha të gjeja një mënyrë për të shpjeguar se si punonte PWM për studentët e mi, kështu që i vura vetes detyrën të përpiqesha të kontrolloja shkëlqimin e një LED duke përdorur 2 butona shtytës - një buton që rrit shkëlqimin e një LED dhe tjetri e zbeh atë. Për të përparuar
Telekomanda me valë duke përdorur modulin NRF24L01 2.4Ghz me Arduino - Nrf24l01 Marrës transmetues 4 kanal / 6 kanal për kuadopter - Rc Helikopter - Rc Plane Duke përdorur Arduino: 5 hapa (me fotografi)
Telekomanda me valë duke përdorur modulin NRF24L01 2.4Ghz me Arduino | Nrf24l01 Marrës transmetues 4 kanal / 6 kanal për kuadopter | Rc Helikopter | Rc Plane Duke përdorur Arduino: Për të drejtuar një makinë RC | Kuadikopter | Dron | RC aeroplan | Varka RC, ne gjithmonë kemi nevojë për një marrës dhe transmetues, supozoni për RC QUADCOPTER kemi nevojë për një transmetues dhe marrës me 6 kanale dhe ai lloj TX dhe RX është shumë i kushtueshëm, kështu që ne do të bëjmë një në pajisjen tonë
Altoparlanti i tryezës Bluetooth me vizualizim audio, butona me prekje dhe NFC .: 24 hapa (me fotografi)
Altoparlanti i tryezës Bluetooth me vizualizim audio, butona me prekje dhe NFC .: Përshëndetje! Në këtë Instructables unë do të tregoj se si e bëra këtë altoparlant Bluetooth Desk i cili ka vizualizim të mahnitshëm audio me butona prekës dhe NFC. Mund të çiftohet lehtë me pajisjet e aktivizuara NFC me vetëm një trokitje. Nuk ka asnjë buton fizik
Prekje me kapacitet me Evive (Kontrollues i bazuar në Arduino): 6 hapa (me fotografi)
Prekja kapacitive me Evive (Kontrolluesi i bazuar në Arduino): A e dini se si funksionon ekrani me prekje i smartphone -it tuaj? Smartfoni ka një sërë sensorë prekjeje nën ekranin e xhamit. Në ditët e sotme, ajo bazohet në teknologjinë e ndjeshmërisë së prekjes me kapacitet dhe madje edhe një prekje e butë zbulohet lehtë. Prekja kapacitore ndihet