DEV Community

Cover image for Broadcom APDS 系列晶片
codemee
codemee

Posted on

Broadcom APDS 系列晶片

市面上 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 Image description
0xAB Image description Image description
  • 板子上的 I2C PU 跳線已經焊接在一起,它會連接 VCC 與板子上的兩個 10K 上拉電阻,這兩個 10K 電阻個別連到 SDA 與 SCL,也就建立了 I2C 必要的上拉電路。如果你買到的模組 I2C PU 跳線沒有焊在一起,你就必須自己額外接上 10K 上拉電阻。
  • 板子上的 PS 跳線也已經焊接在一起,這會把 VL 與 VCC 接在一起,提供接近感測的紅外光發射器的電源。如果你買到的模組 PS 跳線沒有焊在一起,就必須自行接 3.3V 電源供電。

APDS 模組的奇異現象

在我測試上面看到的這些模組時,如果直接接線,像是這樣:

Image description

可以正常運作,不過如果是透過麵包板再接一段線路,像是這樣:

Image description

模組端的 VCC 電壓就會降到 1.9V 或更低,導致無法正常運作。這時只要幫 VL 腳位接上 3.3V 電源,像是這樣:

Image description

就可以正常運作了。

提醒事項

市面上有許多 APDS9960 的模組,購買時要特別留意,我之前就從經買過使用公板的模組,板子上印刷是 APDS9960,但實際上是採用 APDS9900 只有接近感測功能的模組,詳情可參考舊文章

Top comments (0)