IoTをnode-redを使って考えてみる。

node-redはIoTに必要なプログラミングをブラウザでできてしまうというツールです。基本的な考えは様々なデバイス(

node)から出力されるメッセージ(データ)を取得して、処理して、どこかに投げるというツール(flow)で、直感レベルでできるというのが売りみたいですけど、デバイスとかの知識はないとだめです。

例えば、Raspberry Pi のGPIOの知識がないとLチカはできないです。

読み込んだデータをデータベースにインサートしたり、MQTT(例えば、mosquitto)で別のサイトに転送するとか色々できます。

とはいうものの、センサーから得られるデータをnode-redで処理ができるのかまだ謎なので、センサーから得られるデータを処理するプログラミングを書いて、それをnode-redに読み込ませるというのが楽なのかなぁとか思ってます。

 

センサーとArduinoとRaspberry Piでしたいこと(2)

準備したもの。

Arduino UNO R32
Raspberry Pi 2 Model B1
DIGI-XB24-Z7WIT-0042
Arduino ワイヤレスプロトシールド1
DFR0015(Xbeeシールド)1
BME280使用 温湿度・気圧センサモジュール1
FT232RL USBシリアル変換モジュール1

Arduino UNOはプロトタイプとして使ってます。真面目に使う時は互換機を作るなりして、コストダウンを図らないとダメだなとか思います。それとXbeeもXbeeシールドを使っているのだけど、プロトタイプとして作るには便利ですけど、実際に使うとなるとコストがかかるので、これも考えないといけないです。XbeeシールドはArduino ワイヤレスプロトシールドを2つでも良いのですが、DFR0015の方が安かったので途中で路線変更した結果です。

 

これを順番に組み立てて、それぞれで動作確認をしながら組み立てていきます。

  1. Arduino UNOとBME280の接続
  2. Xbee同士の通信
  3. Arduino UNOからXBeeでの通信
  4. Xbee経由でArduino UNOとの通信
  5. Arduino UNOとRaspberry Pi 2 Model Bとの通信
  6. Raspberry Pi 2 Model BでMySQLへの書き込み
  7. Raspberry Pi 2 Model B上のMySQLとCentOS7上のMySQLとでレプリケーション
  8. CentOS7上のMySQLのデータを使って、グラフ化をする

くらいでしょうか。随分としないといけないことが多いです。

センサーとArduinoとRaspberry Piでしたいこと(1)

今のところのモチベーションとして、センサーを配置して、センサーのデータを収集して、それをデータベースに入力して、そのデータを使って、いろいろなことに使いたいなぁというものがある。最近だと、Raspberry PiやArduinoとかの小型PC、マイコンが簡単に扱えるので、これを使えばできないかなぁと思うところです。

 

Raspberry PiとArduinoの大きな違いはRaspberry PiはあくまでPCなので電源をきちんと確保しないといけないとか、電源を突然切ってはいけないとか取り扱いがちょっと面倒というのがあるけど、その一方で複数のプログラムを同時にうごかすことができるから機能的には便利です。Arduinoは複数のプログラムを動かすことはできないという問題はあるんですけど、消費電力が小さくて、電源を突然切っても問題がないという利点があります。

 

センサーをあちこちに配置する時に一番の問題になるのが電源です。センサーを設置したいところで必ずしも電源が確保できるとは限らないので、太陽電池、バッテリーで長時間稼動できないといけなくなります。こうなうとRaspberry Piには不向きです。消費電力が小さく、電源断でも機器的に問題のないArduinoに向いています。逆にネットワークを使っていろいろしたいというならばRaspberry Piの方が便利です。

ということで、最初のモチベーションの実現方法を考えると次の図のようになるかなと思います。

 

Xbee_1

 

センサーから得られた情報をArduinoで数値化して、それをXbee経由でもう一台のArduinoに転送します。その他とで、シリアルでRaspberry Piとつないで、Raspberry Piに転送します。Raspberry PiではMysqlが稼動していて、いったんそこにデータを格納します。基本、ここまでできればいいのですけど、データのバックアップも兼ねて、センター側のサーバーにデータを転送します。

直接、センサーとXbeeをつないで、XbeeとRaspberry Piをつないで、Arduinoなしでつなぐという方法もあるのだけど、様々な種類のセンサーをつないでも大丈夫なようにしようとすると、Arduinoで一度、データを整形してからの方が便利かなと思ってます。センサーはアナログのものもあれば、デジタルのもあるので、こういうのの処理はArduinoの方が得意です。Raspberry Piはアナログ系が弱いという問題もありますから。アナログはArduino、デジタルはRaspberry Piで処理するというのもあると思いますが、構造が複雑になりそうなので、センサーからの情報はArduinoで処理した方が簡単になると思っています。それに、Arduinoは先人の人たちによるそれぞれのセンサーに合わせてスケッチがあったりして便利なんです。また、Arduinoは互換機を簡単に作れるので、安く作ろうとしたら500円くらいで作ることができるので、あまりコストも高くないのでコントロール性を考えると良いのかと思っています。

 

ということで、この仕組みを作り上げるために順番に作っていきたいと思います。