Мазмұны:

Түймелер үшін «Металл саңылаулар» көмегімен ESP32 сыйымдылықты сенсорлық кіріс: 5 қадам (суреттермен)
Түймелер үшін «Металл саңылаулар» көмегімен ESP32 сыйымдылықты сенсорлық кіріс: 5 қадам (суреттермен)

Бейне: Түймелер үшін «Металл саңылаулар» көмегімен ESP32 сыйымдылықты сенсорлық кіріс: 5 қадам (суреттермен)

Бейне: Түймелер үшін «Металл саңылаулар» көмегімен ESP32 сыйымдылықты сенсорлық кіріс: 5 қадам (суреттермен)
Бейне: ESP32 Tutorial 18 - Detecting Tilt using ESP32 | SunFounder's ESP32 IoT Learnig kit 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 жиынтығы 32.
  • Үш, 3/8 дюймдік металл тесіктер.
  • Үш, 4 дюймдік 28awg сым.

Жабдықты жинау үшін мен келесі әрекеттерді орындадым:

  • Әр 4 дюймдік сымның ұштарын суретте көрсетілгендей алып тастап, қаңылтырлады.
  • ESP32 (TOUCH4 немесе «T4», кіріс) 13 -ші түйреуішіне бірінші сым дәнекерленген.
  • Екінші сымды ESP32 (TOUCH5 немесе «T5», кіріс) 12 істігіне дәнекерледі.
  • Үшінші сымды ESP32 (TOUCH6 немесе «T6» кірісі) 14 түйреуішіне дәнекерледі.
  • 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, шын)» таймерді 0 аппараттық таймерді пайдаланып, алдын ала шкаласы 80.
  • «timerAttachInterrupt (timerInterruptService, & InterruptService, true)» InterruptService () -ті таймерге қосады.
  • «timerAlarmWrite (timerInterruptService, 1000, true)» үзіліс қызметінің жылдамдығын 1000Гц -ге орнатады.
  • «timerAlarmEnable (timerInterruptService)» таймер дабылы басталады, осылайша қызмет үзіледі.

Орнату аяқталғаннан кейін loop () енгізіледі және бірден жолда тоқтайды:

егер (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), loop () мағынасы осы сәтте InterruptService () семафоры келгенше күтеді. Семафор келгенде, цикл () коды орындалады, 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) үлкен немесе оған тең болғанша, түйме мен түйме үшін тағайындалған сүзгі есептегіші нөл күйінде қалады. Егер түйменің тағайындалған сенсорлық кіріс мәні анықталған шекті мәннен аз болса, түйменің тағайындалған сүзгі есептегіші әрбір 20 мс сайын бір ұлғаяды. Сүзгі есептегіші түйме сүзгі мәнінен (BUTTON_FILTER) асып кеткенде, түйме «басылған» болып саналады. Бұл әдістің әсері - батырманың іс жүзінде басылғанын ескеру үшін анықталған шекті мәннен төмен үздіксіз сенсорлық кіріс мәндерінің 80ms (20ms nButtonDelay * 4ms nButtonCountN) талап ететін сүзгіні құру. Кез келген уақытта 80 мс -тен аз уақыт «ақаулық» болып саналады және оны сүзгі қабылдамайды.

Осы қысқаша сипаттаманы ескере отырып, егер сізде сұрақтар туындаса, сұраудан тартынбаңыз, мен оларға жауап беруге бар күшімді саламын.

Сізге ұнады деп үміттенемін!

4 -қадам: «Алдағы жоба»

The
The

Алдағы «Intelligrill® Pro» жобасы темекі шегуге арналған қос температуралы монитор болып табылады:

  • Дәлдікті жоғарылату үшін Стейнхарт-Харт температуралық зондының есептеулері («қарау» кестелерінен айырмашылығы).
  • Стейнхарт-Харт есептеулерінен алынған жоғары дәлдікті қамтитын 1-ші зондтың аяқталуының болжамды уақыты.
  • Темекі шегетіндердің температурасын бақылауға арналған екінші зонд 2 -зонд (32 -ден 399 градусқа дейін шектелген).
  • Сенсорлық кірісті басқарудың сыйымдылығы (осы нұсқаулықтағыдай).
  • WIFI негізіндегі қашықтан бақылау (бекітілген IP -адресі бар, интернет байланысы бар кез келген жерден темекі шегушінің барысын бақылауға мүмкіндік береді).
  • Кеңейтілген температура диапазоны (қайтадан 32 -ден 399 градусқа дейін).
  • Intelligrill® таратқышында да, WiFi қолдайтын көптеген бақылау құрылғыларында да аяқталатын дыбыстық дабылдар.
  • Температура дисплейі F немесе C градусында.
  • Уақыт форматы: ЖЖ: АЖ: СС немесе ЖЖ: АА.
  • Батарея дисплейі вольтпен немесе % зарядталған.
  • Жақында шылым шегетіндерге арналған PID шығарылады.

«Intelligrill® Pro» мен әзірлеген HTML -ге негізделген дәл, функционалды және сенімді болуға тестілеуде.

Бұл әлі де сынақтан өтіп жатыр, бірақ тестілеу кезінде дайындалуға көмектесетін тамақтан кейін мен бірнеше фунттан артық жинадым.

Тағы да, сізге ұнайды деп сенемін!

5-қадам: Келесі: Steinhart-Hart түзетуімен ESP32 NTP температуралық зондының аналогтық кірісі

Бұл үшін алгебра кітаптарын шаңнан тазартуға дайын болыңыз.

Ұсынылған: