アオノドンワークショップテキスト

BLEトレーニングボードアオノドンを使って、以下のようなワークショップを行います。そのテキストです
![image](https://qiita-image-store.s3.amazonaws.com/0/139524/0e52bc7c-47bd-bdbd-702b-c5c68a9638fa.png)

# インストール

http://arduino.cc から、ダウンロード

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/a2662055-48ed-0d3b-445a-5702fb1d2759.png)

インストールして、起動するとこの画面になります

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/98a2cda2-ded0-6db7-69a6-efb7978c8b0c.png)


「ファイル」- 「環境設定」 - 「追加のボードマネージャのURL:」に
https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json
と入力してOK

「ツール」 - 「ボード：・・・」の一番上の「ボードマネージャ...」
で検索窓に「Nordic」と入力すると
「Nordic Semiconductor nRF5 Boards」と出るので選択して「インストール」

# 環境依存の設定
更にドキュメント https://github.com/sandeepmistry/arduino-nRF5 に沿って環境(Windows/Mac/Linux)に応じた設定をします。

## Mac OSXの場合

特に追加作業は必要ありません

## Windowsの場合

以下のようにST-Linkのドライバをインストールするだけでいいみたいです。
http://www.st.com/ja/development-tools/stsw-link009.html
このページから STSW-LINK009 をダウンロード、インストールしてください。


なお、"libusb error not supported" エラーが出る場合は、上記の作業ができていない場合に発生するようです。



## Linux64の場合


```

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 libudev1:i386
```



なお、 libc6:i386　が不足している場合、以下のエラーが発生する。

```

arm-none-eabi-g++: no such file or directory
```

また、

```

openocd: error while loading shared libraries: libudev.so.1: cannot open shared object file: No such file or directory
```
でエラーが発生する場合は、

```

sudo apt install --reinstall libudev1
```

で対処。
また、

```

Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
Error: open failed
in procedure 'program' 
in procedure 'init' called at file "embedded:startup.tcl", line 473
in procedure 'ocd_bouncer'
** OpenOCD init failed **
shutdown command invoked
```
が発生した場合、

(Arduinoフォルダ)/Arduino_STM32-master/tools/linux64/install.sh 

を実行する。

また、以下も必要かも。（未検証）

$ sudo apt-get install libusb-1.0




# 書込プログラムを配置（SoftDeviceを使う場合）

Arduinoスケッチフォルダにtools/nRF5FlashSoftDevice/tool/
を作り、nRF5FlashSoftDevice.jarを格納。

jarファイルはこちらから。

https://github.com/sandeepmistry/arduino-nRF5/releases/download/tools/nRF5FlashSoftDevice.jar

僕の場合はポータブル環境として arduino-1.8.5_nRF5というフォルダを作っているので、
その中に/tools/nRF5FlashSoftDevice/toolsフォルダを作りました。

# ターゲットボードなどの選択

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/fd8a0d21-d382-ce4c-dcc8-5ee595cab63d.png)


「ツール」 - 「ボード：」を
「Generic nRF52」 にする。

「ツール」 - 「書込装置:」を
「ST-Link V2」 にする。

「ツール」 - 「Softdevice:」を
「S132」 にする。




# 動作テスト
 ST-Linkを接続して動作確認します


最低限は以下のようにして使います。


![IMG_20180708_141200.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/dfe033f6-48a3-f435-1fe2-3c20c65ebfea.jpeg)

ST-Linkに付属しているケーブルの色はいくつかパターンがあります。自分の色に合わせて参照して下さい。
![IMG_20180825_153018.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/c0696751-31dc-d3ed-22b6-24bc0dfc4d5b.jpeg)
![IMG_20180825_153444.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/975a29e6-92dd-27f2-8cb1-1e294ecd0058.jpeg)



マイク端子を使ってLチカをするコードです


![image](https://qiita-image-store.s3.amazonaws.com/0/139524/9a03016c-fa91-a6a1-ce41-26451101498f.png)

うまく書けたら上図のようなメッセージが出ます。（環境設定で「書き込み」を「より詳細な情報を表示する」にしています。）

抵抗付きLEDを差し込んで、動作確認します。


![IMG_20180708_142107.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/4bd266f9-62e1-8ea8-751b-99a386cb7d82.jpeg)


# Ardublock を設定する

Ardublock環境をダウンロード、インストールします。

https://ja.osdn.net/projects/akbone/downloads から ardublock-all.jarをダウンロードします。

tools フォルダ中の ArduBlockTool/tool フォルダを作って配置

tools フォルダは、通常の場合はドキュメントフォルダのArduinoの中です。
・portable環境の場合はportableフォルダを置いているところと同じ所にあります。

# テキスト「光の流れ」


![image](https://qiita-image-store.s3.amazonaws.com/0/139524/f545e0c3-2ba5-cfb3-b08f-108d4d73d257.png)

https://ja.osdn.net/projects/akbone/releases/p15816
より、テキスト「光の流れ」リリース6(アオノドンバージョン) を参照して、学習していきます。

# 拡張課題

![image](https://qiita-image-store.s3.amazonaws.com/0/139524/7d4effee-a8f8-134c-4a21-0636f011ad66.png)

この、スイッチの代わりにセンサーを使う方法です。
例として、写真のような光センサを接続してみます。
![IMG_20180825_231841.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/3b528820-3c6f-f887-79b4-a76cf7ab728d.jpeg)

この光センサはCdSといい、暗くなると抵抗が上がり、明るくなると抵抗が下がります。GL5516というタイプでは、暗い時 0.5MΩ,明るい時 5~10kΩぐらいになります。

極性はないので、下の写真のように接続します。

![IMG_20180825_235902.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/7eaad245-09bc-ef0d-7d39-b30482c3deb8.jpeg)

3V3に接続した抵抗で、感度を調節することができます。
写真では、2kΩ（赤黒赤金）を2本使って4kΩとしています。
GPIO4番（右端から6番目）のデジタル信号として入力できます。
このままで、アナログ信号としても取り込めます。GPIO4番は、AIN2として機能します。
しかしながらアナログ信号として取り込む場合は下図のようにシリアルアダプタを接続し、値を確認しながら調節するのがいいでしょう。


![IMG_20180826_001205.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/45c434a8-d7cf-9556-3c26-ce94d4dbae5a.jpeg)

また、以下のようなセンサーキットを活用にチャレンジしてみましょう。

![IMG_20180825_230928.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/b6685b7b-cfef-5b4b-54e2-9dbd8dde6d80.jpeg)

アオノドンのGPIOは3.3V出力ですが、旧来のArduinoのように5V出力でないとうまく動かないものもあるので全部が動くわけではありません。しかし下図の傾きスイッチのようなデジタルで信号が取れるものは、あまり気にせずに簡単に動かすことができます。


![IMG_20180825_235121.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/865635ce-dc05-b664-4ba5-cffc9476837d.jpeg)

この傾きスイッチは、水銀が下に移動するとスイッチが入ることになります。
ピン配置は様々ですが、これに類したセンサーは上からGND,3V3,信号線に接続すれば動きます。

![IMG_20180825_233416.jpg](https://qiita-image-store.s3.amazonaws.com/0/139524/3c322c12-cea3-b830-bf56-fbe9965c5f60.jpeg)

センサー以外にも、レーザーエミッタ−などの出力モジュールもあります。楽しみましょう。