제가 스마트 자물쇠를 만들어 봤어요.
개요
연구실 열쇠를 일일이 꺼내는 게 귀찮아서 IC카드로 열었어요.
종점
IC카드를 카드 리더기에 넣으면 열쇠를 켤 수 있어요.
연구실 열쇠가 IC카드를 열었어요.👍가벼운 웃음pic.twitter.com/sb7WfswfD9-mori takuto(gump)(@m__04v)2018년 9월 24일
준비물
- Raspberry Pi
- 서보 모터
- 카드 리더기
- (3d 프린터)
- (Fusion360)
시스템 구성
IC카드를 카드 리더기에 넣으면 열쇠를 켤 수 있어요.
연구실 열쇠가 IC카드를 열었어요.👍가벼운 웃음pic.twitter.com/sb7WfswfD9-mori takuto(gump)(@m__04v)2018년 9월 24일
준비물
- Raspberry Pi
- 서보 모터
- 카드 리더기
- (3d 프린터)
- (Fusion360)
시스템 구성
이번에 회전 서보 모터용 API 제작
따라서 카드 리더기뿐만 아니라 스마트폰 앱, 스마트워치 앱도 스위치할 수 있다
(API가 연구실에 서 있기 때문에 와이파이 경로가 해커에 의해 파괴되지 않는 한 낯선 사람에게 열리지 않는다.웃음)
- Flask에서 API 구축 및 엔드포인트 생성
- GPIO를 통해 서보 모터를 제어하는 API
이 문장의 내용
1.Flask로 API
만들기
2. 3D 프린터에서 열쇠를 돌리는 부분을 제작
3. 스마트폰 앱 제작
4. API
실제로 찍어보기
5. 고정대 제작
6. 카드 리더기 가져오기
7. 완성
Flask를 사용하여 API 생성
이번에는 GPIO로 서보 모터를 제어하고 싶어서 Python의 Flask로 API를 만들었습니다.
플래시 설치
$ pip install flask
간단한 API 만들기
from flask import Flask
app = Flask(__name__)
@app.route("/open")
def open():
return "open"
if __name__ == "__main__":
# webサーバー立ち上げ
app.run(host="192.168.**.**", port=5000)
RPi.GPIO 설치
$ pip install rpi.gpio
서보 모터 설정
이번에 이 보도를 참고하였습니다
* 바느질 구성이 약간 변경되었습니다
Raspberry Pi로 서보 모터 돌리기
GPIO로 서보 모터 돌리기
from flask import Flask
app = Flask(__name__)
@app.route("/open")
def open():
GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0)
servo.ChangeDutyCycle(7.5)
time.sleep(0.5)
servo.stop()
GPIO.cleanup()
return "open"
if __name__ == "__main__":
# webサーバー立ち上げ
app.run(host="192.168.**.**", port=5000)
3d 프린터에서 열쇠를 돌리는 부분을 만들다
서보 모터의 앞부분에 자물쇠 부분을 설치하고 싶어서 Fusion360으로 모델링하고 인쇄합니다
완성 후, 핫키 등으로 서보 모터의 앞부분에 붙인다
스마트폰 앱 만들기
이번에 Android 스마트폰과 Android Wear 어플리케이션 제작
적절한 구성 버튼, API 두드리기
openButton.setOnClickListener {
object: MyAsyncTask2() {
override fun doInBackground(vararg params: Void): JSONArray? {
var result : JSONArray? = null
var res: String = ""
try {
res = Run().run("http://192.168.**.**:5000/open")
val resJson = JSONArray(res)
status.text = "Status: Open"
result = resJson
} catch (e: IOException) {
e.printStackTrace()
} catch (e: JSONException) {
e.printStackTrace()
}
return result
}
}.execute()
}
API를 실제로 찍어보도록 하겠습니다.
여기까지, 열쇠를 돌릴 수 있는지 시험해 보자
의외로 돌았어요. 웃어요.
스마트워치가 열쇠를 열 거예요.✌️ pic.twitter.com/QS6HL2651j — mori takuto(gump) (@m___04v) 2018년 9월 21일
固定台の作成
위의 애니메이션은 손으로 눌러서 고정된 테이블을 만들어야 한다
이런 느낌으로 제작해서 프린트하는 거예요.
設置
고정대를 설치한 후, 손으로 누르지 않아도 회전할 수 있습니다!
이렇게 힘껏 밀어. 웃어.
뒷면의 힘pic.twitter.com/8gnCfgu8Vm - mori takuto(gump)(@m__04v)2018年9月24日
カードリーダーの導入
Raspi에서 NFC 카드 리더기를 사용한 것은 이 글을 참고한 것이다
Raspberry PiにNFCリーダを接続してSuicaを読み取る
이 문장을 참고하여 코드를 살짝 수정합니다
이번에는 SQLite3에 카드 정보를 미리 등록하고 등록된 카드만 있으면 스위치를 켤 수 있습니다
또한 버튼을 설정하고 열기 모드와 닫기 모드를 전환했지만 보도가 길어질 수 있기 때문에
기본적으로 L일 뿐인데 이 기사를 볼 수 있다면 정말 고맙습니다
target_req_suica = nfc.clf.RemoteTarget("212F")
while True:
clf = nfc.ContactlessFrontend('usb')
target_res = clf.sense(target_req_suica,iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
if target_res != None:
tag = nfc.tag.activate_tt3(clf, target_res)
tag.sys = 3
#IDmを取り出す
idm = binascii.hexlify(tag.idm)
#sqlite使って登録判定
cur = conn.cursor().execute('select count(*) from cards where card_id = ?',(idm,))
isExist = False
if cur.fetchone()[0] > 0:
isExist = True
output=""
if isExist == True:
output= not GPIO.input(2)
if output == True:
requests.get(open_url)
else:
requests.get(close_url)
完成
많은 코드를 생략했지만
이렇게 하면 일일이 열쇠를 꺼낼 필요가 없다!
스마트워치도 켜서 편하네요!!!
집에도 가져가세요.p>
연구실 열쇠고리
IC카드 대응👍
-mori takuto(gump)(@m___04v)pic.twitter.com/sb7WfswfD9
参考記事
2018年9月24日
Raspberry Piでサーボモーターを回す
Raspberry PiにNFCリーダを接続してSuicaを読み取る
Reference
이 문제에 관하여(제가 스마트 자물쇠를 만들어 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mooriii/items/156bbdf51ff8f93905bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)