技術を磨くだいぱんまん

散歩とインターネットが大好きなシステムエンジニア。暮らし、おでかけ、テクノロジーについて書いています。

Raspberry Piと100円の人感センサでつくる防犯スピーカー

f:id:donchan922:20170624084910p:plain

こんにちは、だいぱんまん(@donchan922)です。

人感センサ(HC-SR501)買いました!Amazonで145円(ほぼ100円)でした。安い!

さっそくこのセンサとRaspberry Piでなにか作ってみたいなと思い、防犯スピーカーを作ってみました。具体的には、玄関から人が入ってくるとスピーカーからお姉さんの声で「おかえりなさい」と言ってくれる装置をつくりました。泥棒がドアを開けてこんな声を聞いたら、驚いて引き返すんじゃないかなと。

お姉さんの声を選んだ理由はご想像におまかせします。防犯メインであればドスのきいた声の方がいいかと思います。

完成形がこちら

玄関のドアを開けたときにスピーカーから音が鳴るようにしました。これで泥棒を追い返せる!?

必要なもの

まずは以下のものを用意しましょう。

Raspberry Pi

前提として、Raspberry Piのセットアップが完了しているものとします。セットアップに必要な機器および手順は以下の記事でまとめています。

Raspberry Pi 3をディスプレイ、キーボード、マウスなしでセットアップする方法 - 技術を磨くだいぱんまん

スピーカー

ジャンパワイヤ(メス-メス)

3本使います。

人感センサ

安いですが、海外からの発送なので届くのに1週間ほどかかりました。

実装方法

人感センサについて

今回使用する人感センサ(HC-SR501)については、以下の記事で詳しくまとめられています。

[*Raspberry Pi*] 夏だ!人感センサーを使って蝉を鳴かせよう - Qiita

f:id:donchan922:20170624072609j:plain
人感センサには黄色のネジのようなものを回すことで、感度と遅延時間を調整できます。

  • 感度:検知距離のこと
  • 遅延時間:検知出力保持時間のこと

左回り(最小値) 右回り(最大値)
感度 弱(3m) 強(7m)
遅延時間 短(5s) 長(300s)
今回は感度を最大(7m)に、遅延時間を最小(5s)に設定しました。

人感センサを接続する

人感センサにはジャンパワイヤ(メス)を挿すところがあります。Raspberry PiのGPIO端子との対応表を以下にまとめます。

人感センサ(HC-SR501) Raspberry Pi
VCC 5v
OUT GPIO
GND Ground


f:id:donchan922:20170623222145p:plain
Raspberry Pi側はGPIO14番を使いました。あとは電源(5v)とグランドにつなげて接続完了です。

以下コマンドで動作確認を行いましょう。人感センサに手のひらを近づけると検知するはずです。

# GPIO14を使用する
$ echo 14 > /sys/class/gpio/export
# GPIO14で出力を行う
$ echo in > /sys/class/gpio/gpio14/direction
# 0 -> 未検知, 1 -> 検知
$ cat /sys/class/gpio/gpio14/value
# GPIO14の使用を終了する
$ echo 14 > /sys/class/gpio/unexport

おかえりなさい音声の取得

音声は以下サイトからお借りしました。雛乃木まやさん、ありがとうございました。

"お帰りなさい"のフリー女性音声ボイスを無料でお使い頂けます。 | 商用利用OK・クレジット表示不要の無料音声ボイス素材・女性ナレーション声優雛乃木まや

「おかえりなさい」の種類は3つあって、今回は優しいお姉さんのボイスにしました。優しさ大事。

  • 明るいお姉さん
  • しっかりお姉さん
  • 優しいお姉さん

ファイル名はダウンロード時のvoice-okaerinasai-yasashime.wavにしました。wav形式はRaspberry Piで簡単に再生できるので嬉しいですね。

SFTPでWAVファイルを転送する

WAV形式のファイルをRaspberry Piにファイル転送します。そのためにMacにCyberduckというSFTP(sshを利用したFTP)クライアントをインストールしましょう。ドラッグ&ドロップで簡単にファイル転送ができます。以下記事が大変参考になりました。

Macからラズパイにファイルを転送する - ものづくりブログ

実装!

Python3で書きました。ファイル名はcrime_prevention.pyとします。

import RPi.GPIO as GPIO
from time import sleep
import subprocess

GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN)

# 各ファイルパスは適宜変更してください。
CMD = "aplay /home/pi/voice-okaerinasai-yasashime.wav"

try:
    while True:
        if GPIO.input(14) == GPIO.HIGH:
            subprocess.call(CMD, shell=True)
        sleep(0.01)

except KeyboardInterrupt:
    pass

GPIO.cleanup()

あとは以下コマンドを実行してやれば、人感センサが反応したときだけ、「おかえりなさい」ボイスが再生されます。電子工作、お疲れさまでした。

$ python crime_prevention.py

まとめ

そもそも泥棒って礼儀よく玄関から入ってくるのかな。窓を割って侵入してくる気が……そうなるとこの装置の意味って……