35
Raspberry Piで手洗いタイマーを作る方法

世界的なパンデミックの影響で、COVID-19関連の便利で面白いライフハックを至る所で見かけるようになりました。そこで、モーションセンサーで20秒間の音楽クリップを再生する手洗いタイマーを使って、自分なりのCOVID-19ライフハックを作ろうと思いました。なぜ20秒なのでしょうか?保健当局は、手洗いを頻繁に行い、1回につき少なくとも20秒間行うよう推奨しています。石鹸に手を伸ばすと、この手洗いタイマーが作動して音楽クリップが再生され、ディスプレイに20秒間のカウントダウンが表示されます。

このチュートリアルは4部構成です。パート1では、Raspberry Piを外部スピーカーに接続し、Pythonスクリプトを使ってVLCで音楽クリップを再生する方法を学びます。パート2では、16×2のLCDスクリーンを追加し、コントラストを調整する方法を学びます。パート3では、超音波センサーを追加し、距離を測定する方法を学びます。パート4では、超音波センサーを使って音楽を鳴らし、カウントダウン表示をすることで、全体をまとめます。

手洗いタイマーを作るのに必要なもの 

  • Raspberry Pi 3B以降(3B+、3A+、または4)
  • 電源/キーボード/マウス/モニター/HDMIケーブル(Raspberry Pi用)
  • 超音波センサー
  • 16x2 LCD スクリーンと I2C バックパック
  • LCD画面のコントラストを調整するための小さなドライバー
  • 3.5mmオス-オスオーディオケーブル
  • 3.5mm補助オーディオジャック付きポータブルスピーカー
  • ブレッドボード
  • ジャンパー線セット(M-F、M-M、F-F)
  • 抵抗器2個(330オームと470オーム)

オプション: 手洗いタイマー用のケースを3Dプリントする

この設計では、LCD 画面を取り付けるための 4 本の M2.5 ネジと対応するナット、および Raspberry Pi をベースに取り付けるための 4 本の短い M2.5 ネジも必要です。

パート1:Raspberry Piで音楽を再生する手洗いタイマー 

スピーカーをRaspberry Piの3.5mmジャックに接続します。USB充電の場合は、Raspberry Piのポートから電源を供給できます。

1. Raspberry Piを起動します。microSDカードをお持ちでない場合は、Raspberry Piの初回セットアップ方法、またはヘッドレスインストールの方法についての記事をご覧ください。

2.スピーカーアイコンを右クリックして「アナログ」入力を選択します。画面の右上にあります。「アナログ」入力を選択したら、同じスピーカーアイコンを左クリックして音量を中央(または希望のレベル)に設定します。  

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

4.ターミナルを開く

5. Python用のVLCをインストールするには、次のように入力します。 

sudo pip install python-vlc

6.このリポジトリをクローンする

git clone https://github.com/carolinedunn/Handwashing_Timer_Display

7.作成したディレクトリに移動します

cd Handwashing_Timer_Display

8.ターミナルに入力して設定をテストします。

python test_music.py

音楽が再生される場合は次の手順に進み、再生されない場合は戻ってトラブルシューティングを行います。 

注:音楽が再生され (20 秒のクリップ)、各曲の間に 5 秒間の休止が入ります。

Raspberry Pi 手洗いタイマー

トラブルシューティングのヒント - 接続を確認してください。スピーカーの電源が入っていることを確認してください。ネットワーク接続を確認してください。  (画像提供: Tom's Hardware)

ボーナス:音楽ファイルを置き換えることで、お持ちの音楽に置き換えることができます。ただし、コードを書き直す必要がないように、1.mp3、2.mp3 といった命名規則を守ってください。Audacity を使用して音楽を20秒のクリップにカットしました。このチュートリアルに含まれる音楽はロイヤリティフリーの音楽です。

次の部分では、Raspberry Pi をシャットダウンし、電源を抜く必要があります。

パート2:Raspberry Pi手洗いタイマーのLCDディスプレイ 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

LCD 画面上の I2C バックパックから (メス - メスのジャンパー ワイヤ 4 本を使用):

1. GND をRaspberry Pi のグランド ピンに接続します。

2. VCC をRaspberry Pi の5V (ピン 2) に接続します。

3. SDA をRaspberry Pi のピン 3 に接続します。

4. SCL をRaspberry Pi のピン 5 に接続します。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

5. Raspberry Piを起動する

6. Raspbery Pi OS GUI の「設定」メニューから Raspberry Pi 構成ツールを開きます。

7. 「インターフェース」タブで 「I2C」を有効にします。

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

8. GeanyのHandwashing_Timer_Displayフォルダにあるlcd_disp.pyを開きます最も簡単な方法は、ファイルマネージャーを使ってフォルダに移動し、ファイルを右クリックしてエディターとしてGeanyを選択することです。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

9. Geany の紙飛行機アイコンをクリックして、lcd_disp.py を実行します。

LCD 画面にテキストが表示されるはずです。

10.出力が適切になるまで、ドライバーを使用して画面の背面にある コントラストダイヤルを調整します。

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

次のステップに進むために、Raspberry Pi をシャットダウンし、電源プラグを抜きます。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

パート3:Raspberry Piの超音波センサーで手洗い  

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

1.超音波センサーからの各リード線にメス-オスのジャンパー ワイヤを取り付けます。

2.ジャンパー線のオス端子をブレッドボードに順番に挿入します。

3.超音波センサーのVCC ピンをRaspberry Pi のピン 4 に接続して 5V 電源を供給します。

4. TRIG をRaspberry Pi のGPIO 18 に接続します。

5. ECHOを330オームの抵抗器に接続します

6.抵抗器のもう一方の端をラズベリーパイの GPIO 24 に接続します。

7. 330 オームの抵抗器から 470 オームの抵抗器をGND レールに接続します。

8.センサーのGNCピンをGNDレールに接続します。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

補足:テストでは、超音波センサーの4ピンをブレッドボードに直接差し込み、そこから接続するのが最も簡単だとわかりました。実際には(実際に手洗いを行う際には)、超音波センサーとブレッドボードの間にメス-オスのジャンパー線を4本追加することで、センサーを最適な位置に配置できました。

9. Raspberry Piを起動する 

10. Geany を使用して編集するためにultrasound.py を開きます

11. Geany の紙飛行機アイコンをクリックして、ultrasonic.py を実行します。

超音波センサーの上に手をかざすと、センサーと手の間の距離が測定され、端末に表示されます。

12. Ctrl + C キーを押してプログラムを終了します。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

パート4:すべてをまとめる 

1.手と超音波センサー間の距離を測定/推定し、センサーをトリガーするために設定する距離を決定します。

2.Geanyで編集するために Ultrasonic_display.py を開きます

3. 51行目のdist_trigを、センサーをトリガーする距離(インチ単位)に調整します。デフォルトは7インチです。

4.変更を保存します。

5. ultrasonic_display.pyを実行する

6.超音波センサーの上で手をかざし、手洗いタイマーを作動させる距離まで近づけます。51行目で設定した距離よりも手を近づけると、音楽が再生され、ディスプレイにカウントダウンが表示されます。

曲が終わると、ディスプレイには次のように表示されます。 

「素晴らしい仕事だ! 

すべてクリーン

ディスプレイは「動作準備完了」状態に戻る前に少なくとも5秒間一時停止する必要があります。これにより、手洗いタイマーが頻繁に作動するのを防ぎます。

手洗いセンサーがリセットされると、ディスプレイに「動作準備完了」と表示されます。

7. 停止アイコンをクリックして、手洗いタイマーを停止します。

8. Raspberry Piの電源を入れるたびにultrasonic_display.pyを実行させたい場合は、Raspberry Piの起動時に毎回実行するように設定します。Raspberry Piでスクリプトを起動させる方法については、こちらで手順を説明しています

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

補足:パート2と3は、Raspberry Pi OSのデフォルトのPythonアプリ(ThonnyとGeany)の両方で動作したようです。Pythonコードtest_music.pyultrasonic_display.pyはThonnyでは動作しませんでした。ThonnyはVLCを起動して音楽ファイルを再生できなかったためです。Geanyを使用するか、ターミナルでコマンド「python ultrasonic_display.py」を実行してください。 

オプション:プロジェクトがうまくいったら、手洗いタイマーを収納するケースを 3D プリントできます。https ://www.thingiverse.com/thing :4559022 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

起動時に手洗いタイマーを実行するように設定する 

この手順では、起動時に常にultrasound_display.pyスクリプトが実行されるように Raspberry Pi を設定します。

1.ターミナルを開く

2.  sudo nano /home/pi/.bashrcと入力します。

3. .bashrcの下部に次のテキストを入力します。

python /home/pi/Handwashing_Timer_Display/ultrasonic_display.py

4. Ctrl + X キーを押して終了し、Y キーを押して保存します。

5. Piを再起動します。Piを再起動します。 

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)

Pi を再起動すると、ultrasonic_display.py Python スクリプトが毎回自動的に実行されるはずです。

20秒の手洗いタイマーをお楽しみください!

Raspberry Pi 手洗いタイマー

(画像提供:Tom's Hardware)