Мазмуну:

ESP32 Capacitive Touch киргизүү баскычтар үчүн "Металлдык тешикчелерди" колдонуп: 5 кадам (Сүрөттөр менен)
ESP32 Capacitive Touch киргизүү баскычтар үчүн "Металлдык тешикчелерди" колдонуп: 5 кадам (Сүрөттөр менен)

Video: ESP32 Capacitive Touch киргизүү баскычтар үчүн "Металлдык тешикчелерди" колдонуп: 5 кадам (Сүрөттөр менен)

Video: ESP32 Capacitive Touch киргизүү баскычтар үчүн
Video: ESP32 Capacitive Touch Sensor switch to control Relays - ESP32 Touch Switch tutorial 2024, Июль
Anonim
Image
Image
Аппараттык
Аппараттык

Мен алдыдагы ESP32 WiFi Kit 32 долбоорунун үч баскычын киргизүүнү талап кылган долбоордун чечимдерин бүтүрүп жатканымда, бир көйгөй бар эле, WiFi Kit 32де бир гана механикалык баскыч жок, бирок киргизүү үчүн үч механикалык баскыч бар. Бирок, WiFi Kit 32де сыйымдуу кириштер көп, ошондуктан мен бир аз убакыт жабдыктарды чогултуп, программаларды жазып, ESP32 сыйымдуу сенсордук киргизүү мүмкүнчүлүгүн жана үч 3/8 "" металл тешикчелерин "колдонуп үч баскычтуу киргизүү дизайнын сынап көрдүм. баскычтар.

ESP32 сыйымдуу сенсордук кирүүлөрү менен тажрыйба жүргүзгөн ар бир адам тапкандай, сенсордук кирүүлөр ишенимдүү киргизүүнү аныктоо үчүн чыпкалоону талап кыла турган деңгээлде шуулдайт. Алдыдагы долбоордун жалпы бөлүктөрүнүн санын азайтуу үчүн, мен үзгүлтүккө учураган санарип чыпкасы (чыпкадан башка "четтетүү", бирок сырткы чыпканын жабдууларын кошпогондо, ызы -чуулуу кириштерди басаңдата аларын аныктадым.. Тестирлөөдөн кийин, 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 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо

"Buttons.ino" файлы - бул дизайн үчүн программалык камсыздоону камтыган Arduino чөйрөсүнүн файлы. Бул файлдан тышкары, сизге WiFi Kit32 OLED дисплейи үчүн "U8g2lib" графикалык китепканасы керек болот (бул китепкана жөнүндө көбүрөөк маалымат алуу үчүн https://github.com/olikraus/u8g2/wiki караңыз).

U8g2lib графикалык китепканасы Arduino каталогуңузга орнотулганда жана "Buttons.ino" Arduino чөйрөсүнө жүктөлгөндө, программаны ESP32ге түзүңүз жана жүктөп алыңыз.

Жүктөлүп жана иштетилгенден кийин, дисплейдин жогорку сабында дисплейдин экинчи сабында "1 2 3" деген баскычтын көрсөткүчү катары "Баскычтар" жазылышы керек. 1, 2, 3 баскыч индикаторлорунун ар биринин астында чыпкаланбаган сенсордук окуу көрсөткүчтөрү турат жана ар биринин астында баскычты басуу индикаторлору (басылган үчүн "1", басылбаган үчүн "0"). Видеодон көрүнүп тургандай (жана узак мөөнөттүү тестирлөө тастыкталган), программалык чыпка жалган триггерсиз баскычтын ишенимдүү кирүүсүн аныктоону камсыз кылат.

3 -кадам: Программалык камсыздоо жөнүндө

Программа үч негизги код бөлүмүн камтыйт; Arduino "setup ()" жана "loop ()" бөлүмдөрүн жана "Үзгүлтүктөр" бөлүмүн талап кылды. Орнотуу () бөлүмү OLEDди баштоо жана кызматтарды үзгүлтүккө учуратуу үчүн керектүү кодду камтыйт. OLED орнотуу функциялары жогорудагы шилтемеде сүрөттөлгөн. Үзгүлтүктүү кызматты орнотуу функциялары төмөнкүлөр:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" "InterruptService ()" (үзгүлтүккө учуроо кызматы) үчүн семафор түзүп, циклди өткөрүүнүн убактысы келгенде циклге маалымат берет.
  • "timerInterruptService = timerBegin (0, 80, true)" 80 аппараттык таймери 0 менен таймерди жаратат.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" InterruptService () тиркемесине тиркейт.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" үзгүлтүккө учуроо кызматынын ылдамдыгын 1000Гцке орнотот.
  • "timerAlarmEnable (timerInterruptService)" таймердин ойготкучун баштайт жана кызматты үзгүлтүккө учуратат.

Орнотуу аяктагандан кийин, loop () киргизилет жана дароо сапта токтойт:

эгер (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), мааниси loop () бул учурда InterruptService () тан семафору келгенге чейин күтөт. Семафор келгенде, loop () коду аткарылат, OLED дисплейин баскычтын маалыматы менен жаңыртып, андан кийин кайра кайра кайра кийинки семафорду күтөт. InterruptService () 1000 Гцте жана LOOP_DELAY 30да иштесе, loop () ар бир 30 мс же 33.333 Гц дисплейдин жаңыртуу ылдамдыгында аткарылат. Бул көпчүлүк ESP32 тиркемелери үчүн талап кылынгандан жогорку дисплей жаңыртуу ылдамдыгы болсо да, мен бул жөндөөнү чыпканын жооптуулугун көрсөтүү үчүн колдондум. Мен сынап көрдүм жана бир циклди () өткөрүү үчүн керектүү убакытты 20ms деп аныктадым.

InterruptService () 1000hz ылдамдыкта setup () түзүлгөн таймер тарабынан чакырылат. Чакырылганда, ал эки эсептегичти жаңыртат, nLoopDelay жана nButtonDelay. NLoopDelay нөлгө чейин эсептелгенде, ал циклге () бир өтүүнү аткарууга уруксат берген семафорду жөнөтөт, андан кийин nLoopDelay баштапкы абалга келтирилет. NButtonDelay нөлгө чейин эсептелгенде, ал дагы баштапкы абалга келтирилет, андан кийин "чыпкалар" баскычы аткарылат.

Ар бир баскыч чыпкасы уникалдуу фильтр эсептегичке ээ (мис. NButton1Count, nButton2Count жана nButton3Count). Баскычка дайындалган тийүү киргизүү мааниси аныкталган босого маанисинен чоң же ага барабар болгондо (BUTTON_THRESHHOLD), баскычка жана баскычка дайындалган чыпкасы эсептегич нөл бойдон калат. Эгерде баскычка дайындалган тийүү киргизүү мааниси аныкталган чектен аз болсо, баскычка дайындалган чыпкасы эсептегич ар бир 20ms сайын көбөйтүлөт. Чыпка эсептегич баскычтын чыпкасынын маанисинен (BUTTON_FILTER) ашып кеткенде, баскыч "басылды" деп эсептелет. Бул методдун эффектиси баскычты иш жүзүндө басылган деп эсептөө үчүн аныкталган чектен төмөн 80ms (20ms nButtonDelay * 4ms nButtonCountN, бул жерде N - баскычтын номери) болгон чыпканы түзүү. Качан болбосун 80 мс аз "ката" деп эсептелет жана чыпка тарабынан четке кагылат.

Бул кыскача сүрөттөмөнү эске алуу менен, эгер сизде кандайдыр бир суроолор болсо, сураныч, сураныч, сураныч, мен аларга жооп берүү үчүн болгон күчүмдү жумшайм.

Сизге жакты деп үмүттөнөбүз!

4 -кадам: "Алдыдагы долбоор"

The
The

Келе жаткан "Intelligrill® Pro" долбоору темеки чеккен эки температуралуу монитор болуп саналат:

  • Стейнхарт-Харт температурасын текшерүүчү эсептөөлөр ("кароо" столдорунан айырмаланып) тактыкты жогорулатуу үчүн.
  • Стейнхарт-Харт эсептөөлөрүнөн алынган тактыкты камтыган иликтөөнүн 1 аяктоо үчүн болжолдуу убакыт.
  • Экинчи иликтөө, зонд 2, тамеки чеккендердин температурасын көзөмөлдөө үчүн (32ден 399 градуска чейин чектелген).
  • Capacitive сенсордук киргизүү башкаруу (ушул Нускамада сыяктуу).
  • WIFIге негизделген алыстан мониторинг (туруктуу IP дареги менен, интернет байланышы бар жерден тамеки чеккендердин жүрүшүн көзөмөлдөөгө мүмкүндүк берет).
  • Узартылган температура диапазону (дагы 32ден 399 градуска чейин).
  • Intelligrill® өткөргүчүнүн ичинде да, WiFi жөндөмдүү көпчүлүк байкоочу түзмөктөрдө да аяктоочу сигналдар.
  • Температуранын көрсөткүчү F же C градусында.
  • Убакыт форматы HH: MM: SS же HH: MM.
  • Батарея дисплейи вольтто же % заряддалган.
  • Жана жакында, чылым чеккендер үчүн PID чыгарылышы.

"Intelligrill® Pro" мен иштеп чыккан эң так, өзгөчөлүктөргө толгон жана ишенимдүү HTML негизиндеги Intelligrill® болуу үчүн сыноодон өтүүдө.

Бул дагы эле сыноодон өтүүдө, бирок тестирлөө учурунда даярдоого жардам берген тамактар менен мен бир нече килограммдан ашык арыктадым.

Дагы, сизге жагат деп ишенем!

5-кадам: Кийинки Up: Steinhart-Hart Correction менен ESP32 NTP Температура Пробогу Аналогдук Киргизүү

Бул үчүн алгебра китептериңизди тазалоого даяр болуңуз.

Сунушталууда: