今回のミッション
有線もWiFiもないところで温度データを測定する
電源もWiFiもない場所で温度データを離れた場所でモニターしたい!そんな要望に応えるためにTWE-Liteを使ってみます。最終的には、TWE-Liteモジュールを介して送られてくる温度データをRaspberry Piという小型Linux PCを中継してクラウドサーバAmbientに送信することを目的としています。今回は、とりあえずTWE-Liteを使って温度データを手元のPCに送信するところまでをやってみます。
みなさんこんにちは。このコーナーでは、農業に従事している方がDIYでIoTを使えるようになることを目指しています。というのも、昨今ではIoTが注目されているのもさることながら、そのIoTデバイスの作成をかなり簡単にできる環境ができあがってきているからです。自分でつくれば自分で直せますし、より高度なものが必要で何かを購入する場合でも、その製品をある程度評価することができるはずです。
しかも、製品となると精度や堅牢性など非機能的性能(温度を測るとか直接の目的ではないもの)が求められるために、どうしても高額になりがちです。自分でつくれば、ちょっとくらい精度がわるくても(温度±2度くらいかまわないとか)、多少データが飛んでも(5分に一回かならずデータが必要なわけじゃないとか)、まあいいかみたいな判断もできます。
さて、農業をするうえで、いろんなデータがほしいと思うことがあります。温度や湿度、風速、日射量、CO2濃度などさまざまです。このうち温度は、特に重要で、作物の成長や生理などにつよくかかわります。また、圃場は、電源もないしWiFiもない、それでいて離れたところでデータをみたい。なんて要望はふつうにあるんじゃないでしょうか。
そんなわけで、今回は、そのような要望に応えるようなデバイスをつくってみようと思います。ふつう電子工作の初歩というとLチカなどから始めるんですが、そういったものについては、他にもいろいろ情報があるし、やってみても「で?」みたいなことになりかねないので、少し大変ですが、実用的なものをつくることにしました。
無線通信はどれがいいのか
現在、さまざまな無線通信方式が活用されています。みなさんの身近なところでは、携帯電話やスマホの3G、4G、LTEや家庭の中で使っているWiFi、またはちょっとしたデバイス(マウスなど)で使われているBluetoothなどです。これらの無線方式は、電波の届く距離や送受信できるデータの量が異なり、それぞれの用途にあったシーンで使われています。
上の図で示すように、3Gは通信距離も容量も大きいのでこれでいいじゃん?と思うかもしれませんが、デバイスごとに契約が必要になるでしょうし、Wi-Fiは容量が大きいものの電力を食うので電源のないところでは使いにくい。そんなわけで、今回はZigbeeという無線方式を用いることにします。
Zigbeeといってもなじみがないかもしれませんが、センサーのデータなど一回ごとの通信にあまり大きな容量を必要とせず、それでいてそこそこの距離をとばしたいというような場合にマッチする通信方式です。さらにもっと遠くへ飛ばしたいという場合にLPWAという方式が用いられますが、今回は触れません。
Zigbeeの無線方式を使うことができる無線モジュールは古くからXbeeというものがありましたが、今回はTWE-Liteという無線モジュールを使います。この無線モジュールは、Xbeeよりも通信距離が長いことや消費電力が小さいという特徴があります。
TWE-Liteを買う
今回使用した部品は以下のものです。
名称 | 単価 | 説明 |
---|---|---|
TWE-LITE-DIP | ¥1,800 | 無線マイコンモジュールTWE-LITEをブレッドボードにさせるようにしたもの。なので配線が楽。アンテナ形状について3タイプある。今回はマッチ棒アンテナのついたものを買いました。 |
MONOSTICK | ¥2,760 | TWE-LITEをUSBジャック(タイプA)に差し込めるようにしたもの。PCにさすとシリアルで通信できる。 |
TWE-LITE-R | ¥2,250 | TWE-LITE-DIPとPCをUSBで接続して、プログラムを書き込んだり、設定を変更するために使う。 |
温度センサADT7410 | ¥500 | I2C通信方式の温度センサモジュール。測定範囲は-40~105℃ |
カーボン抵抗 4.7KΩ 1/4W | ¥100 | 100本入りのもの。 |
電池ケース 単3×2本 | ¥50 | |
ブレッドボード | ¥200 | 商品は参考です。どれでもよいです。 |
ジャンパー線 | ¥180 | 商品は参考です。どれでもよいです。 |
ピンヘッダ14p × 2 | ¥40 | TWE-Lite-Rをブレッドボードにさすために使います。必ずしも必要ではありません。また、ピンヘッダは必要な長さに折って使えばいいのでどんな長さのものでもいいです。ただしピッチは2.54mmのものを使います。 |
温度センサーと直接接続し、データを送信するために、TWE-Lite-DIPを用いました。これが子機となります。TWE-Lite-DIPは、ブレッドボードへ差せるようになっているので便利です。TWE-Lite-DIPにはBlueとRedがあってRedの方が通信強度が大きいので、少し遠くへ飛ばしたい場合はそちらを選んでもいいかと思います。ただしその分消費電力が大きくなります。また、アンテナの形式が2つあり、マッチ棒型でもともとアンテナがついているものと、後付でアンテナが選べるものがあります。後付のアンテナにはいろいろあって用途に応じて選べるので、無駄な買い物をしたくないと思う方は、後付のものを、とりあえずよくわからないけど使ってみたいという方はアンテナ付のものを買えばいいと思います。
また、今回は受信側(親機)に、MonoStickを用いました。これもTWE-Liteモジュールなのですが、USBポートに差せるようになっていて、PCのシリアルからデータをひろえます。とりあえず便利なのでこちらを使いましたが、親機にTWE-Lite-DIPを使うこともできます。ちなみにMonoStickにもBlueとRedがあり、Redのほうが受信能力が大きいそうです。
TWE-Lite-Rは、TWE-Lite-DIPにPCから設定をかきこむために使います。
また、今回、受信側のPCにはWindowsマシンを使っています。
MonoStick(親機)の設定
TWE-Liteには、用途に応じていくつかのアプリが用意されています。今回は無線タグアプリを使用します。このため、TWE-Liteモジュールに無線タグアプリをかきこむ必要があります。まず、親機から設定しましょう。
PCからTWE-Liteへプログラムの書き込みをするためのプログラマソフトウェアが用意されていますので、これをダウンロードします(←「ダウンロード」をクリック)。
ダウンロードページへ行くと、ややわかりにくいのですが、「ダウンロード」というリンクがあるのこれをクリックしてください(上の図)。そうするとzipファイルがダウンロードされてくるので、どこでも好きなところで解凍します。
さらに、無線タグアプリをダウンロードします。「親機・子機・中継機」用というリンクをクリックするとダウンロードされるので、これも適当なところに解凍してください。
ここまでできたら、PCにMonoStickをさします。そして、プログラマを起動します。先ほど解凍したプログラマソフトウェアのフォルダにTWE-Programmer.exeというファイルがあるのこれをクリックします。
ちゃんとMonoStickを認識していればこの時点で左上のプルダウンにポートとMonoStickという文字が表示されています。次に「ソフトウェアを選択して・・・」というボタンをクリックして、さきほどダウンロードし解凍した無線タグアプリのフォルダから、 App_Tag-Parent-BLUE-MONOSTICK.bin を選択します。書き込みが済むまで待てば完了です。
TWE-Lite-DIP(子機)の設定
次に、TWE-Lite-DIPすなわち子機の設定をしますが、こちらは直接PCにささらないのでTWE-Lite-Rを使います。TWE-Lite-RにTWE-Lite-DIPを差し込むとき、方向に注意してください。丸い切欠きのマークをそろえるように。反対につけると発熱します。ちゃんと差し込めれば、それであとは基本的にMonoStickの場合とほぼ同じです(かきこむプログラムは違う)。さした状態でプログラムソフトウェアを起動し、TWE-Lite-DIPを認識していることを確認し、 App_Tag-EndDevice-BLUE.binをかきこみます。
これでプログラムはかきこめたのですが、子機側では、ADT7410というセンサーを使いますという設定をする必要があります。このため以下の2つの作業が必要です。
- M2端子をGND端子につなぐためTWE-Lite-Rにピンヘッダをはんだ付けする。
- 設定をかきこむためにTeraTermというソフトウェアをインストールする。
設定の書き込み時には、TWE-Lite-DIPのM2端子とGND端子をつなぎ、M2端子をLOWにする必要があります。
本来つなぎさえすれば、方法はかまわないのですが、下の写真の様にTWE-Lite-Rにピンヘッダを取り付け、それをブレッドボードにさして、ジャンパー線でつなぐというのが一番いいかと思います。
準備ができたら、次にTera TermというソフトウェアからPCのシリアルポートを介してTWE-Lite-Rと接続します。Tera Termがない場合は、窓の杜のダウンロードサイトからゲットしてください。
インストールができたら、起動します。
接続方法を選択するウィンドウがでてくるので、シリアルを選びます。このとき、ポートを選択するのですが、図のようにすでにそのポートが表示されていればそのままOKでいいです。そうでないときは、PCのコントロールパネルからデバイスマネージャを起動し、「ポート(COMとLPT)」の欄でUSB Serial PortがCOMの何番になっているか確認しその番号を使います。
接続できたら、[設定] -> [シリアルポート]を選択し、ボーレートを115200に変更し、OKボタンをクリックします。そうすると白紙の画面がでますので、この状態で、TWE-Lite Rのリセットボタンを押すと設定画面になります(これはもう設定かえちゃってる状態ですけども)。
ADT7410を使う設定に変更するためセンサーモードを32にします。
「m」を入力して、入力待ちになったら、32 と入力してEnterし、ちょっと待って「S」を押すと設定されます。 これで子機として使用可能になりました。
TWE-Lite-DIP(子機)とADT7410の配線
さて、やっと配線です。TWE-LITE-RからTWE-LITE-DIPを抜いて、ジャンパー線で以下の様に配線します。2つの抵抗はどちらも、4.7KΩです。
通信してみる
これで通信が可能になります。MonoStickをもういちどPCに差しこみ、Tera Termで接続します。COMポートとボーレートの設定は子機のときと同じです。接続するやいなや5秒おきにどんとんデータが受信されるのがわかります。
第一回はここまでです。お疲れ様でした。次回は、受信側をWindows PCからRaspberry Piに変更して、クラウドサーバに送信するようにします。