Satura rādītājs:

ESP32 ietilpīga pieskāriena ievade, izmantojot pogas "metāla caurumu aizbāžņus": 5 soļi (ar attēliem)
ESP32 ietilpīga pieskāriena ievade, izmantojot pogas "metāla caurumu aizbāžņus": 5 soļi (ar attēliem)

Video: ESP32 ietilpīga pieskāriena ievade, izmantojot pogas "metāla caurumu aizbāžņus": 5 soļi (ar attēliem)

Video: ESP32 ietilpīga pieskāriena ievade, izmantojot pogas
Video: How to user Makerfabs ESP32 3.5" TFT Capacitive Touch with Camera 2024, Jūlijs
Anonim
Image
Image
Aparatūra
Aparatūra

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

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
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

Programmatūra
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

The
The

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: