2019年03月15日

Raspberry Piで自宅の鍵をFelica式にする

1.使ったもの
ラズベリーパイ
型番: Raspberry Pi 2
記憶域: MicroSDカード(8GB Class10)
OS: Raspbian Jessie with PIXEL
IP: 192.168.11.100

設定・テスト用PC
OS: Windows7
IP: 192.168.11.6
アプリケーション:
Win32 Disk Imager → OSイメージファイルをMicroSDカードに書き込むときに使う。
WinSCP → PCで作成したファイルをSFTPプロトコルでラズベリーパイに書き込むときに使う。
Tera Term → SSHプロトコルでラズベリーパイをPCから操作するときに使う。

FeliCaリーダー
メーカー: Sony
型番: RC-S380

サーボモーター
型番: RB996A


2.ソフトウェア設定
Win32 Disk ImagerでOSイメージをPCに接続したMicroSDカードに書き込む。
MicroSDカードをラズベリーパイに挿して起動後、インターネットに接続してアップデート実行。
$ sudo apt-get update
$ sudo apt-get upgrade
③スクリプトを編集するのでvimをインストールする。
$ sudo apt-get install vim
④サーボモーター制御ツール「
ServoBlaster」をインストールする。
$ sudo apt-get install git-core
$ git clone git://github.com/richardghirst/PiBits.git
$ cd PiBits/ServoBlaster/user/
$ make
$ sudo make install

⑤FeliCaリーダーを使うため「nfcpy」をインストールする。
$ sudo apt-get install python-pip
$ sudo pip2 install --upgrade pip
$ sudo pip2 install nfcpy
$ pip show nfcpy


3.ドアロック機構の作成
追記します。


4.サーボモーターの動作確認
追記します。


5.FeliCaのIDm(製造ID)を確認
追記します。


6.スクリプト作成・実行
①下記スクリプト「felica_lock.rb」を作成し、「/home/pi/nfcpy/examples/」に保存する。
「4.」「5.」で調べた数値を反映させる。
USERS = {"wena wrist pro" => "0134***********",
         "パスモ" => "
0134*************",
         "イカガール" => "04CEC26A3A4D80",}
UNLOCK_ANGLE = "100"
NEUTRAL_ANGLE = "50"
LOCK_ANGLE = "0"

class Initialize
def get_keyboard_input
    puts "\n--------------------\n\n操作を行ってください。\n\nNFCタグ読み取り:[0]、施錠:[.]、開錠:[パスワード]"
    case gets.chomp
      when "."
        puts "ドアを施錠します。\n"
        `echo 2=#{LOCK_ANGLE}% | sudo tee /dev/servoblaster`
        sleep(2)
        `echo 2=#{NEUTRAL_ANGLE}% | sudo tee /dev/servoblaster`
        get_keyboard_input
      when "0"
        puts "NFCタグを読み取ります。"
      when "12345678"
        puts "パスワードが一致しました。\nドアを開錠します。\n"
        `echo 2=#{UNLOCK_ANGLE}% | sudo tee /dev/servoblaster`
        sleep(2)
        `echo 2=#{NEUTRAL_ANGLE}% | sudo tee /dev/servoblaster`
        get_keyboard_input
      else
        puts "パスワードが違います!!\n"
        get_keyboard_input
    end
end
end

confirm = Initialize.new()
confirm.get_keyboard_input

def nfc()
    `sudo python /home/pi/nfcpy/examples/tagtool_2.0.py`
end

def idm(text)
    m = text.match(/ID=(.*?)\s/)
    idm =m[1]
    print("IDm = #{idm}\n")
    `echo #{idm} >>/home/pi/nfcpy/examples/chokkin_read_ID.txt`
    return idm
end

def unlock()
    print("開錠権限があるユーザーです。\nドアを開錠しました。\n")
    `echo 2=#{UNLOCK_ANGLE}% | sudo tee /dev/servoblaster`
    sleep(2)
    `echo 2=#{NEUTRAL_ANGLE}% | sudo tee /dev/servoblaster`
end

loop do
    idm = idm(nfc)
    unlock_user = USERS.key(idm)
    unless unlock_user == nil
        print("おかえりなさい、#{unlock_user}さん。\n\n")
        unlock
        confirm.get_keyboard_input
    else
        print("開錠権限がないユーザーです。\n")
        confirm.get_keyboard_input
    end
end


②OS起動時に自動でスクリプトが開始されるよう「/home/pi/.bashrc」の最後に下記行を追記する。
sudo ruby /home/pi/nfcpy/examples/felica_lock.rb


diy_breed at 14:03コメント(0)

コメントする

名前
 
  絵文字
 
 
プロフィール

クポー!

東京/小田急線/ビバリウム/ビデオゲーム/ライフハック

記事検索