Python

【Python】PaSoRiでカードを読み取ったら音を鳴らす

投稿日:2019年9月2日 更新日:

目的

前回、PaSoRiの上にICカードを置いた状態からカードの中の情報を読み取る、というものをPythonで試しましたが、世の中のカード読み取りの感じを出すためにカードが置かれるまで待ち受けで、カードをかざすと読み取って音を鳴らすものを試しに作ってみたい。

音源

フリーで使用可能な効果音を提供してくださっている以下のサイトを利用させていただきました。

https://soundeffect-lab.info/

好みの効果音をダウンロードして、適当なフォルダに入れておきます。ファイル形式はmp3かwavが良いです。

音源再生用ライブラリ(pydub)

Pythonで音を再生するライブラリとしてPyAudioというものが有名みたいです。ただ、他にも調べてみるとpydubというライブラリもありました。このpydubですが、単に音を再生するだけなら非常に少ないコードで実装できます。

今回はpydubで音を鳴らすことにします。

2019/0906追記:pydubを使用する場合でもpyaudioをimportしていないと何故か怒られましたので、結局pyaudioもimportするコードにしました。

コード

カードの待ち受けと読み取りの肝となるnfcのメソッド関連はこちらのマニュアルを参考にして書きます。

https://buildmedia.readthedocs.org/media/pdf/nfcpy/latest/nfcpy.pdf

主要な部分としては以下です。

① nfc.ContactlessFrontend()
ローカルデバイスとの通信を管理するメソッドです。PaSoRiをusb接続している場合は引数に’usb’を入れておき、最初に呼び出しておけば良いようです。

②clf.sense(target)
カードを検知するためのメソッドです。ターゲットを検知した時にIDmを返します。optionで検知のiteration(繰り返し数)とinterval(間隔)などを設定できます。

それでは実際のコードです。

import nfc
import time
import pyaudio
from pydub import AudioSegment
from pydub.playback import play

# 効果音ファイルの読み込み
sound = AudioSegment.from_file("your_sound.mp3", "mp3")

def check_ic():
    print('Waiting Now')

    # usb接続のNFCリーダを定義
    clf = nfc.ContactlessFrontend('usb')

    target = clf.sense(nfc.clf.RemoteTarget("212F"), iterations=1, interval=1)

    #カードが見つかったら読み取りに入る
    if not target_res is None:    
      tag = nfc.tag.activate(clf, target)
      tagdump=tag.dump()
         
      # 再生
      play(sound)
    
      #次の読み取りまで1秒待つ
      time.sleep(1)

    clf.close()

while True:
    check_ic()

結論

あまり手の込んだことはやれていませんが、とりあえず、カードをかざすと読み取って音が出る、という部分だけはできました。

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Python】PaSoRiによるICカードの読み取り

Contents1 目的2 環境3 方針4 Step1 : WinUSBのインストール5 Step2 : libusbのインストール6 Step3 : Pythonによる実装7 結果 目的 交通機関な …

【Python】決定係数と相関係数の計算

Contents1 目的2 決定係数とは?3 Pythonによる決定係数の計算4 相関係数 目的 前回、あるデータXからデータYの関係を単回帰による線形方程式で表すことを行いました。ただし、これはあく …

Python smtplibでメール送信

Contents1 目的2 環境3 コード 目的 pythonからSMTPサーバにメールを送信する。 環境 Windows10Python 3.7.3 (Anaconda 4.7.10) コード # …

【Python】標準変化量と変異係数計算

Contents1 概要2 データの「まれ」さ3 標準変化量4 Pythonによる標準変化量の計算5 変異係数 概要 以前にデータの分散度を測る標準偏差という指標についてpythonで求めてみました。 …

【Raspeberry pi】Pythonのバージョンアップ

Contents1 概要2 環境3 Step : 1 現状のバージョン確認4 Step 2 : Python3.7.3のインストール5 Step3 : デフォルトバージョンの変更 概要 Raspber …

言語切り替え

カテゴリー