【啟動AI Maker世代 】2024 MAI 開發者社群大會(5/16-17)
|

推猜成真!Raspberry Pi Pico W藍牙功能到位!

   

作者:陸向陽

2022年6月樹莓派官方發表只要6美元的Raspberry Pi Pico W,是原有Raspberry Pi Pico的衍生版,增加了無線通訊功能,但兩者都是使用同一顆主控晶片RP2040。

Raspberry Pi Pico W(以下簡稱Pico W)發表後歷經一年時間已賣出50萬片,並有眾多應用專案是用它來實現,例如用來架設網站、用來監看植物生長狀態等。

不過,Pico W的無線功能只開啟了部份,只能使用Wi-Fi功能,藍牙功能仍關閉著,而Pico W上的英飛凌(Infineon)CYW43439晶片其實是Wi-Fi、藍牙功能都有的,可以使用2.4GHz頻段的IEEE 802.11n Wi-Fi,也可以使用2.4GHz頻段的藍牙5.2,而且是古典(classic)藍牙、新的BLE(Bluetooth Low Energy)藍牙都可以用。

所以在Pico W一推出時,就已經有人推測之後會再推出可以啟動藍牙功能的版本,或者是已經售出的Pico W可以透過韌體更新重啟藍牙功能,而這個猜測果然沒錯,樹莓派官方在2023年6月釋出更新,可以讓已經賣出的Pico W也能啟用藍牙。(註1、註2)

Pico W支援藍牙現況說明

由於Pico W支援C語言、MicroPython語言的開發,兩種版本都有更新,都可以啟用藍牙,C語言是1.5.1版的軟體開發套件(SDK)上開始支援藍牙,MicroPython則是透過新建立(build)的韌體來支援。

新版雖然支援古典藍牙,但有一部份暫時不行,即ACL(Asynchronous Connectionless Lin)與SCO(Synchronous Connection Oriented Link),估計要更後續才可能完備。而在BLE方面,Pico W可以扮演中央(central)角色也可以扮演週邊(peripheral)角色。

更重要的是,並不是同時間只能選擇使用古典藍牙或BLE藍牙,其實是可以兩者同時啟用的,不需要取捨。至於新版到底支援多少種藍牙應用型態與通訊協定,可以直接上GitHub查看:https://github.com/bluekitchen/btstack#supported-protocols-and-profiles

為了方便大家盡快啟用Pico W的藍牙功能,官方推薦可以參考Pico W的線上文件:https://www.raspberrypi.com/documentation/microcontrollers/,另外也有一份指引可以快速導引創客用Pico W連上Internet:https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

用MicroPython撰寫一個溫度感測器裝邊裝置的程式而後在Pico W上執行,然後在iPhone上用Through LightBlue的App來觀看存取(左)為公告資料、中為服務、左由溫度服務。(圖片來源:樹莓派官網)

歸功時間

每當樹莓派發表新硬體產品、新韌軟體功能後,也會感謝完成實現的眾多參與者,雖然此次是純開發套件、韌體的改版更新,但也有追溯感謝硬體設計的部分,例如RP2040主控晶片與CYW43439無線通訊晶片間是透過3根接腳的SPI匯流排來實現,在此處的設計是一大挑戰,這方面的客服要感謝Infineon的朋友,特別是Greham Smith,他在Pico W量產上提供許多幫助。

而有關藍牙古典、藍牙BLE所使用的SDK其實來自BlueKitchen的BTstack函式庫,而函式庫整合需要許多整合與驗證,這方面很感謝Matthias Ringwald的協助。(註3)

樹莓派官方也對此次支援出人出力,例如Peter Harper負責Pico W主控端的軟體,Graham Sanderson則負責開發SDK,Alasdair Allan則是撰寫文件。Damien George則負責MicroPython的部份。

小結

Pico W歷經一年發展,大體可以看出其推進模式。首先,樹莓派官方認為Wi-Fi的需求會大於藍牙,所以剛推出時只先支援Wi-Fi,之後再透過軟體開發套件與韌體更新來補充支援藍牙。

然後,由於軟體開發套件是在電腦上使用,加上C語言比較輕量,所以C語言的支援速度又比MicroPython快一點,MicroPython是直譯式程式語言,需要換替韌體才能改變直譯環境,也較吃硬體支援,所以支援的速度會慢於C語言。

循這樣的思路,或許未來樹莓派也會開放Pico W上無線通訊晶片,使創客撰寫的程式可以直接跑在無線通訊晶片上,而不一定非要跑在RP2040主控晶片上。

不過若如此做,未來恐怕也不容易換替其他的無線通訊晶片,即便可以換替,依循今日講究程式相容的原則,整個搬遷也會是個大工程,也等於維護另一套軟體生態系統,估計不是樹莓派官方樂見的。

另一個可能性是Pico W未來所用的無線晶片與RPi一致,並有晶片商提供長期技術合作、供貨等承諾,樹莓派官方才可能加強對無線通訊晶片的軟體發展投入。

或者,未來也可能出現接替RP2040的新主控晶片,晶片內直接內建無線通訊功能,不再需要兩顆控制晶片,樹莓派官方最終將走哪個路線?有待後續觀察驗證。

(責任編輯:謝嘉洵)

註1:其實2023年2月的C SDK 1.5.0就已經支援藍牙,但相同時間MicroPython還沒有支援。

註2:Pico W的C SDK是以BSD 3-Clause授權,MicroPython則是採MIT授權。

註3:BTstack函式採行的授權是可以免費個人使用但不可商用,為了避免買了PicoW後應用範疇被限縮,樹莓派官方已經協議出一個補充性的許可授權(一般推測,已經由樹莓派官方支付若干費用給開發相關人員),使Pico W上的BTstack可以商業化開發應用。

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *