2017年1月30日月曜日

Arduino IDEからnrf51822モジュールにプログラムを書き込んで、スマホからbluetooth経由で制御する方法


ピンの関係やプログラムの書き方が分かったので、備忘録を兼ねて情報を共有します。

全体像

この順番に解説します。
  1. 使ったもの
  2. ArduinoIDEの設定
  3. モジュールと書き込み装置の接続
  4. ntf51822にbootloaderを書き込み
  5. 回路の準備
  6. プログラムの修正・書き込み
  7. スマホから操作

使ったもの


ArduinoIDEの設定

ArduinoIDEからnrf51822モジュールにプログラムを書き込むには、それ用のボード情報をArduinoIDEに取り込む必要があります。
RedBearLabがntf51822が使われているBLEnano向けのボード情報を作ってくれているので、今回はそれの設定方法を紹介します。

まず、[File] -> [Preferences]で設定画面を開き、下記のjsonを[Aditional Boards Manager URLs]に設定し、[OK]を選択して[Preferences]を閉じます。

https://redbearlab.github.io/arduino/package_redbearlab_index.json

次に、[Tools] -> [Board] -> [Boards Manager] で [Bards Manager] を開きます。
[nrf51822]と検索するとRedBearLabの作ったボード情報が出てくるので、それをインストールします。

モジュールと書き込み装置の接続

モジュールと書き込み装置のVCC, GND, SWCLK, SWDIOの4本を接続すると、プログラムを書き込める状態になります。
モジュールに外部電源を供給している場合は、GND, SWCLK, SWDIOの3本を接続すればプログラムを書き込めます。

ntf51822にbootloaderを書き込み

ntf51822にArduino IDEからプログラムを書き込むには、nrf51822のプログラムをArduino対応のものに書き換える必要があります。

まず、RedBearLab/nRF51822-Arduinoのリポジトリをクローンするか、
メンテナンスされているブランチのzipファイルをダウンロード・解凍して、
/bootloader/bootloader.hexファイルをPCで扱えるようにしてください。

次に、ntf51822モジュールに接続したmbed書き込み装置をPCに接続します。

接続できたら、mbedがデバイスとして認識されます。

そのデバイスに/bootloader/bootloader.hexファイルをドラッグドロップしてください。

ドラッグドロップするとmbedのプログラム書き込みが開始されます。
MK20とDapLinkの場合、LEDが細かく点滅します。

書き込み後に表示されるmbedモジュールにfailというファイルが無ければ、書き込み成功です。

回路の準備

今回はntf51822のP1ピンにLEDを接続し、点滅させてみます。
[P1] - [LED] - [1KΩ] - [GND]

プログラムの修正・書き込み

RedBearLabが提供しているBLE_Examples/SimpleControlsのプログラムをベースに、P1を操作するプログラムを作ります。

上記のサンプルプログラムはRedBearLabのボードを選択していないと見れないので、プログラムを探す前にボード情報を設定します。

BLE NanoV1.0やHaLakeKitLino Rev3.0の場合はメモリが16Kのチップが使われているので、[Tools] -> [Board] -> [BLE Nano(V1.0 16KB)]を選択します。

BLE NanoV1.5の場合はメモリが32Kのチップが使われているので、[Tools] -> [Board] -> [BLE Nano(V1.5 32KB)を選択します。

ボードを選択できたら、BLEに関するサンプルプログラムが選べるようになるので、[File] -> [Examples] -> [BLE Examples] -> [SipleControls]を選択します。

SimpleControlsを開けたら、BLE_NANOに関するDIGITAL_OUT_PINをA0にしてください。
RedBearLabのArduino IDEプログラムはP1にA0が割り当てられているため、この変更によってA0(P1)からDIGITAL_OUTに関する信号が出力されます。

DIGITAL_OUT_PINをA0(P1)にできたら、プログラムは準備完了です。

nrf51822のモジュール・mbedライター・PCをそれぞれ接続し、Arduino IDEからプログラムを書き込みます。

スマホから操作

RedBearLABが作ってくれているスマホアプリを利用します。
google play」や「applie store」で「RedBearLab」と検索すると、アプリが見つかります。

アプリの操作については、こちらの記事で詳しく解説しているので、良ければご覧ください。
BLEnanoをサンプルアプリのBluetooth通信でLチカする方法

プログラムを書き込んだnrf51822のモジュールを動作させると、アプリのリストに表示されます。

リストのデバイスを選択すると接続されて操作画面が表示されます。

操作画面でDigital Wirteを操作すると、A0(P1)の出力が変わります。


以上です。
何かの参考になれば嬉しいです。

参考

BLEnanoをサンプルアプリのBluetooth通信でLチカする方法

スマホアプリのソースコードです。
オリジナルのアプリを作る場合に参考になるかもしれません。
RedBearLab/Android
RedBearLab/iOS

更新履歴

2017/02/09
「モジュールと書き込み装置の接続」を追加しました。

0 件のコメント :