Wio LTEを使ってみました ( #resas ハッカソンにて)


## WioLTE

* Arduino互換のLTEモデム付きマイコン
* 従来のラズパイドングルなどは数万円したけど9800円と比較的安い
* Seeed社が開発していて、Groveセンサーに対応している
* 通常のシリアル書き込みではなくDFUモード書き込みが少し慣れが必要な印象

## アンテナ組み立て

こちらの記事「[Wio LTEをやってみてIFTTT送信サンプルまで試したメモ](https://www.1ft-seabass.jp/memo/2017/10/27/wio-lte-firststep/)」を元にアンテナをつけてみましょう。

## 環境構築

[開発環境のセットアップ](https://github.com/SeeedJP/WioLTEforArduino/wiki/Setup-ja)を見ながらArduino IDEのセットアップをします。

### Wio Tracker LTEボードの追加する

[こちらの内容](https://github.com/SeeedJP/WioLTEforArduino/wiki/AddWioLTEBoard-ja)を進めます。

メニュー> Preferenceから追加のボードマネージャのURLを指定します。

> `https://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json`

![](https://i.gyazo.com/2c594b3c418d8b37c67bd6e73be75ef4.png)

ボードマネージャーから **「Seeed STM32F4 Boards by Seeed Studioバージョン」**を選択します。

![](https://i.gyazo.com/b1016e3ceb09ead20d8446bbe7ca55a2.png)

`インストール`を押してインストールします。

![スクリーンショット 2017-11-18 18.20.17.png](https://qiita-image-store.s3.amazonaws.com/0/35387/bb211aba-159a-b3bd-a050-37312f734691.png "スクリーンショット 2017-11-18 18.20.17.png")

これでボードが追加できました。

### Wio LTEのライブラリ追加

[Wio LTEライブラリの追加](https://github.com/SeeedJP/WioLTEforArduino/wiki/AddWioLTELibrary-ja)を行います。

[こちらのGitHubリンク](https://github.com/SeeedJP/WioLTEforArduino/releases)から

## 書き込みでハマる

通常のArduinoとは若干使い方が異なるようです。

今回は内臓のフルカラーLEDを使う[LedSetRGB.ino](https://github.com/SeeedJP/WioLTEforArduino/tree/master/examples/basic/LedSetRGB)を試してみます。

綺麗に光ります :)


![](https://i.gyazo.com/365cc7e51ceac82ecb6157923ae9e68b.gif)

<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-version="7" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:8px;"> <div style=" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;"> <div style=" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;"></div></div> <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/BbqTf8-lLt-/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">DFUモードに手こずったけど書き込み成功 ！ #wiolte #resas</a></p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;">n0bisukeさん(@n0bisuke)がシェアした投稿 - <time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2017-11-19T03:02:53+00:00">2017 11月 18 7:02午後 PST</time></p></div></blockquote> <script async defer src="//platform.instagram.com/en_US/embeds.js"></script>


### libusbをMacにインストール

通常のArduinoと同様に書き込もうとしたら以下のエラー。 **書き込み完了しました**ってでてるけどエラー文が。

![](https://i.gyazo.com/78175d6fe5004a6df94ebd634fe2b0ca.png)

[libusb](http://brewformulas.org/Libusb)が無いよって内容みたいなので

```
brew install libusb
```

でlibusbを入れました。

### シリアルポート指定はせずに、DFUモード

次に書き込みをするとエラーが変わって、以下の内容に。

![](https://i.gyazo.com/4cce556c5f78cb5e61ea43b7766287b4.png)

どうやら[DFUモード](https://github.com/SeeedJP/WioLTEforArduino/wiki/Setup-ja#dfu%E3%83%A2%E3%83%BC%E3%83%89)で書き込みを行うようです。

DFUモードって初めて使いましたが、Nefry v2のオンラインファームウェアアップデートと同じような仕組みらしいです。

**Wio LTEの背面のボタンを押しながらUSB接続するとDFUモードになる**ようです。

その状態だと↓のキャプチャのようにシリアルポートにUSBシリアルポートの表示はされません。

![スクリーンショット 2017-11-19 11.28.38.png](https://qiita-image-store.s3.amazonaws.com/0/35387/8a0af24f-6c01-dd8a-cfdc-21cd5d20379b.png "スクリーンショット 2017-11-19 11.28.38.png")

この状態で書き込みすると

![スクリーンショット 2017-11-19 11.25.12.png](https://qiita-image-store.s3.amazonaws.com/0/35387/4be4ea8d-48e4-6cdc-4dbb-53c7683de9b5.png "スクリーンショット 2017-11-19 11.25.12.png")

正常に書き込めた模様です。

### RSTボタンかUSBを抜いて再接続しないと起動しない

これも少しハマりました。 (ちゃんと説明読めば書いてますけど笑)

**DFUモードでプログラム書き込みをしたら、通常モードにして動作をチェックするのが基本になります。**

なのでDFUモードで書き込んだあとはRSTボタンを押して再起動しましょう。

そうすると`SerialUSB.println()`で書かれてるメッセージがArduino IDEのシリアルモニタで確認できます。

DFUモードでプログラムを更新したあとに、そのままシリアルモニタを利用しようとすると怒られるので注意しましょう。

![](https://i.gyazo.com/58639440d7ac20906f3519c2f402f261.png)

## SORACOM SIMでLTE通信をためす

ここまでの手順で書き込みができるようになったら、同じように他のサンプルプログラムも書き込めます。

iftttのwebhookに投げるサンプルの[ifttt-webhook.ino](https://github.com/SeeedJP/WioLTEforArduino/tree/master/examples/http/ifttt-webhook)を利用します。

ソラコムSIMは [RESASハッカソン](https://connpass.com/event/67436/)でお借りしているものをそのまま使ってます。

[ソラコムのコンソール](https://console.soracom.io/#/?coverage_type=jp)でSIMの情報を入力して、紐付けます。

あとはサンプルを起動させると.....

![](https://i.gyazo.com/2d1b12f5a14d4d6f2de06a5228915c5a.gif)

<blockquote class="instagram-media" data-instgrm-captioned data-instgrm-version="7" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:8px;"> <div style=" background:#F8F8F8; line-height:0; margin-top:40px; padding:28.194444444444443% 0; text-align:center; width:100%;"> <div style=" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;"></div></div> <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/BbqX-u4Ft2V/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">LTE通信テスト #wiolte #resas</a></p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;">n0bisukeさん(@n0bisuke)がシェアした投稿 - <time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2017-11-19T04:24:43+00:00">2017 11月 18 8:24午後 PST</time></p></div></blockquote> <script async defer src="//platform.instagram.com/en_US/embeds.js"></script>


SIMの部分で少しハマるかと思いきや、ここは特に問題なく情報が送れました。

![](https://i.gyazo.com/fb888b8684e641dc2e9fb94021068a37.png)

こんな感じでオンラインかオフラインかもコンソール側で見ることができます。

## 所感

LTEがこんなに簡単に使えて1万円切っているは時代を感じますね。
LTE使わなくてもArduino+Grove BASE SHILDの互換機っぽい使い方もできるし便利です。

DFUモードでの書き込みとデバッグ、`Serial.println()`ではなく`SerialUSB.println()`を使うなど、少し癖はありますが慣れると問題なさそうです。

通信をすることが前提のデバイスになると思うので、HTTPリクエストなどのサンプルはもう少し多いと助かりますね。 

あと、@tseigoさんの記事が本当に助かりました。ありがとうございます。

## 参考

* [Wio LTEをやってみてIFTTT送信サンプルまで試したメモ](https://www.1ft-seabass.jp/memo/2017/10/27/wio-lte-firststep/)
* [Wio LTE JP Version](https://soracom.jp/products/wio_lte/)
* [Wio LTEを使ってみた。](https://qiita.com/tmurasawa/items/10e3b372b53d6f8f56b9)