BMduino:使用 Arduino、Keil和 BMCOM 開啟您的創客之旅!
產品說明
BM53A367A 採用 3.3V 系列 Cortex®-M0+ 內核的 HT32F52367 為主控 MCU,支援多種供電方式,具備額外的I2C、SPI、UART、USB 等常用通訊介面。
與 Arduino UNO R3 腳位相容
BMduino-UNO BM53A367A 的腳位與 Arduino UNO R3 相容,電壓準位為 3.3V (Arduino UNO R3 則為 5V)。
除了標準的 Arduino UNO R3 腳位之外,BM53A367A 另提供 BMCOM1 及 BMCOM2 兩個連接器,並貼心地設計用跳帽設定連接器的電壓準位為 3.3V 或 5V。
板上自帶有電壓轉換電路,讓您在外接使用 5V 電壓的模組時,可以直接連接 BMCOM,不須擔心電壓轉換的問題。
燒錄方式
BM53A367A 開發板上自帶有 e-Link32 Lite 電路,可用來除錯及燒錄,因此 BM53A367A 燒錄程式時不須使用 TX 及 RX 腳位 (Arduino UNO R3 則需使用)。
Arduino UNO R3 上的 6-pin ICSP 連接器,在 BM53A367A 上則不需要有 ICSP 的功能,因此 BM53A367A 將此 6-pin 連接器設計成為另一組 SPI/UART 介面,其電壓準位也可用跳帽選擇 3.3V 或 5V,外接 5V 的模組時不需額外的電壓轉換電路。
開發環境
除了在 Arduino IDE 開發環境下工作,BM53A367A 也可工作於 Keil IDE 開發環境,其使用方式與 ESK32-30510,HT32F52367 開發套件相同。
什麼是 BMCOM?
BMCOM 是一個由 I2C/UART 模組所組成的生態系統,其中包括感測器、執行器、顯示器和無線模組等,可以加速原型設計。
BMCOM 連接器有兩種型式:BMCOM1 是 2.54mm 間距的 5 針接頭,而 BMCOM2 是 1mm 間距的 5 針 JST 連接器。
關於第三方 Arduino Library 的相容性
網路上有許多開源的 Arduino 程式庫,使用程式庫可以節省我們開發專案的時間。然而 Arduino 程式庫是可以設計為指定在哪一種 MCU 架構上執行,例如:為 avr 架構的 MCU 所寫的 Arduino 程式庫,BM53A367A 可能就無法使用 (編譯過程會失敗)。
在 Arduino 程式庫目錄裡的 library.properties 檔案內容中,有一行 architecture= 的指令是用來指定在哪一種 MCU 架構上執行,例如:architecture=* 代表該 Arduino 程式庫可在每一種 MCU 架構上執行,architecture=avr 代表該程式庫僅能在 avr 架構的 MCU 上執行。
然而,我們實際測試的結果是有極少部分例外的,例如:宣告 architecture=avr,但 BM53A367A 執行起來是沒有問題的 (例如 LiquidCrystal_I2C.h),或是宣告 architecture=* 但 BM53A367A 編譯過程卻有 error。
我們建議使用者在選擇第三方 Arduino Library 時,可依照以下步驟進行:
- 選擇宣告 architecture=* 的程式庫:熱門的元件或模組通常有多個開源的 Arduino 程式庫可選擇,選擇宣告 architecture=* 的程式庫來使用。
- 若找不到宣告 architecture=* 的程式庫時,可以嘗試使用非 architecture=* 的程式庫,編譯過程若只有 warning 而無 error,可實際測試是否能正常工作,例如上述的LiquidCrystal_I2C.h。
如果還是找不到合適的程式庫,您可以自己開發程式庫,或是與我們聯繫是否有現成的程式庫。
關於 WS2812B RGB LED 燈條 Library
在使用 WS2812B 燈條時,最常見的 Arduino 程式庫應為 Adafruit NeoPixel。
然而,由於 BMduino-UNO 與 Arduino UNO 使用的 MCU 不同,生成 WS2812B 燈條驅動波形的底層程式碼有所差異,因此 BMduino-UNO 開發板無法與 Adafruit NeoPixel 程式庫相容。
針對此問題,我們開發了 BMduino_WS2812 程式庫 (您可在「文件」頁籤中下載此檔案),以便使用者輕鬆調用。
BMduino_WS2812 程式庫處理了 WS2812B 燈條的底層 Timing 問題,使用時與 Adafruit NeoPixel 程式庫類似,需要設定 LED 燈珠數量及輸出 LED 資料的腳位。
請參考以下的程式範例:
#include <BMduino_WS2812.h>
#define LED_PIN 6
#define LED_COUNT 10
BMduino_WS2812 myWS2812(LED_COUNT, LED_PIN);
由於 BMduino-UNO 開發板的電壓準位為 3.3V,因此使用 BMduino UNO 開發板的 I/O 腳位連接 WS2812B 燈條的 DIN 腳位時,WS2812B 燈條的 VDD 腳位需接至 3.3V,而非 5V。
或是您也可以將 WS2812B 燈條接上 BMduino-UNO 開發板的 BMCOM 連接器,並使用跳帽將電壓設為 5V,如此一來 WS2812B 燈條即可在 5V 電壓下運行。
請注意:BMduino_WS2812 程式庫需要使用 I/O 腳位生成精準的定時,會暫時停用中斷功能。