VagabondWorksTitle
  当Blogは個人の趣味等に関するものです。Vagabond Worksは実在の企業、組織ではありません。
  著作権等は放棄していません。文章や写真、動画の無断盗用、転用はお断りします。

 bCore/bCoreNKD関連情報はこちら⇒bCore/bCoreNKDまとめページ

bCoreのファームウェアを独自のものに書き換える方法

bCoreの背面端子

 bCoreモジュール背面には、ファームウェア書き込み用の接点端子があります。
 この端子を使って、独自のファームウェアをbCoreモジュールに書き込んで使用することが可能です。
 当然ですが、独自のファーム等々については一切のサポートはしかねますので自己責任でお願いします。


 bCoreモジュール背面接点端子の位置及び信号名は左図のようになっています。
 2.54mmピッチのユニバーサル基板の穴に合うように配置されています。



CC Debuggerとの接続方法

 ファームウェアの書き込みには、TI社のCC Debegger を使用します。CC Debuggerは、デジキー や マウザー から購入することができます。
左の写真のように、金メッキのスプリングピンを使用すると、bCoreモジュールを置いてファームウェアを焼いて取り外すといった作業が簡単に行えます。

 接続(bCote ⇔ CC debugger)
  bCore/GND ⇔ CC Debugger/GND(Pin 1)
  bCore/~Rst ⇔ CC Debugger/RESETn(Pin 7)
  bCore/DC ⇔ CC Debugger/Debug Clock(Pin 3)
  bCore/DD ⇔ CC Debugger/Debug Data(Pin 4)
  bCore/Vcc ⇔ CC Debugger/Target Voltage Sense(Pin 2)
  bCore/Bat ⇔ CC Debugger/3.3V(Pin 9)

※bCoreモジュールに外部から電源供給してファームウェアを書き込む場合、bCore/Bat ⇔ CC Debugger/3.3V(Pin 9) は接続しないでください。また、bCore/Bat ⇔ CC Debugger/3.3V(Pin 9)を接続して、bCoreモジュールにCC Debuggerから電源供給する場合、bCoreモジュールにモーターやラジコンサーボを接続していると、電力容量の問題から不具合を起こす可能性があるため、注意が必要です。



ファームウェアの開発、書き込み環境、関連ドキュメント

bCoreモジュールに搭載しているBLEチップ BLE113 のファームウェア開発に必要な環境、資料は、シリコンラボラトリーズのHPからフリーでダウンロードすることができます。(要ユーザー登録)
ドキュメントとツールは英語のものしかありませんが、比較的分かりやすく、またサポートのSNSの対応も非常に良いので開発は楽チンです。

  1. 2015/08/16(日) 22:56:06|
  2. Project: bCore
  3. | コメント:0

bCoreをBLE端末で認識、操作するための技術情報

bCoreをBLEペリフェラルデバイスとして接続、使用する上で必要な情報を以下にまとめます。
これらの情報を用いることで、iOS以外にもAndroidやWindowsシステムからbCoreを操作する独自のアプリを開発することができます。

加筆修正: Burst Command / Characteristic UUID : 389CAAF5-843F-4d3b-959D-C954CCE14655 をFW version F2.10から追加しました。(2017/02/08)


Generic Access Profile / Service UUID : 1800


Device Name / Characteristic UUID : 2A00
Value: bCore_xxxxxxxxxxxx

BLEセントラル側から見えるデバイス名です。
xxxxxxxxxxxxの部分は、モジュール個別に割り当てられた12桁のシリアルIDが入ります。
そのため、複数のbCoreモジュールがあってもそれぞれ異なるデバイス名でBLE端末からは認識されます。
 

Device Information / Service UUID : 180A


Model Number String / Characteristic UUID : 2A24
Value: bCore

デバイスのモデル名です。


Serial Number String / Characteristic UUID : 2A25
Value: xxxxxxxxxxxx

デバイス名の末尾に付加される12桁のシリアルIDと同じものです。
この番号はBLE113モジュール個別に割り当てられているメーカー設定値を用いています。


Firmware Revision String / Characteristic UUID : 2A26
Value: F1.00


bCoreモジュールに焼かれているファームウェアのリビジョンです。
2015/8/16時点の最新は F1.00 となっています。
2015/8/21 時点の最新は F1.01 となっています。


Hardware Revision String / Characteristic UUID : 2A27
Value: H1.00

bCoreモジュールの基板や部品等ハードウェア仕様のリビジョンです。
2015/8/16時点の最新は H1.00 となっています。


Manufacturer Name String / Characteristic UUID : 2A29
Value: Vagabond Works


bCoreモジュールの製造者名です。



bCore Service/ Service UUID : 389CAAF0-843F-4d3b-959D-C954CCE14655


Get Battery Voltage / Characteristic UUID : 389CAAF1-843F-4d3b-959D-C954CCE14655
Properties : read (2byte)

モジュールに接続された電源の電圧値(単位は[mV])を取得します。
iOS Swiftコードの場合、
   characteristic.calue.getBytes(&data, length: 2)
で値を取得した場合に、上位バイトがdata[1]、下位バイトがdata[0]に格納されていますので扱いに注意してください。


Set Motor PWM / Characteristic UUID : 389CAAF2-843F-4d3b-959D-C954CCE14655
Properties : write_no_response (2byte)

モジュールに接続されたモーターを回転させます。
1バイト目に、対象のモーターチャンネル(0 or 1、それ以外はデバイス側で無視)を設定します。
2バイト目に回転方向と強度(0x80で停止、0x81~0xFFで正転、0x7F~0x00で反転)を設定します。 
モーターの種類によっては、0x80に近い数値を設定した場合モーターが回転しないことがあります。
bDriverではUIスライダの中央付近に不感帯を設けています。


Set Port Out / Characteristic UUID : 389CAAF3-843F-4d3b-959D-C954CCE14655
Properties : write_no_response (1byte)

モジュールにポート出力のOn/Offの切り替えを行います。
送信データバイトの各ビットの1/0がポートのOn/Offに対応しています。
bCoreでは、ポート出力は bit0[0x01/0x00]のみ使用可能です。
bCore2では、ポート出力は bit0[0x01]/bit1[0x02]/bit2[0x04]/bit3[0x08]が使用可能です。
bCoreMXでは、ポート出力は bit0[0x01]/bit1[0x02]が使用可能です。

Set Servo Position / Characteristic UUID : 389CAAF4-843F-4d3b-959D-C954CCE14655
Properties : write_no_response (2byte)

モジュールに接続されたラジコンサーの位置を更新させます。
1バイト目に、対象のラジコンサーボチャンネル(0~3、それ以外はデバイス側で無視)を設定します。
2バイト目に位置(0x00~0xFF)を設定します。 
設定する値とラジコンサーボの停止位置は、ラジコンサーボの仕様に依存します。


Burst Command / Characteristic UUID : 389CAAF5-843F-4d3b-959D-C954CCE14655
Properties : write_no_response (7byte)

モジュールの全てのモーター、サーボ、ポート出力を一回の通信で設定をします。
1バイト目:モーターCh0(Mot1)の回転方向と出力(0x80で停止、0x81~0xFFで正転、0x7F~0x00で反転)を設定
2バイト目:モーターCh1(Mot2)の回転方向と出力(0x80で停止、0x81~0xFFで正転、0x7F~0x00で反転)を設定
3バイト目:ポート出力のOn/Offの切り替え。
4バイト目:サーボCh0(Srv1)の目標位置(0x00~0xFF)を設定。
5バイト目:サーボCh1(Srv2)の目標位置(0x00~0xFF)を設定。
6バイト目:サーボCh2(Srv3)の目標位置(0x00~0xFF)を設定。
7バイト目:サーボCh3(Srv4)の目標位置(0x00~0xFF)を設定。
※FW Version F2.10以降で追加されたCharacteristic.
 モジュールにない機能(サーボチャンネル、モーターチャンネル、ポート)のコマンドデータは無視されます。


Get Functions / Characteristic UUID : 389CAAFF-843F-4d3b-959D-C954CCE14655
Properties : read(2byte)

モジュールのサポートしている各機能の有効チャンネルを取得します。
1バイト目の下位4bitがモーター、2バイト目の下位4bitがラジコンサーボ、2バイト目の上位4bitがポート出力を意味します。
bCoreでiOS Swiftコードの場合、
   characteristic.calue.getBytes(&data, length: 2)
で値を取得した場合、data[0] = 0x03(モーターch0, ch1が有効)、data[1] = 0x1f(ポートch0、ラジコンサーボch0~3が有効)となります。
将来的に、対応機能の異なるbCore派生モジュールが生じた場合に、アプリケーション側で対応機能を検知するための機能です。



実装上のコツ、注意事項

・Get Battery Voltage による電源電圧のモニタリングはセントラル側で定期的に行う必要があります。
・各キャラクタリスティックによる通信は、25msec程度以上の間隔を空けて行う必要があります。

  1. 2015/08/16(日) 11:20:18|
  2. Project: bCore
  3. | コメント:0

検索フォーム

カテゴリ

Project: bCore (52)
bCoreとは? (4)
bDriverとは? (4)
bCore製作事例集 (5)
bCoreNKDとは? (13)
bCoreMX & bDriverMX (2)
Project: B5 (1)
Project: Fab mini 4WD (1)
mini.Rock (1)
Project S-4WDS Racing (7)
S-4WDS Racingとは? (1)
S-4WDS Racing進捗 (6)
Project: uLCX2 (2)
uLCX2BLEとは? (1)
uLCX2とは? (1)
Project: LCXX (20)
LCXXとは? (1)
LCXX進捗 (19)
Project: uLCX (12)
uLCXとは? (1)
uLCX進捗 (11)
Project: Land Crawler (39)
Land Crawlerとは? (1)
Land Crawler 進捗 (19)
LC eXtreme 進捗 (19)
AAF 回顧録 (3)
イベント/TV/雑誌など (41)
販売情報 (4)
その他 (10)
Vagabond Works (2)
プロフィール (0)
ICD/HCM (0)

最新コメント

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

カレンダー

07 | 2015/08 | 09
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -