Բովանդակություն:

ESP32 Capacitive Touch Input Օգտագործելով «Մետաղական անցքերի խրոցակներ» կոճակների համար. 5 քայլ (նկարներով)
ESP32 Capacitive Touch Input Օգտագործելով «Մետաղական անցքերի խրոցակներ» կոճակների համար. 5 քայլ (նկարներով)

Video: ESP32 Capacitive Touch Input Օգտագործելով «Մետաղական անցքերի խրոցակներ» կոճակների համար. 5 քայլ (նկարներով)

Video: ESP32 Capacitive Touch Input Օգտագործելով «Մետաղական անցքերի խրոցակներ» կոճակների համար. 5 քայլ (նկարներով)
Video: Зачем использовать резисторы с кнопками и как использовать их с Arduino 2024, Դեկտեմբեր
Anonim
Image
Image
Սարքավորումներ
Սարքավորումներ

Երբ ես ավարտում էի նախագծման որոշումները ESP32 WiFi Kit 32 -ի վրա հիմնված առաջիկա նախագծի համար, որը պահանջում էր երեք կոճակի մուտքագրում, մեկ նկատելի խնդիր այն էր, որ WiFi Kit 32 -ը չունի մեխանիկական մեկ կոճակ, բայց միայն երեք մեխանիկական կոճակ, մուտքի համար: Այնուամենայնիվ, WiFi Kit 32 -ն ունի շատ տարողունակ հպման մուտք, այնպես որ ես որոշ ժամանակ ծախսել եմ սարքավորումներ հավաքելիս, ծրագրեր գրել և փորձարկել երեք կոճակով մուտքի դիզայն ՝ օգտագործելով ESP32 տարողունակ հպման մուտքի հնարավորությունը և երեք 3/8 "" մետաղական անցքի խրոցակներ ": կոճակներ:

Ինչպես պարզել է ցանկացած մարդ, ով փորձարկել է ESP32 capacitive touch input- երը, հպման մուտքերն, անշուշտ, բավական աղմկոտ են ՝ մուտքի հուսալի հայտնաբերման համար ֆիլտրացում պահանջելու համար: Առաջիկա ծրագրի մասերի ընդհանուր քանակը նվազագույնի հասցնելու համար ես որոշեցի, որ պարզ ընդհատվող թվային զտիչը (ավելի շատ «դեբունս» է, քան ֆիլտր, բայց ես շեղվում եմ), ի տարբերություն արտաքին զտիչի սարքավորումների ավելացման, կարող է հանդարտեցնել աղմկոտ մուտքերը:. Եվ փորձարկումներից հետո պարզ դարձավ, որ ESP32 տարողունակ մուտքերը, երեք 3/8 դյույմանոց մետաղական անցքերի խրոցակներ և թվային «զտիչ» ծրագրային ապահովում, իրոք, ապահովում էին դիզայնի հուսալի երեք կոճակ:

Այսպիսով, եթե դուք հետաքրքրված եք ESP32- ով թվային զտիչով տարողունակ մուտքի փորձարկմամբ, ես Arduino միջավայրի ձևաչափում ներառել եմ «Buttons.ino» աղբյուրի ծածկագիրը ՝ հավաքման և ծրագրավորման հրահանգների հետ միասին, ինչպես նաև աղբյուրի կոդի կարճ նկարագրությունը, այն, ինչ ես գտա, որպես երեք հուսալի մուտքի բարձր հուսալիություն:

Եվ, ինչպես միշտ, ես, հավանաբար, մեկ -երկու ֆայլ եմ մոռացել, կամ ով գիտի, թե ինչ, այնպես որ, եթե որևէ հարց ունեք, խնդրում եմ մի հապաղեք հարցնել, քանի որ ես շատ սխալներ եմ թույլ տալիս:

Եվ մեկ վերջին նշում, ես ոչ մի փոխհատուցում չեմ ստանում որևէ ձևով, ներառյալ, բայց չսահմանափակվելով անվճար նմուշներով, այս դիզայնում օգտագործված որևէ բաղադրիչի համար

Քայլ 1: Սարքավորումներ:

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Դիզայնը օգտագործում է հետևյալ սարքավորումները.

  • Մեկ, WiFi Kit 32:
  • Երեք, 3/8 "մետաղական անցքի խրոցակներ:
  • Երեք, 4 դյույմ երկարությամբ 28awg մետաղալար:

Սարքաշարը հավաքելու համար ես կատարեցի հետևյալ քայլերը.

  • Պոկեք և կապեցեք յուրաքանչյուր 4 դյույմ երկարության ծայրերը, ինչպես ցույց է տրված:
  • Առաջին մետաղալարը կպցրեց ESP32- ի 13 -ի կապին (TOUCH4, կամ «T4», մուտքագրում):
  • Երկրորդ մետաղալարը կպցրեց ESP32- ի 12 -ի կապին (TOUCH5, կամ «T5», մուտքագրում):
  • Երրորդ մետաղալարը կպցրեց ESP32- ի 14 -ի կապին (TOUCH6 կամ «T6» մուտքագրում):
  • Երեք մետաղական 3/8 դյույմանոց անցքերից յուրաքանչյուրից մեկը զոդեց երեք մետաղալարերի երկարությունների ազատ ծայրերին:

Քայլ 2: Softwareրագրակազմ:

Ծրագրային ապահովում
Ծրագրային ապահովում

«Buttons.ino» ֆայլը Arduino միջավայրի ֆայլ է, որը պարունակում է դիզայնի ծրագրակազմ: Այս ֆայլից բացի, ձեզ անհրաժեշտ կլինի «U8g2lib» գրաֆիկական գրադարանը WiFi Kit32 OLED էկրանին (այս գրադարանի մասին լրացուցիչ տեղեկությունների համար տե՛ս

Ձեր Arduino գրացուցակում տեղադրված U8g2lib գրաֆիկական գրադարանով և Arduino միջավայրում բեռնված «Buttons.ino» - ով կազմեք և ներբեռնեք ծրագրակազմը ESP32- ում:

Ներբեռնելուց և գործարկելուց հետո էկրանի վերին տողը պետք է կարդա «Կոճակներ», իսկ ցուցադրման երկրորդ տողում `« 1 2 3 », որպես կոճակի ցուցիչ: 1, 2, 3 կոճակի ցուցիչներից յուրաքանչյուրի տակ գտնվում են հպումով կարդալու չզտված արժեքները, իսկ դրանցից յուրաքանչյուրի ներքևում `կոճակի սեղմման ցուցիչներն են (« 1 »սեղմվածների համար,« 0 »չսեղմվածների դեպքում): Ինչպես երևում է տեսանյութում (և եթե երկարաժամկետ փորձարկումը հաստատված է), ծրագրաշարի զտիչն ապահովում է կոճակի մուտքի հուսալի հայտնաբերում ՝ առանց կեղծ միացման:

Քայլ 3: Aboutրագրաշարի մասին:

Theրագրաշարը պարունակում է կոդի երեք հիմնական բաժին. Arduino- ն պահանջում էր «setup ()» և «loop ()» բաժիններ և «Ընդհատում» բաժին: Setup () բաժինը պարունակում է OLED և ծառայություններն ընդհատելու համար անհրաժեշտ ծածկագիրը: OLED- ի տեղադրման գործառույթները նկարագրված են վերը նշված հղումով: Ընդհատվող ծառայության կարգաբերման գործառույթները հետևյալն են.

  • «timerLoopSemaphore = xSemaphoreCreateBinary ()» - ը սեմալիստ է ստեղծում «InterruptService ()» - ի (ընդհատման ծառայության ռեժիմի) համար `loop () - ի մասին տեղեկացնելու համար, երբ ժամանակն է կատարել loop pass:
  • "timerInterruptService = timerBegin (0, 80, ճշմարիտ)" ստեղծում է ժմչփ ՝ օգտագործելով ապարատային ժմչփ 0 -ը ՝ 80 նախնական սանդղակով:
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" կցում է InterruptService () ժամաչափին:
  • "timerAlarmWrite (timerInterruptService, 1000, true)" ընդհատման ծառայության արագությունը սահմանում է 1000Hz:
  • «timerAlarmEnable (timerInterruptService)» - ը գործարկում է ժամաչափի ահազանգը և դրանով իսկ ընդհատում ծառայությունը:

Տեղադրումն ավարտված է, loop () -ը մուտքագրվում է և անմիջապես կանգնում գծի վրա.

եթե (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), loop () նշանակությունը այս պահին կսպասի մինչև InterruptService () սեմալիստի ժամանումը: Երբ սեմալֆորը գալիս է, loop () ծածկագիրը գործարկում է ՝ թարմացնելով OLED էկրանը կոճակի տվյալներով, այնուհետև վերադառնալով վերև ՝ կրկին սպասելով հաջորդ սեմալֆորին: InterruptService () - ով աշխատում է 1000Hz և LOOP_DELAY 30 արժեքով, loop () - ը կատարվում է յուրաքանչյուր 30 ms- ի դեպքում կամ 33.333Hz - ի ցուցադրման արագությամբ: Թեև սա ցուցադրման թարմացման ավելի բարձր արագություն է, քան պահանջվում է ESP32 ծրագրերի մեծ մասի համար, ես այս պարամետրը օգտագործեցի ՝ ֆիլտրի արագությունը ցուցադրելու համար: Ես փորձարկեցի և որոշեցի, որ մեկ օղակ () անցումը կատարելու համար պահանջվող ժամանակը պետք է լինի 20ms:

InterruptService- ը () կոչվում է setup- ում ստեղծված ժամաչափով () `1000Hz հաճախականությամբ: Calledանգահարելու դեպքում այն թարմացնում է երկու հաշվիչ ՝ nLoopDelay և nButtonDelay: Երբ nLoopDelay- ը հաշվարկվում է զրոյի, այն ուղարկում է սեմալիստը, որը թույլ է տալիս loop- ին () կատարել մեկ փոխանցում, այնուհետև վերականգնում է nLoopDelay- ը: Երբ nButtonDelay- ը հաշվարկվում է զրոյի, այն նույնպես վերակայվում է, ապա «զտիչներ» կոճակը գործարկվում է:

Յուրաքանչյուր կոճակի զտիչ ունի յուրահատուկ զտիչ հաշվիչ (օրինակ ՝ nButton1Count, nButton2Count և nButton3Count): Քանի դեռ կոճակին վերագրված հպման մուտքագրման արժեքը մեծ է կամ հավասար սահմանված շեմի արժեքին (BUTTON_THRESHHOLD), կոճակին և կոճակին հատկացված զտիչի հաշվիչը մնում է զրո: Եթե կոճակին վերագրված հպման մուտքագրման արժեքը սահմանված շեմից փոքր է, ապա կոճակին վերագրված զտիչի հաշվիչը ավելանում է յուրաքանչյուր 20 ms- ով մեկով: Երբ զտիչի հաշվիչը գերազանցում է կոճակի զտիչի արժեքը (BUTTON_FILTER), կոճակը համարվում է «սեղմված»: Այս մեթոդի ազդեցությունն է ստեղծել այնպիսի զտիչ, որը պահանջում է 80ms (20ms nButtonDelay * 4ms nButtonCountN որտեղ N- ը կոճակի թիվն է) սահմանված շեմից ներքև անընդհատ հպման մուտքային արժեքների համար `կոճակը իրականում սեղմված համարելու համար: Msանկացած ժամանակ, երբ 80ms- ից պակաս ժամանակը համարվում է «անսարքություն» և մերժվում է ֆիլտրի կողմից:

Հաշվի առնելով այս համառոտ նկարագրությունը, եթե ունեք որևէ հարց, խնդրում ենք ազատ զգալ հարցնելը, և ես ամեն ինչ կանեմ դրանց պատասխանելու համար:

Հուսով եմ ձեզ դուր եկավ:

Քայլ 4. «Առաջիկա նախագիծ»:

The
The

Առաջիկա նախագիծը ՝ «Intelligrill® Pro», երկակի ջերմաստիճանի զոնդի ծխող մոնիտոր է, որը պարունակում է.

  • Steinhart-Hart ջերմաստիճանի զոնդի հաշվարկները (ի տարբերություն «փնտրման» աղյուսակների) ավելի մեծ ճշգրտության համար:
  • 1-ին հետաքննության ավարտի կանխատեսող ժամանակը `ներառելով Շտայնհարթ-Հարթի հաշվարկներից ստացված ավելացված ճշգրտությունը:
  • Երկրորդ զոնդը ՝ 2 զոնդը, ծխողների ջերմաստիճանը վերահսկելու համար (սահմանափակվում է 32 -ից մինչև 399 աստիճանով):
  • Հպման հզորության կոնդենսատիվ կառավարման տարրեր (ինչպես սույն հրահանգում):
  • WIFI- ի վրա հիմնված հեռավոր մոնիտորինգ (ֆիքսված IP հասցեով, թույլ է տալիս վերահսկել ծխողի առաջընթացը ցանկացած վայրից, որտեղ առկա է ինտերնետ կապ):
  • Ընդլայնված ջերմաստիճանի տիրույթ (կրկին 32 -ից 399 աստիճան):
  • Ավարտման ձայնային ազդանշաններ ՝ ինչպես Intelligrill® հաղորդիչում, այնպես էլ WiFi- ով աշխատող մոնիտորինգի սարքերի մեծ մասում:
  • Temերմաստիճանի ցուցադրում կամ F աստիճանով կամ C աստիճանով:
  • Timeամանակի ձևաչափ ՝ HH: MM: SS կամ HH: MM:
  • Մարտկոցի ցուցադրում կամ վոլտով, կամ % լիցքավորված:
  • Եվ շուտով, PID- ի արտադրանքը ծխող ծխողների համար:

«Intelligrill® Pro» - ն փորձարկում է դառնալ իմ նախագծած առավել ճշգրիտ, հնարավորությունների փաթեթավորված և հուսալի HTML- ի վրա հիմնված Intelligrill®- ը:

Այն դեռ փորձարկման փուլում է, բայց այն կերակուրների հետ, որոնք օգնում են պատրաստել թեստավորման ընթացքում, ես ավելացրել եմ ավելի քան մի քանի ֆունտ:

Կրկին, հուսով եմ, որ ձեզ դուր կգա:

Քայլ 5. Հաջորդը ՝ ESP32 NTP ջերմաստիճանի անոնի անալոգային մուտքագրում Steinhart-Hart ուղղումով

Պատրաստ եղեք փոշոտել ձեր հանրահաշվի գրքերը այս մեկի համար:

Խորհուրդ ենք տալիս: