田んぼIoT in 2018 その3

今回は SORACOM Advent Calendar 2018 19日目の投稿も兼ねています

当初の予想通り、話が長くなってしまって今回で3回目の投稿になります。

ウィルドの豊田です。こんにちは。

現在ウィルドで取り組んでいる田んぼIoTの1年を振り返った記事を書いています。超大作なので何回かに分けて投稿してます。

過去の記事はこちらから
田んぼIoT in 2018 その1
田んぼIoT in 2018 その2

前回は実際に田んぼで長期間稼働させるための課題と解決までの試行錯誤について書きました。

今回は、もう少し脱線(?)して、課題ではないけれど大変だったこと(主にWioLTE関連)編として書きたいと思います。


過去の記事でも書いていますが、田んぼIoTプロジェクトの目的となる「田んぼの温度を計測し、その結果をサーバーに蓄積させることができる」要件を満たすハードとして、WioLTE JP Versionを選定しました。

WioLTE(ワイオ エルティーイー)とは

Seeed社が開発しているマイコンモジュール。
Groveコネクタを搭載してるので、センサー類の接続がとても簡単。
nano SIMを挿入することで、携帯電話回線を利用した通信を行うことが可能。

今回は株式会社SORACOMのIoT向けSIM「Air SIM」を利用しました。


C言語が書けない(読めない)と大変だよ事件

のっけから、そもそもの話になってしまうんですけども。

WioLTEを動作させるには、もちろんプログラミングが必要です。
WioLTEのプログラミングには、IDE(統合開発環境)が利用できます。

統合開発環境とは、ソフトウェアの開発において用いられるエディタ、コンパイラ、リンカ、デバッガ、その他の支援ツールなどを統合・統一化した開発環境のことである。

Weblio辞書「統合開発環境」より抜粋

難しい単語が並んでますが、、、ざっくり言うとこれがないと開発ができないってことです。
WioLTEはオープンソースハードウェアマイコンとして有名なArduinoのIDEを利用できますので、これをパソコンにインストールしてプログラミングするわけです。

プログラミングにはC言語(厳密には”Arduino言語”として一部拡張されています)を使います。
つまりC言語を書けないと本格的なプログラミングは難しいです。

※もちろんサンプルプログラムなどが付属しているので、それをつなぎ合わせたりするだけで最低限の動作は可能(それでも読むスキルは必要)ですが、改造する場合はやはり最低限の知識は必要になります。

私自身は、かつて仕事でC言語の業務に携わったこともあり、(昔のことなので忘れている部分はありますが)プログラムを書くことができました…大変だった…

IoTに興味がある人へのハードルを上げるつもりは無いんですが、必要最低限のC言語に関する知識は必要になりますので、プログラミング未経験の方は注意が必要です。
(詳しい人からは細かいツッコミがあるかもしれませんが、かなり簡単にまとめてますのでご了承ください)

最初から堅い話になってしまいました。すみません。


D20番ポートはそのままだと電力供給されない事件

気を取り直して行きましょう。
タイトルでネタバレしてますけどね(笑)

悪戦苦闘しながらも温度を計測するためのサンプルプログラムを書いたので、早速温度を計測するところまできました。

温度計測にはDS18B20という防水タイプのデジタル温度センサーを使用しました。

この温度計をD38番ポートとD20番ポートに差し込んで…

スイッチオン!

…んー??D20番ポートの温度計だけ計測できません。

D38番ポートに接続した温度計は正常に温度計測できているようです。
温度計を入れ替えても相変わらずD20番ポート側は正常に動作してくれません。

どうやら、原因は温度計ではなくWioLTE側にありそう…

WioLTEのライブラリ周りをいろいろ調べた結果、D38番ポート以外は電力供給するための宣言をプログラムに明記しないといけないそうです。

これをプログラムの中で実行することで、無事D20番ポートでも正常に温度が計測できるようになりました!

公式ドキュメントを読むのは大事ですね。。。


SDカードどこに挿すの?事件

正直こっ恥ずかしいミスだったんですが、いい思い出なので書きます。

今回はWioLTEで温度を計測して、携帯電話回線を使ってサーバーに温度を送信する仕組みなんですが、

何かしらの原因でサーバーにデータが送信できなかった場合の保険(バックアップ)の仕組みを考える必要がありました。

WioLTEにはmicroSDカードスロットが搭載されているので、計測データをサーバーに送る処理とは別で、SDカードにも温度を書き込んでおくことで、データの消失対策ができると考えたんです。

俺マジ天才じゃね?(盛大な振りです

と思いながら手元のmicroSDを差し込もうと思ったところで事件は起きたんです。

SDカードスロットどこ???

本体を見回しても、SIM用のスロットしか見つかりません。
2枚目の写真の左下にスロットらしきものがありますが、ここはSIMを挿すところなので違います。(盛大な振りです

これではSDカードが挿せないので、当初考えていたSDカードへのデータ蓄積ができないことになってしまいます。これは困りました。

最終的には外付けのSDカードシールドを買ってきて、接続しようと試みる事態に。

そんな時、ふとSeeedさんのWioLTEハードウェア仕様を見ていたら、ある文字が目に飛び込んできました。

TFカード (2 in 1 socket)

Seeed WioLTEハードウェアwiki

TFカード(=microSDカード)2 in 1socket…???

その時嫌な予感がしました。
恐怖に震えながらWioLTEのSIM用ソケットをよーーーーーーく見てみると…

あああ!!!震えてしまって写真がッ!!!!

ありました。SDカードスロット(笑)
なんとSIMとの2階建て構造とは想定外でした。

よーく見れば、ちゃんと本体にも書いてある始末…

やっぱり、公式ドキュメント(略


USBケーブル選定は大事だよ事件

(他にもたくさんドラマがありましたが一気に飛ばして…)紆余曲折ありながらも諸々の課題をクリアして、とうとう田んぼに設置するところまで来ました。

設置に際し、電源(バッテリー)とWioLTEが物理的に少し離れた場所になりそうだったので、USB延長ケーブル(某有名メーカー品)を用意していきました。

田んぼの中で設置作業を進め、バッテリーから延長ケーブルを経由してWioLTEを接続させます。

これで万事うまく行くと思ってたんですが、ここに来て何故かWioLTEが起動しなくなる事態に。
もう少し厳密には、起動しようとするけど電力(電圧?)が足りずに落ちてしまっているように見えます。

問題を切り分けるために、一度延長ケーブルを取っ払って(無理やりWioLTEをバッテリーの近くに持ってきて)起動したところ、正常に稼働しました。

どうやら延長ケーブルに問題がありそうな感じ。
ただ、その当時は何が原因なのかハッキリと特定できず、とりあえず延長ケーブルを使わないように配置を工夫することで問題を回避しました。

後日、Seeedさんの公式ハードウェア仕様を閲覧していた時に、こんな一文が。

USBケーブルの抵抗が大きい場合、LTEモジュール電源をONしたときに再起動してしまう事象が発生しています。

Seeed WioLTEハードウェアwiki

どうやら、延長ケーブル(結構長いタイプ)を使ったために、バッテリーからWioLTEまでの電気抵抗が増大し、WioLTEに十分な電力が届かず起動失敗してしまったようです。(最新モデルではこの問題は解消されているようです)


最後に

今回は、過去2回の記事よりも長くなりました(汗)
もっと細かいことを上げれば、まだまだネタはありそうですが(私の体力と時間の限界で)今回はこの辺にしたいと思います。

次回は(まだあるのか!)田んぼで稼働させたプログラムをmruby/cで動かそうと試行錯誤したお話を書く予定です。
多分これで最後かな?

田んぼIoT in 2018 その2

待望の第二弾!おまたせしました!

ウィルドの豊田です。

前回の記事ではIoT部の設立からハードの選定、システムの全体像について書きましたが、それを実現するために解決しなければいけない課題を挙げました。

まずは課題をおさらいします。

■田んぼの状態を監視するので、屋外での稼働が可能であること

▶防水対策必須

■長期稼働(田植え〜稲刈り)が可能であること

▶電源問題

▶装置側の省電力化

■計測したデータは遠隔からも閲覧(場合によってはメール通知)可能であること

▶計測データのプッシュ送信

 

今回はそれぞれの課題をどのようにクリアしたか説明していきたいと思います。

 

★防水対策

今回採用したマイコンボードWioLTE JP Versionは大きさは5cm × 5cm程度の小さなボードです。

小さいのにSIMを入れれば通信できるんです。

これだけ小さければ、アレに入れられますね。

アレ

100円ショップで買える「タッパー」です。プロトタイプを作るときの定番(らしい)です。

サイズも豊富なので適度な大きさのタッパーを買って加工。

素材がプラスチックなので加工も比較的簡単

空けた穴は温度計のセンサー配線用に2箇所。電源USB用に1箇所。本体を固定するための足場に二箇所。

あとは空けた穴をグルーガンで埋めてタッパーのフタをすれば、防水対策は完了です。

ちなみにグルーガンも100円ショップで買いました。

 

★電源問題

次は電源問題です。

電源問題はIoTを考える上でほぼ間違いなく頭を悩ませる問題になります。

電源(コンセント)なんて無い場所で動かすことのほうが多いですからね。

 

田んぼの温度を計測するので、やはりコンセントなんてありません。更には田植え〜稲刈りまでの約6ヶ月間、電源供給を可能にしなければいけません。

ということで選択したのが

「バッテリー(蓄電)」+「ソーラーパネル(発電)」

の組み合わせです。特にサプライズのない当然の選択ですかね。日中発電した電力をバッテリーに蓄積、夜間(悪天候時)にバッテリーの電力で稼働させます。

バッテリーにもソーラーパネルにも容量(蓄電できる量/発電できる量)があるんですが、今回はかなりマージンをとって大きめのスペックのものを用意しました。

本当は小型化なども検討したかったんですが、そこまでのノウハウが無かったので割り切りました。

鉛ディープサイクルバッテリー
型番    :WP22-12NE
サイズ   :181mm x 76mm x 167mm
定格蓄電容量:12V22Ah(20時間率)
重さ    :6.31kg

ソーラーパネル25W
型番         :AT-MA25SG
公称最大出力     :25W
公称最大出力動作電圧 :18V
公称最大出力動作電流 :1.39A
公称開放電圧     :22.5V
公称短絡電流     :1.5A

 

ちょっとよくわからない数字が並んでますが軽く流しましょう。

これで電源問題はクリア!

 

★装置側の省電力化

上で説明した通り、今回のバッテリーとソーラーパネルはかなり大きいサイズのものを用意しましたので、本体側の消費電力を抑える仕組みは必須ではなかったんですが、何があるかわからないし、できることはすべてやっておこうと思ってやりました。

仕組みは単純で、必要な時(温度を計測する時)以外はマイコンの不要な部分の電源をOFFにして、消費電力を抑えます。

DeepSleepモード

WioLTE(に載っているチップ)は、プログラミングで前述の「不要な部分の電源をOFF」にすることができます。

また、電源をOFFにする前にタイマーを設定することで、特定の時間に再起動させることが可能なんです。

ここで重要なことなんですが

 

 

 

 

 

簡単そうに言ってますけど、めっちゃ難しいんですよ。

 

 

 

 

試行錯誤はしたものの、結局自力での実装は諦めました…

実際に作られた方が解説とソースを公開されていたので、参考にさせていただきましたm(_ _)m

これで消費電力を約半分に抑えられるようになりました!!!

 

★計測データのプッシュ送信

最後にデータのプッシュ送信です。

これはWioLTEを選択した一番の理由にもなってくるわけですが、携帯電話用通信回線を利用できるので、計測データをサーバーに送信できます。

サーバーまで温度データが送られるようになれば、あとはそれを好きなように加工するだけです。

計測した温度を指定のメールアドレスへメールを送ることだってできます。

 

★とうとう田んぼデプロイ

細かい事を言うと、もっとたくさんのネタがあるんですが、書き始めると終わらないので省略して、最終的にこんな感じで設置しました!

気温計測のために手作り百葉箱を作って、鉄パイプの骨組みの上に設置してます。上にはソーラーパネルもあります。

 

温度もちゃんと計測できてるみたい!

 

大変だったけど、なんとか稼働までたどり着くことができましたー!

 

かなり駆け足で説明してきましたが、実際にはこれらの課題をクリアするのに試行錯誤を繰り返し、土日を使った活動とはいえ4ヶ月くらいかかってます(笑)

 

次回は、今回書いた「課題」とは違う意味で困った点などを振り返りたいと思います。

それでは!