現在ウィルドで取り組んでいる田んぼIoTの1年を振り返った記事を書いています。超大作なので何回かに分けて投稿してます。その2前回は実際に田んぼで長期間稼働させるための課題と解決までの試行錯誤について書きました。今回は、もう少し脱線(?)して、課題ではないけれど大変だったこと(主にWioLTE関連)編として書きたいと思います。Versionを選定しました。エルティーイー)とはSeeed社が開発しているマイコンモジュール。Groveコネクタを搭載してるので、センサー類の接続がとても簡単。SIMを挿入することで、携帯電話回線を利用した通信を行うことが可能。SIM」を利用しました。C言語が書けない(読めない)と大変だよ事件のっけから、そもそもの話になってしまうんですけども。WioLTEを動作させるには、もちろんプログラミングが必要です。WioLTEのプログラミングには、IDE(統合開発環境)が利用できます。統合開発環境とは、ソフトウェアの開発において用いられるエディタ、コンパイラ、リンカ、デバッガ、その他の支援ツールなどを統合・統一化した開発環境のことである。難しい単語が並んでますが、、、ざっくり言うとこれがないと開発ができないってことです。WioLTEはオープンソースハードウェアマイコンとして有名なArduinoのIDEを利用できますので、これをパソコンにインストールしてプログラミングするわけです。プログラミングにはC言語(厳密には”Arduino言語”として一部拡張されています)を使います。C言語を書けないと本格的なプログラミングは難しいです。※もちろんサンプルプログラムなどが付属しているので、それをつなぎ合わせたりするだけで最低限の動作は可能(それでも読むスキルは必要)ですが、改造する場合はやはり最低限の知識は必要になります。私自身は、かつて仕事でC言語の業務に携わったこともあり、(昔のことなので忘れている部分はありますが)プログラムを書くことができました...大変だった...IoTに興味がある人へのハードルを上げるつもりは無いんですが、必要最低限のC言語に関する知識は必要になりますので、プログラミング未経験の方は注意が必要です。(詳しい人からは細かいツッコミがあるかもしれませんが、かなり簡単にまとめてますのでご了承ください)最初から堅い話になってしまいました。気を取り直して行きましょう。タイトルでネタバレしてますけどね(笑)悪戦苦闘しながらも温度を計測するためのサンプルプログラムを書いたので、早速温度を計測するところまできました。温度計測にはDS18B20という防水タイプのデジタル温度センサーを使用しました。この温度計をD38番ポートとD20番ポートに差し込んで...スイッチオン!...んー??D20番ポートの温度計だけ計測できません。D38番ポートに接続した温度計は正常に温度計測できているようです。温度計を入れ替えても相変わらずD20番ポート側は正常に動作してくれません。原因は温度計ではなくWioLTE側にありそう...WioLTEのライブラリ周りをいろいろ調べた結果、D38番ポート以外は電力供給するための宣言をプログラムに明記しないといけないそうです。これをプログラムの中で実行することで、無事D20番ポートでも正常に温度が計測できるようになりました!公式ドキュメントを読むのは大事ですね。こっ恥ずかしいミスだったんですが、いい思い出なので書きます。何かしらの原因でサーバーにデータが送信できなかった場合の保険(バックアップ)の仕組みを考える必要がありました。WioLTEにはmicroSDカードスロットが搭載されているので、計測データをサーバーに送る処理とは別で、SDカードにも温度を書き込んでおくことで、データの消失対策ができると考えたんです。俺マジ天才じゃね?(盛大な振りですと思いながら手元のmicroSDを差し込もうと思ったところで事件は起きたんです。SDカードスロットどこ???本体を見回しても、SIM用のスロットしか見つかりません。2枚目の写真の左下にスロットらしきものがありますが、ここはSIMを挿すところなので違います。(盛大な振りですこれではSDカードが挿せないので、当初考えていたSDカードへのデータ蓄積ができないことになってしまいます。最終的には外付けのSDカードシールドを買ってきて、接続しようと試みる事態に。そんな時、ふとSeeedさんのWioLTEハードウェア仕様を見ていたら、ある文字が目に飛び込んできました。1socket...???その時嫌な予感がしました。恐怖に震えながらWioLTEのSIM用ソケットをよーーーーーーく見てみると...あああ!!!震えてしまって写真がッ!!!!ありました。SDカードスロット(笑)なんとSIMとの2階建て構造とは想定外でした。見れば、ちゃんと本体にも書いてある始末...やっぱり、公式ドキュメント(略USBケーブル選定は大事だよ事件(他にもたくさんドラマがありましたが一気に飛ばして...)紆余曲折ありながらも諸々の課題をクリアして、とうとう田んぼに設置するところまで来ました。設置に際し、電源(バッテリー)とWioLTEが物理的に少し離れた場所になりそうだったので、USB延長ケーブル(某有名メーカー品)を用意していきました。田んぼの中で設置作業を進め、バッテリーから延長ケーブルを経由してWioLTEを接続させます。これで万事うまく行くと思ってたんですが、ここに来て何故かWioLTEが起動しなくなる事態に。厳密には、起動しようとするけど電力(電圧?)が足りずに落ちてしまっているように見えます。問題を切り分けるために、一度延長ケーブルを取っ払って(無理やりWioLTEをバッテリーの近くに持ってきて)起動したところ、正常に稼働しました。延長ケーブルに問題がありそうな感じ。その当時は何が原因なのかハッキリと特定できず、とりあえず延長ケーブルを使わないように配置を工夫することで問題を回避しました。後日、Seeedさんの公式ハードウェア仕様を閲覧していた時に、こんな一文が。USBケーブルの抵抗が大きい場合、LTEモジュール電源をONしたときに再起動してしまう事象が発生しています。WioLTEハードウェアwikiどうやら、延長ケーブル(結構長いタイプ)を使ったために、バッテリーからWioLTEまでの電気抵抗が増大し、WioLTEに十分な電力が届かず起動失敗してしまったようです。(最新モデルではこの問題は解消されているようです)最後に今回は、過去2回の記事よりも長くなりました(汗)もっと細かいことを上げれば、まだまだネタはありそうですが(私の体力と時間の限界で)今回はこの辺にしたいと思います。次回は(まだあるのか!)田んぼで稼働させたプログラムをmruby/cで動かそうと試行錯誤したお話を書く予定です。その4あけましておめでとうございます。始まったばかりの2019年ですが、気づけばもう1月も半分が終わってしまいましたね。本当にあっという間です。wのGPIOでLチカ二回目の投稿になります。