Orodha ya maudhui:

Uingizaji wa Kugusa Uweza wa ESP32 Kutumia "Vifungo Vya Shimo la Metali" kwa Vifungo: Hatua 5 (na Picha)
Uingizaji wa Kugusa Uweza wa ESP32 Kutumia "Vifungo Vya Shimo la Metali" kwa Vifungo: Hatua 5 (na Picha)

Video: Uingizaji wa Kugusa Uweza wa ESP32 Kutumia "Vifungo Vya Shimo la Metali" kwa Vifungo: Hatua 5 (na Picha)

Video: Uingizaji wa Kugusa Uweza wa ESP32 Kutumia
Video: Сервомотор управления с нажимом 2 кнопки с Arduino 2024, Julai
Anonim
Image
Image
Vifaa
Vifaa

Nilipokuwa nikikamilisha maamuzi ya muundo wa mradi ujao wa ESP32 WiFi Kit 32 unaohitaji uingizaji wa vitufe vitatu, shida moja inayoonekana ni kwamba WiFi Kit 32 haina kitufe kimoja cha mitambo, lakini peke yake vifungo vitatu vya mitambo, kwa pembejeo. Walakini, WiFi Kit 32 ina pembejeo nyingi za kugusa zenye uwezo, kwa hivyo nilitumia muda kukusanya vifaa, kuandika programu na kujaribu muundo wa vitufe vitatu ukitumia kipengee cha pembejeo cha ESP32 cha kugusa na 3/8 "" plugs za shimo la chuma "kwa vifungo.

Kama mtu yeyote aliyejaribu majaribio ya kugusa ya ESP32 kugundua, pembejeo za kugusa hakika zina kelele za kutosha kuhitaji kuchuja kwa kugundua pembejeo ya kuaminika. Ili kupunguza jumla ya hesabu za mradi unaokuja, niliamua kuwa kichujio cha dijiti kinachoweza kusumbuliwa (zaidi ya "kuondoa" kuliko kichujio, lakini mimi hupiga kelele), kinyume na kuongeza vifaa vya kichungi vya nje, inaweza kutuliza pembejeo za kelele. Na baada ya kujaribu, ilidhihirika kuwa pembejeo za ESP32, 3/8 "plugs za metali, na programu fulani ya" kuchuja "ya dijiti, ingeweza kutoa ingizo la kuaminika la vitufe vitatu kwa muundo huo.

Kwa hivyo ikiwa una nia ya kupima uingizaji wa capacitive na uchujaji wa dijiti kwenye ESP32, nimejumuisha nambari ya chanzo "Buttons.ino" katika muundo wa mazingira ya Arduino pamoja na maagizo ya mkutano na programu, pamoja na maelezo mafupi ya nambari ya chanzo, kwa kile nilichogundua kuwa pembejeo ya vitufe vya kuaminika sana.

Na kama kawaida, labda nilisahau faili moja au mbili au ni nani anajua ni nini kingine, kwa hivyo ikiwa una maswali yoyote, tafadhali usisite kuuliza kwani mimi hufanya makosa mengi.

Nakala moja ya mwisho, sipokei fidia kwa njia yoyote, pamoja na lakini sio mdogo kwa sampuli za bure, kwa sehemu yoyote inayotumiwa katika muundo huu.

Hatua ya 1: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa

Ubunifu hutumia vifaa vifuatavyo:

  • Moja, WiFi Kit 32.
  • Tatu, 3/8 "kuziba shimo la metali.
  • Tatu, 4 "urefu wa waya 28awg.

Ili kukusanya vifaa, nilifanya hatua zifuatazo:

  • Imevuliwa na kubanwa mwisho wa kila urefu wa waya "4 kama inavyoonyeshwa.
  • Iliuza waya wa kwanza kubandika 13 ya ESP32 (TOUCH4, au "T4", pembejeo).
  • Iliuza waya wa pili kubandika 12 ya ESP32 (TOUCH5, au "T5", pembejeo).
  • Iliuza waya wa tatu kubandika 14 ya ESP32 (pembejeo ya TOUCH6, au "T6").
  • Imeuziwa moja ya kila moja ya vifurushi vitatu 3/8 "vya shimo la metali hadi ncha za bure za urefu wa waya tatu.

Hatua ya 2: Programu

Programu
Programu

Faili "Buttons.ino" ni faili ya mazingira ya Arduino iliyo na programu ya muundo. Mbali na faili hii, utahitaji maktaba ya michoro ya "U8g2lib" kwa onyesho la WiFi Kit32 OLED (angalia https://github.com/olikraus/u8g2/wiki kwa habari zaidi juu ya maktaba hii).

Ukiwa na maktaba ya michoro ya U8g2lib iliyowekwa kwenye saraka yako ya Arduino, na "Buttons.ino" zilizowekwa kwenye mazingira ya Arduino, tengeneza na upakue programu hiyo kwenye ESP32.

Mara baada ya kupakuliwa na kukimbia, laini ya juu ya onyesho inapaswa kusoma "Vifungo" na laini ya pili ya usomaji wa onyesho "1 2 3" kama viashiria vya vifungo. Chini ya kila moja ya viashiria vya kitufe 1, 2, 3 ni alama za kusoma zisizochujwa za kugusa, na chini ya kila moja kuna viashiria vya kitufe ("1" kwa taabu, "0" bila kushinikizwa). Kama inavyoonekana kwenye video (na kadiri muda mrefu ulivyojaribiwa kuthibitishwa), kichujio cha programu hutoa ugunduzi wa uaminifu wa kitufe bila uchochezi wowote wa uwongo.

Hatua ya 3: Kuhusu Programu

Programu hiyo ina sehemu kuu tatu za nambari; Arduino inahitajika sehemu za "kuanzisha ()" na "kitanzi ()", na sehemu ya "Kukatiza". Sehemu ya kuanzisha () ina nambari muhimu ya kuanzisha OLED na kusumbua huduma. Kazi za usanidi wa OLED zimeelezewa kwenye kiunga hapo juu. Usumbufu wa usanidi wa huduma ni kama ifuatavyo:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" hutengeneza semaphore ya "InterruptService ()" (utaratibu wa huduma wa kukatiza) kufahamisha kitanzi () wakati wa kutekeleza kitanzi.
  • "timerInterruptService = timerBegin (0, 80, kweli)" huunda kipima muda kwa kutumia kipima saa 0 na muhtasari wa 80.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, kweli)" inaunganisha InterruptService () kwenye kipima muda.
  • "timerAlarmWrite (TimerInterruptService, 1000, kweli)" inaweka kiwango cha huduma ya kukatiza hadi 1000hz.
  • "timerAlarmEnable (timerInterruptService)" huanza kengele ya saa, na kwa hivyo ikatishe huduma.

Pamoja na usanidi kamili, kitanzi () kimeingizwa na huacha mara moja kwenye laini:

ikiwa (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), kitanzi cha maana () kitangojea wakati huu hadi semaphore kutoka InterruptService () ifike. Wakati semaphore inapofika, nambari ya kitanzi () inafanya kazi, kusasisha onyesho la OLED na data ya kitufe, kisha kurudi juu tena kusubiri semaphore inayofuata. Na InterruptService () inayoendesha saa 1000hz na thamani ya LOOP_DELAY ya 30, kitanzi () hufanya kila 30ms, au kwa kiwango cha sasisho la kuonyesha la 33.333hz. Ingawa hii ni kiwango cha juu cha kuonyesha upya kuliko inavyotakiwa kwa programu nyingi za ESP32, nilitumia mpangilio huu kuonyesha mwitikio wa kichujio. Nilijaribu na kuamua wakati unaohitajika kutekeleza kitanzi kimoja () kupita kuwa 20ms.

InterruptService () inaitwa na kipima muda iliyoundwa kwa usanidi () kwa kiwango cha 1000hz. Ikiitwa, inasasisha kaunta mbili chini, nLoopDelay na nButtonDelay. Wakati nLoopDelay imeshuka chini kuhesabiwa hadi sifuri, hutuma semaphore inayoruhusu kitanzi () kutekeleza pasi moja kisha ibadilishe nLoopDelay. Wakati nButtonDelay imeshuka chini kuhesabiwa hadi sifuri, pia imewekwa upya kisha kitufe cha "vichungi" vitekeleze.

Kila kichujio cha kitufe kina kaunta ya kipekee ya kichujio (k.m nButton1Count, nButton2Count na nButton3Count). Ilimradi thamani ya pembejeo ya kugusa iliyopewa kitufe ni kubwa kuliko au sawa na thamani ya kizingiti iliyofafanuliwa (BUTTON_THRESHHOLD), kaunta ya kichujio iliyopewa kitufe na kitufe hubaki sifuri. Ikiwa thamani ya pembejeo ya kugusa iliyopewa kitufe iko chini ya kizingiti kilichofafanuliwa, kaunta ya kichujio iliyopewa kitufe imeongezwa kwa moja kila baada ya 20ms. Wakati kaunta ya kichujio inapozidi thamani ya kichujio cha kitufe (BUTTON_FILTER), kitufe kinachukuliwa "kushinikizwa". Athari ya njia hii ni kuunda kichujio kinachohitaji 80ms (20ms nButtonDelay * 4ms nButtonCountN ambapo N ni nambari ya kifungo) ya nambari zinazoendelea za kuingiza chini ya kizingiti kilichofafanuliwa ili kuzingatia kitufe kilichoshinikizwa kweli. Wakati wowote chini ya 80ms inachukuliwa kama "glitch" na hukataliwa na kichujio.

Kwa maelezo haya mafupi, ikiwa una maswali yoyote, tafadhali jisikie huru kuuliza na nitajitahidi kujibu.

Matumaini umeifurahia!

Hatua ya 4: "Mradi Unaokuja"

The
The

Mradi unaokuja, "Intelligrill® Pro", ni kipima joto cha kufuatilia moshi chenye:

  • Mahesabu ya uchunguzi wa joto la Steinhart-Hart (tofauti na meza za "kuangalia") kwa usahihi ulioongezeka.
  • Wakati wa kutabiri kukamilika kwenye uchunguzi 1 ukijumuisha usahihi ulioongezeka unaotokana na mahesabu ya Steinhart-Hart.
  • Uchunguzi wa pili, uchunguzi 2, kwa ufuatiliaji wa joto la wavutaji sigara (mdogo hadi digrii 32 hadi 399).
  • Udhibiti wa kuingiza uwezo wa kugusa (kama ilivyo kwenye hii inayoweza kufundishwa).
  • Ufuatiliaji wa kijijini wa WIFI (na anwani ya IP iliyowekwa, inawezesha ufuatiliaji wa maendeleo ya kuvuta sigara kutoka mahali popote unganisho la mtandao linapatikana).
  • Kiwango cha joto kilichopanuliwa (tena digrii 32 hadi 399).
  • Kengele za kukamilika zinazoweza kusikika ndani ya kipitishaji cha Intelligrill® na kwenye vifaa vingi vya ufuatiliaji vya WiFi.
  • Kuonyesha joto kwa digrii F au digrii C.
  • Muundo wa wakati katika HH: MM: SS au HH: MM.
  • Uonyesho wa betri katika volts ama au% inachajiwa.
  • Na inakuja hivi karibuni, PID pato kwa wavutaji wa sigara.

"Intelligrill® Pro" inajaribu kuwa sahihi zaidi, kipengee kilichojaa na cha kuaminika cha Intelligrill® ya HTML ambayo nimebuni.

Bado inajaribiwa, lakini pamoja na chakula kinasaidia kuandaa wakati wa upimaji, nimepata zaidi ya pauni chache.

Tena, natumahi unafurahiya!

Hatua ya 5: Ifuatayo: ESP32 NTP Joto Kuchunguza Analog Input Na Usahihishaji wa Steinhart-Hart

Kuwa tayari kutolea vumbi vitabu vyako vya algebra kwa hii.

Ilipendekeza: