Raspberry Piでスマートホーム トイレの臭いを可視化しちゃおう
- HOME >
- Smart Home >
Smart Home
Raspberry Piでスマートホーム トイレの臭いを可視化しちゃおう2022年4月22日 2022年9月27日
こんにちは。ポン吉です。
先日、トイレにこんな張り紙がされておりました。お父さんがトイレ入った後は危険!。世界平和のため5時間使用禁止しよう!と書かれておりディスり方が上手くなったなぁと我が子の成長を実感(笑)父親の威厳回復のため、トイレの臭いを可視化し身の潔白を証明したいと思います。
ポン吉家族で食べているもの同じなんだから臭いも同じでしょ~(適当な仮説)
ブレッドボードにセンサを配線し検証してもよいのですが、スマートホーム本番運用を想定すると水回りであるトイレへの設置は不安あり。常時設置を前提にスマートに実装したいと思います。
今回は Bit Trade Oneさんの臭気センサ基盤 を使いました。素晴らしい商品ありがとうございます!
・様々な気体を検知する臭気センサTP-401Aを搭載・様々な気体を検知する臭気センサTP-401Aを搭載
こちらの記事を読めば、ラズパイによる臭いの可視化が誰でも簡単に出来るようになります!
今回のテーマはこちら!
- 家族からトイレ後の臭いでディスられている世の中のお父さんを救いたい
- 実際に臭いデータを収集し分析。「お父さん VS 娘A」 どっちが臭いのかをガチで勝負!
それではやってみましょう~♪
【準備】Raspberry Pi に 臭気センサ基盤 をセットアップ
ポン吉難易度:★☆☆☆☆
- Raspberry Pi Zero WH に 臭気センサ拡張基盤 を接続
- 必要パッケージをインストール
- Raspberry Pi の設定変更とOS再起動
- 臭い計測プログラム作成(Python)
注意
臭気センサ部分は非常に高温となります。取り扱いにはご注意ください。
今回は小型のRaspberry Pi Zero WHを使って構築します。ラズパイ3や4でも動作可能です。
Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス Raspberry Pi- Amazonから探す
- 楽天市場から探す
- Yahoo!ショッピングから探す
臭気センサはこちらの基盤を使って構築します。
ADRSZOD ゼロワン 臭気センサ拡張基板 Bit Trade One- Amazonから探す
- 楽天市場から探す
- Yahoo!ショッピングから探す
ラズパイ自体も品薄で購入が難しい状況が続いています。ラズパイの在庫と価格をリアルタイム確認できるページを作りました。ラズパイを購入しようとしている方は是非参考にしてみてください。
【ラズパイ在庫チェッカー】ネットショップの在庫/価格をリアルタイムに確認しよう各ラズパイ製品ごとに「価格」と「在庫」をリアルタイムに確認できるサイトを作ってみました。頻繁にプログラム変更中。止まっていたらすみません!注意事項ラズベリーパイ関連製品の在庫/価格情報はやや控えめに10分おきでアップデートしています。参照先の販売サイトの変更等で情報が取得できなくなるケースもあり、確実な在庫/価格情報を保証するものではありません。本...Raspberry Pi Zero WH に 臭気センサ拡張基盤 を接続
ラズパイの電源は切った状態で接続しましょう。GPIOピンを曲げないように丁寧に接続しましょう。
左の丸いところが臭いセンサ。高温注意と記載あり。さらにアナログセンサを2つ接続可能なGroveコネクタを備えています。
おなじみのRaspberry Pi Zero WH。今回はGPIOヘッダピン付きを使います。
接続後はジャンパ線もなくシンプル(当たり前)。拡張基盤を接続すると厚みが出るためラズパイケースは使えません。
必要パッケージをインストール
臭気センサによる「臭いの可視化」にCPUパワーはほぼ使いません。Raspberry Pi Zero, Raspberry Pi 3, Raspberry Pi 4 どのラズパイでも動作しますが、省エネ観点でZeroをおすすめします。
注意
最新Raspberry Pi OS bullseye での構築例を紹介します。以前のRaspberry Pi OS buster等では python ⇒ python3 pip ⇒ pip3 と読み替えて実行してください。
【初心者必見】ラズパイ初期設定の極意!長寿命化して長期安定稼働させるインストール方法を紹介こんにちは。長期連休ごとにラズパイを買い足してしまう病のポン吉です。ラズパイを24時間365日稼働させたい!と思っている方もいるのではないでしょうか?しかし、何も考えずにラズパイを長期起動させてしまうと数か月で不稼働となってしまう事もあり注意が必要です!ラズパイ壊れないように使いたい 品薄で値上がり中ですし今回は、スマートホームでのラズパイ長期稼働実...ラズパイ初期セットアップの詳細は、上記記事を参照してください。
sudo apt update sudo apt install -y python3-pip pip install smbus必要なパッケージは少ないのですぐに終わります。
Raspberry Pi の設定変更とOS再起動 sudo raspi-config nonint do_serial 2 sudo raspi-config nonint do_i2c 0 sudo raspi-config nonint do_spi 0 sudo reboot
raspi-configコマンドで画面操作から設定も可能ですが、コマンドで実施する方法を記載します。コピペしてでサクッと終わらせましょう。設定後にラズパイを再起動しています。
臭い計測プログラムを作成(Python)
Bit Trade OneさんのGitHubに説明やサンプルプログラムが置いてあります。こちらのソース「adrszOD-sample.py」をベースに必要部分を切り出してプログラムを書いてみました。
RasPi-Zero-One-Series/5th/ADRSZOD_Odd_Sensor at master · bit-trade-...Raspberry Pi Zero用拡張基板 “ゼロワン”シリーズ. Contribute to bit-trade-one/RasPi-Zero-One-Series development by creating an account on GitHub.5行目と7行目の閾値電圧については、実環境に合わせて変更して使ってみて下さい。
ファイル名:toilet.py
import sys, smbus, time, datetime ########## 設置環境に応じて設定変更が必要 ########## # 1.最大臭気計測モードに移行する閾値電圧 threshold_volts_upper = 0.73 # 2.通常モードに戻る閾値電圧 threshold_volts_lowwer = 0.68 ###################################################### # Raspberry Pi I2C BUS番号である1を指定 i2c = smbus.SMBus(1) # デバイスのアドレスを指定 addr=0x68 # 電圧計算用の定数 Vref=2.048 # 最大臭気計測モードのフラグ kusai_flag = False # 最大臭気記録用の変数 volts_max = 0 # 電圧計算用のビット演算関数 def swap16(x): return (((x << 8) & 0xFF00) | ((x >> 8) & 0x00FF)) # 電圧計算用のビット演算関数 def sign16(x): return ( -(x & 0b1000000000000000) | (x & 0b0111111111111111) ) # メイン処理 while True: # 臭気センサの電圧を取得 i2c.write_byte(addr, 0b10011000) #16bit time.sleep(0.2) data = i2c.read_word_data(addr,0x00) raw = swap16(int(hex(data),16)) raw_s = sign16(int(hex(raw),16)) volts = round((Vref * raw_s / 32767),5) # 現在時間と臭気センサ電圧を出力 time_str = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S, ') print(time_str + str(volts)) # 何やら臭くなり閾値電圧を超えた場合、最大臭気計測モードに移行 if (kusai_flag == False and volts > threshold_volts_upper): print("トイレの臭いがちょっと臭くなりました") start_time=time.perf_counter() start_time_str = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") kusai_flag = True # 臭いが落ち着き閾値電圧を下回った場合、通常モードに移行 elif (kusai_flag == True and volts < threshold_volts_lowwer): print("トイレの臭いが正常に戻りました") end_time=time.perf_counter() end_time_str = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") print("・トイレの臭い検知時刻=" + start_time_str) print("・トイレの臭い解消時刻=" + end_time_str) print("・臭いポイント[v]=" + str(volts_max)) print("・臭い滞留時間[s]=" + str(int(end_time-start_time))) volts_max = 0 kusai_flag = False # センサ電圧値がこれまでの最大値を超えた場合に更新 if (kusai_flag == True and volts_max < volts ): volts_max = volts sys.stdout.flush() # 電圧取得の0.2秒と合わせ5秒ごとに計測となるようにsleepさせる time.sleep(4.8)基盤で使用している臭気センサは「TP-401T」とのこと。以下に反応するようです。
屋内での低濃度の汚染ガスや臭いを検知します。硫化水素、アンモニア、水素、アルコール、一酸化炭素、メタンなど有機揮発性気体、プロパン、タバコ、プロピレングリコール、フェノール、アセトン、木材燃焼発生した煙など様々な気体に対応しています。
ポン吉テストプログラムを動かしてお酒や口臭や握りっぺ等で動作チェック!※反応は個人差あり
プログラム実行例:python toilet.py
2022/04/26 21:50:16, 0.84196 トイレの臭いがちょっと臭くなりました 2022/04/26 21:50:21, 0.86853 <中略> 2022/04/26 21:56:47, 0.69602 2022/04/26 21:56:52, 0.69071 2022/04/26 21:56:57, 0.67915 トイレの臭いが正常に戻りました ・トイレの臭い検知時刻=2022/04/26 21:50:16 ・トイレの臭い解消時刻=2022/04/26 21:56:57 ・臭いポイント[v]=0.86853 ・臭い滞留時間[s]=400臭気センサの電圧が大きいほど臭いことになります。臭いに応じて数値が変化すれば確認OKです。
【実践】トイレに設置して臭いデータを収集!分析してみよう
それでは先ほどセットアップしたラズパイZeroを、トイレに設置してデータを取得していきましょう。
トイレ設置場所を検討ウォシュレット付きのトイレであれば電源コンセントがトイレ内にあると思います。ここからラズパイの電源を取りましょう。無線LANについても電波が届いている事が前提となります。
設置場所として埃や水が付きにくい場所を探します。うちのトイレ(TOTO:ネオレストTCF9783J)は側面後方のカバーが外せます。ちょうど埃や水が掛からなそうなのでここに設置。ここならラズパイのケースが無くても安心。
お父さんと娘の 臭い対決結果を公開!盗撮、盗聴、盗臭?(そんな単語ないか)と言われたくないので家族の同意を取りデータ分析開始!
「お父さん VS 娘」トイレ臭い対決の結果
お父さんのうん〇のほうが臭い事がIoT技術により判明されました・・・。いやいやいや!統計学的にサンプル数が少なくこんなの証明にならない!と言い訳を残し再びリベンジ予定。
世界のお父さんの無念晴らせず・・・(涙)
読者まとめ
- やはりお父さんのうん〇の方が臭かった(敗北) ストレスや老化等の影響か・・・
- 臭いの変化は検知できたが人間が感じる不快なにおいを定量化するには改善の余地あり
- 複数のガスセンサを試して「うん〇の臭い検知に特化したベストセンサ」を見つけたい
これぞInternet of Toilet!ストレスとうん〇の臭いについても分析したい
おまけ
ウォシュレット操作をリモコンで操作するトイレの場合、ラズパイから赤外線リモコン経由でトイレ遠隔操作が可能です。臭いがキツイ時に強制的に流したり、ウォシュレット強制発射による嫌がらせで退出を促す等、未来を感じるスマートホーム化が実現可能(笑)
スタンフォード大学が未来のトイレを先取りすぎていて凄いので紹介!トイレで肛門認証・・だと!?これは家族でも同意得るのが難しい内容ですね・・・
スタンフォード大学、肛門認証をするスマート・トイレを作る菊紋が人それぞれ違うのは、サルヴァドール・ダリの発見ですって。スタンフォード大学が、排便から健康状態を記録し、AIで分析するスマート・トイレを作りました。これには個人を特定するための指紋認証センサーがついています。そしてさらにもうひとつ、聞き慣れぬ認証方法が搭載されています。肛門認証です。センサー...プライバシー保護について
個人を特定した上でIoTデータを分析しないと有力な情報とならないケースが多いと感じています。そこで問題となるのが個人情報・プライバシー保護。今回は家族内なので了承を得るのは簡単?ですが、データのマスキング等して了承を得る努力が必要になると思います。
- Share
- Hatena
- LINE