2017/08/01

BLE NanoでLチカ

どうも、クラゲです。
ここでは、mbedを初めて扱う方にも分かりやすいように、mbedのユーザー登録からLチカ(LED点灯/消灯の繰り返し)までを丁寧に解説します。半田付けや工具などは一切不要です。
BLE通信を使ったサンプルは別の記事で説明します。

【 概要 】


BLE Nanoの特徴

ここでは、BLE Nanoの特徴について簡単に紹介します。早くLチカしたい人は読み飛ばして構いません。

BLE NanoはBLE通信ができるマイコンボードです。
様々なBLEマイコンボードがあるかと思いますが、BLE nanoは以下の4つの特徴があります。特にサイズの小ささと低消費電力が他のボードに比べて優れている点かと思います。

BLE NanoはArduinoとmbedで開発することが可能ですが、ここではmbedでの開発方法で説明します。
今までmbedを触ったことがない人にとっては、面倒に感じるかもしれませんが、実はArduinoよりmbedの方が使いやすいです。まず開発環境がクラウドなので、インストールが全く不要です。言語はArduinoとほぼ同じです。
色々なブログを見てみると分かりますが、BLE Nanoはmbedで開発したほうが素直で開発もしやすいです。

必要なハードウェア

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

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

もし、2台目以降購入するは、書き込みボードは使い回しが可能ですので、こちらのBLE Nano単体で購入すればOKです
https://www.switch-science.com/catalog/2403/

Signup

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

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


Log In/Signupを選択します


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


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


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


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

BLEnanoをプラットフォームに追加

mbedは様々なデバイスがあります。どのデバイスを使うのかを自分のプラットフォームに追加する必要があります。


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


Add Platformを選択


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


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


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


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

Lチカのプログラムをインポート

自分で打ち込んでも良いのですが、ここではLチカサンプルプログラムを外部から取り込みましょう。

こちらのページを開きます
https://developer.mbed.org/teams/RedBearLab/code/nRF51822_blinky/
ここには、BLEnanoの製造元RedBearLabが作ったLチカサンプルが載っています。


import into Compilerボタンを押して、自分の環境へインポートします


このようなwindowが出てきますので、プロジェクト名を変えたい場合は変更できます。後から簡単にリネームも可能なので、とりあえずそのまま Import ボタンを押しましょう!

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


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


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

BLEnanoに書き込み

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


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

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


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

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

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

Lチカ実行!

実は先ほどの書き込んだ時点で実はLチカは実行されています。BLEnano基板の裏側にある小さな小さなLEDが点灯と消灯を繰り返しています。
ノートPCに挿入したままだとPCをひっくり返さないと見えないので、USB取り出し処理を行ってから取り出し、モバイルバッテリーに挿して実行した結果がこちらです。
BLEnano基板の裏側のクマのマーク付近に注目してください。
LEDがチカチカしているのが分かるかと思います。


繰り返しますが、LEDがあるのはBLEnano基板の裏側ですよ。

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

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

#include "mbed.h"
 
DigitalOut myled(LED1);
 
int main()
{
    while(1) {
        myled = 1;
        wait(1);
        myled = 0;
        wait(1);
    }
}

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


LED1をピン名に変えることでGPIOの制御が可能となります。
例:DigitalOut myled(P0_9)

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

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