TYBLE16 Module will become a Mbed family (mbedlization)
.
updated on Apr. 14th, 2018
TYBLE16 run on Mbed OS 5.
Please see following notebook.
/users/kenjiArai/notebook/tyble16-module-as-mbed-os-5-board-mbedlization/
updated on Feb. 25th, 2018
1.注意事項及び免責
重要
Oct.31st,2017 現時点では、BLE機能の動作を確認できていません。
Feb. 25th, 2018 BLE機能の一部分でしょうが、動作確認が出来ました。
しかしながら、まだ充分な確証があるわけではありません。
実際の改造は止めてください。
ファームエアを上書きしてしまい、二度と元の状態に戻せません!!!
TYBLE16には、太陽誘電が開発した独自のファームウェアが書き込まれて出荷されています。
本来の目的は、そのファームウェアを駆使してClient(Central)とServer(Peripheral)間の通信を行うものです。
ここで紹介する方法は、TYBLE16のファームウェアを書き換えてしまい、TYBLE16のみでMbedのプログラムを走らせます。
二度と元のファームウェアに戻せません!!
秋月通商や太陽誘電に対して、更に私に対するクレームは出来ませんので、事前のご理解をお願いします。
あくまでも自己責任として、対応できる方だけ実際の活動を実施願います。
先ずは、本来の機能をお楽しみください。
TYBLE16本来の使用例/Notebook
/users/kenjiArai/notebook/tyble16-module--akizuki/
/users/kenjiArai/notebook/tyble16-module--uart-communication-between-central/
2.準備
この後戻り出来ない実験には、次の準備が必要です。
モジュール | 情報先 |
---|---|
TYBLE16 | http://akizukidenshi.com/catalog/g/gK-12339/ |
TSUBOLink-II (HRM1017用) | https://www.switch-science.com/catalog/1829/ |
注意点)
スイッチサイエンスの商品紹介ページには、
「nRF51822を搭載した他のモジュールへの書き込みは検証しておりません。」
と書かれています。
この点も、自己責任で進めてください。
TUBOLinkは、よく出来たボードです。
スイッチサイエンス、ならびに坪井さんに感謝します。
2.ハードウェア結線図
開発時には、下記のように接続して開発します。
今回は、写真のようにブレッドボード上で接続しました。
開発完了後は、シリアル通信などが不要であれば、電池で動作させることが出来ます。
ビーコンなどでは、フリスクケースにTYBLE16とCR2032のみを入れて動作させることも可能でしょう。
UART機能のTXとRXは、必ずしも必要ありませんが、接続しておけばMbedのprintf機能を使用できます。
TX&RXのピン配置は自由ですが、Serialのコンストラクタと一致する必要があります。
nRF51は、ピン配置が自由に設定できます。
上記配線では、下記を使用します。
Serial pc(P0_1, P0_3); // TX, RX
勿論、実際の配線と一致していれば、他の端子でも動作するところがnRF51の良いところです。
/users/kenjiArai/code/BLE_UART_pin_assign/
/users/kenjiArai/code/BLE_I2C_pin_assign/
3.ソフトウェア開発の方法
mbedはクラッシックのみの対応で、mbed-os-5は、現時点(Oct.,2017)では動作させられません!
オンラインのコンパイラでは、BBC micro:bitのボードを選択して利用することで、動作可能なHEXファイルを作ることが出来ます。
きっと、micro:bitのオンラインコンパイラでも対応できると思います(未確認)。
先ずはBLE機能でなく、LEDの点灯とI2CのLCD、そしてprintfを使用したプログラムを下記に作成しました。
LCDが無くても、下記プログラムは動作しますし、これが動作する環境が整えられれば、開発環境としては完了です。
プログラムの書き込み後に、プログラムの起動が出来ない可能性がありますが、PCと仮想COMラインがつながっていれば、<ALT>+Bにてリセットすれば、動作開始します。
毎回、電源の抜き差しをする必要はありません。
Import programTYBLE16_mbedlized_LEDblinky
TYBLE16 will become mbed chip! You can compile as a BBC micro:bit on the mbed (not mbed-os5).
Feb.25th, 2018
BLE機能を含めて、一様動作させることが出来ましたので、簡単にまとめて置きます。
先ずは、各種BLEボードの違いについて、まとめて見ました。
Board | XTAL[MHz] | LF Setting | ROM[kB] | RAM[kB] |
---|---|---|---|---|
TYBLE16 | 32 | internal RC | 256 | 32 |
TY51822r3 | 32 | Xtal 32.768kHz | 256 | 32 |
Nordic nRF51822 | 16 | internal RC | 256 | 16 |
Micro::bit | 16 | internal RC | 256 | 16 |
このように、TYBLE16と互換性を持っている既存のMbedボードは残念ながらありません。
そこで、Mbedコンパイラーのマクロ機能を使うことで条件を合わせました。
設定を下記のようにします。
絶対にマクロ設定を忘れないでください!!
TARGET_NRF_32MHZ_XTAL TARGET_NRF_LFCLK_RC
外部クリスタルを32MHzに設定し、RTCクロック(LF)を内部RCクロックとします。
残念ながら、RAMサイズは16kBの設定でしかうまく動作させられませんでした(今後再検討要)。
クリスタルは32MHZですが、システムクロックは16MHzで全て同じです。
ライブラリーを作成しました。
Import libraryTYBLE16_BASE
Library for TYBLE16 Module
実は、内部のライブラリーにはmbed-dev4BLEがありますが、これはmbed-devの現時点の最新リビジョンと何ら変更点はありません。
修正は、サイズを縮小するために不要なファイル群を削除しただけです。
ライブラリーは、(1)流用するボードが正しいか、(2)XTAL設定とLF設定が正しいかをチェックしています。
ボードは、
Nordic nRF51822
/platforms/Nordic-nRF51822/
を使用します。
// Check TYBLE-16 configuration cpu_sys(); if (compile_condition() == false) { pc.printf("This is wrong configuration!!\r\n"); while(true) { led1 = !led1; wait(0.2); } } //
チップには、32kBのRAMが存在すると表示されていますが、半分しか使用出来ていません。
いくつかのプログラムを動作確認しました。
Import programTYBLE16_mbedlized_Thermometer
Thermometer program using TYBLE16
Import programTYBLE16_mbedlized_HeartRate
Heart Rate program only for TYBLE16
Import programTYBLE16_mbedlized_EddystoneBeacon
Eddystone Beacon only for TYBLE16
Please log in to post comments.