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