ESP32 開發板捉鬼記
3 |
話說前陣子買了 ESP32 開發板來玩,一併入手了 32x8 的 LED 矩陣顯示器,成功用 Arduino 跟 ESP8266 做出跑馬燈後,下一步當然要試試用新玩具做跑馬燈。結果,入手第二天我就摔進大坑,掙扎了十天才爬出來... Orz
依爬文查到的資料,有現成的程式範例通吃 Arduino / ESP8266 / ESP32,大家都嘛複製貼上程式、插好五條電線就做出跑馬燈,我在 Arduino 跟 ESP8266 的經驗也是如此,但搬到 ESP32 上,LED 顯示器毫無反應。
由於是第一次玩 ESP32,對於 C 語言跟 ESP 硬體的了解也有限,不敢確定錯的是自己還是硬體,但基於我特別挑了原廠貨,品質不應有問題,優先懷疑的對象當然是身為菜鳥的自己。於是接下來就陷入到處查資料,換程式庫的無窮循環。清明連假結束還沒試出來,接著幾天下班回吃完飯做完正事,便一路搞到睡前最後一刻,上床腦中還不斷吶喊「為什麼?為什麼?」,隔天再繼續「利用通勤時間先查資料,回家動手做實驗」的生活,但怎麼就是不成功,折騰了近十天。
LED 顯示器跟開發板間是用 SPI 通訊協定溝通,於是我研究了 SPI 通訊的原理,知道它靠三條線 SCLK,MOSI 跟 CS 傳資料:CS 通知周邊設備我要傳資料給你,SCLK 傳固定頻率決定傳輸速度,主機對周邊的資料則是走 MOSI 傳過去。
同樣的程式在 ESP8266 運作正常,成為珍貴的對照觀察對象(也是本次讓案情急轉之下的關鍵),在知道 SPI 線路傳輸原理後,我想起之前買的玩具示波器,靠著它我看到「正常的傳輸訊號」應該長什麼樣子(如下圖),再比對有問題的 ESP32 開發板,我發現一件天殺的事實 - SCLK 時鐘訊號正常,MOSI 資料訊號彷彿心跳停止的心電圖,全程平坦。
由 MOSI 無訊號的線索又查了一陣子程式,試著找出我到底是哪裡做錯導致沒啟動訊號傳送,在所有可能的環節都排除後,我終於開始懷疑硬體了! 仔細查看 ESP32 開發格,發現晶片上 MOSI 資料線對映針腳的焊點怪怪的,再用三用電錶一量,我忍不住飆出髒話! 這個焊點問題導致 MOSI 資料線跟旁邊的人GND 接地線短路,永遠都不會有訊號傳出來啊啊啊啊~~
這段時間爬了不少文章,我知道 ESP32 還有第二組 SPI 可用,便修改程式改用第二組 SPI....
喵的,我的 ESP32 跑馬燈終於動了! 好不容易把東西做出來,我卻只想罵髒話,真是難得的體驗。
上週才踩到杜邦接線不通的雷,網友 Sam 說的好「新品故障或不良,真的會被玩死」,一語成讖,我真的被這塊 ESP32 玩個半死,尤其當你是新手,對於「怎麼做會成功」跟「什麼叫正常」一知半解,有問題總先懷疑自己,於是就這麼錯放兇手逍遙法外,自我檢討到無地自容。歷經這兩次教訓,我學到一些事:
- 電子小零件如果價格不貴,就多買一份放著吧。出問題時,手邊有沒有對照組往往是天堂與地獄的差別。
- 原廠的東西不一定沒問題,沒有拿到明確不在場證據前,不要輕縱任何嫌犯。
- 查數位電路問題示波器是好物,即使幾百塊的玩具示波器,看看有沒有訊號也好過當瞎子。
【後話】
連絡網路賣家詢問保固的事,再增加心得一則:電子零件無保固,請把握黃金頭七。
ESP32 板子還有第二組 SPI 可用,同時用到兩組 SPI 的機率不高,嚴格來說只少了一根 P23,使用上也還好,僅止於心情不美麗而已。改天心情好,再來試試重焊那兩個短路的焊點,說不定我能修好它(或把它搞壞,哈!)。
Comments
# by m
電子電路最討厭的就是零件悶騷(燒)搞自閉. 要嘛!就爽快一點零件直接爆炸這樣找問題最快。
# by m
ESP32-CAM 也很有趣。 這一位用 ESP32-CAM 做了很多範例。 https://www.youtube.com/user/fuchungyi/videos
# by Leon
雖然一片板子沒多少利潤,但基本的出廠測試也要做吧!!