logo header
logo header
logo header
logo header
  • 2016.12.05
  • 技術ブログ電子工作

Raspberry Pi で湿度センサーを動かそう!

raspberrypi_am2320_top

はじめに

今回のテーマは「センサーを使って外部の情報を取得する」。
IoT(Internet of Things)を実現するうえでの大切な技術要素のひとつです。

センサーには、光センサー・音センサー・加速度センサーなど、たくさんの種類があります。これらのセンサーが人間の五感の役割を担い、外部からの情報を収集して数値化します。

今回は「AM2321」という温湿度センサーを使って、自宅の湿度を測定してみます。

温湿度センサーの入出力インタフェースを確認する

AM2321には4つのピンが付いているので、それぞれどのような役割なのかを調べます。

今回は、秋月電子通商が公開しているデータシートで確認します。

raspberrypi_am2320_01
出典:http://akizukidenshi.com/download/ds/aosong/AM2321_e.pdf

1番ピン:VDD
2番ピン:SDA
3番ピン:GND
4番ピン:SCL

実際の部品で見てみると、このようになります。
raspberrypi_am2320_02

センサーのピンに対応する Raspberry Pi の GPIO端子を確認する

センサーを接続するために、それぞれのピンに対応する Raspbery Pi の GPIO端子を確認します。

raspberrypi_am2320_03
出典:http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/

VDD:17番ピン(複数ありますが、今回は17番)
SDA:3番ピン
GND:30番ピン(複数ありますが、今回は30番)
SCL:5番ピン

実際に接続すると、このような感じになりました。
raspberrypi_am2320_04

Raspberry Pi で I2C通信を有効にする

今回使用するセンサーは「I2C」という通信規格を使うため、Raspberry Pi で I2C通信を有効にする必要があります。設定手順は「Raspberry PIで温度湿度センサーをRubyで動かす」を参考にしてください。

センサーとの疎通確認をする

i2cdetect コマンドを使って、センサーが認識されていることを確認します。

センサーのI2Cアドレス「0x5c」が検出されています。これで、センサーと Raspberry Pi の疎通確認が取れました。

湿度を取得する Python プログラム作成

最初に、Python の I2Cモジュールをインストールします。

次に、センサーが読み取った湿度をコンソール出力するプログラムを作成します。
こちらは「温湿度センサAM2320をRaspberry Pi 3で使用する」を参考にさせていただきました。

※使用するセンサーの種類によって、データの読み出し方法は変わります

いざ、作成したプログラムを実行してみると...湿度3288.3%!?

I2C の Repeated Start Condition を有効にする

湿度の値がおかしい原因を調べたところ、Repeated Start Condition という機能を有効にする必要がありました。

/etc/modprobe.d/i2c.conf という名前のファイルを作成して、以下の内容を記入します。

Raspberry Pi を再起動したら、再チャレンジ。

部屋の湿度が取得できました♪

実行結果は以下のように変わりました。現実的な数値なので、正しく取得できているようです。

もっと乾燥していると思いましたが、意外と理想的な数字でした 🙂

まとめ

Raspberry Pi と温湿度センサーを使って、部屋の湿度を取得することができました。I2C通信を使えるようにすること、センサーが取得した湿度を計算して読み出すことがポイントだったと思います。

センサーの読み出し方は、以下のブログで少し詳しく説明されています。
I2Cセンサー取扱いのコツ

次回は、コンソール出力していた湿度を、LED数字表示器へ出力してみます。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!