【Raspberry Pi】ICカードとPaSoRiを使った自動改札機の作り方

つくってみた
つくってみた

設置した経緯

のぼさん
のぼさん

保育園行くよ~

ムスコ
ムスコ

イヤッ!

ぐぬぬ。休み明け、特に連休明けは保育園行かないモードになりがちです。行ってしまえば楽しいみたいで、お迎えに行くと「まだ遊ぶ!帰りたくない!!」と言われます。なんとかスッと外に出れないものかと困っていたのでこちらの本を確認しました。

\楽天ポイント4倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

育休中なかなか寝ないむすこに困り果て検索魔になっていたころ、YouTubeでこの本の著者てぃ先生のことを知りました。寝不足で全く機能していないあたまでも理解できるわかりやすい説明、聞き取りやすい話し方にすっかり引き込まれました。

我が家では子育てに困ったときは本書を辞書のように使っています。

なかなか外に出てくれないとき「玄関で交通カードをピッ!」は乗り物好きの息子に効果ありそうと思ったので早速試してみようと思いました。せっかくなので少しリアルにつくってみました。

作るもの

登録したPASMOをタッチするとピッと音が鳴って扉が開く→3秒後に扉が戻る。登録していないカードをタッチすると赤色LEDが点灯する。といった感じです。

用意するもの

とびらを動かすために必要なもの

秋月電子通商さんやAmazonさんなどで購入しました。

Raspberry Pi 2 Model B

こちらでサーボモーターを動かしたりLEDを光らせたりする指示を出しています。

NFC通信リーダー PaSoRi RC-S380/S:1個

