1個 281円のBluetooth LEモジュールDA14531MODが気になるメモ
単価281円って安くない。。?チップ単体( https://www.mouser.jp/ProductDetail/Dialog-Semiconductor/DA14531-00000FX2?qs=sGAEpiMZZMsvjTiS%2FGzm6vJLQHi3tlxZRE0JpN4JETV4W2LKhlGtoQ%3D%3D )より安いんですけど。。流石にリール単価ではチップの方が安い。
- チップの公式: https://www.renesas.com/jp/ja/products/interface-connectivity/wireless-communications/bluetooth-low-energy/da14531-smartbond-ultra-low-power-bluetooth-51-system-chip
- モジュールの公式: https://www.renesas.com/jp/ja/products/interface-connectivity/wireless-communications/bluetooth-low-energy/da14531mod-smartbond-tiny-bluetooth-low-energy-module
SoCとしての構成は普通で、 Cortex M0+ と 48KiB RAM。いわゆるXIPは無いように見える。
SDKドキュメント
(公式から飛べるけど表示できない事がなんか多いので)
APIリファレンスは公式からDoxygenをCHMにしたものがDLできる。
-
モジュールのデータシート: https://www.renesas.com/us/en/document/dst/da14531-module-datasheet
-
SDK の Getting started: http://lpccs-docs.renesas.com/Tutorial_SDK6/index.html
-
モジュールの Getting started: http://lpccs-docs.dialog-semiconductor.com/UM-B-139-Getting-Started-with-DA14531-TINY-Module/
-
SDK overview: http://lpccs-docs.renesas.com/UM-B-119_DA14585-DA14531_SW_Platform_Reference/index.html
-
SDK のknown limitations: http://lpccs-docs.renesas.com/sdk6_kll/index.html
-
ペリフェラル: http://lpccs-docs.renesas.com/da145xx_tutorial_sdk6_peripherals/index.html
-
Sleep mode: http://lpccs-docs.renesas.com/tutorial_da145xx_sleep_modes/index.html
-
BLEアドバタイズ: http://lpccs-docs.renesas.com/DA145xx_Advertising_Tutorial/index.html
-
GATT: http://lpccs-docs.renesas.com/tutorial-custom-profile-DA145xx/index.html
-
セキュリティ(ペアリング等): http://lpccs-docs.renesas.com/Tutorial-DA145x-BLE-Security/index.html
-
デバッグ: http://lpccs-docs.renesas.com/tutorial_da145xx_debugging_techniques/index.html
追加のサンプルはリポジトリで公開されている(MIT):
何故流行ってないの?
- フラッシュマイコンではない 。Dialog製品あるあるだけどOTP(One-Time Programmable)品なので一度プログラムを書くと変更できない。その代わり、Raspberry Pi PicoのようにSPI flashから起動できる内蔵bootromがあるため、そちらを使ってSPI Flashを外付けすることでフラッシュマイコンのように使うことは可能になっている。 DA14681MODは128KiBのFlashを外付けしている。
- I/Oが少い 。I/O 8pinはちょっと。。
- SDKがプロプライエタリ 。Bluetoothスタックとしては RivieraWaves のBLEスタックとそれ用の簡易RTOSが提供される。
- 今時PHY 2Mでない。iOS機器でいうと2018年くらいの仕様。
-
技適コンプライアンスのデータが提供されない 。実際にはちゃんと通してある(モジュールのデータシート(PDF)に該当ページがあった。https://www.tele.soumu.go.jp/giteki/SearchServlet?pageID=jg01_01&PC=018&TC=N&PK=1&FN=200615N018&SN=%94%46%8F%D8&LN=32&R1=*****&R2=*****
)ので、機器の方にラベルを貼れば良い。が、多分モジュールの方にラベルが無い。一応PDF形式でDLできる(Asia地域向けの認証SmartBond-TINY-Certification-Asia
に入っているR 018-200152
)。
フラッシュを内蔵していないので、完全に単体で運用できるのはビーコンのようなパブリックアプリケーションに限られる。ペアリング情報を格納したければ、外部のマイコンから制御するとかフラッシュを外付けするといった対策が必要になる。
Legal
SDKのライセンスは普通( https://www.renesas.com/jp/ja/document/oth/low-power-connectivity-software-license-agreement?r=1592391 )。
- GPLアプリケーションとのリンク禁止 -- Arduinoに組込めない (Arduino Coreは一般にLGPLで、それと静的リンクされて使用されるため)
- 派生物はDialogのチップと共に提供されなければならない
- いわゆるメディカルアプリケーションへの適用は禁止
- 原則的なサンプルコードの開示禁止
最後の要件は逆にサンプルコード開示の明示的な許可でちょっと珍しい:
d. Licensee may distribute the Sample Source Code related to the SDK, including any applications (whether modified or unmodified), as a standalone product to Licensee’s customers or contractors (who shall not have the right to sublicense or further distribute the Sample Source Code), provided such distribution is solely in order to exercise Licensee’s rights under this Agreement (such parties are hereinafter referred to as “Authorized Third Parties”). Licensee shall ensure (and shall conclude suitable agreements so that any Authorized Third Parties shall ensure) that access to the Sample Source Code shall only be provided to those within its organization on a “need to know” basis.
(ただし、ここで言う "Sample Source Code" はSDKに含まれるサンプルコードで、ユーザが(ゼロから)作成したものは指さないと解釈できる。)
要するに、 SDKを入手していない人にはバイナリもソースコードも配布できない 。ユーザには最終製品の形でソフトウェアを配布する必要がある。... ただ、SDKサンプルの追加ぶんはGitHub上でMIT licenseの元Dialog社員とみられる複数のコントリビュータにより開発されており( https://github.com/dialog-semiconductor/BLE_SDK6_examples/pulls?q=is%3Apr )ルネサスによるDialogの買収後も継続している。
SLAに従う限り、提供されたBLEスタックを使うしかなく、それはSDK成果物の再配布なので用途の制約(Dialogのチップと共に提供すること)を受ける。NordicのSDKがBSDL+自由なblob再配布( https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/introducing-nordics-new-software-licensing-schemes )なのとは対照的と言える。
ベンチマーク等は特に禁止していない。
ひととおりMIT Licenseになっているサンプルを確認したところそれなりにAPIを網羅しているようなので、そちらの派生という形でコードを公開するのが安全に見える。それでも、ビルドシステム全体は公開できない。
SDK
SDKはPlayDateのように( https://zenn.dev/okuoku/scraps/aa9c9aa933c143 )コールバックでアプリケーションコードを与える方式になっている。 http://lpccs-docs.renesas.com/Tutorial_SDK6/sdk_architecture.html
NordicやRealtekのようなベンダに比べてチップの規模が小さいぶんSDKもシンプルなので比較的わかりやすい。
サンプルファームウェア
サンプルファームウェアが充実している。
- DSPS -- シリアルポートエミュレータ http://lpccs-docs.renesas.com/Tutorial_DA145xx_DSPS_Getting_Started/index.html
- SUOTA -- Over The Air Updater http://lpccs-docs.renesas.com/Tutorial_SDK6/suota_overview.html
- セカンダリブートローダー -- 内蔵Bootromのブートローダーの代替。 エラッタ回避のために案内されている 。 http://lpccs-docs.dialog-semiconductor.com/UM-B-119_DA14585-DA14531_SW_Platform_Reference/Appendix/Appendix.html#creation-of-a-secondary-bootloader
- HCI -- いわゆる4 wire UART HCIの実装。
アプリ
Nordic同様デバッグ用のモバイルアプリを提供している。Dialogはルネサスに買収されているのでAndroid側のアプリは既にリブランドされている。
- iOS: https://apps.apple.com/jp/developer/dialog-semiconductor/id1080958076
- Android: https://play.google.com/store/apps/details?id=com.renesas.smartbond
DSPSやSUOTAはこれらのアプリ経由でサポートしている。
対抗
従来からの対抗馬としてはon semiのRSL10、旧CypressのPSoC4あたりか。
TIの新製品である CC2340 は量産時1ドル以下というべらんめぇな価格を提示していて、DA14531同様使い捨てBluetoothデバイスという方向性を示している。
あとSilicon LabsのBG2xとか、STのBlueNRGがあるか。
NXPはより大きいSoCしか販売していない。Qualcomm(旧CSR)はこのクラスのSoCはオーディオ向けに集中しているようだ。
新参としてAtmosaicが居るけど今のところよくわからない。エナジーハベスティングコントローラを統合しているのは珍しい特徴。