Talaan ng mga Nilalaman:

ESP32 Capacitive Touch Input Gamit ang "Metallic Hole Plugs" para sa Mga Pindutan: 5 Hakbang (na may Mga Larawan)
ESP32 Capacitive Touch Input Gamit ang "Metallic Hole Plugs" para sa Mga Pindutan: 5 Hakbang (na may Mga Larawan)

Video: ESP32 Capacitive Touch Input Gamit ang "Metallic Hole Plugs" para sa Mga Pindutan: 5 Hakbang (na may Mga Larawan)

Video: ESP32 Capacitive Touch Input Gamit ang
Video: ESP32 Capacitive Touch Sensor Pins with Arduino IDE 2024, Nobyembre
Anonim
Image
Image
Hardware
Hardware

Habang tinatapos ko ang mga desisyon sa disenyo para sa paparating na proyekto na nakabatay sa ESP32 WiFi Kit 32 na nangangailangan ng tatlong pag-input ng pindutan, ang isang kapansin-pansin na problema ay ang WiFi Kit 32 ay hindi nagtataglay ng isang solong pindutang mekanikal, ngunit nag-iisa ang tatlong mga pindutang mekanikal, para sa pag-input. Gayunpaman, ang WiFi Kit 32 ay mayroong maraming capacitive touch input, kaya ginugol ko ng ilang oras ang pag-iipon ng hardware, pagsusulat ng software at pagsubok ng isang three button input design na gumagamit ng tampok na input ng capacitive touch na ESP32 at tatlong 3/8 "" metallic hole plugs "para sa mga pindutan

Tulad ng natuklasan ng sinumang nag-eksperimento sa mga input ng capacitive touch na ESP32, ang mga input ng touch ay tiyak na sapat na maingay upang mangailangan ng pag-filter para sa maaasahang pagtuklas ng input. Upang i-minimize ang kabuuang bilang ng mga bahagi para sa paparating na proyekto, natukoy ko na ang isang simpleng makagambala na hinihimok na digital na filter (higit pa sa isang "debounce" kaysa sa isang filter, ngunit lumihis ako), taliwas sa pagdaragdag ng panlabas na hardware ng filter, ay maaaring tumahimik sa mga maingay na input. At pagkatapos ng pagsubok, naging maliwanag na ang mga input ng capacitive na ESP32, tatlong 3/8 "metallic hole plugs, at ilang digital na" pagsala "na software, ay magbibigay ng maaasahang pag-input ng tatlong pindutan para sa disenyo.

Kaya't kung interesado ka sa pagsubok ng capacitive input na may digital na pagsala sa isang ESP32, isinama ko ang source code na "Buttons.ino" sa format ng kapaligiran ng Arduino kasama ang mga tagubilin sa pagpupulong at programa, kasama ang isang maikling paglalarawan ng source code, para sa kung ano ang natuklasan kong maging isang lubos na maaasahan na input ng tatlong pindutan.

At tulad ng dati, nakalimutan ko siguro ang isang file o dalawa o kung sino ang nakakaalam kung ano pa, kaya't kung mayroon kang anumang mga katanungan, mangyaring huwag mag-atubiling magtanong habang gumagawa ako ng maraming pagkakamali.

At isang pangwakas na tala, wala akong natatanggap na kabayaran sa anumang anyo, kasama ngunit hindi limitado sa mga libreng sample, para sa alinman sa mga sangkap na ginamit sa disenyo na ito

Hakbang 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Gumagamit ang disenyo ng sumusunod na hardware:

  • Isa, WiFi Kit 32.
  • Tatlo, 3/8 "mga metal plugs hole.
  • Tatlo, 4 "haba ng 28awg wire.

Upang tipunin ang hardware, isinagawa ko ang mga sumusunod na hakbang:

  • Nakuha at naka-lata ang mga dulo ng bawat 4 "haba ng kawad tulad ng ipinakita.
  • In-solder ang unang kawad upang i-pin ang 13 ng ESP32 (ang TOUCH4, o "T4", input).
  • In-solder ang pangalawang kawad upang i-pin ang 12 ng ESP32 (ang TOUCH5, o "T5", input).
  • In-solder ang pangatlong kawad upang i-pin ang 14 ng ESP32 (ang TOUCH6, o "T6" na input).
  • Ang isang solder ng bawat isa sa tatlong 3/8 "metallic hole plugs sa mga libreng dulo ng tatlong haba ng kawad.

