Satura rādītājs:
- 1. darbība: aparatūra
- 2. darbība: programmatūra
- 3. darbība. Par programmatūru
- 4. solis: gaidāmais projekts
- 5. darbība. Tālāk: ESP32 NTP temperatūras zondes analogā ievade ar Šteinharta-Harta korekciju
Video: ESP32 ietilpīga pieskāriena ievade, izmantojot pogas "metāla caurumu aizbāžņus": 5 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Kad es pabeidzu dizaina lēmumus gaidāmajam projektam, kura pamatā ir ESP32 WiFi komplekts 32, kam nepieciešama trīs pogu ievade, viena pamanāma problēma bija tā, ka WiFi komplektam 32 nav vienas mehāniskas spiedpogas, bet tikai trīs mehāniskas pogas ievadīšanai. Tomēr WiFi komplektam 32 ir daudz kapacitatīvu pieskārienu ieeju, tāpēc es kādu laiku pavadīju aparatūras montāžā, programmatūras rakstīšanā un trīs pogu ievades dizaina pārbaudē, izmantojot ESP32 kapacitatīvās pieskāriena ievades funkciju un trīs 3/8 "" metāla caurumu aizbāžņus " pogas.
Kā atklājis ikviens, kurš ir eksperimentējis ar ESP32 kapacitatīvajiem skārienievadiem, skārienievadi noteikti ir pietiekami trokšņaini, lai būtu nepieciešama filtrēšana, lai droši noteiktu ievadi. Lai samazinātu gaidāmā projekta kopējo detaļu skaitu, es noteicu, ka vienkāršs ar pārtraukumu darbināms digitālais filtrs (vairāk "atkāpšanās" nekā filtrs, bet es atkāpjos), nevis ārējās filtra aparatūras pievienošana, var nomierināt trokšņainās ieejas. Un pēc pārbaudes kļuva skaidrs, ka ESP32 kapacitatīvās ieejas, trīs 3/8 "metāla caurumu aizbāžņi un dažas digitālās" filtrēšanas "programmatūras patiešām nodrošinātu dizainam uzticamu trīs pogu ievadi.
Tātad, ja jūs interesē ESP32 kapacitatīvās ievades pārbaude ar digitālo filtrēšanu, es esmu iekļāvis avota kodu "Buttons.ino" Arduino vides formātā kopā ar montāžas un programmēšanas instrukcijām, kā arī īsu avota koda aprakstu. ko es atklāju kā ļoti uzticamu trīs pogu ievadi.
Un kā parasti, es, iespējams, aizmirsu vienu vai divus failus vai kas zina, kas vēl, tāpēc, ja jums ir kādi jautājumi, lūdzu, nevilcinieties jautāt, jo es pieļauju daudz kļūdu.
Un viena pēdējā piezīme: es nesaņemu nekādu kompensāciju, ieskaitot, bet neaprobežojoties ar bezmaksas paraugiem, par nevienu šajā dizainā izmantoto sastāvdaļu.
1. darbība: aparatūra
Dizains izmanto šādu aparatūru:
- Viens, WiFi komplekts 32.
- Trīs 3/8 collu metāla caurumi.
- Trīs, 4 collu 28wg stieples garums.
Lai saliktu aparatūru, es veicu šādas darbības:
- Katra 4 collu stieples gala galus noņem un alvo, kā parādīts attēlā.
- Pirmo vadu pielodēja pie ESP32 tapas 13 (ieeja TOUCH4 vai "T4").
- Lodēja otro vadu pie ESP32 tapas 12 (ieeja TOUCH5 vai "T5").
- Trešais vads tika pielodēts pie ESP32 14. tapas (TOUCH6 vai "T6" ieeja).
- Lodēja vienu no trim 3/8 collu metāla caurumu aizbāžņiem pie trīs vadu garuma brīvajiem galiem.
2. darbība: programmatūra
Fails "Buttons.ino" ir Arduino vides fails, kas satur dizaina programmatūru. Papildus šim failam jums būs nepieciešama WiFi Kit32 OLED displeja grafiskā bibliotēka "U8g2lib" (sīkāku informāciju par šo bibliotēku skatiet vietnē
Ja jūsu Arduino direktorijā ir instalēta grafikas bibliotēka U8g2lib un Arduino vidē ir ielādēts "Buttons.ino", apkopojiet un lejupielādējiet programmatūru ESP32.
Pēc lejupielādes un palaišanas displeja augšējā rindā jābūt pogai "Pogas" un displeja otrajai rindai kā "1 2 3" kā pogas indikatoriem. Zem katra no 1, 2, 3 pogu indikatoriem ir nefiltrētās skārienlasīšanas vērtības, un zem katras no tām ir pogu nospiešanas indikatori ("1" - nospiests, "0" - nenospiests). Kā redzams videoklipā (un apstiprināts ilgtermiņa pārbaudījums), programmatūras filtrs nodrošina drošu pogu ievades noteikšanu bez viltus palaišanas.
3. darbība. Par programmatūru
Programmatūrā ir trīs galvenās koda sadaļas; Arduino bija nepieciešamas sadaļas "setup ()" un "loop ()", un sadaļa "Interrupts". Iestatīšanas () sadaļā ir kods, kas nepieciešams OLED inicializēšanai un pakalpojumu pārtraukšanai. OLED iestatīšanas funkcijas ir aprakstītas iepriekš minētajā saitē. Pakalpojuma pārtraukšanas iestatīšanas funkcijas ir šādas:
- "timerLoopSemaphore = xSemaphoreCreateBinary ()" izveido semaforu "InterruptService ()" (pārtraukšanas pakalpojuma rutīnas), lai informētu cilpu (), kad ir pienācis laiks izpildīt cilpas pāreju.
- "timerInterruptService = timerBegin (0, 80, true)" izveido taimeri, izmantojot aparatūras taimeri 0 ar iepriekšējo skalu 80.
- "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" pievieno taimerim InterruptService ().
- "timerAlarmWrite (timerInterruptService, 1000, true)" iestata pārtraukuma pakalpojuma ātrumu uz 1000 Hz.
- "timerAlarmEnable (timerInterruptService)" sāk taimera trauksmi un tādējādi pārtrauc pakalpojumu.
Kad iestatīšana ir pabeigta, cilpa () tiek ievadīta un nekavējoties apstājas rindā:
if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), nozīmē cilpa () šajā brīdī gaidīs, līdz ieradīsies semafors no InterruptService (). Kad ierodas semafors, tiek izpildīts cilpas () kods, atjauninot OLED displeju ar pogu datiem, pēc tam atgriežoties augšpusē un atkal gaidot nākamo semaforu. Ja InterruptService () darbojas ar 1000 hz un LOOP_DELAY vērtība ir 30, cilpa () tiek izpildīta ik pēc 30 ms vai ar displeja atjaunināšanas ātrumu 33,333 Hz. Lai gan tas ir augstāks displeja atsvaidzes intensitāte, nekā tas ir nepieciešams lielākajai daļai ESP32 lietojumprogrammu, es izmantoju šo iestatījumu, lai ilustrētu filtra reaģētspēju. Es pārbaudīju un noteicu, ka laiks, kas nepieciešams vienas cilpas () pārejai, ir 20 ms.
InterruptService () izsauc iestatījumā () izveidotais taimeris ar ātrumu 1000 hz. Kad tas tiek izsaukts, tas atjaunina divus leju skaitītājus - nLoopDelay un nButtonDelay. Kad nLoopDelay tiek samazināts līdz nullei, tas nosūta semaforu, kas ļauj cilpai () izpildīt vienu pāreju, pēc tam atiestata nLoopDelay. Kad nButtonDelay tiek skaitīts uz leju līdz nullei, tas arī tiek atiestatīts, pēc tam tiek izpildīta poga "filtri".
Katram pogu filtram ir unikāls filtra skaitītājs (piemēram, nButton1Count, nButton2Count un nButton3Count). Kamēr pogai piešķirtā pieskāriena ievades vērtība ir lielāka vai vienāda ar noteikto sliekšņa vērtību (BUTTON_THRESHHOLD), pogai un pogai piešķirtais filtra skaitītājs paliek nulle. Ja pogai piešķirtā pieskāriena ievades vērtība ir mazāka par noteikto slieksni, pogai piešķirtais filtra skaitītājs tiek palielināts par vienu ik pēc 20 ms. Ja filtra skaitītājs pārsniedz pogu filtra vērtību (BUTTON_FILTER), poga tiek uzskatīta par "nospiestu". Šīs metodes rezultātā tiek izveidots filtrs, kam nepieciešamas 80 ms (20 ms nButtonDelay * 4ms nButtonCountN, kur N ir pogas numurs) nepārtrauktas pieskāriena ievades vērtības zem noteiktā sliekšņa, lai ņemtu vērā faktiski nospiesto pogu. Jebkurš laiks, kas mazāks par 80 ms, tiek uzskatīts par "kļūmi", un filtrs to noraida.
Ņemot vērā šo īso aprakstu, ja jums ir kādi jautājumi, lūdzu, jautājiet, un es darīšu visu iespējamo, lai uz tiem atbildētu.
Ceru, ka jums patika!
4. solis: gaidāmais projekts
Gaidāmais projekts "Intelligrill® Pro" ir divkāršas temperatūras zondes smēķētāju monitors, kas ietver:
- Steinhart-Hart temperatūras zondes aprēķini (pretstatā "uzmeklēšanas" tabulām), lai palielinātu precizitāti.
- Prognozējamais laiks līdz 1. zondes pabeigšanai, ietverot lielāku precizitāti, kas iegūta no Šteinharta-Hārta aprēķiniem.
- Otra zonde, zonde 2, smēķētāja temperatūras kontrolei (ierobežota līdz 32–399 grādiem).
- Kapacitatīvas skārienievades vadīklas (kā šajā pamācībā).
- Uz WIFI balstīta attālināta uzraudzība (ar fiksētu IP adresi, ļauj uzraudzīt smēķētāja progresu no jebkuras vietas, kur ir pieejams interneta savienojums).
- Paplašināts temperatūras diapazons (atkal no 32 līdz 399 grādiem).
- Skaņas pabeigšanas trauksmes signāli gan Intelligrill® raidītājā, gan lielākajā daļā WiFi nodrošinošu uzraudzības ierīču.
- Temperatūras displejs F vai C grādos.
- Laika formāts HH: MM: SS vai HH: MM.
- Akumulatora displejs vai nu voltos, vai % uzlādēts.
- Un drīzumā PID izvade smēķētājiem, kuru pamatā ir gliemeži.
"Intelligrill® Pro" testē, lai kļūtu par visprecīzāko, ar funkcijām iepakoto un visuzticamāko Intelligrill®, ko esmu izstrādājis.
Tas joprojām tiek pārbaudīts, bet ar ēdienreizēm, kuras tas palīdz sagatavoties pārbaudes laikā, esmu ieguvis vairāk nekā dažas mārciņas.
Vēlreiz ceru, ka jums patiks!
5. darbība. Tālāk: ESP32 NTP temperatūras zondes analogā ievade ar Šteinharta-Harta korekciju
Esiet gatavs putekļus notīrīt no algebras grāmatām.
Ieteicams:
Lodēšana caur caurumu komponentiem - Lodēšanas pamati: 8 soļi (ar attēliem)
Lodēšana caur caurumu komponentiem | Lodēšanas pamati: Šajā pamācībā es apspriedīšu dažus pamatus par caurumu caurumu komponentu lodēšanu shēmas plates. Es pieņemu, ka jūs jau esat pārbaudījis pirmos 2 instrukcijas manai lodēšanas pamatu sērijai. Ja neesat apskatījis manu In
Vienreizējās pildspalvas ietilpīgā irbulis: 6 soļi (ar attēliem)
Vienreizējās pildspalvas ietilpīgā irbulis: man ir ducis Uni-ball Micro Roller Ball pildspalvu. Es vēlos pievienot vāciņu ar ietilpīgu irbuli vienam no tiem. Pēc tam vāciņu un irbuli var pārvietot no vienas pildspalvas uz nākamo, jo katram beidzas tinte. Esmu pateicīgs Džeisonam Poelam Smitam par viņa
DIY AC/ DC Hack "Mod" RD6006 barošanas avots un S06A korpuss W/ S-400-60 PSU būve un uzlabota līdzstrāvas ievade: 9 soļi
DIY AC/ DC Hack "Mod" RD6006 barošanas avots un S06A korpuss W/ S-400-60 PSU būvēšana un uzlabota līdzstrāvas ievade: Šis projekts ir vairāk pamata RD6006 būve, izmantojot S06A korpusu un S-400-60 barošanas avotu . Bet es patiešām vēlos izvēlēties akumulatora pievienošanu pārnesamībai vai strāvas padeves pārtraukumam. Tāpēc es arī uzlauzu vai pārveidoju lietu, lai pieņemtu līdzstrāvu vai akumulatoru
Kā lodēt caurumu caurumu: 8 soļi
Kā lodēt caurumu caurumu: Ir divi galvenie caurumu detaļu veidi, kurus mēs apskatīsim šajā " Lodēšanas " vadotne, aksiāli novadīti caurumi un dubultās rindas paketes (DIP). Ja esat nedaudz veicis riteņbraukšanu, jūs &
Kā izveidot caurumu kameru: 7 soļi (ar attēliem)
Kā izveidot pinhole kameru: izveidojiet savu kameru no materiāliem visā mājā un uzņemiet ar to melnbaltus fotoattēlus