MDBT50Q-DB-40を使ってみた

皆さんこんにちは!今回は「MDBT50Q-DB-40」を使ってみました。これは前回と同じRAYTAC Corporation様の製品で、「MDBT50Q-1M」と言うBLEモジュールが搭載されている評価基板です。実験ではこれを2台使ってセントラル(マスター)とペリフェラル(スレーブ)に設定し、通信させます。
(以前はBluetoothの親子関係を「マスター」と「スレーブ」と称していましたが、「スレーブ」と言う言葉が「奴隷」を連想させるので最近では「セントラル」と「ペリフェラル」と言う呼称に変わってきているようです。

MDBT50Q-DB-40外観写真
MDBT50Q-DB-40外観
搭載モジュール外観
搭載モジュール外観

「MDBT50Q-1M」は面実装タイプのモジュールで、はんだ付け用の端子が基板の下面に有ります。前回紹介した「MDBT42Q-AT-UART-S」に搭載されていたモジュールは基板側面にはんだ付け用の端子が有りましたので、基板さえ作ることが出来ればモジュール単体を購入し、実装する事により実験が出来ましたが、今回のモジュールは基板下面に端子が有るため、半田ごてを入れる事が出来ません。実装にはリフロー炉(自作の強者はオーブントースターを改造してリフロー炉を作っている様ですが)又はホットプレート+クリームはんだが無いとモジュールを載せる事が出来ませんので評価基板を使わざるを得ません。

このモジュールは、購入時にはファームウェア(F/W)が入っておりませんので自分で作るか、何処かから持ってきて書き込む必要が有ります。
幸いこのモジュールに搭載されているICチップはNordic Semiconductor社のチップです。同社はBLEチップの大手メーカーでサンプルプログラムが多数用意されていますので、これを利用します。F/Wの書き込み機は別途用意する必要が有りますので、今回の実験は準備に少し手間がかかります。ですが、通常マイコン搭載機器の開発ではF/Wの書き込み機を用意する事は当たり前の事なので、現物が用意できない方でもF/Wの開発・評価手順ってこんな物なのだなと言う感覚を味わうだけでも良いかと思いますので是非ご覧になってください。また、こちらのページでは無線化をした際のメリット/デメリットについて説明しています。併せてご覧になって下さい。

いつもの様に説明は、
 ・用意するもの
 ・事前設定
 ・実験
の順に進めて行きます。

準備

1.用意するもの

・「MDBT50Q-DB-40」 2台(セントラル-ペリフェラル間で通信をするため)

MDBT50Q-DB-40外観
MDBT50Q-DB-40

RAYTAC Corporation様のBLEモジュール「MDBT50Q-1M」が搭載されている評価ボードです。Nordic Semiconductor社の「nRF52840」と言うICチップが使われており、同社のサンプルプログラムが利用出来ます。

・F/W書き込み機 1台
評価ボードに載っている「nRF52840」は「j-link」と呼ばれる通信方式でF/Wの書き込みを行います。書き込み機単体はSegger社(ドイツ)が製造し、国内でも販売されています。それ以外にもNordic社の評価ボードに付属していたり、Arm系のチップの開発キットに付属していたりしますので使えるかもしれません。今回はNordic社のnRF52 DK(nRF52832用評価ボード)を書き込み機として利用しました。このボードにはDebug outと言うコネクタがあり、外部のチップに対してもF/Wの書き込みやデバッグが出来るようになっています。

nRF52 DK外観
nRF52 DK

nRF52 DKを使ってF/Wの書き込みを行います。このボードはPCとマイクロUSBコネクタを使って接続しますので、マイクロUSBケーブルを別途用意します。電源はUSB経由で給電されますので別に用意する必要は有りません。

・USB電源 2口分
評価ボードの電源は基板上のUSBポート(ミニUSB)から取ります。お使いのPCに沢山USBポートが有ればそれでも結構ですし、USB電源又はUSBハブ(ACアダプターが付くもの)などから供給しても結構です。私は使っているPCのUSBポートが足りなかったのでUSBハブ(PCには繋いでいません)を使って給電しました。(下の写真)

USBハブ
電源供給用USBハブ(ACアダプター付き)

評価基板の電源供給用にUSBハブ(セルフパワータイプ)を使いました。ハブは電源を供給するだけですのでPCには繋いでいません。

・ミニUSBケーブル 2本
評価基板に電源を供給するために必要です。

ミニUSBケーブル
ミニUSBケーブル

・USB-シリアル変換ケーブル(3.3V用) 2本
評価基板とPCを接続し、データのやり取りをするために必要です。

このコラムではすっかりお馴染みになっていると思いますが、念のため型式を再度書いておきます。型式:TTL-232R-3V3(FTDI製)
秋葉原の秋月電子通商様等で販売されています。

・PC 2台(又は1台)
評価ボード接続用に必要です。近距離で実験するなら1台でも大丈夫です。USB-シリアル変換ケーブルを接続しますので、USBコネクタ付きで有る事が必要です。

・PC用ターミナルソフト (TeraTermなど)
通信データの送信/表示のために必要です。PCを2台使う場合はそれぞれのPCに、1台でお使いの場合はターミナルソフトを2個起動すれば大丈夫です。

・nRF Connect for Desktop
Nordic社が出しているユーティリティソフトです。色々なアプリケーションが含まれていますが、今回はこの中のソフト書き込み機能を使います。
Windows用、Linux用、macOS用が有ります。Nordic社のこのページからダウンロードできます。

・nRF5 SDK
Nordic社が出しているF/W開発用の各種資料です。この中にexample(例題)が有り、今回はこの中に有るセントラル用、ペリフェラル用のF/Wを書き込んで実験します。Nordic社のこのページからダウンロードできます。実験ではバージョン16.0.0を使っています。丸の中にチェックを入れた後に一番下の「Download files(.zip)」をクリックしてダウンロードしてください。

・実験基板 2台分
実験基板と言うほどの物では有りませんが、使い勝手を良くするために評価基板の外側にリセットスイッチを付けました。また、USB-シリアル変換ケーブルの取り付け/取り外しを楽に出来るように評価基板上のコネクタからUSB-シリアル変換ケーブルのソケットに合わせてピンヘッダーを接続しました。

評価基板との接続
評価基板との接続

評価基板にリセットスイッチと、USB-シリアル変換ケーブルとの接続を容易にするための変換コネクタを取り付けました。リセットスイッチはJ4のP0.18とGNDの間に、シリアルデータの端子はJ10から引き出しています。写真ではRTS/CTSの端子も接続していますが、実際には不要です。

リセットスイッチ接続部(J4)
リセットスイッチ接続部(J4)
USB-シリアル変換ケーブル接続部(J10)
USB-シリアル変換ケーブル接続部(J10)

2.事前設定

実験の前に二枚の評価ボードにそれぞれセントラル用、ペリフェラル用のF/Wを書き込む必要が有ります。ここではその手順について説明します。

2-1.書き込みアプリのインストール・設定
F/Wの書き込みにはNordic社の「nRF Connect for Desktop」を用いる事を説明しました。ここではインストールの具体的手順について説明します。先のWebページからセットアップファイルをダウンロードして実行すると、PCにインストールされますが、この段階では未だプログラマーとして使えません。インストールされたものを起動すると以下の様な画面が出てくると思います。

nRF Connect for Desktopインストール直後の起動画面
nRF Connect for Desktopインストール直後の起動画面

左の絵はnRF Connect for Desktopをインストールし、起動したときの画面です。各種アプリを起動するためのセンターみたいな物になっていますが、各アプリを使うにはそれぞれインストールが必要です。

今回必要なのはプログラマーなので、「Programmer」と書かれている行の右側に有る「install」をクリックします。

プログラマーをインストール後の画面
プログラマーをインストール後

暫く待つとプログラマーがインストールされ、使えるようになりました。

2-2.評価基板と書き込み機の接続
今回は書き込み機としてnRF52 DKを使います。この接続は以下のとおりです。

書き込み機との接続
書き込み機との接続

評価ボードと書き込み機は評価ボードに添付されている10ピンのフラットケーブルを用いて接続します。評価ボードは電源供給用にUSBコネクタを接続し、書き込み機側はnRF Connect for DesktopをインストールしたPCに接続します。
書き込み機と評価ボードを接続するフラットケーブルですが、1.27mmピッチの5ピン×2列のものです。評価ボード側は逆向きに挿す事も出来てしまいますので注意が必要です。逆挿しを防止するためにチョットした細工をしています。評価ボード側の使っていないピン(具体的には7番ピン)を折り、それに対応するフラットケーブルのコネクタ側に詰め物をして逆挿しが出来ないようにしています。

評価ボード側のピンを折る
評価ボード側のピンを折る
J-linkケーブル加工
対応するソケットに詰め物をする

2-3.nRF5 SDKの解凍
ダウンロードしたnRF5 SDKは、zipファイルに圧縮されていますので解凍して適当なフォルダに入れておいてください。この際、ルートから余り深いフォルダに入れたり日本語名のフォルダの下に入れない方が良いかも知れません。実際に書き込みに使うのは「examples」のフォルダの中にある「ble_central」と「ble_peripheral」のフォルダの下にあるファイルです。以下の図のフォルダを頼りに探して下さい。

セントラル側に書き込むF/W
セントラル側に書き込むF/W
ペリフェラル側に書き込むF/W
ペリフェラル側に書き込むF/W

2-4.F/W書き込み
評価基板と書き込み機を接続し、評価基板のUSBコネクタをUSB電源(PCでも良い)に、書き込み機のUSBコネクタをnRF Connect for DesktopをインストールしたPCに接続したら、「nRF Connect for Desktop」の「Programmer」の右側にある「Open」をクリックします。

プログラマー起動画面
プログラマー起動画面

Openをクリックすると、左の様な別画面が開きます。左上の方にある「Select device」をクリックすると、プログラマーが認識している評価ボードが表示されますので、それを選択します。

デバイスセレクト画面
評価ボードを選択する

「Select device」をクリックすると、認識されているボードが出てくるのでこれをクリックする。

プログラマーとコネクト後
プログラマーと接続が成功した

プログラマーと評価ボードが接続されると左の様な画面になります。画面右側の「Device」メニューの中の「Read」をクリックしてください。少し待つと評価ボードの中に入っているF/Wが読み出され、「nRF52840」と書かれている下に内容が表示されます。

Read実行後の画面

評価ボード上のモジュールに何かF/Wが書かれていた場合は読み出された結果が表示されます。色の付いている所にマウスのカーソルを合わせると「何が」、「どのアドレスに」、「どのくらいの容量で」書かれているかが表示されます。
(新品で試したことが無いので購入直後の場合にどんな表示になるのかは判りません。すいません。。。)
次に書き込むファイルをプログラマーに読み込ませます。画面右側の「File」メニューの下の「Add HEX file」をクリックしてください。

書き込みファイルの選択
書き込みファイルの選択

「Add HEX file」をクリックし、更に「Brouse..」をクリックするとファイルを選べるようになりますので、先ほど説明したファイルを選択します。左の画面はセントラル側のファイルを選択した状態です。

ファイル選択後の画面
ファイル選択後の画面

ファイルを選択すると左側の画面のように領域ごとに色分けして表示されます。マウスのカーソルを合わせると先ほどと同様にエリアごとの説明が出てきます。
次に「Device」メニューの下の「Erase & write」をクリックし、書き込みを実行します。

書き込み完了時の画面
書き込み完了時の画面

暫く待つと書き込みが完了し、左の様な画面になります。ここで「Read」をクリックすると書かれた内容が読み出され、右側の画面(選択したファイルの内容)と比較出来ます。

以上でF/Wの書き込みは完了です。書き込み終了後はプログラマーと評価ボードの接続を切ってからプログラマーの終了、電源の取り外しを行います。
セントラル/ペリフェラルの両方の評価ボードにそれぞれのF/Wを書き込んでください。

評価ボードとの切断
評価ボードとの切断

選択したデバイス(左上)をクリックすると「Close device」のメニューが出てきますので、ここをクリックします。するとプログラマーと評価ボードの接続が切れます。その後プログラマーを終了させ、評価ボードの電源を切って下さい。

2-5.TeraTermの設定
TeraTermと評価ボードの通信条件等の設定は以下のとおりです。シリアルポート設定のCOM番号は、お使いの環境によって異なります。デバイスマネージャーで調べてください。セントラル側/ペリフェラル側の2つとも設定をお願いします。

端末設定画面
端末設定
シリアルポート設定画面
シリアルポート設定

実験

では通信実験を始めましょう。最初にセントラル/ペリフェラル側両方の電源を入れます。先ずはセントラル側の電源を入れましょう。

セントラル側起動画面
セントラル側起動画面

電源が入ると左の画面のようにF/Wが起動した旨のメッセージが出ます。評価ボードの電源を立ち上げた後にTeraTermを起動した場合はこの表示が先に出てしまっているので見られないと思います。リセットスイッチを押せば改めてこの表示が出てきます。
次にペリフェラル側の電源も入れましょう。

ペリフェラル側起動画面

文言は若干違いますが、ペリフェラル側も起動メッセージが出ます。
今回のセントラル側に搭載されているF/Wは、接続出来るペリフェラルが見つかると直ちに接続するように出来ています。よって、この段階で既にセントラルとペリフェラルは無線で接続されています。どちらかのTeraTermを選んでキーボードから文字を打ってください。(最後にエンターキーを押してください。)以下の例ではセントラル側から「Hello!」と打っています。

セントラル側から入力
セントラル側から入力

セントラル側から「Hello!」と入力するとペリフェラル側に同じ文字が出力されました。このF/Wでは、文字間のタイムアウトが有りませんので、エンターキーを押すまでの間に打ち込んだ文字が一気に送信されます。但し、何行にもわたる大量の文字を打つと、エンターキーを打たなくても自動的に送信されます。
画面を良く見ると、ペリフェラル側のプロンプト(白い四角)がHello!の文字から一行離れたところにあります。端末の設定でセントラル側もペリフェラル側も改行コードを「CR+LF」にしてありますが、どうやらセントラル側の送信部又はペリフェラル側の受信部で「CR」と「LF」をそれぞれ改行コードと見なしてしまっているようです。セントラル側の改行コードを「CR」又は「LF」に設定すると行間が空く事は無くなりました。気になる方は変更してください。
今度はペリフェラル側から文字を送ってみます。

ペリフェラル側から入力
ペリフェラル側から入力

ペリフェラル側から「Fine!」と送りました。今度はセントラル側に入力した文字が表示されると共にペリフェラル側にも同じ文字が出てきました。どうやらこのF/Wでは送った文字を折り返しているようです。TeraTermの設定でローカルエコーを有効にしているので、自分で打った文字は一旦そのまま表示され、更に送り返されてきた文字を表示しているので画面には同じ文字が二度現れています。

以上のようにして、セントラルとペリフェラル間での通信が出来る事が確認出来ました。今回書き込んだF/Wで出来る事は以上です。これ以上の事をするには自分でF/Wを製作するか、既存のF/Wを改造しないといけません。今回はファイルの拡張子に「.hex」と言う名前の付いている物をプログラマーで書き込みましたが、SDKの中にはこれを作る元となるもの(ソースコード)も添付されています。これらを改造して新たなF/Wを作る事もできます。改造には統合開発環境(IDEなどと呼ばれています。)が必要ですが、これらのうちの一つであるSegger社の「Embedded Studio for ARM」はホビーユースであれば無償で使えます。Windows、macOS、Linux用などがあり、ここからダウンロードできます。このコラムでは説明しきれませんが、興味のある方は試してみてください。

Embedded Studio for ARM
Embedded Studio for ARM

近年ではF/Wの開発には統合開発環境(Integrated Development Environment)と呼ばれるものが使われています。

無線モジュール.comでは無線モジュールを利用した様々な提案・開発を行っております。こちらのページには無線化の際のヒントを載せています。

また、是非開発実績もご覧になってください。