小型 Bluetooth LE モジュール AE-TYBLE16と超小型AVRマイコンATtiny10で長寿命なビーコンを作る

# 最初に
小型 Bluetooth LE モジュール AE-TYBLE16でビーコンを作る手順に関しては[小型 Bluetooth LE モジュール AE-TYBLE16とボタン電池でビーコンを作る](https://qiita.com/MypaceEngine/items/cc7ccbd799801735112b)を参照。

#長寿命を実現するためには
長寿命の実現といえば、DeepSleepによる消費電力の極小化とWatchDogによる復帰の手法がよく使われる。ただ今回使用する太陽誘電[EYSGJNAWY-WX](https://www.yuden.co.jp/jp/product/category/module/EYSGJNAWY-WX.html)を搭載するAE-TYBLE16はハードウェアとしてWatchDogは乗っていないようである。EYSGJNAWY-WXはそもそも外部のマイコンから制御されるのが前提のモジュールとして設計されているのだから、WatchDogなんて不要なのである。
EYSGJNAWY-WXの[仕様書](https://www.yuden.co.jp/wireless_module/document/datareport2/jp/TY_BLE_EYSGJNAWY_WX_BriefDataReport_V1_5_20190227J.pdf)によるとリセットピンは搭載されている。
![ResetPin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/7ad015de-cd96-8a25-c6d2-adefc904ce1d.png)
そこで、EYSGJNAWY-WXではビーコンの発信を1回したら電源をシャットダウンし、一定時間後に外部マイコンからEYSGJNAWY-WXにリセットをかけることとした。WatchDogを搭載している最も小さいArduino基盤を探したところ、超小型AVRマイコンATtiny10があったので、それを使うこととする。

#電子回路
AE-TYBLE16(EYSGJNAWY-WX)のSWDIピンがリセットピンなので、ATtiny10の4番ピンとつなぎ、リセット制御を行うこととする。
![Kairo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/a8f9d4fd-29b5-f1fb-bc70-b0533711f28d.png)

電子回路のデータは[https://github.com/MypaceEngine/ae-tyble16-beacon](https://github.com/MypaceEngine/ae-tyble16-beacon)にアップロード済み。

#ソースコード
[https://github.com/MypaceEngine/ae-tyble16-beacon-arduino](https://github.com/MypaceEngine/ae-tyble16-beacon-arduino)にアップロード済み。
##省電力のキーポイント
* AE-TYBLE16(EYSGJNAWY-WX)のリセットピンを50ms以上のLOWにするとリセットがかかるそうなので、ATtiny10は起動時に4ピンをHIGHにして、DeepSleep状態に移行する。WatchDogで８行後に復帰し、50ms間LOWにし、再度HIGHにしてDeepSleepに入るのを繰り返す。
* AE-TYBLE16(EYSGJNAWY-WX)とATtiny10のすべてのPINはDEGITALOUTに設定されている。
* AE-TYBLE16(EYSGJNAWY-WX)は起動時にビーコン信号を出し、13msほど待機し、Shutdownする。AE-TYBLE16(EYSGJNAWY-WX)はビーコンモジュールはマイコン外にあるようなので一定時間待機しないとビーコン信号を出し切れないように推察される。

#消費電力と稼働時間
平均2.5μA程度の消費電力のようなので、CR2450だと6.5年程度ビーコンを出し続けることができると推察できる。ただ実運用ではボタン電池の空中放電や物理的な劣化も発生するので、6.5年もつかどうかは保証できない。

#ビーコン端末化
ビーコンを作ったからには持ち歩きたい。なので作ることとする。
![IMG_20190420_183410.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/dc4806e5-9347-f3e3-dfaa-cf0b015e470f.jpeg)

**(注意)この作業では極小のATtiny10の半田づけが含まれます。半田づけに慣れていない場合は作業の難易度は高いと思われます。**

## 道具
| ハードウェア             | 説明 |    リンク    |
|:-----------------|:---------------------|:------------------|
|ジャンパーワイヤ|ブレッドボードと後述のJ-Linkをつなぐのに使用します|http://akizukidenshi.com/catalog/g/gP-02932/|
| J-Link EDU mini       |  AE-TYBLE16への書き込みに使用します。|    https://www.marutsu.co.jp/pc/i/26595451/|
| ST-Link      |  J-link EDU miniは電力供給機能を持っていないため、電源として利用します。AE-TYBLE16への書き込みに使うこともできます。|https://www.banggood.com/ja/3_3V-5V-XTW-ST-LINK-V2-STM8-STM32-Simulator-Programmer-Downloader-Debugger-With-20cm-Dupont-Wire-p-1177014.html?utm_source=direct&utm_campaign=none_prdshare_twit
|AVR Atmega プログラムUSBasp|ATtiny10の書き込みに使用する|https://www.amazon.co.jp/dp/B011DT3MIS/ref=cm_sw_r_tw_dp_U_x_jDXUCb00NY9A5|
|ジャンパーワイヤ|配線に使う|http://akizukidenshi.com/catalog/g/gC-05371/|
|ブレッドボード|配線に使う|http://akizukidenshi.com/catalog/g/gP-05294/|
|アナログテスタ|配線が成功しているかの確認に使う|https://www.marutsu.co.jp/pc/i/139850/|
|LED|ATtiny10の半田の成功を確認するのに使う|http://akizukidenshi.com/catalog/g/gI-11577/|
|カーボン抵抗|ATtiny10の半田の成功を確認するのに使う|http://akizukidenshi.com/catalog/g/gR-25332/|

## 部品
| 部品 | 説明 | URL |
|:-----------|:------------|:------------|
| 基板 | 専用に設計した基盤 | https://github.com/MypaceEngine/ae-tyble16-beacon |
| AE-TYBLE16 | BLEモジュール | http://akizukidenshi.com/catalog/g/gK-12339/ |
| ATtiny10 | WatchDog用マイコン | http://akizukidenshi.com/catalog/g/gI-04575/ |
| RETAINER CR2450 COIN CELL PC PIN【BK-880】 | ボタン電池CR2450のフォルダ| https://www.marutsu.co.jp/pc/i/11738578/ |
| PS-65 | ケース | http://www.takachi-el.co.jp/data/pdf/2016-01-065.pdf <br> https://www.marutsu.co.jp/pc/i/101671/|

##事前準備
* AE-TYBLE16へのファームウェア書き込み手順は[ここ](https://qiita.com/MypaceEngine/items/cc7ccbd799801735112b#%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E4%BD%9C%E6%88%90)を参照。
* ATtiny10にはUSBaspを使用します。USBaspのファームウェアのアップデートが必要なので、[USBasp](https://ht-deko.com/arduino/usbasp.html)のUSBasp のファームウェアを更新する (USBasp 2個を使ったやり方)を参照。ファームウェアは[Thomas Fischl](https://www.fischl.de/usbasp/)の[usbasp.2011-05-28.tar.gz ](https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz)を利用。
* ATtiny10のArduinoの設定は[ArduinoIDEでATtiny85をプログラム 　～ライターの接続～](http://studio-juno.sblo.jp/category/4432664-1.html)を参照。
		
##組み立て手順
ATtiny10のマイコンの動作がAE-TYBLE16へのファームウェアの書き込みに影響を与えるため、下記の手順を守ってください。
1. ATtiny10の半田づけ
2. ATtiny10へのファームウェアの書き換え
3. AE-TYBLE16の半田づけ
4. AE-TYBLE16へのファームウェアの書き換え
5. ジャンパーの半田づけ
6. ボタン電池ホルダの半田づけ
7. ケースに入れる

### ATtiny10の半田づけ
青丸がついている部分にATtiny10を半田づけする。
![IMG_20190420_173950.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/1cddae83-c82b-d5eb-2c08-6f6e33f66769.jpeg)
ATtiny10は下記の写真の左端の丸がついている部分が1番ピン。IC2の左下にあるバーの部分が0ピンになるように半田づけする。
![IMG_20190420_173707.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/1f8dabe6-8e8e-b3cf-6995-868f0945e85e.jpeg)

半田が成功しているかを確認するため、下記の番号のセットで確認する。
![IMG_20190420_173950.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/e3771ae7-dc99-c3a3-26b6-a8083856e4af.jpeg)

### AtTiny10へのファームウェアの書き換え
[https://github.com/MypaceEngine/ae-tyble16-beacon-arduino/blob/master/timer/attiny10_timer/attiny10_timer.ino](https://github.com/MypaceEngine/ae-tyble16-beacon-arduino/blob/master/timer/attiny10_timer/attiny10_timer.ino)をArduino IDEに読み込ませる。
ATtiny10とUSBaspの接続方法は[ArduinoIDEでATtiny85をプログラム 　～ライターの接続～](http://studio-juno.sblo.jp/article/181910714.html)の**USBaspとATtiny10の接続**を参照。
Arduino IDEを下記の設定にする。5Vで書き込んでください。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/7d26b4c3-28b4-1ff9-8c38-9a6bff23f838.png)
[スケッチ]-[マイコンボードに書き込み]で書き込み
書き込み中に失敗する場合がありますが書き込み自体は成功している場合があるので、動作確認をしましょう。

[青丸の部分]-[LED]-[抵抗(3KΩ)]-[GND]とつなぎ、信号をチェックしましょう。基本的に点灯し、約8秒間に1回点滅します。
![IMG_20190420_174151.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/b3a6fbe0-57cc-bae9-ff74-4bf8f63d47a9.jpeg)

### AE-TYBLE16の半田づけ
青丸の部分を半田してください。上側が左から3ピン(V+)4ピン(GND)、下側が左から2ピン(SWDI)3ピン(SWDC)。
![IMG_20190420_180945.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/0f88e537-d5a3-8012-e08a-69e7da4bb5df.jpeg)

### AE-TYBLE16へのファームウェアの書き換え
[https://github.com/MypaceEngine/ae-tyble16-beacon-arduino/blob/master/beacon/eddystoneuid/EddystoneUID.ino](https://github.com/MypaceEngine/ae-tyble16-beacon-arduino/blob/master/beacon/eddystoneuid/EddystoneUID.ino)をダウンロードして、
[小型 Bluetooth LE モジュール AE-TYBLE16とボタン電池でビーコンを作る](https://qiita.com/MypaceEngine/items/cc7ccbd799801735112b)のAE-TYBLE16のArduino 化の章以降を実施。

書き込みが成功したことは電源を抜き差しして、[ビーコンを用いて入退室をチェックする簡単なプログラム](https://qiita.com/MypaceEngine/items/ad15135d3734a0377b55)で確認。

### ジャンパーの半田づけ
AE-TYBLE16とATtiny10の動作に問題がないことを確認して、P1を接続
![IMG_20190420_182323.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/8cf4604d-b794-4794-ec73-0aee9bf96e5e.jpeg)

### ボタン電池ホルダの半田づけ
下記の青丸に半田を薄く塗ります。
![IMG_20190420_182432.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/ed1bb4b6-3b52-f69f-aff1-74eff8f66035.jpeg)

ボタン電池ホルダの基盤と半田する部分は高さを抑えるため、青丸部分の”くの字”を”」”のように少し折り曲げるのがコツです。
![IMG_20190420_182432.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/a4eeded5-8652-19b9-a2ac-0d218dd30979.jpeg)

最終形態は下記です。
![IMG_20190420_183009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/2ab7b01c-36ed-7c1e-1873-f4356fd5072c.jpeg)

### ケースに入れる
![IMG_20190420_183410.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/4b797e6f-c77b-925c-5c15-3365cf99f91e.jpeg)

蓋を閉めて、技適のシールも張りましょう。
![IMG_20190420_183624.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354086/8dc2cc0f-39f0-c839-15e3-c2074704399b.jpeg)