Switch Science
Switch Science is one of the open source hardware retailers in Japan. We are manufacturing our own products.
You are viewing an older revision! See the latest version
mbed HRM1017をはじめよう
English documentation is on Getting started with mbed HRM1017.
Warning
mbed HRM1017は、オンラインコンパイラへの登録を依頼中です。登録は7月23日前後に行われる予定です。
当面の間、オンラインコンパイラでは、Nordic nRF51822を選択して開発を行ってください。
Note
どうしても日本語のページ名にしたかったため、URLにマルチバイトが入ってしまいました。Tweetで紹介していただくとき、次のURLをコピペしていただくと、正しく短縮されて便利だと思います。
mbed HRM1017をはじめよう https://mbed.org/teams/Switch-Science/wiki/mbed-HRM1017%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%88%E3%81%86
概要¶
mbed HRM1017のピン配置は次の通りです。
本体正面には、タクトスイッチが一つ付いています。これはHRM1017(nRF51822)のリセット用ですが、今のところ機能しません。今後、mbedインターフェースのファームウェアのアップデートで対応予定です。
基板上面のソルダジャンパ2つは、BLEモジュールのTX,RXとmbedインターフェースを接続しています。HRM1017と外部のデバイスをUARTで接続したいときには、このソルダジャンパのハンダを除いてください。
基板底面のソルダジャンパは、USB - レギュレータ - インターフェースチップの3V3と、BLEモジュール - ピンヘッダ の3V3をショートしてます。モジュール単体でバッテリ駆動したいときに、モジュールだけにピンヘッダから給電するときには、この底面のソルダジャンパのハンダを除いてください。
回路図(PDF)
Warning
LEDなどを接続する際には、FETなどでドライブするようにしてください。
nRF51822のポートは0.5mAまでしか流せません。
Note
Windowsでは、COMポートとして認識せるためにドライバのインストールが必要です。Windows serial configurationの「Download latest driver」からドライバのインストーラが入手できます。
販売店¶
- スイッチサイエンス
- 千石電商
- アールティ
- 共立電子産業
- Amazon
とりあえず¶
とりあえず、何かを動かしてみたい方は、PlatformsのnRF51822をご自分のオンラインコンパイラに追加した上で、こちらのプログラムをインポートし、コンパイルしてみてください。
Import programBLE_Health_Thermometer_IRC
Originally from Donal's blog article. http://mbed.org/users/donalm/code/BLE_Health_Thermometer_Blog/ Changed low freq. clock source from XTAL to IRC.
コンパイルすると、hexファイルがダウンロードされます。
nRF51822はBLEのスタックの部分がSoftDeviceということでプログラム可能になっています。自分のプログラムとSoftDeviceの両方を転送するために、hexファイルとなっています。
ボードをUSBでPCに接続すると、MBEDというドライブがマウントされるはずです。ここにhexファイルをドラッグ・アンド・ドロップすることで、mbedにプログラムを転送することができます。hexファイルをドラッグ・アンド・ドロップすると、「MBED」ドライブは勝手にアンマウントされ、再度マウントされます。このとき、HRM1017はリセットされ、コードの実行が始まります。
Nordicが提供している、nRF Toolboxというプログラムをお手持ちのiPhoneにインストールして起動し、HTMというアイコンをタップ、CONNECTというボタンをタップすることで、HRM1017が電波を吹いていれば一覧にデバイスが現れると思います。温度も表示させたい人は、こんな感じでI2Cの温度センサを接続すると良いでしょう。
Low Frequency Clock¶
このプログラムは、Bluetooth LE Example on mbed - Health Thermometer!の記事のプログラムをちょっと改造したものです。Nordicのmkitには32kHzのクリスタルが載っているのですが、このボードには搭載されていません。このため、nRF51822内蔵の発振回路を使うように設定してください。具体的には、コードの画像の部分を次の様に書き換えています。
// SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false); SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);
現在のところ、BLEのライブラリは二種類存在します。
古いもの。
Import libraryBLE_API_Native_blog
BLE API as used in the blog entry.
これを、内蔵の発振回路を使うように改造したのが、こちらです。
Import programBLE_API_Native_IRC
Originally from Donal's blog article. http://mbed.org/users/donalm/code/BLE_Health_Thermometer_Blog/ Changed low freq. clock source from XTAL to IRC.
ライブラリが二つに分離した新しいものです。
Import libraryBLE_API
High level Bluetooth Low Energy API and radio abstraction layer
Import librarynRF51822
Nordic stack and drivers for the mbed BLE API
これを、内蔵の発振回路を使うように改造したものが、こちらです。BLE_APIのほうは、書き換えが必要ありません。
Import librarynRF51822_IRC
changed low freq. clock source to IRC
Information
mbed HRM1017がPlatformsページに正式に登録され次第、ライブラリ「nRF51822」は、オンラインコンパイラでターゲットをmbed HRM1017にすれば自動的に内蔵のクロックを使うように切り替わるようにリクエストを出す予定です。
当面の間、お手間ですが、ライブラリの切り換えないしは、コードの書き換えて対応をお願いいたします。
FAQ¶
HEXファイルを書き込んでもプログラムが動きません¶
オンラインコンパイラでダウンロードしたファイルを直接MBEDドライブに保存した場合、うまく動かないという事例が報告されています。
お手数ですが、いったん他の場所にHEXファイルを保存してから、MBEDドライブにドラッグ・アンド・ドロップして書き込んでください。
Blinkyを実行しても基板上のLEDが点滅しません¶
mbed HRM1017に付いているLEDは、mbedインターフェースのアクセスランプです。
Blinky(Lチカ)は、別途LEDをFETでドライブするように取り付けて行ってください。
Warning
LEDなどを接続する際には、FETなどでドライブするようにしてください。
nRF51822のポートは0.5mAまでしか流せません。
基板上のスイッチを押してもリセットできません¶
本体正面には、タクトスイッチが一つ付いています。これはHRM1017(nRF51822)のリセット用ですが、今のところ機能しません。今後、mbedインターフェースのファームウェアのアップデートで対応予定です。
デバイス名を変えたい¶
ペアリング前に表示されるデバイス名は、AdvertiseにSHORTENED_LOCAL_NAMEを追加します。文字コードはUTF-8です。
const char* deviceName = "\xe3\x81\xa4\xe3\x81\xbcmbedHRM1017"; advData.addData(GapAdvertisingData::SHORTENED_LOCAL_NAME, (uint8_t*)deviceName, strlen(deviceName));
ペアリング後に表示されるデバイス名は、nrf.init()後にsd_ble_gap_device_name_set()を追加します。(古いBLE_Nativeライブラリでのケースです。)
nrf.init(); const char* deviceName = "\xe3\x81\xa4\xe3\x81\xbcmbedHRM1017"; ble_gap_conn_sec_mode_t sec_mode; BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); sd_ble_gap_device_name_set(&sec_mode, (const uint8_t*)deviceName, strlen(deviceName));
接続事例¶
iPhone/iPad¶
iPhone 4S以降など、BLE対応のiOSデバイス
Android¶
Nexus 5 (接続できない場合、OSをアップデートしてください。)
Nexus 7
Windows 8/8.1¶
SurfaceなどのBLE対応デバイス
MakerLabNagoyaのWikiに、色々なTipsが掲載されています。http://makerlab.jp/wiki/kb:mbed-ble
matsujirushiさんによって、githubでコードが公開されています。 https://github.com/matsujirushi/mjwinble
サンプル¶
ANCS¶
Import programBLE_ANCS_SDAPI_IRC
changed low freq. clock source to IRC
1. importし、コンパイルしてダウンロードされたhexファイルを「MBED」ドライブにドラッグ・アンド・ドロップします。
2. USBで接続しているパソコンから、mbed HRM1017にシリアルターミナルで9,600bpsで接続します。
3. iPhoneの、設定→Bluetoothを見ると「ANCC」というデバイスが見つかりますので、選択し、ペアリングします。
4. iPhoneに電話がかかってきたり、プッシュ通知がなされると、シリアルターミナルに様々なメッセージがでます。
BLE_RCBController¶
Import programBLE_RCBController
iOSのBLEコントローラアプリ「RCBController」と接続し、コントローラの操作を取得するサンプルプログラムです。 mbed HRM1017で動作を確認しています。
詳細は、jksoftさんのmbed HRM1017用RCBControllerサンプルプログラムを参照してください。