Tartalomjegyzék:

ESP32 kapacitív érintéses bemenet gombok "fém lyuk dugóival": 5 lépés (képekkel)
ESP32 kapacitív érintéses bemenet gombok "fém lyuk dugóival": 5 lépés (képekkel)

Videó: ESP32 kapacitív érintéses bemenet gombok "fém lyuk dugóival": 5 lépés (képekkel)

Videó: ESP32 kapacitív érintéses bemenet gombok
Videó: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, Július
Anonim
Image
Image
Hardver
Hardver

Miközben véglegesítettem a tervezési döntéseket egy közelgő ESP32 WiFi Kit 32 alapú projekthez, amely háromgombos bemenetet igényel, az egyik észrevehető probléma az volt, hogy a WiFi Kit 32 nem rendelkezik egyetlen mechanikus nyomógombbal, mégis csak három mechanikus gombbal. A WiFi Kit 32 azonban rengeteg kapacitív érintőbemenettel rendelkezik, ezért egy kis időt töltöttem a hardver összeszerelésével, a szoftverek írásával és a háromgombos bemeneti konstrukció tesztelésével, az ESP32 kapacitív érintéses bemeneti funkciót és három 3/8 "" fém lyukú dugót "használva gombok.

Mint bárki, aki kísérletezett az ESP32 kapacitív érintőbemenetekkel, felfedezte, hogy az érintőbemenetek minden bizonnyal elég zajosak ahhoz, hogy szűrést igényeljenek a megbízható bemeneti érzékeléshez. A közelgő projekt teljes alkatrészszámának minimalizálása érdekében megállapítottam, hogy egy egyszerű megszakítású meghajtású digitális szűrő (inkább "visszapattanás", mint egy szűrő, de elhajlok), ellentétben a külső szűrő hardver hozzáadásával, lecsendesítheti a zajos bemeneteket. És a tesztelés után nyilvánvalóvá vált, hogy az ESP32 kapacitív bemenetek, három 3/8 "-os fém lyukú dugó és néhány digitális" szűrő "szoftver valóban megbízható háromgombos bemenetet biztosít a tervezéshez.

Tehát, ha érdekel a kapacitív bemenet digitális szűréssel történő tesztelése ESP32 -en, akkor a "Buttons.ino" forráskódot az Arduino környezet formátumába illesztettem, az összeszerelési és programozási utasításokkal együtt, valamint a forráskód rövid leírását. amit felfedeztem, hogy egy nagyon megbízható háromgombos bemenet.

És mint általában, valószínűleg elfelejtettem egy vagy két fájlt, vagy ki tudja még mit, így ha bármilyen kérdése van, kérjük, ne habozzon, kérdezzen, mert rengeteg hibát követek el.

És egy utolsó megjegyzés: semmilyen formában nem kapok kártérítést, beleértve, de nem kizárólagosan az ingyenes mintákat, az ebben a kialakításban használt alkatrészekért

1. lépés: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

A tervezés a következő hardvereket használja:

  • Az egyik, WiFi Kit 32.
  • Három 3/8 "-os fém lyukú dugó.
  • Három, 4 hüvelykes 28awg huzal.

A hardver összeszereléséhez a következő lépéseket hajtottam végre:

  • Lecsupaszította és ónozta a 4 hüvelykes huzalok végét az ábrán látható módon.
  • Az első vezetéket az ESP32 13. tűjéhez forrasztotta (a TOUCH4 vagy "T4" bemenet).
  • A második vezetéket az ESP32 12. tűjéhez forrasztotta (a TOUCH5 vagy "T5" bemenet).
  • A harmadik vezetéket az ESP32 14. tűjéhez forrasztotta (a TOUCH6 vagy "T6" bemenet).
  • A három 3/8 hüvelykes fémes dugó mindegyikének egyikét forrasztották a három huzalhossz szabad végéhez.

2. lépés: Szoftver

Szoftver
Szoftver

A "Buttons.ino" fájl egy Arduino környezeti fájl, amely tartalmazza a tervezéshez szükséges szoftvert. Ezen a fájlon kívül szüksége lesz a WiFi Kit32 OLED kijelző "U8g2lib" grafikus könyvtárára is (erről a könyvtárról további információt a https://github.com/olikraus/u8g2/wiki oldalon talál).

Az U8g2lib grafikus könyvtár telepítve van az Arduino könyvtárába, és a "Buttons.ino" betöltve az Arduino környezetbe, fordítsa le és töltse le a szoftvert az ESP32 -be.

Letöltés és futtatás után a kijelző felső sorában a "Gombok" feliratot kell megjeleníteni, a kijelző második sorában pedig az "1 2 3" felirat jelenik meg. Az 1, 2, 3 gombjelzők mindegyike alatt vannak a szűretlen érintésolvasási értékek, alatta pedig a gombnyomás -jelzők ("1" a lenyomott, "0" nem megnyomás esetén). Amint a videóból látható (és a hosszú távú tesztelés megerősítette), a szoftver szűrő megbízható gombbevitel -érzékelést biztosít, hamis indítás nélkül.

3. lépés: A szoftverről

A szoftver három fő kódrészletet tartalmaz; az Arduino "setup ()" és "loop ()" szekciókat, valamint "Megszakítások" szakaszt igényelt. A setup () szakasz tartalmazza az OLED inicializálásához és a szolgáltatások megszakításához szükséges kódot. Az OLED beállítási funkcióit a fenti link tartalmazza. A szolgáltatás megszakításának beállítási funkciói a következők:

  • A "timerLoopSemaphore = xSemaphoreCreateBinary ()" szemaforot hoz létre az "InterruptService ()" számára (a megszakítási szolgáltatási rutin), hogy tájékoztassa a loop () -ot, amikor ideje végrehajtani a ciklusátadást.
  • "timerInterruptService = timerBegin (0, 80, true)" időzítőt hoz létre a hardver 0 időzítő használatával, 80 -as előskálával.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" az InterruptService () -et csatolja az időzítőhöz.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" a megszakítási szolgáltatás sebességét 1000 Hz -re állítja.
  • "timerAlarmEnable (timerInterruptService)" elindítja az időzítő riasztását, és ezzel megszakítja a szolgáltatást.

A beállítás befejezése után a ciklus () beíródik, és azonnal megáll a sorban:

if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), jelentése ciklus () ezen a ponton vár, amíg meg nem érkezik az InterruptService () szemaforja. Amikor a szemafor megérkezik, a loop () kód végrehajtódik, frissíti az OLED kijelzőt a gombadatokkal, majd visszatér a tetejére, és ismét várja a következő szemaforot. Ha az InterruptService () 1000 Hz -en fut, és a LOOP_DELAY értéke 30, a loop () 30 ms -onként vagy 33,3333 Hz -es frissítési gyakorisággal fut. Bár ez a kijelző frissítési gyakorisága magasabb, mint a legtöbb ESP32 alkalmazásnál, ezt a beállítást a szűrő reakcióképességének szemléltetésére használtam. Teszteltem, és megállapítottam, hogy az egyetlen hurok () átviteléhez szükséges idő 20 ms.

Az InterruptService () - t a setup () - ban létrehozott időzítő hívja 1000 Hz - es sebességgel. Amikor hívják, frissíti két lefelé mutatót, az nLoopDelay és az nButtonDelay. Ha az nLoopDelay le van számlálva nullára, akkor a szemaforot engedélyezi a ciklusnak (), hogy egyetlen lépést hajtson végre, majd visszaállítja az nLoopDelay -t. Ha az nButtonDelay le van számlálva nullára, az is alaphelyzetbe áll, majd a "szűrők" gomb végrehajtódik.

Minden gombszűrő egyedi szűrővel rendelkezik (pl. NButton1Count, nButton2Count és nButton3Count). Mindaddig, amíg a gombhoz rendelt érintési bemeneti érték nagyobb vagy egyenlő a meghatározott küszöbértékkel (BUTTON_THRESHHOLD), a gombhoz és a gombhoz rendelt szűrőszámláló nulla marad. Ha a gombhoz rendelt érintési bemeneti érték kisebb, mint a meghatározott küszöbérték, a gombhoz rendelt szűrő számláló 20 ms -onként eggyel növekszik. Ha a szűrő számlálója meghaladja a gombszűrő értékét (BUTTON_FILTER), a gomb "megnyomottnak" minősül. Ennek a módszernek a hatására olyan szűrőt kell létrehozni, amely a meghatározott küszöb alatti 80 ms (20 ms nButtonDelay * 4ms nButtonCountN ahol N a gomb száma) folyamatos érintéses beviteli értékeket igényel ahhoz, hogy figyelembe vegye a gomb tényleges megnyomását. A 80 ms -nál rövidebb idő bármikor hibának számít, és a szűrő elutasítja.

Tekintettel erre a rövid leírásra, ha bármilyen kérdése van, kérdezzen bátran, és mindent megteszek, hogy válaszoljak rájuk.

Remélem élvezted!

4. lépés: A "Közelgő projekt"

Az
Az

A közelgő projekt, az "Intelligrill® Pro" egy kettős hőmérsékletű szonda dohányos monitor, amely a következőket tartalmazza:

  • Steinhart-Hart hőmérsékleti szonda számítások (szemben a "keresési" táblázatokkal) a nagyobb pontosság érdekében.
  • Előrejelzési idő a befejezésig az 1. szondán, amely magában foglalja a Steinhart-Hart számításokból származó nagyobb pontosságot.
  • Egy második szonda, a 2. szonda, a dohányos hőmérsékletének ellenőrzésére (32-399 fok között).
  • Kapacitív érintéses beviteli vezérlők (mint ebben az utasításban).
  • WIFI -alapú távfelügyelet (rögzített IP -címmel, lehetővé teszi a dohányos haladásának nyomon követését bárhonnan, ahol elérhető internetkapcsolat).
  • Kiterjesztett hőmérsékleti tartomány (ismét 32-399 fok).
  • Hangos befejezési riasztások mind az Intelligrill® távadón belül, mind a legtöbb WiFi -képes felügyeleti eszközön.
  • A hőmérséklet kijelzése F vagy C fokokban.
  • Az időformátum vagy ÓÓ: HH: SS vagy ÓÓ: HH.
  • Az akkumulátor kijelzője voltban vagy % -ban feltöltve.
  • És hamarosan PID kimenet a csiga alapú dohányosoknak.

Az "Intelligrill® Pro" tesztelése a legpontosabb, funkciókkal teli és legmegbízhatóbb HTML -alapú Intelligrill® lesz, amit terveztem.

Ez még tesztelés alatt áll, de az étkezésekkel, amelyek elősegítik a tesztelés során való felkészülést, több mint néhány kilót híztam.

Még egyszer remélem, hogy élvezni fogja!

5. lépés: Következő lépés: ESP32 NTP hőmérséklet szonda analóg bemenet Steinhart-Hart korrekcióval

Készüljön fel arra, hogy letörli a port az algebrai könyvekről.

Ajánlott: