2017/09/23

BLE Nano2でLチカ

どうも、クラゲです。
BLE Nano2をmbedを使ってLチカします。半田付けや工具などは一切不要です。

基本的にはRedbear社のドキュメントに沿って説明しますが、ここでは、mbedを初めて扱う方にも分かりやすいように、mbedのユーザー登録からLチカ(LED点灯/消灯の繰り返し)までを丁寧に解説します。また正しく実行させるにはプログラムの修正が一部必要です。
BLE通信を使ったサンプルは別の記事で説明します。

【 概要 】


必要なハードウェア

当然ですが、BLE Nano2が必要です。
また、PCからBLE Nano2に書き込むためのボードも必要になります。

下記のリンクは、書き込みボードとBLE Nano2のセットです。
https://www.switch-science.com/catalog/3444/

もし、2台目以降購入するは、書き込みボードは使い回しが可能ですので、こちらのBLE Nano2単体で購入すればOKです。ピンヘッダ実装済みと実装無しの2種類あります。用途に応じて選びましょう。
https://www.switch-science.com/catalog/3446/
https://www.switch-science.com/catalog/3445/

書き込みボードのファームウェアアップデート

2017年9月現在のBLE Nano2の書き込みボードDAPLinkはどうやらファームウェアのアップデートをしないと、BLE Nano2への書き込みがうまくいかないようです。
以下のURLにあるファームウェア(binファイル)をダウンロードします。
https://github.com/redbear/nRF5x/blob/master/nRF52832/daplink/DAPLink_V1.5_Interface_nRF52_20170106.bin


DAPLinkのRSTボタンを押しながらPCのUSBへ差し込みます。
そうすると"MAINTENANCE"という名前で表示されると思います。ここに先ほどダウンロードしたbinファイルをドラッグ&ドロップすればファームウェアバージョンアップ完了です。

mbedのSignup

mbedを初めて使う人はSignupが必要です。すでにアカウントを持っている人はLog Inして次の項に進みましょう!
https://developer.mbed.org/

mbedのSignupは超お手軽で、メールアドレスとユーザー名などのみで簡単に無料登録できちゃいます


Log In/Signupを選択します


Signupを選択し、以下の項目を入力します


全て入力したら、チェックボックスにチェックを入れSignup!


確認メールが来るので、リンク先をクリック!


これでSign In出来ました!
Complierを押すと早速プログラミングできます

Nordic nRF52-DKをプラットフォームに追加

mbedは様々なデバイスがあります。どのデバイスを使うのかを自分のプラットフォームに追加する必要があります。
BLE Nano2は2017年9月現在まだ登録されていないようなので、同じnRF52系のマイコンを使っているNordic nRF52-DKで代用します。


デバイス未選択という箇所を選択


Add Platformを選択


WEBページが開くので、Nordic nRF52-DKを選択します
(Control + F検索コマンドなどで”nRF52”を打ち込むとすぐ見つかるよ)


Add to your mbed Compilerというところを選択します


再びコンパイラに戻ります


デバイス未選択だった箇所が、Nordic nRF52-DKになります。
これでプラットフォームに追加完了!

Lチカのプログラムを新規作成


mbedのメニューから"新規"をクリック


テンプレートから"Blinky LED HelloWorld"を選択しOKを押します。

これでLチカプログラムが自分の環境に加わりました。

#include "mbed.h"
 
DigitalOut led1(LED1);
 
// main() runs in its own thread in the OS
int main() {
    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}

main.cppを開くとこのようになっていると思います。

#include "mbed.h"
 
DigitalOut led1(P0_11);
 
// main() runs in its own thread in the OS
int main() {
    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}

このままだとLEDが点灯しないため、3行目の"LED1"を"P0_11"に修正して以下のように変更してください。


コンパイルを押して、実行ファイルを作成します


このようなプログレスバーが出てhexファイルが生成されれば成功です!
稀に、mbedサーバーの調子が悪くて、プログレスバーでずっと止まったままの場合があります。その場合は15分くらい経ってから再チャレンジしてみよう。

BLEnano2に書き込んでLチカ

先ほど作成した実行ファイルをBLE Nano2に書き込みます


書き込み基板(DAPLink)にBLEnano2を挿入するときは、向きとピンのズレの両方に注意しよう。白いクマのマークが端にくるように挿入します。12本全部挿さっていることも確認しましょう。

これをPCのUSB端子ヘ挿入します


この画像はMacの例ですが、DAPLINKという名前のデバイスが見つかります
ここに先ほどの作成したHEXファイルをドラッグ&ドロップします

Windowsの場合で見つからない場合は、下記のドライバをインストールしてみてください。
https://developer.mbed.org/handbook/Windows-serial-configuration

mbedはこのように実行ファイルをデバイスにドラッグ&ドロップするだけで書き込み完了となります。
例えば、1つ前の実行ファイルに戻りたいときは、コンパイルせずとも1つ前に作成した実行ファイルをドラッグ&ドロップすることで戻すことが可能です。
これで、LEDのチカチカが実行されたと思います。

ソースコードを見てみよう

ブラウザのmbed開発環境に戻ってmain.cの中をのぞいてみましょう。

#include "mbed.h"
 
DigitalOut led1(P0_11);
 
// main() runs in its own thread in the OS
int main() {
    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}

1行目の#include "mebd.h"はmbedを行う上で必ず必要です。mbedに必要なライブラリを読み込んでいます。なんだか分からない人はおまじないだと思っておけば良いでしょう。
次のDigitalOut led1(P0_11)というのは、led1という名前に端子P0_11を割り当てたという意味です。P0_11端子はBLE Nano2の基板に実装されているLEDに接続されています。
https://developer.mbed.org/users/okini3939/notebook/DigitalOut_jp/


別の端子名に変えることでGPIOの制御が可能となります。
例:DigitalOut myled(P0_29)

mbedは必ずmain関数を書きます。
while文を使って無限ループにして、その中で常にled1の値を反転しています。つまりled1が0状態(消灯)とled1が1状態(点灯)を交互に繰り返します。
その後、waitを挟んで繰り返しているのが分かります。
waitの単位は秒です。今回はwait(0.5);なので0.5秒待っているという意味になります。
https://developer.mbed.org/users/okini3939/notebook/wait_jp/

以上、BLE Nano2でLチカでした!
別の記事では、BLE通信を使ったサンプルをバンバン紹介しています。特にBlueJellyを使えば、簡単にBLEアプリ開発が可能になります!