Edited at

LoRaでIoTプラットフォーム(ThingSpeak)にデータを上げる方法

More than 1 year has passed since last update.


イントロダクション

このところ色々なところで話題に上がるIoTの分野で、「モノ」と「インターネット」をどう繋ぐのか?がITを生業にしている我々の一つのテーマになってきていると思います。


  1. 「モノ」の情報をどのように取得するのか?

  2. 取得した情報をどのようにインターネットに送るのか?

  3. インターネット側の情報の受け皿はどうすればよいのか?

この記事では、弊社(株式会社オープンウェーブ)のLoRa IoT スターターキットを使い、

「1.」→ 温度/湿度センサー

「2.」→ LoRa

「3.」→ ThingSpeak

という具体的なものを用いて、実践します。


LoRaとは

LPWA(Low Power Wide Area)のIoT向け無線規格の一つで、次のような特徴があります。


  • 省エネ

  • 長距離(数km)



  • 低コスト


    • 通信費はかかりません。



  • 誰でも簡単に利用できる


    • LoRaはLPWAの中でも特定小電力無線局になり、免許を要しない無線局がつくれます。※

    • LoRaは仕様がオープンです。(他の規格では、仕様がクローズドで使用するのに制約あるのものもあります)



※特定省電力は、電波発信者の許可は必要ありませんが、利用する無線機器は、技適審査が認可したものでないと電波法違反となります。(下記サイト3−(4))

http://www.tele.soumu.go.jp/j/adm/proc/free/

当記事で用いるDragino LG01-JP、LoRa miniは、技適審査を通してあります。


ThingSpeakとは

IoTでの利用を目的としたデータストアのサービスです。

RESTによるデータのアップロードと、Arduino IDEで利用できるライブラリを用意してくれているので、簡単IoT実験の強い味方です。

無料版ですとノード(IoTデバイス)数の制限等があるので、実際に業務で使用するレベルになると有料版にした方が良いのかもしれません。


全体像

全体像.PNG

17103635_1258595670903509_7489584472435788884_n.jpg


使用ハードウェア


  • Dragino社のLoRa IoT スターターキット


    • Dragino LG01-JP:LoRaゲートウェイ

    • Dragino LoRa mini Dev:LoRaノード

    • DTH11:温度センサー




使用ソフト


  • Arduino IDE(1.6.13)


使用プログラム

https://github.com/openwave-co-jp/LoRaToThingSpeak


  • LoRaToThingSpeak/dht11_client/dht11_client.ino  →ノード用(LoRa mini)

  • LoRaToThingSpeak/dht11_server/dht11_server.ino  →ゲートウェイ用(LG01-JP)


手順


ThingSpeakの設定

https://thingspeak.com/

ThingSpeakにアカウントを作成し、チャネル追加します。

Channel Settingで、フィールド1とフィールド2を有効にします。

すると、チャネルIDと書き込みキー(WriteAPIKey)が得られます。


LoRaゲートウェイのプログラミング

「使用プログラム」のdht11_server.inoを、Arduino IDEで開きます。

チャンネルIDと書き込みキー(WriteAPIKey)を取得したものに書き換えます。

→LG01-JPに書き込み

LG01-JP.PNG

注意)ゲートウェイ側のプログラムで、ThingSpeakのライブラリを使いますが、ThingSpeakのライブラリで、Console使っているので、プログラム上でConsoleを書くとデータがアップされないです。


LoRaノードのプログラミング

こちらの手順では、LoRa miniを検証しやすいようにボードに載せたLoRa mini Devを使用しています。(LoRa miniは、基盤中央の色の違う部分)

「使用プログラム」のdht11_client.inoを、Arduino IDEで開きます。

→LoRa mini Devに書き込み

LoRamini.PNG


LoRaMiniと温度湿度センサーをつなぐ

センサー.png

DTH_配線.png

LoRa mini Dev
DTH11

3.3V(3V3)
VCC

GND
GND

A0
DATA

LoRa mini Devの仕様につきましてはこちらをご覧ください。

http://www.dragino.com/products/lora/item/126-lora-mini-dev.html


接続確認

17097637_1258595660903510_8944428548623925780_o.jpg


最後に

今回は、RadioHeadのライブラリでやりましたが、次回はLMIC(LoRaWANのライブラリ)でやってみます。

なお、こちらのチャネルはパブリックで見れるので、スマホアプリ「ThingView」でチャネルID:234900でどなたからもご覧いただけます。

Screenshot_20170309-164645.png


注意

プログラミングにはArduino IDEを使用しますが、事前にArduino IDEに次の設定が必要です。


  • Dragino向けの設定をしておく必要があります。
    http://www.ibeacondo.com/download/LG01_LoRa_Gateway_Manual_JP.pdf

  • 次のライブラリを検索してインクルードしておく必要があります。


    • 「LoRa sending data」(LoRaライブラリ)

    • 「ThingSpeak」(ThingSpeakライブラリ)

    • 「DHT sensor library」(DHTライブラリ)

    • 「Adafruit Unified Sensor required」(DHTライブラリが使用するライブラリ)



  • RadioHeadライブラリをインターネットから取得して、インクルードしておく必要があります。
    https://github.com/dragino/RadioHead/archive/master.zip

この記事で使用するソースは、使用するハードに依存している部分が大きいため、他のハードとの組み合わせでどうなるかは分かりません。


FAQ


USB電源を使った場合に、温度が20度になってしまう

実際の温度に関わらず温度が20度となってしまう場合は、温度湿度センサーからのデータ取得に失敗している可能性があります。


対応

USB電源を接続した後に、リセットボタンを押してください。

症状が改善される場合があります。