/sensor-pi

🌡️🌀💧🏭 > 🕊

Primary LanguageGo

sensor-pi

  • Raspberry Pi 4とsensor類をつなげてみる

概要

  • bme280から気圧・温度・湿度 / mh_z19からCO2濃度を取得する@多摩川あたり
  • 取得したデータを使って線グラフを生成
  • データ取得と線グラフ生成は以下タイミングで実行し、ツイート
    • 毎日09:00/18:00
    • Bluetoothリモコンシャッターのボタン押下時

構成

実行基盤

  • cronとDaguを利用。
  • 各実行コマンドの依存をYAMLファイルに記載しDaguを実行する。
  • Daguにはserverサブコマンドがあり、依存関係も視覚的に確認できる。

Tweet

扱うsensorなど

LaDicha MH-Z19 0-5000PPM CO2室内空気質モニタ用赤外線CO2センサUART / PWM

ACEIRMC BME280搭載 温湿度 気圧センサーモジュール 5V用 SPI I2C Arduino対応 Raspberry Pi 4個入り

Bluetoothリモコンシャッター

  • このツイートにインスパイアされて購入。
  • ボタンを押して、その時の計測値とグラフをツイートするようにした。
  • 作業風景

Links

  • 「エキスパートたちのGo言語」の「Raspberry PiによるCO2、温湿度、気圧のモニタリング」p219~ をやっていく。

  • https://github.com/ddddddO/embedded-using-wio_terminal

  • 作業風景

  • 紹介記事

  • raspberry pi GPIO

  • RaspberryPiで学ぶ電子工作

    • I2C(p159~)
      • シリアル通信と呼ばれるデータ通信方式の一つ
      • I2C通信を使うと、デジタル値を出力するセンサを多数扱える
        • センサに、センサとADコンバータが内臓されているため、内部のセンサが出力するアナログ値->ADコンバータ->デジタル値出力、となるから、I2Cで扱える
      • マスター・スレーブというふうにデバイスを捉える
        • 今回なら、RaspberryPiがマスターで、BME280がスレーブ
        • スレーブにはアドレスという概念がある
      • マスター・スレーブの各デバイスは、SDAとSCLの2線で接続される
        • SDA: シリアルデータ
        • SCL: シリアルクロック
        • (本来、I2C接続にはプルアップ抵抗なるものが必要だが、RaspberryPiに内蔵されている)
      • マスター・スレーブを接続し、i2cdetect -y 1 コマンドをマスターで実行すると、スレーブのアドレスを取得できる、と理解
        • 今回なら、76 がBME280のアドレス
      • 各センサの仕様を確認しないと、そのセンサのアドレスや、どのレジスタ(のアドレス)からデータの読み書きをすればいいかわからない
  • mh-z19を利用可能にする

    • ref: https://rcmdnk.com/blog/2021/02/18/computer-iot-raspberrypi/
    • /boot/config.txtに以下を追記しrebootする
      • dtoverlay=disable-bt
        • 2022/10/01 に「Bluetoothリモコンシャッター」を使いたいため、コメントアウトした。
          • そのままの状態で、uartではなくpwmで通信することで対処した。