¥3,740 (2022/05/25 06:30時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

個人用と法人用があり、個人用が欲しかったのですが法人用の方が安かったのでこちらにしました。
ちなみにnfcpyドキュメントのSupported DevicesにRC-S380/S、RC-S380/Pどちらものっていました。

ブレッドボード EIC-801:1個

サーボモーター SG-90:1個(440円/個)

動作角度は180°、動作電圧は4.8(~5V)、トルクは1.8kgf・cmです。

圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0:1個(30円/個)

タッチ音をならすスピーカーです。

RGBフルカラーLED 5mm OSTA5131A カソードコモン:2個(50円/個)

タッチ部分を光らせるために使いました。

カーボン抵抗(炭素被膜抵抗)1/2W 330Ω:6個(100円/100個入り)

LEDに流れる電流を調整するのに使います。

カーボン抵抗(炭素皮膜抵抗)1/4W 1kΩ:2個(100円/100個入り)

サーボモーター、圧電スピーカーの配線でそれぞれ使います。

ジャンパーワイヤー(オスーメス)15cm:9本くらい

ラズパイとブレッドボードをつなぎます。

ジャンパーワイヤー(オスーオス):6本くらい

かたいタイプと柔らかいタイプ両方使いました。

USBケーブル(タイプAオスーマイクロB):1本

これはセリアで買いました。

ACアダプタ:1個

USBケーブルをさしてコンセントにつなぎます。

形をつくるのに必要なもの

すべて100均のセリアとダイソーで揃えました。

プラダン(黒):4枚

改札の側面や正面に使います。途中失敗したので追加で1枚買いました(笑)

ホビー用ポリスチレンフォーム:1個

セリアで買いました。扉につかっています。

画用紙(緑)

扉や矢印を作るのにつかいました。ダイソーでもセリアでも売っていました。

画用紙(黒)

タッチ部分を一部覆うのにつかっています。

プラバン

タッチ部分につかっています。ダイソーで買いました。

クリップ:1個

よくある普通のクリップです。扉がうまく固定できなかったので急遽使いました。針金がなかったのでクリップを伸ばして使いました。

配線する

フルカラーLED、圧電スピーカー、サーボモーターなどを下図のように配線します。

プログラム

下記のサイトのプログラムを参考にさせていただきました。

参考サイトのプログラムに下記モジュールを追加でimportして使用するピンをセットしました。

import RPi.GPIO as GPIO
import time
#ピンにわかりやすい名前をつける
servo=18
Rred=21
Rblue=20
Lred=26
Lblue=19
sound=16

#ピン番号の指定方法を選択
GPIO.setmode(GPIO.BCM)

pins=[servo,Rred,Rblue,Lred,Lblue,sound]
for pin in pins:
    GPIO.setup(pin,GPIO.OUT)
#PWM設定
SG90=GPIO.PWM(servo,50)
Sound=GPIO.PWM(sound,440)

参考サイトの”#特定のIDmだった場合のアクション”のところのIDmを所有しているPASMOのものに書き換えて、音をならす、青色ライトの点滅、サーボモーターを動かすプログラムを追加します。
特定のIDmでないカードをタッチしたときの動作(赤色ライトを点灯)をelseで追記します。

        #特定のIDmだった場合のアクション
        #IDmを書き換える
        if self.idm ==#所有しているPASMOのIDm:
            #音を鳴らす
            Sound.ChangeFrequency(440)
            Sound.start(50)
            time.sleep(0.2)
            Sound.stop()
            time.sleep(0.5)
            #青色ライト消灯→点灯
            GPIO.output(Rblue,GPIO.LOW)
            GPIO.output(Lblue,GPIO.LOW)
            time.sleep(0.5)
            GPIO.output(Rblue,GPIO.HIGH)
            GPIO.output(Lblue,GPIO.HIGH)
            #サーボモーターを動かす
            SG90.start(0)
            #-90°に動かす、動作後1s待機
            SG90.ChangeDutyCycle(2.5)
            time.sleep(3)
            #0°に動かす、動作後1s待機
            SG90.ChangeDutyCycle(7.25)
           
        else:
            GPIO.output(Rblue,GPIO.LOW)
            GPIO.output(Lblue,GPIO.LOW)
            GPIO.output(Rred,GPIO.HIGH)
            GPIO.output(Lred,GPIO.HIGH)
            Sound.ChangeFrequency(440)
            Sound.start(50)
            time.sleep(1)
            Sound.stop()
            time.sleep(0.5)
            GPIO.output(Rred,GPIO.LOW)
            GPIO.output(Lred,GPIO.LOW)

参考サイトの”#最初に表示”のprint指示の次の行に青色点灯のプログラムを追記します。

        GPIO.output(Rblue,GPIO.HIGH)
        GPIO.output(Lblue,GPIO.HIGH)

これで登録したPASMOをタッチするとピッと音が鳴って青色LEDが一瞬消えてサーボモーターが動く→3秒後にサーボモーターが元の位置に戻る。登録していないカードをタッチすると赤色LEDが点灯する。といった動作になります。

形状づくり

プラダンや画用紙を適当にカットしてのりやテープでひたすらとめていきます。かなり適当で申し訳ないです。。。

側面をつくる

プラダン3枚の角をR100でカットします。そのうち1枚を扉セット用に250×220mmくり抜きます。

タッチ部分をつくる

プラダン、プラバン、黒画用紙でタッチ部分をつくります。
黒画用紙でプラバンを部分的に覆ってタッチ面の透明楕円部分を表現しています。

扉をつくる

ホビー用ポリスチレンフォームを230mm×200mm×20mmでカットし、緑の画用紙を貼ります。

正面部分をつくる

100mm幅のプラダンをつくり側面を貼り付けます。

矢印をつくる

緑の画用紙をカットして矢印をつくります。

パソリとブレッドボードをセットする

タッチ面の近くにパソリとLEDと圧電スピーカーが刺さっているブレッドボードをセットします。
余ったプラダンで土台をむりくり作っています。

扉をつける

サーボモーターをプラダンのくり抜いた部分の下にセットします。

作った扉をテープなどでサーボモーターに取り付けます。

扉の上にはクリップをひらいてつくった針金をさし、プラダンの厚みの穴に差し込んで扉を固定します。

完成

完成です!扉があく勢いでサーボモーターから扉が外れやすいのが難点ですが息子の笑顔がみれたのでよかったです。

スポンサーリンク
スポンサーリンク
のぼをフォローする
タイトルとURLをコピーしました