今やってることについて

UEC koken Advent Calendar 2019 Day 16の記事です。

現在サークルで取り組んでいることについて、備忘録とSOSも兼ねて紹介したいと思います。

部室の鍵をFelicaで認証したい

幣サークルのドアには世間でもよく見る普通のノブがついています(外からは鍵を使って開錠・施錠、内からは取っ手を回します)。 ただ、もう少し便利で早く開錠・施錠ができるようにしたいな~と思うに至り、Suica のようなICカードをタッチするだけで開錠できるようなシステムを作りたくなりました。

完成形の計画

実装したいこと

  • ICカードを読み取ることで鍵を開錠する
  • 扉を閉めて一定時間たつと自動的に施錠される
  • 従来の鍵を用いる方法でもアナログで同様のことができるようにする
    • そのため自動で鍵を開ける機構の外側に手動で操作できる型を取り付ける

実現するとよさそうなもの

  • サーバーのデータベースと通信して認証する
  • 入退室の時間を記録したりする

必要になるもの

雑な図

こういう系の作図はあまりやらないから大体の雰囲気を

f:id:Stearin:20191218000136p:plain
配線図っぽいなにか

進捗

ラズパイの設定

セットアップ後、設定 -> Raspberry Pi の設定 からSSHなどを有効にしておきます。 VNC を有効にし設定しておくと、それ以降はVNC Viewerを使って作業できるのでディスプレイ接続が不要になります。

プロキシを設定する

Raspbian のaptやpython、pipなどでプロキシを用いる場合の設定です。 ~/.bashrcにおいて以下の記述を追加します。 <proxy_server_name>は任意のプロキシサーバ名で<port>はそのポート番号です。

export HTTP_PROXY=http://<proxy_server_name>:<port>/
export HTTPS_PROXY=http://<proxy_server_name>:<port>/
export FTP_PROXY=http://<proxy_server_name>:<port>/

このときの変数名は大文字にしておくとよさそうです。

マイクロサーボをつなぐ

PWM でサーボモーターを制御します。 以下のような動作テストのファイルを作成しsudo pythonによって実行します。

import wiringpi

wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(18, wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pwmSetMode(wiringpi.PWM_MODE_MS)
wiringpi.pwmSetRange(1920)
wiringpi.pwmSetClock(200)

while True:
    range = int(input())
    if range < 55 or 250 < range:
        break
    else:
        wiringpi.pwmWrite(18,range)
        print("Angle: " + str(range))

するとサーボモーターの動作角度の範囲内で、度数法の入力に合わせて回ってくれるかと思います。 ただし、11行目の数値55と250についてはモーターごとに異なる可能性があるので自分で確認し適宜変更するとよいと思います。

カードリーダーをつなぐ

セリアでmicro USB<->USBメスのOTGケーブルを購入しました。 Pythonにおいて、nfcpy をimport することでICカードを読み取れるようになります。 これでとりあえずカードをかざすとサーボが回る、という動きは達成できました。

未゜(今後の課題)

型枠

3Dプリンターで作ろうかとは思っているけど採寸もまだ

認証方法

一番手っ取り早そうなのがラズパイにデータベースを入れてそれと照合させるやり方
いまはそれで進めるつもり

発生している・していた問題など

  • サーボモーターの最大電流がわからない
    • 500mAまでなら大丈夫そうという情報があったので信じる
  • サーボモーターの現在角度が取得できない
    • あらかじめ決めた角度に回す
  • 扉が閉まった時の検知
    • 紐を利用する(どうやって取り付けるか)
    • 磁力を利用する
  • 自動と手動で開けるときの区別
  • ドアノブをひねる動きをどのようにするか
  • etc...

感想とか

  • いつも強い人に助けてもらっている
    • 本当にありがとうございます
    • いつでも救助要請してます(助けて
  • リード線を燃やした
    • ラズパイ触る前にLチカさせようとしたらプラス端子が点灯した
    • 電子工作に弱すぎた
    • 一回テストしてみるの大事
  • nanoが便利でありがたい
  • 頭が悪いのでよくなりたい
  • 金が欲しいNintendo Switchも欲しい

参考