快速測試 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 再進行實驗較為穩妥,以免浪費寶貴的時間與金錢。