見出し画像

RaspberryPi Zeroでインターホン通知システムを作った

SDカードが壊れたようで再度セットアップし直したついでに、他ブログに載せて消しちゃったやつを掲載してみる。ちと雑ですが、こんなやり方もあるということで。

動機

・自宅作業が多いので、だいたい家にいる
・家のインターホンは一箇所しかならず、仕事部屋にいると聞こえない事が多い
・お届け物が多いのでちょこちょこくるんでが、いるのに再配達は申し訳ない
・家のどこにいても、人が来たことを検知したい

対応方法検討

・賃貸なので、スマホ対応のインターホンなどに交換するのはハードルが高い、値段も高い
・やろうやろうと思ってた電子工作の良い題材なのでは?
・インターホンごと作ってしまうのもありだが、既存のものをお手軽にハックする方が好き
・インターホンの型番をしらべてみると仕様書を発見
・子機を拡張するための端子がある
・これをラズパイに入力してあげれば、お手軽にいけるのでは?

インターホン調査

通常時は5Vで、インターホンをならすと+-3Vくらい電圧の変化があった。これを検知してあげれば良さそう。

画像1
画像2
画像3

ラズパイでの検知方法

半固定抵抗でMAXの電圧を下げて検知させてみる

テスト実装

・ブレッドボードで実装してみる
・半固定抵抗を使用して、通常時電圧を2Vちょっとに調整
・テスターを使用して、動作時に3.3V程度になることを確認
・プログラムを通じて、LOWとHIGHが想定通りに取れることを確認
・こんな感じ

画像4

実装

・ブレッドボードのままだと、かさばるのでユニバーサル基板に半田付け
・インターホンからの配線、基板、ラズパイと電源、LANを接続する
・プログラムの最終仕上げ(とりあえず実装なので細かいことは気にしない)

画像5

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で実装完了

画像6

自作キーボードのオンラインショップをやっています

よかったら覗いてみてください!


いいなと思ったら応援しよう!