Arduino UNOとBME280の接続

BME280は気圧、温度、湿度が図れるセンサーです。秋月Switch-ScienceでI2Cで使えるようにしたのが売ってますので、それを買ってきます。使い方はSwitch-Scienceの方で使い方が書いてあるので、それを参考にします。秋月Switch-Scienceとでピンの配置と名前が微妙に違うのですが、秋月の方でも、同じ風に接続ができます。ちなみに今回は秋月の方を使用しています(理由は秋月に行ったら、置いてあったので)。秋月の方だとプルアップ用の抵抗が付いているので、それを使えばプルアップをする必要はないのですが、ハンダでつながないといけないとかあるので、そうなるとRaspberry Piで使うときに面倒なのでここではプルアップ用の抵抗は別途用意しています。

BME280

あとはArduino UNOに接続して、Arduino IDEからSwitch-Scienceのスケッチをアップロードしてしまえば動きあす。特に問題はないともいます。

センサーと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円くらいで作ることができるので、あまりコストも高くないのでコントロール性を考えると良いのかと思っています。

 

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