Hakbang 2: Software

Software
Software

Ang file na "Buttons.ino" ay isang Arduino environment file na naglalaman ng software para sa disenyo. Bilang karagdagan sa file na ito, kakailanganin mo ang "U8g2lib" graphics library para sa display ng WiFi Kit32 OLED (tingnan ang https://github.com/olikraus/u8g2/wiki para sa karagdagang impormasyon sa library na ito).

Gamit ang naka-install na library ng U8g2lib graphics sa iyong direktoryo ng Arduino, at ang "Buttons.ino" na na-load sa Arduino na kapaligiran, sumulat at mag-download ng software sa ESP32.

Kapag na-download at tumatakbo na, ang tuktok na linya ng display ay dapat basahin ang "Mga Pindutan" na may pangalawang linya ng display na binabasa ang "1 2 3" bilang mga tagapagpahiwatig ng pindutan. Sa ibaba ng bawat isa sa mga tagapagpahiwatig ng pindutan ng 1, 2, 3 ay ang hindi na-filter na mga halagang binasa na touch, at sa ibaba ng bawat isa sa mga ito ay ang mga pindutan ng pindutin ang mga tagapagpahiwatig ("1" para sa pinindot, "0" para sa hindi pinindot). Tulad ng makikita sa video (at habang pinatunayan na pinatunayan ang pangmatagalang pagsubok), ang filter ng software ay nagbibigay ng maaasahang pagtuklas ng pag-input ng pindutan nang walang maling pagpapalitaw.

Hakbang 3: Tungkol sa Software

Naglalaman ang software ng tatlong pangunahing seksyon ng code; hinihiling ng Arduino ang mga seksyong "pag-setup ()" at "loop ()", at isang seksyon na "Nakagagambala". Naglalaman ang seksyon ng pag-setup () ng code na kinakailangan upang maipasimula ang OLED at makagambala sa mga serbisyo. Ang mga pagpapaandar ng OLED setup ay inilarawan sa link sa itaas. Ang mga pag-andar sa pag-set up ng serbisyo na nakakagambala ay ang mga sumusunod:

  • Ang "timerLoopSemaphore = xSemaphoreCreateBinary ()" ay lumilikha ng isang semaphore para sa "InterruptService ()" (ang nakakagambala na gawain sa serbisyo) upang ipaalam sa loop () kung oras na upang magpatupad ng isang loop pass.
  • Ang "timerInterruptService = timerBegin (0, 80, totoo)" ay lumilikha ng isang timer gamit ang hardware timer 0 na may prescale na 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, totoo)" ikinakabit ng InterruptService () sa timer.
  • Ang "timerAlarmWrite (timerInterruptService, 1000, totoo)" ay nagtatakda ng nakakagambala na rate ng serbisyo sa 1000hz.
  • "timerAlarmEnable (timerInterruptService)" sinisimulan ang alarm ng timer, at sa gayon ay nakakagambala sa serbisyo.

Sa kumpletong pag-setup, ipinasok ang loop () at agad na humihinto sa linya:

kung (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), nangangahulugang loop () ay maghihintay sa puntong ito hanggang sa dumating ang semaphore mula sa InterruptService (). Kapag dumating ang semaphore, ang loop () code ay nagpapatupad, na ina-update ang OLED display na may data ng pindutan, pagkatapos ay bumalik sa tuktok upang maghintay muli sa susunod na semaphore. Sa pamamagitan ng InterruptService () na tumatakbo sa 1000hz at isang halaga na LOOP_DELAY na 30, ang loop () ay nagpapatupad bawat 30ms, o sa isang rate ng pag-update sa display na 33.333hz. Habang ito ay isang mas mataas na rate ng pag-refresh ng display kaysa sa kinakailangan para sa karamihan ng mga application ng ESP32, ginamit ko ang setting na ito upang ilarawan ang kakayahang tumugon ng filter. Sinubukan ko at tinukoy ang oras na kinakailangan upang maisagawa ang isang solong loop () na pumasa na 20ms.

Ang InterruptService () ay tinawag ng timer na nilikha sa pag-setup () sa isang rate na 1000hz. Kapag tinawag, ina-update nito ang dalawang down counter, nLoopDelay at n ButtonDelay. Kapag nLoopDelay ay bumaba na binibilang hanggang zero, nagpapadala ito ng semaphore na nagpapahintulot sa loop () na magpatupad ng isang solong pass pagkatapos ay i-reset ang nLoopDelay. Kapag ang nButtonDelay ay bumaba na binibilang hanggang sa zero, ito rin ay nai-reset pagkatapos ang pindutan na "mga filter" ay isinasagawa.

