Python
Flask
RaspberryPi

RaspberryPiを使ってチャイム(呼び鈴)を作る

はじめに

  • 事務所にチャイムがなく、100均のベルが置かれていた
  • IT企業っぽく、かつ、手作り感がある素敵なチャイムが欲しかった
  • RaspberryPiが好きなので、なんとかしようと考えた結果

システム構成


speaker01_21.png


用意するもの


RaspberryPi × 2個

 ⇒ RaspberryPi2B+ と RaspberryPi Zero WH
download.jpgdownload.jpg
 
LANに入れればどの機種でもOK


チャイム用スイッチ × 1個
 ⇒ EG121P


スピーカー × 1組
 ⇒ ステレオジャックで接続するやつ


受付側ラズパイの設定(ハード)


RaspberryPiのGPIOとチャイムスイッチを配線
 
Raspberry-Pi-GPIO-Layout-Model-B-Plus-rotated-2700x900.png


  • 配線に使う線はジャンパワイヤーが便利
  • ただし、チャイムスイッチに挟むときに細すぎる気がするのでなにかしら工夫が必要

受付側ラズパイの設定(ソフト)


console
mkdir chime
touch chime.py
vi chime.py

chime.py
#!/usr/bin/python
# coding:utf-8
import time
import RPi.GPIO as GPIO
import commands

GPIO.setmode(GPIO.BCM)

GPIO.setup(15,GPIO.IN,pull_up_down=GPIO.PUD_UP)

sw_status = 1

while True:
    sw_status = GPIO.input(15)
    if sw_status == 0:
        commands.getoutput('curl http://192.168.xx.xxx:8080/chime')
    time.sleep(0.03)

GPIO.cleanup()

console
python chime.py

  • chime.pyの内容はこちらの記事ほとんどそのまま
  • スイッチが押されたらcurlで事務所側ラズパイが待っているアドレスにGET
  • 本来はcurlじゃなくてrequests等でやるべき

事務所側ラズパイの設定(ハード)


  • スピーカーを繋げる
  • 音がでるようにする

事務所側ラズパイの設定(ソフト)


  • チャイム音源を用意する
  • チャイム音源を鳴らせるようにしておく

console
pip install Flask
mkdir chime
touch chime.py
vi chime.py

chimeHost.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import commands
from flask import Flask
app = Flask(__name__)

@app.route("/chime")
def chime():
    commands.getoutput("sh /home/pi/voice/say.sh 'お客様がおみえです'")
    return 'OK'

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

console
python chimeHost.py

  • say.shは引数の日本語をしゃべってくれるバッチ(詳細はこちら)
  • ラズパイを移動したときなどのために、crontab等で自動起動設定をしておくと便利

所感


  • もっと素敵でおしゃれなスイッチがほしい
  • Flaskが便利、こんなに簡単にWebサーバ作れるなんてびっくりした
  • もっと便利でIT風なおしゃれ機能をつけたい