步驟1:硬件。
該設(shè)計采用以下硬件:
一,WiFi套件32.
三個,3/8“金屬孔塞。
三,四“長度的28awg電線。
為了組裝硬件,我執(zhí)行了以下步驟:
剝離并鍍錫每根4“線長的末端,如圖所示。
將第一根導(dǎo)線焊接到ESP32的針腳13(TOUCH4,或”T4“,輸入)。/li》
將第二根導(dǎo)線焊接到ESP32的第12針(TOUCH5,或“T5”,輸入)。
將第三根導(dǎo)線焊接到ESP32的第14針(TOUCH6,或“T6”輸入)。
將三個3/8“金屬孔塞中的每一個焊接到三根線長度的自由端。
步驟2:軟件。
文件“Buttons.ino”是一個包含設(shè)計軟件的Arduino環(huán)境文件。除此文件外,您還需要WiFi Kit32 OLED顯示屏的“U8g2lib”圖形庫(有關(guān)此庫的更多信息,請參閱https://github.com/olikraus/u8g2/wiki)。
在Arduino目錄中安裝U8g2lib圖形庫,并將“Buttons.ino”加載到Arduino環(huán)境中,編譯并將軟件下載到ESP32中。
下載并運行后,頂部的顯示屏應(yīng)顯示“按鈕”,顯示屏的第二行顯示“1 2 3”作為按鈕指示。在每個1,2,3按鈕指示器下方是未經(jīng)過濾的觸摸讀取值,并且在每個按鈕指示器下方是按鈕按下指示器(按下“1”,未按下“0”)。從視頻中可以看出(并且經(jīng)過長期測試確認(rèn)),軟件過濾器提供可靠的按鈕輸入檢測,沒有錯誤觸發(fā)。
步驟3:關(guān)于軟件。
該軟件包含三個主要代碼部分; Arduino需要“setup()”和“l(fā)oop()”部分,以及“Interrupts”部分。 setup()部分包含初始化OLED和中斷服務(wù)所需的代碼。 OLED設(shè)置功能在上面的鏈接中描述。中斷服務(wù)設(shè)置功能如下:
“timerLoopSemaphore = xSemaphoreCreateBinary()”為“InterruptService()”(中斷服務(wù)程序)創(chuàng)建一個信號量,以便在時間結(jié)束時通知loop()執(zhí)行循環(huán)傳遞。
“timerInterruptService = timerBegin(0,80,true)”使用預(yù)定義為80的硬件定時器0創(chuàng)建一個定時器。
“timerAttachInterrupt(timerInterruptService,&InterruptService,true)”將InterruptService()附加到計時器。
“timerAlarmWrite(timerInterruptService,1000,true)”將中斷服務(wù)速率設(shè)置為1000hz。
“timerAlarmEnable(timerInterruptService)”啟動計時器警報,從而中斷服務(wù)。
設(shè)置完成后,進入loop()并立即停在該行:
if(xSemaphoreTake(timerLoopSemaphore,portMAX_DELAY)== pdTRUE),
意味著loop()將在此時等待,直到來自InterruptService()的信號量到達(dá)。當(dāng)信號量到達(dá)時,loop()代碼執(zhí)行,用按鈕數(shù)據(jù)更新OLED顯示,然后返回到頂部再次等待下一個信號量。 InterruptService()以1000hz運行且LOOP_DELAY值為30,loop()每30ms執(zhí)行一次,或以33.333hz的顯示更新速率執(zhí)行。雖然這是大多數(shù)ESP32應(yīng)用程序所需的更高的顯示刷新率,但我使用此設(shè)置來說明過濾器的響應(yīng)性。我測試并確定執(zhí)行單個循環(huán)()傳遞所需的時間為20ms。
InterruptService()由setup()中創(chuàng)建的計時器以1000hz的速率調(diào)用。調(diào)用時,它會更新兩個向下計數(shù)器,nLoopDelay和nButtonDelay。當(dāng)nLoopDelay向下計數(shù)到零時,它發(fā)送信號量,允許loop()執(zhí)行單次傳遞,然后重置nLoopDelay。當(dāng)nButtonDelay向下計數(shù)到零時,它也會被重置,然后按鈕“過濾”執(zhí)行。
每個按鈕過濾器都有一個唯一的過濾器計數(shù)器(例如nButton1Count,nButton2Count和nButton3Count)。只要分配給按鈕的觸摸輸入值大于或等于定義的閾值(BUTTON_THRESHHOLD),分配給按鈕和按鈕的過濾器計數(shù)器保持為零。如果分配給按鈕的觸摸輸入值小于定義的閾值,則分配給按鈕的過濾器計數(shù)器每20ms遞增一次。當(dāng)過濾器計數(shù)器超過按鈕過濾器值(BUTTON_FILTER)時,該按鈕被視為“按下”。此方法的效果是創(chuàng)建一個過濾器,需要80ms(nmsutDelay * 4ms nButtonCountN,其中N是按鈕數(shù)),連續(xù)觸摸輸入值低于定義的閾值,以考慮實際按下的按鈕。任何小于80毫秒的時間都被視為“故障”并被過濾器拒絕。
鑒于此簡要說明,如果您有任何疑問,請隨時提出,我會盡力回答。
希望你喜歡它!
第4步:“即將推出的項目”。
即將推出的項目“Intelligrill?Pro”是一款雙溫度探頭吸煙器監(jiān)測儀,具有以下特點:
Steinhart-Hart溫度探頭計算(與“查找”表相對)增加準(zhǔn)確性。
探針1的預(yù)測完成時間,包括Steinhart-Hart計算得出的提高的準(zhǔn)確度。
第二個探頭,探頭2,用于監(jiān)測吸煙者的溫度(限制在32到399度之間)。
基于WIFI的遠(yuǎn)程監(jiān)控(使用固定的IP地址,可以在任何可以連接互聯(lián)網(wǎng)的地方監(jiān)控吸煙者的進度)。
擴展溫度范圍(再次為32至399度)。
在Intelligrill?發(fā)射器和大多數(shù)支持WiFi的監(jiān)控設(shè)備上發(fā)出聲音完成警報。
溫度顯示為°F或°C。
時間格式為HH:MM:SS或HH:MM。
電池顯示為伏特或%充電。
即將推出基于螺旋鉆的吸煙者的PID輸出。
“Intelligrill?Pro”正在測試成為最準(zhǔn)確,功能最強大且基于HTML的Intelligrill?我已經(jīng)設(shè)計好了。
它仍然在測試中,但是在測試過程中它正在協(xié)助準(zhǔn)備,我已經(jīng)獲得了超過幾磅。
再次,我希望你喜歡它!
步驟5:下一個:ESP32 NTP溫度探頭模擬輸入與Steinhart-Hart校正
Be準(zhǔn)備為你的代數(shù)書除塵。
-
觸摸
+關(guān)注
關(guān)注
8文章
199瀏覽量
64790 -
ESP32
+關(guān)注
關(guān)注
20文章
1005瀏覽量
18773
發(fā)布評論請先 登錄
PT8020電容式觸摸控制ASIC中文手冊
PT8041電容式觸摸控制ASIC中文手冊
PT8032電容式觸摸控制ASIC中文手冊
電容式觸摸芯片 超強抗干擾 選型指南、應(yīng)用方案

MSP430電容式觸摸電源設(shè)計器GUI用戶指南

電容式觸摸感應(yīng)和SYS/BIOS

使用OpenSCAD腳本自動化電容式觸摸傳感器PCB設(shè)計

電容式觸摸手勢軟件和調(diào)整應(yīng)用說明

基于MSP430實現(xiàn)電視的電容式觸摸按鍵

電容式觸摸感應(yīng)技術(shù)的原理和類型
具備超強抗干擾和自動校準(zhǔn)功能的單通道電容式觸摸IC-GT301L

評論