同事買了一個
號稱使用 APDS9960 感測器的模組, 這感測器可以測環境光線、接近距離、RGB 顏色、手勢, 看起來超威, 趕快找了
對應的程式庫, 可是測了半天, 除了環境光線沒問題外, 其他怎麼測都不行。經過網路耙梳, 發現
有一篇文章的回應中提到, 他在某處購買了好幾個也是號稱使用同一型號感測器的模組, 但其實使用的是舊款的 APDS9930 感測器, 因為根據
APDS9960 規格書上說明, APDS9960 的 device id 應該是 0xAB, 但他讀到的 device id 是 0x39, 和
APDS9930 規格書上標示的相同。經過這一提醒, 我就改用
APDS9930 的程式庫測試, 果然發現同事買的這一款模組並不是使用 APDS9960, 當 APDS9930 測試就成功了。而手勢偵測、RGB 顏色識別都是 APDS9960 才有的功能, 接近感測的資料取得方式也不一樣。
為了確認這一款模組到底是不是使用 APDS9930, 只好去讀取它的 device id, 一讀不得了, 既不是 APDS9960 的 0xAB、也不是 APDS9930 的 0x39, 而是讀到 0x29, 上網路查才真相大白, 原來這個模組使用的是型號更舊的 APDS9900,
規格書上標明的 device id 正是 0x29。這時我再回頭看原本 APDS9960 的測試程式, 發現其實程式一開始執行時就已經有訊息告訴我初始程序有地方出錯, 如果早點注意到, 我們就不會花這麼多時間找問題了。不過淘寶賣家你們也幫幫忙, 不要亂來好嗎?好啦, 我知道那是製造商的問題, 因為他們在電路板背面大剌剌的印了APDS9960 (底下是網路上賣家的照片):
註:
這一篇文章有市面上幾款模組的樣子, 不仔細分辨還真不容易搞清楚。