SORACOM 3G対応データ通信端末を利用した水やりIoTシステム

###背景###
この前、ラズベリーパイを利用した水やりシステムを投稿しました。その時に、家のWifiと利用して、外から水やりシステムとの通信をしましたが、今回、家のWifiを利用せず、SORACOM 3G対応データ通信端末を利用して外部との通信を行うことにしました。

![soracom.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/e4685359-6330-e871-b881-29f1d6c9d08b.jpeg)


###準備するもの###

- ラズベリーパイ3 x 1
- SORACOM 3G対応データ通信端末 AK-020 X 1
- Arduino ELEGOO UNO R3 x 1
- Arduino USB コード x 1
- 湿度センサー x 2
- ブレイブボード　x 1
- マイクロウォーターポンプ x4
- ポケットバテッリー
- 単3形乾電池 x 4
- プラスチックケース x 1
- プラスチックケース(水貯める) x 1
- プラスチックケース x 1ゴムパイプ x 4
- 4Ch 5v リレー x 1
- ジャンパワイヤ　オス-オス 複数
- ジャンパワイヤ　オスーメス 複数
- ジャンパワイヤ　メスーメス 複数
- ワニ口クリップコード　複数
- ガムテープ

###成果###

####動画####
<iframe width="560" height="315" src="https://www.youtube.com/embed/qqMEOHi52wE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
出来上がったもの

####ハードウェア####

![開発途中.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/d6415480-eeab-d277-baa1-90c4d871f0c1.png)
組み立て途中


![341629680266_.pic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/c4851c8b-52f9-3c3e-50ad-11f25c317894.jpeg)
実際にベランダに置く感じ


![詳細.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/2262b537-b857-1ec9-7fd1-6ab2c9a1d993.jpeg)
配線詳細





####ソフトウェア側####
![スクリーンショット 2021-08-22 16.46.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/492ea8e8-2153-5155-e9c0-66eae2a8d641.png)
flutterで簡単にアプリを作ることをできました。


###ロジック###
![名称未設定.007.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/4e2cf1bb-4d01-de3c-b4fe-2866de72451b.jpeg)

***1. 四つの水pumpは単三電池から電力を供給されています***
***2. 四つの水pumpスイッチはリレーにより直接コントロールされています***
***3. それぞれ四つのリレーのチャンネルはラズベリーパイのGPIOによりコントロールされています***
***4. ラズベリーパイはサーバーとして動いています、GPIOをコントロールするwebサーバーと湿度情報を送るGRPCサーバーが動いています***
***5. Arduinoの役割は二台の湿度センサからアナログデーターを取ります***
***6. ArduinoはUSB Serailから湿度データーをラズベリーパイに送っています***
***7. ラズベリーパイはSORACOMの通信デバイスを使ってWANに接続しています***
***8. ラズベリーパイにngrokが動いています、そのため、外部からwebサーバーにアクセスできるようになります***

###ソースコード###
ご参考にできればと思います

https://github.com/xu1718191411/IoT/tree/4pump

###インターネット浸透###

flaskサーバーのポートは5000になっています

```
./ngrok http 5000
```

湿度grpcサーバー側のポートは5000になっています

```
./ngrok tcp -region jp 50051
```


###Tips###
####SORACOM 3Gの通信端末からWIFI　IPアドレスを特定します####

SORACOM 3Gの通信端末を使うことによって、wifiがない時も外からコントロールすることが可能になります。
効率を求めるため、開発する時に、家のWIFIを使っていました。しかし、IPを固定できないため、いつもSORACOMのSSHからログインして、ifconfigでwifiのIPを探していました。それもSORACOM 3Gの通信端末を利用する一つのメリットだと感じました。

まずはSORACOMのconsoleにログインします
https://console.soracom.io/

![スクリーンショット 2021-08-23 13.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/bbe3175d-da9d-0260-82d3-ad3892ab6bc1.png)

![スクリーンショット 2021-08-23 13.03.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/27b1b4da-f5ec-9359-09e3-300781322585.png)


![スクリーンショット 2021-08-23 13.03.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/174f9aef-3d2b-c939-ce83-ce8e002df588.png)

![スクリーンショット 2021-08-23 13.04.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/ada4293c-8a71-7abb-551e-5497089254cf.png)


![スクリーンショット 2021-08-23 13.05.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191439/42caee45-c937-12cc-e72e-79e7cae136bb.png)
これでラズベリーパイのWIFIのIPアドレスも特定できます



###関連記事###
https://qiita.com/xu1718191411/items/056e99f6aef527d086b8

https://qiita.com/xu1718191411/items/bf9f48960fac65322dea


https://qiita.com/xu1718191411/items/8b6f0241162894f87b57