デジタルセンサー版

この電子工作を開発した 2016 年頃は、デジタル接続の センサはポピュラーではなかったように思います (私が知らなかっただけかもしれません)。 2025 年現在、ラズパイに I2C 接続できる多種多様なセンサが 販売されています。 温度、湿度、照度はデジタル接続のセンサから取得する方が 校正が不要なので簡単かもしれません。

デジタルセンサー版の回路図を以下に示します。温度、湿度、照度を I2C 接続 のセンサから取得します。Arduino は自作していますが、製品版を シリアル、あるいは USB で接続しても、もちろんかまいません。


クリックすると PDF が開きます

赤外線信号送信だけを Arduino に任せ、それ以外は 全てラズパイに I2C 接続されたセンサを使って行います。

I2C を使うために以下のものをインストールしてください。

   # apt install i2c-tools
   # pip install smbus2

Web サーバとして apache2 を使います。 apache2 は www-data というユーザの権限で動作します。 www-data の権限で CGI が動作するよう以下のようにします。

$ sudo visudo

ファイルの末尾に以下の 1 行を追加

www-data ALL=(ALL) NOPASSWD: ALL

デフォルトでユーザ pi は I2C にアクセスできますが、 www-data はできません。 www-data が起動したプログラムが I2C にアクセスするには、 www-data をグループ I2C のメンバーとして登録することが 必要です。以下の 2 つの作業が必要です。

  1. # raspi-config を実行して I2C を有効にする。
  2. # adduser www-data i2c を実行して www-data をグループ I2C のメンバーに加える

I2C に 2 個のセンサを接続した場合、Raspberry Pi 2 では ボーレートを落とさないと I/O エラーが発生しました。 /boot/config.txt に以下の 1 行を追加してボーレートを 100 kbps に 落とします(デフォルトは 400 kbps)。

dtparam=i2c_baudrate=100000

サンプルファイルを以下に示します。

トップにもどる