Ang bawat filter ng pindutan ay may natatanging counter counter (hal. N Button1Count, n Button2Count at n Button3Count). Hangga't ang halaga ng pag-input ng touch na nakatalaga sa pindutan ay mas malaki kaysa sa o katumbas ng tinukoy na halaga ng threshold (BUTTON_THRESHHOLD), ang filter counter na nakatalaga sa pindutan at ang pindutan ay mananatiling zero. Kung ang halaga ng pag-input ng touch na nakatalaga sa pindutan ay mas mababa kaysa sa tinukoy na threshold, ang filter counter na nakatalaga sa pindutan ay nadagdagan ng isa bawat 20ms. Kapag lumampas ang filter counter sa halaga ng filter ng button (BUTTON_FILTER), ang pindutan ay isinasaalang-alang "pinindot". Ang epekto ng pamamaraang ito ay upang lumikha ng isang filter na nangangailangan ng 80ms (20ms n ButtonDelay * 4ms n ButtonCountN kung saan ang N ang numero ng pindutan) ng tuloy-tuloy na mga halaga ng pag-input ng touch sa ibaba ng tinukoy na threshold upang isaalang-alang ang pindutan na talagang pinindot. Anumang oras na mas mababa sa 80ms ay itinuturing na isang "glitch" at tinanggihan ng filter.

Dahil sa maikling paglalarawan na ito, kung mayroon kang anumang mga katanungan, mangyaring huwag mag-atubiling magtanong at gagawin ko ang aking makakaya upang sagutin sila.

Umasa kong nasiyahan ka!

Hakbang 4: Ang "Paparating na Proyekto"

Ang
Ang

Ang paparating na proyekto, "Intelligrill® Pro", ay isang dalawahang temperatura na probe ng smoker monitor na nagtatampok ng:

  • Mga kalkulasyon ng pagsisiyasat ng temperatura ng Steinhart-Hart (taliwas sa mga talahanayan na "pagtingin" para sa mas mataas na kawastuhan.
  • Mapaghulaang oras hanggang sa makumpleto sa probe 1 na isinasama ang mas mataas na kawastuhan na nagmula sa mga kalkulasyon ng Steinhart-Hart.
  • Isang pangalawang pagsisiyasat, pagsisiyasat 2, para sa pagsubaybay sa temperatura ng naninigarilyo (limitado sa 32 hanggang 399 degree).
  • Mga kontrol ng pag-input ng capacitive touch (tulad ng sa Instructable na ito).
  • Nakabatay sa malayuang pagsubaybay sa WIFI (na may isang nakapirming IP address, nagbibigay-daan sa pagsubaybay sa pag-usad ng naninigarilyo mula sa kahit saan magagamit ang isang koneksyon sa internet).
  • Pinalawak na saklaw ng temperatura (muli 32 hanggang 399 degree).
  • Naririnig ang mga alarma sa pagkumpleto pareho sa loob ng transmigrador ng Intelligrill® at sa karamihan ng mga aparatong sinusubaybayan na may kakayahang WiFi.
  • Pagpapakita ng temperatura sa alinman sa degree F o degree C.
  • Format ng oras sa alinman sa HH: MM: SS o HH: MM.
  • Ang pagpapakita ng baterya sa alinman sa volts o% sisingilin.
  • At paparating, output ng PID para sa mga naninigarilyong nakabase sa panig.

Ang "Intelligrill® Pro" ay pagsubok upang maging ang pinaka tumpak, tampok na naka-pack at maaasahang HTML based Intelligrill® na dinisenyo ko.

Nasa ilalim pa rin ito ng pagsubok, ngunit sa mga pagkain na tumutulong sa paghahanda sa panahon ng pagsubok, nakakuha ako ng higit sa ilang libra.

Muli, inaasahan kong nasiyahan ka dito!

Hakbang 5: Susunod Na Up: ESP32 NTP Temperatura Probe Analog Input Sa Steinhart-Hart na Pagwawasto

Maging handa sa alikabok sa iyong mga libro sa algebra para sa isang ito.

Inirerekumendang: