Mündəricat:

Düymələr üçün "Metalik Delik Tıxaclarından" istifadə edərək ESP32 Kapasitif Dokunma Giriş: 5 Addım (Şəkillərlə)
Düymələr üçün "Metalik Delik Tıxaclarından" istifadə edərək ESP32 Kapasitif Dokunma Giriş: 5 Addım (Şəkillərlə)

Video: Düymələr üçün "Metalik Delik Tıxaclarından" istifadə edərək ESP32 Kapasitif Dokunma Giriş: 5 Addım (Şəkillərlə)

Video: Düymələr üçün
Video: Civə dağılması zamanı nə etməli? 2024, Iyul
Anonim
Image
Image
Avadanlıq
Avadanlıq

Üç düymə girişi tələb olunan ESP32 WiFi Kit 32 əsaslı bir layihə üçün dizayn qərarlarını yekunlaşdırarkən, nəzərəçarpacaq bir problem, WiFi Kit 32 -nin tək bir mexaniki düyməyə, hələ də giriş üçün yalnız üç mexaniki düyməyə sahib olmaması idi. Bununla birlikdə, WiFi Kit 32 -də kifayət qədər tutumlu toxunma girişləri var, buna görə bir müddət vaxt aparat yığmağa, proqram yazmağa və ESP32 tutumlu toxunma giriş xüsusiyyətindən istifadə edərək üç düyməli giriş dizaynını sınamağa və 3/8 "" metal çuxur fişlərindən "istifadə etməyə çalışdım. düymələr.

ESP32 kapasitiv toxunma girişlərini sınaqdan keçirmiş hər kəsin kəşf etdiyi kimi, toxunma girişləri etibarlı giriş aşkarlanması üçün süzgəc tələb edəcək qədər səs -küylüdür. Qarşıdakı layihə üçün ümumi hissələrin sayını minimuma endirmək üçün qərara gəldim ki, xarici filtr qurğusu əlavə etməkdən fərqli olaraq sadə bir fasilə ilə idarə olunan rəqəmsal filtrin (filtrdən daha çox "geri çəkilmə" si, amma mən kənara çıxıram) səs -küylü girişləri sakitləşdirə bilərəm.. Testdən sonra məlum oldu ki, ESP32 kapasitiv girişləri, 3/8 "metal çuxurlu fişlər və bəzi rəqəmsal" filtrasiya "proqramları həqiqətən dizayn üçün etibarlı üç düyməli giriş təmin edəcək.

ESP32 -də rəqəmsal süzgəclə kapasitiv girişi sınamaq istəyirsinizsə, Arduino mühit formatına "Buttons.ino" mənbə kodunu montaj və proqramlaşdırma təlimatları ilə birlikdə mənbə kodunun qısa təsvirini daxil etdim. kəşf etdiyim şey çox etibarlı üç düyməli girişdir.

Həmişə olduğu kimi, yəqin ki, bir və ya iki faylı unutmuşam və ya başqa nə bilir, buna görə suallarınız varsa, çoxlu səhvlər etdiyim üçün soruşmaqdan çəkinməyin.

Və son bir qeyd, bu dizaynda istifadə olunan komponentlərdən heç biri üçün pulsuz nümunələr daxil olmaqla heç bir formada heç bir kompensasiya almıram.

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Dizayn aşağıdakı avadanlıqlardan istifadə edir:

  • Biri, WiFi Kit 32.
  • Üç, 3/8 "metal delikli fişlər.
  • Üç, 4 düym uzunluğunda 28awg tel.

Cihazı yığmaq üçün aşağıdakı addımları yerinə yetirdim:

  • Hər 4 "tel uzunluğunun uclarını göstərildiyi kimi soyun və qalaylayın.
  • ESP32 -nin 13 -cü pininə (TOUCH4 və ya "T4", giriş) ilk tel lehimləndi.
  • İkinci tel ESP32 -nin 12 -ci pininə (TOUCH5 və ya "T5", giriş) lehimləndi.
  • Üçüncü teli ESP32 -nin 14 -cü pininə (TOUCH6 və ya "T6" girişi) lehimlə bağladı.
  • Üç 3/8 düymlük metal çuxur fişlərindən hər birini üç tel uzunluğunun sərbəst uclarına lehimlə bağladı.

Addım 2: Proqram təminatı

Proqram təminatı
Proqram təminatı

"Buttons.ino" faylı, dizayn üçün proqramı olan bir Arduino mühit faylıdır. Bu fayla əlavə olaraq, WiFi Kit32 OLED ekranı üçün "U8g2lib" qrafik kitabxanasına ehtiyacınız olacaq (bu kitabxana haqqında daha ətraflı məlumat üçün https://github.com/olikraus/u8g2/wiki -yə baxın).

Arduino qovluğunda U8g2lib qrafik kitabxanası quraşdırılıb və "Buttons.ino" Arduino mühitinə yüklənərək proqramı tərtib edin və ESP32 -ə yükləyin.

Yükləndikdən və işə salındıqdan sonra ekranın yuxarı sətrində düymələrin göstəricisi olaraq ekranın ikinci sətirində "1 2 3" yazılan "Düymələr" yazılmalıdır. 1, 2, 3 düymələrinin hər birinin altında filtrsiz toxunma oxu dəyərləri var və bunların hər birinin altında düyməni basma göstəriciləri var (basıldığı üçün "1", basılmadığı üçün "0"). Videoda göründüyü kimi (və uzun müddət sınaqdan keçirildiyi təsdiq edildikdə), proqram filtri heç bir yanlış tetiklemesiz etibarlı düymə giriş aşkarlamasını təmin edir.

Addım 3: Proqram haqqında

Proqram üç əsas kod bölməsindən ibarətdir; Arduino "quraşdırma ()" və "döngə ()" bölmələri və "kəsilmələr" bölməsinə ehtiyac duyurdu. Setup () bölməsi OLED -ni işə salmaq və xidmətləri kəsmək üçün lazım olan kodu ehtiva edir. OLED qurma funksiyaları yuxarıdakı linkdə təsvir edilmişdir. Kəsmə xidmətinin qurulması funksiyaları aşağıdakılardır:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()", loop keçidini yerinə yetirmək vaxtı gəldikdə loopu məlumatlandırmaq üçün "InterruptService ()" (kəsilmə xidməti qaydası) üçün semafor yaradır.
  • "timerInterruptService = timerBegin (0, 80, doğru)", 0 ölçmə aparatı olan 80 saylı hardware timer istifadə edərək bir taymer yaradır.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" InterruptService () -i taymerə bağlayır.
  • "timerAlarmWrite (timerInterruptService, 1000, true)", kəsilmə xidmət sürətini 1000hz olaraq təyin edir.
  • "timerAlarmEnable (timerInterruptService)" timer siqnalını işə salır və beləliklə xidməti kəsir.

Quraşdırma tamamlandıqdan sonra loop () daxil edilir və dərhal sətirdə dayanır:

əgər (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), loop () mənası, InterruptService () semaforu gələnə qədər bu nöqtədə gözləyəcək. Semafor gəldikdə, loop () kodu yerinə yetirilir, OLED displeyini düymə məlumatları ilə yeniləyir, sonra yenidən növbəti semaforu gözləmək üçün yuxarıya qayıdır. 1000Hz -də çalışan və 30 LOOP_DELAY dəyəri olan InterruptService () ilə loop () hər 30 saniyədə və ya 33.333hz ekran yeniləmə sürətində icra edir. Bu, əksər ESP32 tətbiqləri üçün tələb olunandan daha yüksək bir ekran yeniləmə sürəti olsa da, filtrin cavab vermə qabiliyyətini göstərmək üçün bu ayarı istifadə etdim. Test etdim və tək bir loop () keçidini yerinə yetirmək üçün lazım olan vaxtı 20 ms olaraq təyin etdim.

InterruptService (), 1000hz sürətində setup () da yaradılan zamanlayıcı tərəfindən çağırılır. Çağırıldıqda nLoopDelay və nButtonDelay adlı iki aşağı sayğacı yeniləyir. NLoopDelay sıfıra qədər aşağı sayıldıqda, loopun () bir keçidi yerinə yetirməsinə imkan verən semaforu göndərir və sonra nLoopDelay -ı sıfırlayır. NButtonDelay sıfıra endirildikdə, sıfırlanır, sonra "süzgəclər" düyməsini icra edir.

Hər bir düymə filtrində unikal bir filtr sayğacı var (məsələn, nButton1Count, nButton2Count və nButton3Count). Düyməyə təyin edilmiş toxunma girişi dəyəri müəyyən edilmiş eşik dəyərindən (BUTTON_THRESHHOLD) çox və ya ona bərabər olduğu müddətdə düyməyə və düyməyə təyin edilmiş filtr sayğacı sıfır olaraq qalır. Düyməyə təyin edilmiş toxunma girişi dəyəri təyin olunan eşikdən azdırsa, düyməyə təyin edilmiş filtr sayğacı hər 20 ms -də bir artırılır. Süzgəc sayğacı düymə filtr dəyərini (BUTTON_FILTER) aşdıqda düymə "basıldığı" hesab olunur. Bu metodun təsiri, düyməni faktiki olaraq basıldığını hesab etmək üçün müəyyən edilmiş eşikin altındakı davamlı toxunma giriş dəyərlərinin 80ms (20ms nButtonDelay * 4ms nButtonCountN) olduğu bir filtr yaratmaqdır. İstənilən vaxt 80 ms -dən az bir "qüsur" sayılır və filtr tərəfindən rədd edilir.

Bu qısa təsviri nəzərə alaraq, hər hansı bir sualınız varsa, lütfən soruşun və mən onlara cavab vermək üçün əlimdən gələni edəcəyəm.

Ümid edirəm zövq aldınız!

Addım 4: "Gələcək Layihə"

The
The

Gələcək layihə "Intelligrill® Pro", aşağı temperaturlu iki temperaturlu bir siqaret çəkən monitordur:

  • Artan dəqiqlik üçün Steinhart-Hart temperatur probu hesablamaları ("baxmaq" cədvəllərindən fərqli olaraq).
  • Steinhart-Hart hesablamalarından əldə edilən artan dəqiqliyi özündə ehtiva edən 1-ci araşdırmada başa çatma vaxtı.
  • Siqaret çəkənlərin istiliyini izləmək üçün ikinci bir zond, 2 -ci prob (32 ilə 399 dərəcə arasında məhdudlaşır).
  • Kapasitiv toxunma giriş nəzarətləri (bu Təlimatda olduğu kimi).
  • WIFI əsaslı uzaqdan izləmə (sabit bir IP ünvanı ilə, İnternet bağlantısı olan hər yerdən siqaret çəkənlərin gedişatını izləməyə imkan verir).
  • Genişləndirilmiş temperatur aralığı (yenə 32-399 dərəcə).
  • Səsli tamamlama siqnalları həm Intelligrill® ötürücüsündə, həm də əksər WiFi qabiliyyətli izləmə cihazlarında.
  • İstilik dərəcəsi F və ya C dərəcələrində göstərilir.
  • Saat formatı HH: MM: SS və ya HH: MM.
  • Batareya ekranı ya volt, ya da % dolu.
  • Və tezliklə buruq əsaslı siqaret çəkənlər üçün PID çıxışı.

"Intelligrill® Pro", hazırladığım ən dəqiq, xüsusiyyət dolu və etibarlı HTML əsaslı Intelligrill® olmaq üçün sınaqdan keçir.

Hələ də sınaq altındadır, amma test zamanı hazırlamağa kömək etdiyi yeməklərlə bir neçə kilodan çox qazandım.

Yenə də ümid edirəm zövq alacaqsınız!

Addım 5: Sonrakı: Steinhart-Hart Düzəlişi ilə ESP32 NTP Temperatur Probe Analog Giriş

Bunun üçün cəbr kitablarınızı tozdan təmizləməyə hazır olun.

Tövsiyə: