Mundarija:

Tugmalar uchun "Metall tuynuklar" yordamida ESP32 sig'imli sensorli kirish: 5 qadam (rasmlar bilan)
Tugmalar uchun "Metall tuynuklar" yordamida ESP32 sig'imli sensorli kirish: 5 qadam (rasmlar bilan)

Video: Tugmalar uchun "Metall tuynuklar" yordamida ESP32 sig'imli sensorli kirish: 5 qadam (rasmlar bilan)

Video: Tugmalar uchun
Video: Bu FAKT. RASMDA CHOL EMAS QIZ TASVIRLANGAN, YAXSHILAB QARANG 2024, Noyabr
Anonim
Image
Image
Uskuna
Uskuna

Men uchta tugmani kiritishni talab qiladigan yaqinlashib kelayotgan ESP32 WiFi Kit 32 loyihasi uchun dizayn qarorlarini yakunlayotganda, bitta muhim muammo shundaki, WiFi Kit 32 -da bitta mexanik tugma mavjud emas, lekin faqat uchta mexanik tugma. Biroq, WiFi Kit 32 -da juda ko'p sig'imli sensorli kirish mavjud, shuning uchun men bir muncha vaqt ESP32 sig'imli sensorli kirish funktsiyasidan va 3/8 dyuymli "metall teshikli vilkalar" dan foydalangan holda, uskunalarni yig'ish, dasturiy ta'minot yozish va uch tugmachali kirish dizaynini sinab ko'rish uchun ko'p vaqt sarfladim. tugmalar.

ESP32 sig'imli sensorli kirishlar bilan tajriba o'tkazgan har bir kishi aniqlaganidek, sensorli kirishlar shovqinli bo'lib, ishonchli kirishni aniqlash uchun filtrlashni talab qiladi. Yaqinlashib kelayotgan loyihaning umumiy qismlari sonini minimallashtirish uchun, men tashqi filtr uskunasini qo'shishdan farqli o'laroq, oddiy uzil -kesil boshqariladigan raqamli filtr (filtrdan ko'ra "o'chirish" ni tanladim).. Sinovdan so'ng, ESP32 sig'imli kirishlari, uchta 3/8 "metall teshikli vilkalar va raqamli" filtrlash "dasturlari, albatta, dizayn uchun ishonchli uchta tugmachali kirishni ta'minlab berishi aniq bo'ldi.

Agar siz ESP32 -da raqamli filtrlash orqali sig'imli kirishni sinab ko'rmoqchi bo'lsangiz, men "Buttons.ino" manba kodini Arduino muhit formatiga yig'ish va dasturlash ko'rsatmalari bilan birga manba kodining qisqacha tavsifini qo'shganman. Men uchta tugmachani ishonchli kiritishini aniqladim.

Odatdagidek, men bir yoki ikkita faylni unutganman yoki boshqa nima biladi, shuning uchun agar sizda biron bir savol bo'lsa, iltimos, ikkilanmasdan so'rang, chunki men ko'p xatolarga yo'l qo'yaman.

Va bitta yakuniy eslatma, men hech qanday shaklda kompensatsiya ololmayman, shu jumladan, faqat bepul namunalar, shu dizaynda ishlatiladigan komponentlar uchun.

1 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna

Dizayn quyidagi uskunalardan foydalanadi:

  • Biri, WiFi to'plami 32.
  • Uch, 3/8 dyuymli metall tuynuklar.
  • Uch, 4 dyuym uzunlikdagi 28awg sim.

Uskunani yig'ish uchun men quyidagi amallarni bajarganman.

  • Har 4 dyuymli uzunlikdagi uchlari rasmda ko'rsatilgandek olib tashlangan va kalaylangan.
  • ESP32 ning 13 -pinli birinchi simini lehimladi (TOUCH4 yoki "T4", kirish).
  • Ikkinchi simni ESP32 -ning 12 -piniga (TOUCH5 yoki "T5", kirish) lehimladi.
  • Uchinchi simni ESP32 (TOUCH6 yoki "T6" kirish) 14 -piniga ulash uchun lehimlangan.
  • Uchta 3/8 dyuymli metall teshikli vilkalarning har biridan uchta sim uzunligining bo'sh uchlariga lehimlangan.

2 -qadam: dasturiy ta'minot

Dasturiy ta'minot
Dasturiy ta'minot

"Buttons.ino" fayli dizayn uchun dasturiy ta'minotni o'z ichiga olgan Arduino muhit fayli. Bu faylga qo'shimcha ravishda, sizga WiFi Kit32 OLED displeyi uchun "U8g2lib" grafik kutubxonasi kerak bo'ladi (bu kutubxona haqida qo'shimcha ma'lumot olish uchun https://github.com/olikraus/u8g2/wiki -ga qarang).

Arduino katalogiga U8g2lib grafik kutubxonasi o'rnatilgan va "Buttons.ino" Arduino muhitiga yuklangan holda, dasturiy ta'minotni kompilyatsiya qiling va ESP32 -ga yuklab oling.

Yuklab olingandan va ishga tushirilgandan so'ng, displeyning yuqori satrida "Tugmalar" yozilishi kerak, displeyning ikkinchi qatorida "1 2 3" tugmachalari ko'rsatiladi. 1, 2, 3 tugmachalari indikatorlari ostida filtrsiz o'qish qiymatlari va har birining ostida tugma bosish ko'rsatkichlari (bosilgan uchun "1", bosilmagan uchun "0") mavjud. Videodan ko'rinib turibdiki (va uzoq muddat sinovdan o'tganligi tasdiqlangan), dasturiy ta'minot filtri tugmachalarning kirishini ishonchli aniqlash imkonini beradi, bu hech qanday noto'g'ri tetiklanishsiz.

3 -qadam: dasturiy ta'minot haqida

Dastur uchta asosiy kod bo'limini o'z ichiga oladi; Arduino "setup ()" va "loop ()" bo'limlarini va "uzilishlar" bo'limini talab qildi. O'rnatish () bo'limida OLEDni ishga tushirish va xizmatlarni to'xtatish uchun zarur bo'lgan kod mavjud. OLED -ni sozlash funktsiyalari yuqoridagi havolada tasvirlangan. To'xtatish xizmatini sozlash funktsiyalari quyidagicha:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" "InterruptService ()" (uzilish xizmatining tartibi) uchun semafor yaratadi, bu esa tsiklni uzatishni bajarish vaqti kelganida loopni xabardor qiladi.
  • "timerInterruptService = timerBegin (0, 80, rost)" taymerni 0 tayanch taymeridan foydalanib, oldindan bahosi 80 bilan yaratadi.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" InterruptService () ni taymerga biriktiradi.
  • "timerAlarmWrite (timerInterruptService, 1000, rost)" uzilishlar tezligini 1000hz ga o'rnatadi.
  • "timerAlarmEnable (timerInterruptService)" taymer signalini ishga tushiradi va shu bilan xizmatni to'xtatadi.

O'rnatish tugallangach, loop () kiritiladi va darhol satrda to'xtaydi:

agar (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), loop () ma'nosi bu vaqtda InterruptService () dan semafor kelguncha kutadi. Semafor kelganda, loop () kodi bajariladi, tugma ma'lumotlari bilan OLED displeyini yangilaydi, so'ngra yana yuqoriga qaytib, keyingi semaforni kutadi. InterruptService () 1000 gigagertsli tezlikda va LOOP_DELAY qiymati 30 bo'lsa, loop () har 30 soniyada yoki displeyning yangilanish tezligi 33,333 gigagertsda ishlaydi. Bu ekranning yangilanish tezligi ESP32 dasturlarining ko'pchiligi uchun talab qilinganidan yuqori bo'lsa -da, men ushbu sozlamani filtrning javob berish qobiliyatini ko'rsatish uchun ishlatganman. Men sinab ko'rdim va bitta tsikl () o'tishini bajarish uchun zarur bo'lgan vaqtni 20ms deb aniqladim.

InterruptService () 1000 gts tezlikda setup () da yaratilgan taymer tomonidan chaqiriladi. Qachon chaqirilsa, nLoopDelay va nButtonDelay ikkita taymerni yangilaydi. NLoopDelay nolga kamaytirilganda, loop () ga bitta o'tishni bajarishga ruxsat beruvchi semaforni yuboradi, keyin nLoopDelay -ni tiklaydi. NButtonDelay nolga qaytarilganda, u ham asl holatiga qaytariladi va "filtrlar" tugmasi bajariladi.

Har bir tugma filtri o'ziga xos filtr hisoblagichiga ega (masalan, nButton1Count, nButton2Count va nButton3Count). Tugmachaga berilgan sensorli kirish qiymati belgilangan chegara qiymatidan (BUTTON_THRESHHOLD) kattaroq yoki unga teng bo'lsa, tugma va tugma uchun belgilangan filtr hisoblagichi nol bo'lib qoladi. Agar tugmachaga berilgan sensorli kirish qiymati belgilangan chegaradan past bo'lsa, tugmachaga tayinlangan filtr hisoblagichi har 20msda bittaga ko'payadi. Agar filtri hisoblagichi tugma filtri qiymatidan oshsa (BUTTON_FILTER), tugma "bosilgan" hisoblanadi. Bu usulning samarasi, tugmachaning bosilganligini hisobga olish uchun belgilangan chegaradan pastda uzluksiz sensorli kirish qiymatlarining 80ms (20ms nButtonDelay * 4ms nButtonCountN) talab qilinadigan filtrni yaratishdir. Har qanday vaqtda 80 ms dan kam bo'lsa, "xato" deb hisoblanadi va filtr tomonidan rad etiladi.

Qisqa ta'rifni hisobga olgan holda, agar sizda biron bir savol bo'lsa, iltimos, so'rang va men ularga javob berish uchun qo'limdan kelganicha harakat qilaman.

Umid qilamanki, sizga yoqdi!

4 -qadam: "Kelgusi loyiha"

The
The

Yaqinlashib kelayotgan "Intelligrill® Pro" loyihasi chekuvchi ikkita haroratli o'lchagich bo'lib, u quyidagilarni o'z ichiga oladi:

  • Shtaynxart-Xart haroratini o'lchash zondlari hisoblari ("qidirish" jadvallaridan farqli o'laroq) aniqlikni oshirish uchun.
  • Steinxart-Xart hisob-kitoblaridan olingan aniqlikni o'z ichiga olgan 1-probni bajarilishining taxminiy vaqti.
  • Sigaret chekadigan odamlarning haroratini kuzatish uchun ikkinchi prob - 2 -prob (32 dan 399 darajagacha cheklangan).
  • Sensorli kirishni boshqarish moslamalari (bu yo'riqnomada bo'lgani kabi).
  • WIFI -ga asoslangan masofaviy monitoring (aniq IP -manzili bilan, chekish chekuvchilarning Internetga ulanish imkoniyati mavjud bo'lgan joydan kuzatilishini ta'minlaydi).
  • Kengaytirilgan harorat oralig'i (yana 32 dan 399 darajagacha).
  • Intelligrill® transmitterida ham, Wi -Fi -ni qo'llab -quvvatlaydigan aksariyat qurilmalarda ham ovozli tugatish signallari.
  • Harorat F yoki C darajasida ko'rsatiladi.
  • Vaqt formati: HH: MM: SS yoki HH: MM.
  • Batareya displeyi volt yoki % zaryadlangan.
  • Va yaqinda, chekish chekuvchilar uchun PID chiqishi.

"Intelligrill® Pro" men ishlab chiqqan HTML asosidagi eng aniq, xususiyatli va ishonchli bo'lishga intilmoqda.

U hali ham sinovdan o'tmoqda, lekin test paytida tayyorgarlik ko'rishga yordam beradigan taomlar bilan men bir necha funtdan oshib ketdim.

Yana, sizga yoqadi degan umiddaman!

5-qadam: Keyingi: Steinxart-Xartni to'g'rilash bilan ESP32 NTP harorat probining analogli kirishi

Buning uchun algebra kitoblarini changdan tozalashga tayyor bo'ling.

Tavsiya: