DEV Community

codemee
codemee

Posted on

ESP32 觸碰接腳 GPIO2 的問題

ESP32 提供有 10 個可以當作觸控感測的接腳, 不過有些 ESP32 開發板, 像是這一個 DOIT DEVKIT 板子上有一顆內建的藍燈, 根據其電路圖, 它就是接在 GPIO2 上, 因此這個接腳就無法用來當作觸控感測的接腳, 實際運用時就要避開這個接腳。

Top comments (7)

Collapse
 
webduinocn profile image
webduino-cn

GPIO2在ESP32模组中已经pull low, 所以只要开机默认为pull low的电路使用,应该都可以,不需要刻意全面回避

Collapse
 
codemee profile image
codemee

你可能沒有瞭解我的意思, 我是指用來當觸控感測接腳的時候, 不是指所有情況都不能用 GPIO2。

Collapse
 
webduinocn profile image
webduino-cn

我觉得还好,这个设计使用1K点阻串上LED,或许在判断触控的threshhold值与其它触控接脚有点差异,但使用触控应该没有问题。在乐欣的ESP32模块中,在GPIO2通常已经串上5K(新版)或1K(旧版)的pull-low电阻。

Thread Thread
 
codemee profile image
codemee

你應該沒有自己測試過, 觸控接腳是類比輸入, 這個接到 LED 的腳位只會讀到 0, 不會變化。其他腳位內部的 pull-low 電阻是可以控制要不要啟用的, 跟這˙個固定接到 LED 的狀況並不一樣。

Thread Thread
 
webduinocn profile image
webduino-cn

我試過了, 在GPIO4/GPIO12/GPIO13/GPIO14/GPIO15 串上 330歐 接地或接3.3V, 這比接LED再接1K接地還嚴峻, 但Touch的檢測還是很正常, 我只是要表達造成GPIO2無法使用Touch的原因或許是很複雜, 不是我們看到接上LED的表面現象。

我是使用Micropython, 其內部的程式碼在這裡: github.com/micropython/micropython...
在102行,這裡並不只是讀值,還判斷返回的 err,或許往下追下去,可以得到真正無法讀值的原因。
PS: 在mpy 1.10 (IDF3.X), GPIO0/GPIO2 Touch正常使用; 在mpy 1.14 (IDF 4.X), GPIO0/GPIO2就有問題

Thread Thread
 
codemee profile image
codemee

我的測試結果和你的不同, GP02 即使在 MicroPython 1.10 下也是無法使用的, 會得到 Touch Pad Error, 可參考附圖。另外, GPIO4 腳若是接電阻到 GND 或是 3v3, 都會導致 Touch Pad Error, 只要拿掉就又恢復正常了。你是使用同一塊開發板嗎?可以看一下你實際的接線和測試結果嗎?

Thread Thread
 
codemee profile image
codemee

圖好像沒有上傳成功: