市面上 APDS9960 感測模組很亂,因為是使用公板,所以很難搞清楚買到的是哪一種晶片,最簡單的分辨方式就是檢查裝置的 ID。以 Sparkfun 的程式庫來說,預設並不會顯示讀到的 ID,你可以修改程式庫這裡,把 ID 印出來比較容易判別。以下是根據規格書所列的個別型號晶片的 ID:
型號 | 暫存器位址 | Device ID | 感光 | 距離 | 顏色 | 手勢 |
---|---|---|---|---|---|---|
APDS9960 | 0x92 |
0xAB 0xA8 0x9C |
★ | ★ | ★ | ★ |
APDS9950 | 0x12 | 0x69 | ★ | ★ | ★ | |
APDS9930 | 0x12 | 0x39 | ★ | ★ | ||
APDS9901 | 0x12 | 0x20 | ★ | ★ | ||
APDS9900 | 0x12 | 0x29 | ★ | ★ |
有些程式庫只會以 0xAB 和 0x9C 為判斷標準,很可能會誤判認為你接的不是 APDS9960。另外要注意的是,Sparkfun 的程式庫有兩個版本,開頭有 "Sparkfun" 字樣的是 Arduino 會幫你下載安裝的版本,這個版本看起來已經停止更新,請使用沒有 "Sparkfun" 開頭字樣的版本,這個版本的最新修改會將 APDS9960 的三種 ID 都納入,否則一開始初始時就會失敗,請自行下載 .zip 檔安裝。
APDS9960 模組外觀
我目前測試過的 APDS9960 模組外觀:
Device ID | 照片 |
---|---|
0xA8 | |
0xAB |
- 板子上的 I2C PU 跳線已經焊接在一起,它會連接 VCC 與板子上的兩個 10K 上拉電阻,這兩個 10K 電阻個別連到 SDA 與 SCL,也就建立了 I2C 必要的上拉電路。如果你買到的模組 I2C PU 跳線沒有焊在一起,你就必須自己額外接上 10K 上拉電阻。
- 板子上的 PS 跳線也已經焊接在一起,這會把 VL 與 VCC 接在一起,提供接近感測的紅外光發射器的電源。如果你買到的模組 PS 跳線沒有焊在一起,就必須自行接 3.3V 電源供電。
APDS 模組的奇異現象
在我測試上面看到的這些模組時,如果直接接線,像是這樣:
可以正常運作,不過如果是透過麵包板再接一段線路,像是這樣:
模組端的 VCC 電壓就會降到 1.9V 或更低,導致無法正常運作。這時只要幫 VL 腳位接上 3.3V 電源,像是這樣:
就可以正常運作了。
提醒事項
市面上有許多 APDS9960 的模組,購買時要特別留意,我之前就從經買過使用公板的模組,板子上印刷是 APDS9960,但實際上是採用 APDS9900 只有接近感測功能的模組,詳情可參考舊文章。
Top comments (0)