はじめに
空気中の二酸化炭素の濃度によって集中力に影響ができることを知っていますか?
今まで触ったことのないラズベリーパイを利用した空気質を測る装置を作る記事を見かけやってみたくなりました。
準備物
参考資料
構築手順
元記事の手順だと使えないパッケージがあるため pip3を利用してインストールします
$ sudo apt install python3-pip
$ sudo pip3 install wiringpi
また、元記事だとC言語で作成していますがパッケージがないためPythonを使用してプログラミングします。
コードはサンプルにあるのでそちらを利用して出力をjsonに書き換えます
以下のスクリプト例では、光センサーからデータを読み取り、JSON形式で出力する方法を示しています
BH1750.py
#!/us#!/usr/bin/python3
import time
import smbus
import json
BH1750_ADDR = 0x23
CMD_READ = 0x10
class BH1750(object):
def init(self):
# Rev 2 of Raspberry Pi and all newer use bus 1
self.bus = smbus.SMBus(1)
def light(self):
data = self.bus.read_i2c_block_data(BH1750_ADDR, CMD_READ)
result = (data[1] + (256 * data[0])) / 1.2
return format(result,'.0f')
if name == "__main__":
try:
obj = BH1750()
data = { "light": obj.light() }
json_data = json.dumps(data)
print(json_data)
except FileNotFoundError:
print('ERROR: Please enable I2C.')
except OSError:
print('ERROR: I2C device not found. Please check BH1750 wiring.')
except:
print('ERROR: General unknown error')
上記のようにprintでの出力をjsonに変更しています
あとは元記事と同じようにcronを設定を行います
/5 * /usr/bin/python -m mh_z19 > /home/pi/air-conditioning-monitor/data/MH_Z19.json
/5 * /usr/bin/python /home/pi/air-conditioning-monitor/sensors/HTU21D/HTU21D.py > /home/pi/air-conditioning-monitor/data/HTU21D.json
/5 * /usr/bin/python /home/pi/air-conditioning-monitor/sensors/BMP180/BMP180.py > /home/pi/air-conditioning-monitor/data/BMP180.json
/5 * /usr/bin/python /home/pi/air-conditioning-monitor/sensors/BH1750/BH1750.py > /home/pi/air-conditioning-monitor/data/BH1750.json
これの設定を行うことでraspberrypi.local
にアクセスすることでセンサーの値をブラウザで確認することができます
まとめ
このシステムが稼働すると、30分から1時間でCO2レベルが1000ppmを超えることがあります。1000ppmを超えると一般に環境が悪化し、仕事のパフォーマンスが低下すると言われています。そのため、定期的な換気が推奨されます。これにより、快適なリモートワーク環境を維持できます。