###背景###
この前、ラズベリーパイを利用した水やりシステムを投稿しました。その時に、家のWifiと利用して、外から水やりシステムとの通信をしましたが、今回、家のWifiを利用せず、SORACOM 3G対応データ通信端末を利用して外部との通信を行うことにしました。
###準備するもの###
- ラズベリーパイ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
- ジャンパワイヤ オス-オス 複数
- ジャンパワイヤ オスーメス 複数
- ジャンパワイヤ メスーメス 複数
- ワニ口クリップコード 複数
- ガムテープ
###成果###
####動画####
出来上がったもの####ハードウェア####
####ソフトウェア側####
flutterで簡単にアプリを作ることをできました。
1. 四つの水pumpは単三電池から電力を供給されています
2. 四つの水pumpスイッチはリレーにより直接コントロールされています
3. それぞれ四つのリレーのチャンネルはラズベリーパイのGPIOによりコントロールされています
4. ラズベリーパイはサーバーとして動いています、GPIOをコントロールするwebサーバーと湿度情報を送るGRPCサーバーが動いています
5. Arduinoの役割は二台の湿度センサからアナログデーターを取ります
6. ArduinoはUSB Serailから湿度データーをラズベリーパイに送っています
7. ラズベリーパイはSORACOMの通信デバイスを使ってWANに接続しています
8. ラズベリーパイにngrokが動いています、そのため、外部からwebサーバーにアクセスできるようになります
###ソースコード###
ご参考にできればと思います
###インターネット浸透###
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/
###関連記事###
https://qiita.com/xu1718191411/items/056e99f6aef527d086b8