SpresenseとiS110B(wifiモジュール)をつかってIoTことはじめをしてみる。

#はじめに

Spresenseとネットを繋ぐためにwifiモジュールをつけてなにかしようと考えた際に、候補になるのはおそらく以下の２つだと思う。

- SPRESENSE用Wi-Fi add-onボード(THOUSANDIY-005, https://www.switch-science.com/catalog/4042/)
- SPRESENSE Wi-Fi Add-onボード iS110B(https://idy-design.com/product/is110b.html)

今回は、パット見技術ブログが見当たらなかった後者のiS110Bについて話したいと思う。
偉そうなことを言っているけども、やることはサンプルを動かすだけ。

# やること
1. iS110Bを使える環境をセットアップする。
2. サンプルの[HTTPClient.ino](https://github.com/jittermaster/GS2200-WiFi/tree/master/examples/HTTPClient)をなにも考えずに動かす。


#用意するもの
- SPRESENSEメインボード: CXD5602PWBMAIN1 (https://www.switch-science.com/catalog/3900/)
- SPRESENSE拡張ボード: CXD5602PWBEXT1(https://www.switch-science.com/catalog/3901/)
- SPRESENSE用Wi-Fi add-onボード: iS110B(https://idy-design.com/product/is110b.html)
- microUSBケーブル（通信ケーブル）
- ポート10080が塞がれていないネットワーク。ちなみに私はスマホのテザリングで確認した。

#ソフトウェア的に用意するもの
下記に書いたバージョンは私が手を動かした際の環境をそのまま書いている。必ずこの環境でなければ動作しないという事ではないため注意すること。
ちなみに、私が動作確認した際のOSはmacOS Catalina 10.15.1である。

- node.js 12.13.1(執筆当時の安定版, https://nodejs.org/ja/)
- Arduino IDE 1.8.10(https://www.arduino.cc/en/main/software)
- Spresense Arduino board package version 1.4.1

これらのソフトウェアはすでにインストール済みとして話をすすめる。

#1. iS110Bを使える環境をセットアップする。
まず、iS110Bのサンプルプログラムが入っている下記のGithubページにアクセスする。
ちなみに、この"GS2200"という名称
は基盤上に実装されているWifiモジュール本体のTelit社製の"GS2200MIZ"によるもので、"iS110B"はボード全体の名称である。
https://github.com/jittermaster/GS2200-WiFi

<img width="599" alt="スクリーンショット 2019-12-01 14.56.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/201795fc-e239-0695-9fa2-7aa193e846fa.png">

次に、開いたページを開いて"Clone or download"をクリックし、出てきたポップアップにある"Download ZIP"を再度クリックする。Zipファイルの保存先に関してはご自身の好きな場所でOK。

<img width="412" alt="スクリーンショット 2019-12-01 14.49.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/9f1fcd0b-05db-e4d3-0e4f-8bf089f1ac1a.png">

<img width="98" alt="スクリーンショット 2019-12-01 15.06.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/336e6886-ed61-df41-9cee-7a663d33f1f1.png">

次に、Arduino IDEを起動し、メニューバーの"ライブラリをインクルード"→".zip形式のライブラリをインストール"をクリックする。その後、ダウンロードしたファイル(おそらくGS2200-WiFi-master.zip)を選択する。

その後、Arduinoのコンソールにゴニョゴニョと出力されるため、完了するまで待つ。完了したら一旦Arduino IDEを再起動し、メニューの”ファイル”→スケッチ例に"GS2200"という項目が入っていることを確認する。

<img width="457" alt="スクリーンショット 2019-12-01 15.10.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/d3a63577-bfa6-1a5e-2946-224f1fc8635e.png">

入っていれば本節は完了。

#2. サンプルのHTTPClient.inoをなにも考えずに動かす。

先にSpresenseとiS110bをくっつけてしまおう。以下の写真を参考に、
SpresenseにiS110bを差し込む。ポイントとしては、Sonyのロゴに対して二本のピン側が向くようにして、Sonyロゴ側にピン穴が残らないように差し込む。

![P_20191202_200605_vHDR_On.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/9657b09d-6994-a903-61ca-3d902d8e7ead.jpeg)

その後、Arduinoを閉じていたら再度起動して、、HTTPClientを開く。先程のスケッチ例から選択できる。
<img width="456" alt="スクリーンショット 2019-12-01 15.16.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/555de872-df98-3b06-f0e4-9f151395fafb.png">

ファイルが開いたら、メニューの"スケッチ"→"スケッチのフォルダを表示"をクリックし、サンプルコードの入ったフォルダを開く。

<img width="268" alt="スクリーンショット 2019-12-01 15.19.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/7f6eec14-098b-1b2e-ec54-7ecb6fedc569.png">

このファイル３つの入ったフォルダが出てきたらOK。
<img width="561" alt="スクリーンショット 2019-12-01 15.23.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/986872e0-6316-b5ea-e855-c7c8996b77ba.png">


その後、フォルダ階層を２つ下がって"GS2200-WiFi-master"フォルダに下がり、"script"フォルダが見える状態にしておく。

<img width="404" alt="スクリーンショット 2019-12-01 15.30.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/2404c63f-b380-c1fb-85a4-74b09dfd5959.png">

フォルダを右クリック→"サービス"→"フォルダに新規ターミナル"をクリックして、ターミナルを起動する。Windowsの人だったらコマンドプロンプト。

<img width="814" alt="スクリーンショット 2019-12-02 19.39.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/4a414131-cee0-b784-9754-67c300470eed.png">

ターミナルを開いたら、自分のIPアドレスを確認する。mac使いならおなじみのifconfigで確認する。

<img width="524" alt="スクリーンショット 2019-12-02 19.51.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/ff99896a-6a28-f5e9-a232-88b4de7b0ba1.png">

<img width="524" alt="スクリーンショット 2019-12-02 19.52.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/a5c5ed00-73f4-2118-2e5a-fbbfaffedfbf.png">

その後、"node HTTP_Server.js"を実行する。
<img width="524" alt="スクリーンショット 2019-12-02 19.47.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/326d41cf-8b7e-4a4e-031a-e7937f7ea54a.png">

多分コンソールには何も表示されないはず。ここでArduino IDEに戻り、先程の"HTTPClient.ino"を表示する。そのあとに隣のタブにある"config.h"を選択し、ご自身の環境に揃える。

<img width="361" alt="スクリーンショット 2019-12-02 20.28.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/544431fc-913d-8135-710c-19e24fe3cf4e.png">

終わったら、メニューのファイル→”名前をつけて保存”で好きな場所に保存しておく。

その後、Spresenseとシリアルポートをつなぎ、MainCoreに対してプログラムを書き込む。プログラムの書き込むときのオプションは以下の写真の通りにする。

<img width="190" alt="スクリーンショット 2019-12-02 20.19.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/bb2d261a-353f-f6bf-78ec-d3f58665bb19.png">

→矢印ボタンをクリックして書き込む。
<img width="400" alt="スクリーンショット 2019-12-02 20.25.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/4f7fee3d-0acd-0475-277e-aca278108b36.png">

書き込みが完了したあとにメニューの"ツール"→"シリアルモニタ"を選ぶと、Spresenseと母艦のPCが互いに数字をカウントアップしながらGET-POSTで値を贈り合っている様が確認できるはず。

![75540120_2756341821139708_3936563970344747008_o.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/99c76a64-8875-819d-4fbe-947532c16ba3.jpeg)

とりあえず、事始めはこれで完了かな。