快速測試 MLX90640
這一年來由於疫情的關係,紅外線熱成像技術也成為 Makers 關注的焦點,由於在銷售 MLX90640 時發生了一些狀況,因此特別研究了一下快速測試 MLX90640 的問題與方法,提供給大家參考。
客戶購買後遭遇測試問題
目前市場上 MLX90640 缺貨狀況依然相當嚴重,好不容易拿到幾批少量的模組,銷售後卻發生客戶反映應用上有問題,後來經過研究後,大致歸納如下:
- 分析客戶退回的 MLX90640 模組,甚至我們自行在利用 ESP32 測試 Arduino Library 後也遭遇到的狀況,拿到樹莓派下測試模組的 I2C 通訊,發現呈現幾種奇怪的現象:
- 掃描 I2C Bus 的速度異常緩慢。
- 每一個 I2C Address 都會反應。
- 當然掃描得到的數據及影像也是異常的。
- 我們採用 NodeMCU-32S 的 ESP32 測試時,遭遇到類似 Problems with finding device on ESP 32 所述的問題。
- 我們懷疑上述問題是類似 Mlx90640 Jetson Nano Support 講述的狀況,有可能是 MLX90640 模組內的 EEPROM 遭到誤寫入,致使 I2C 通訊行為異常。目前抽不出時間來詳細研究,決定先找到快速測試的解決方案。
- 另一個問題是模組上並沒有焊接針腳或是母座,客戶測試時自行焊接造成破壞,一般來說這種狀況應該是不能退貨的。不過因為一開始無法解釋並解決前述問題,就先讓客戶退回來才能繼續研究。
- 既然模組上有 qwiic 插座,雖然在台灣少人運用,但應該是線材特殊的緣故,因此我們決定為每一個模組都搭配一條 QWIIC 轉杜邦母頭的測試線,這樣就能不以焊接方式破壞模組完整性的狀況下,輕易地接上樹莓派進行測試。
測試解決方案
為了因應上述兩大類型問題,整理了一套 MLX90640。其實就是將三個開放源碼專案納入成為 submodules,其中最值得入門上手的就是 pimoroni
這個 submodule,因為它整合了原廠 melexis 的 sample code 開發了幾個適合在樹莓派上編譯與運作的 examples。
只要按照該專案的 README 在 /boot/config.txt
中設定好 I2C 的通訊速率,並安裝一些開發用的 libraries,執行 make I2C_MODE=LINUX
就能很快地編譯出來幾個範例。在硬體上就是把 QWIIC 轉接線的杜邦母頭仔細對應接上樹莓派 GPIO 上的 3.3V
, SDA
, SCL
, 以及 GND
四根針腳,特別注意確認顏色不要插錯,再把 MLX90640 模組接上 QWIIC 接頭即可。
- Red - 3.3VDC Power
- Black - Ground
- Blue - I2C SDA Data
- Yellow - I2C SCL Clock
一切就緒後,模組上的通電指示 LED 應該會亮。此時先確認 I2C 通訊正常,在樹莓派終端機中下達下列指令:
i2cdetect -y 1
掃描 I2C 匯流排,應該會反饋 0x33 位址上有裝置回應。接下來就是進入 examples
目錄中,執行 hotspot
, sdlscale
, 或 test
這幾個範例執行檔即可確認 MLX90640 是否正常工作。
另外客戶也可以參照微雪的 MLX90640-D110 Thermal Camera 技術資料,有時間我們會整合一下相關資源,釐清問題發生原因。
結論
開發韌體時並不見得適用一般的軟體開發觀念,因為涉及「可能變更硬體的半永久性狀態」,所以在運用他人 code 時需要特別留意。前述 Jetson Nano 執行為 Raspberry Pi 撰寫的讀取資料 code 造成模組異常就是一例,我們使用 NodeMCU-32 套用 Arduino library 也是類似狀況。所以最好還是先研讀過拿到的 code 再進行實驗較為穩妥,以免浪費寶貴的時間與金錢。