RaspberryPi Zeroでインターホン通知システムを作った
SDカードが壊れたようで再度セットアップし直したついでに、他ブログに載せて消しちゃったやつを掲載してみる。ちと雑ですが、こんなやり方もあるということで。
動機
・自宅作業が多いので、だいたい家にいる
・家のインターホンは一箇所しかならず、仕事部屋にいると聞こえない事が多い
・お届け物が多いのでちょこちょこくるんでが、いるのに再配達は申し訳ない
・家のどこにいても、人が来たことを検知したい
対応方法検討
・賃貸なので、スマホ対応のインターホンなどに交換するのはハードルが高い、値段も高い
・やろうやろうと思ってた電子工作の良い題材なのでは?
・インターホンごと作ってしまうのもありだが、既存のものをお手軽にハックする方が好き
・インターホンの型番をしらべてみると仕様書を発見
・子機を拡張するための端子がある
・これをラズパイに入力してあげれば、お手軽にいけるのでは?
インターホン調査
通常時は5Vで、インターホンをならすと+-3Vくらい電圧の変化があった。これを検知してあげれば良さそう。
ラズパイでの検知方法
半固定抵抗でMAXの電圧を下げて検知させてみる
テスト実装
・ブレッドボードで実装してみる
・半固定抵抗を使用して、通常時電圧を2Vちょっとに調整
・テスターを使用して、動作時に3.3V程度になることを確認
・プログラムを通じて、LOWとHIGHが想定通りに取れることを確認
・こんな感じ
実装
・ブレッドボードのままだと、かさばるのでユニバーサル基板に半田付け
・インターホンからの配線、基板、ラズパイと電源、LANを接続する
・プログラムの最終仕上げ(とりあえず実装なので細かいことは気にしない)
RaspberryPi Zeroのセットアップ
途中からZeroへシフトして、無線LAN化もした
OS, ssh
こちらを参考にOSのインストールをして、Macから直接sshできるようにする。
Raspberry Pi Zero WHの環境構築(Mac PC) - 日々の学びのアウトプットするブログ
無線LAN
お次に無線LANに自動接続するようにセットアップする
Raspberry Pi 3 (Raspbian Jessie)の無線LANに固定IPアドレスを設定する - Qiita
Pythonセットアップ
sudo apt-get update
# 失敗するので↓を実行
sudo apt update --allow-releaseinfo-change
sudo apt-get install python3-pip
sudo pip3 install rpi.gpio
Pythonプログラム(interphone.py)
とりあえずchatworkに通知を送るようにした。(slackだとラグが大きかった)
#!/usr/bin/env python3
import requests
import RPi.GPIO as GPIO
from time import sleep
def send_chatwork(message):
api_url = 'https://api.chatwork.com/v2'
room_id = 'XXXXXXXXX'
api_key = 'YYYYYYYYYYYYYYYYYYYY'
post_message_url = '{}/rooms/{}/messages'.format(api_url, room_id)
headers = {'X-ChatWorkToken': api_key}
params = {'body': message}
r = requests.post(post_message_url, headers=headers, params=params)
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
if GPIO.input(24) == GPIO.HIGH:
send_chatwork("[To:ZZZZZZ] ピンポーン!")
sleep(10)
sleep(0.01)
except KeyboardInterrupt:
pass
GPIO.cleanup()
デーモン化
常時起動しているようにデーモン化
# /usr/lib/systemd/system/interphone.service を設置
[Unit]
Description=interphone daemon
[Service]
ExecStart=/home/pi/interphone.py
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target
# 有効化、開始、確認
sudo systemctl enable interphone.service
sudo systemctl start interphone.service
sudo systemctl status interphone.service
# 再起動
sudo reboot
# 確認
sudo systemctl status interphone.service
RaspberryPi Zeroで実装完了
自作キーボードのオンラインショップをやっています
よかったら覗いてみてください!