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.準備

この後戻り出来ない実験には、次の準備が必要です。

モジュール情報先
TYBLE16http://akizukidenshi.com/catalog/g/gK-12339/
TSUBOLink-II (HRM1017用)https://www.switch-science.com/catalog/1829/

注意点)
スイッチサイエンスの商品紹介ページには、
「nRF51822を搭載した他のモジュールへの書き込みは検証しておりません。」
と書かれています。
この点も、自己責任で進めてください。
TUBOLinkは、よく出来たボードです。
スイッチサイエンス、ならびに坪井さんに感謝します。

2.ハードウェア結線図

開発時には、下記のように接続して開発します。
今回は、写真のようにブレッドボード上で接続しました。
/media/uploads/kenjiArai/mbedlized_3.png
開発完了後は、シリアル通信などが不要であれば、電池で動作させることが出来ます。
ビーコンなどでは、フリスクケースに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/
/media/uploads/kenjiArai/mbedlized_1.jpg
/media/uploads/kenjiArai/mbedlized_0.jpg

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ボードの違いについて、まとめて見ました。

BoardXTAL[MHz]LF SettingROM[kB]RAM[kB]
TYBLE1632internal RC25632
TY51822r332Xtal 32.768kHz25632
Nordic nRF5182216internal RC25616
Micro::bit16internal RC25616

このように、TYBLE16と互換性を持っている既存のMbedボードは残念ながらありません。
そこで、Mbedコンパイラーのマクロ機能を使うことで条件を合わせました。
設定を下記のようにします。
絶対にマクロ設定を忘れないでください!!
/media/uploads/kenjiArai/compile_macro.png

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);
        }
    }
    //

/media/uploads/kenjiArai/system_config.png
チップには、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.