일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 아쿠아리움
- 다낭 호이안 올드타운 카페
- 호텔 스카이파크
- 하와이 카페
- 다낭 호이안 올드타운 맛집
- 제주도 여행계획
- 하와이 여행
- 영동 가볼만한곳
- 오사카 여행
- 일본 후쿠오카 여행
- 서울 맛집
- 교토 여행
- 대전 신세계
- 서울 가볼만한곳
- 엠버호텔
- 하와이 가볼만한곳
- 비짓재팬웹
- 낙산공원
- 오사카 가볼만한곳
- 동해
- 하와이 액티비티
- 순천
- 베트남 다낭 태교 여행
- 강릉
- 제주도 여행 계획
- 교토역 스타벅스
- 교토 가볼만한곳
- 제주도 가볼만한곳
- 코엑스
- 하와이 맛집
- Today
- Total
나의 여행과 일상 일기장
(8) 캡스톤디자인 8강_부저 모듈과 QRcode 인식 본문
1. 부저 구현하기
- 조도센서를 인식하여 파이카메라로 촬영할 때 부저가 소리를 내며 운전자에게 사진이 찍힌다는 것을 알려준다.
- 라즈베리파이 GPIO를 파이썬코드에서 import 해주고 자동차가 출입했을 때 부저를 setmode(), setup()으로 활성화하고 output()해주면 부저가 울린다. 파이카메라로 촬영하는 과정이 이어지고 cleanup()을 이용해서 부저를 꺼준다.
1) 라즈베리파이 GPIO 회로도
- 위의 라즈베리파이의 GPIO핀 중에서 GPIO26번과 GND를 사용하여 부저와 직접 연결했다.
2) serialard.py 코드(부저 모듈 추가)
import serial
import sys
from picamera import PiCamera
from time import sleep
import RPi.GPIO as GPIO
import time
def sensor():
FromArduino = serial.Serial("/dev/ttyACM0" , 9600) #통신포트 open
FromArduino.flushInput()
GPIO.cleanup() # cleanup all GPIO
while True:
light = int(FromArduino.readline())
if light < 160: #자동차가 출입했을 때
print("자동차가 출입했습니다")
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(26, GPIO.OUT) # output rf
GPIO.output(26, GPIO.HIGH)
camera = PiCamera()
camera.start_preview()
sleep(3)
camera.rotation = 180 #180도 회전
sleep(3)
camera.capture("/home/pi/CarLicensePlate/test_img/pic.jpg") #사진 저장 경로
camera.stop_preview()
camera.close()
GPIO.cleanup() # cleanup all GPIO
sleep(1)
import serialmicro
serialmicro.micro() #초음파로 인식 시작
sys.exit(1)
else: #아무것도 없을 때
print("현재 아무것도 들어오지 않았습니다")
sleep(1)
continue
sensor()
<<<조도센서에 인식하여 사진을 찍을 때 부저소리를 내어 사진이 찍히는지 알려준다.>>>
2. QR코드를 이용해서 P or D구현 -> QRcode모듈 구현완료
QR코드 추가에 따라서 번호판 인식 프로세스가 전반적으로 순서가 바뀜
<<<<<<<<<<<<<<<<<프로세스 정리>>>>>>>>>>>>>>>
1) 조도센서로 자동차의 진입을 인식(+진입하면 부저울리고 파이카메라로 번호판을 촬영)
2) 번호판인식프로세스(번호판인식후에 데이터베이스에 데이터 넣기)
3) 초음파센서로 주차완료인식(+주차중에 LED켜지고 파이카메라로 QRcode를 촬영)
4) QRcode인식 프로세스(QRcode인식후에 데이터베이스에 데이터 넣기)
5) QRCode인식프로세스가 끝나면 다시 조도센서인식으로 넘어감
--> 각각 코드 구현 완료
3. 코드 구현
1) serialard.py ver6
import serial
import sys
from picamera import PiCamera
from time import sleep
import RPi.GPIO as GPIO
import time
def sensor():
FromArduino = serial.Serial("/dev/ttyACM0" , 9600) #통신포트 open
FromArduino.flushInput()
GPIO.cleanup() # cleanup all GPIO
while True:
light = int(FromArduino.readline())
if light < 160: #자동차가 출입했을 때
print("자동차가 출입했습니다")
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(26, GPIO.OUT) # output rf
GPIO.output(26, GPIO.HIGH)
camera = PiCamera()
camera.start_preview()
camera.rotation = 180 #180도 회전
sleep(1) #번호판사진을 찍는데 걸리는 시간
camera.capture("/home/pi/CarLicensePlate/test_img/pic.jpg") #사진 저장 경로
camera.stop_preview()
camera.close()
GPIO.cleanup() # 부저 끄기
sleep(1)
print("번호판 인식으로 넘어갑니다")
import imgprocess2 #조도센서인식후 바로 번호판인식
imgprocess2.computervision()
sys.exit(1)
else: #아무것도 없을 때
print("현재 아무것도 들어오지 않았습니다")
sleep(1)
continue
sensor()
//조도센서로 자동차의 진입을 인식(+진입하면 부저울리고 파이카메라로 번호판을 촬영)하고 번호판인식프로세스(번호판인식후에 데이터베이스에 데이터 넣기) 진행
2) imgprocess2.py ver6
def computervision():
//
//
//
#최종 번호판 추출 함수
parking_classfication("/home/pi/CarLicensePlate/test_img/pic.jpg") #인식을 하려는 사진 (경로 수정가능)
os.remove("/home/pi/CarLicensePlate/test_img/pic.jpg") #찍힌 사진 삭제
sleep(3)
import serialmicro #번호판 인식후 QRcode를 인식하기 위해 초음파센서
serialmicro.micro() #초음파로 인식 시작
sys.exit(1) #메모리 과부하를 막기 위한 exit()
computervision()
//번호판 인식 과정 후 초음파로 차량이 들어오는지 인식 시작
3) serialmicro.py ver6
import serial
import sys
from time import sleep
import os
import RPi.GPIO as GPIO
import time
from picamera import PiCamera
def micro():
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
while True:
ser = serial.Serial('/dev/ttyUSB0',9600) #while문이 계속 돌면서 통신포트 open
microresult = int(ser.readline())
GPIO.output(17, True) #주차중인 경우 계속 LED가 깜박이도록한다.
time.sleep(0.1)
GPIO.output(17, False)
time.sleep(0.1)
if microresult < 10: #주차완료
print("차가 주차완료했습니다 ")
GPIO.output(17, False)
camera = PiCamera()
camera.start_preview()
sleep(1)
camera.rotation = 180 #180도 회전
sleep(1) #7초동안 QRcode 사진찍기
camera.capture("/home/pi/qrcode/qrpic.jpg") #qrcode사진 저장 경로
camera.stop_preview()
camera.close()
print("QRcode 인식으로 넘어갑니다")
import qrprocess #사진찍고 QRcode 인식
qrprocess.qr()
sys.exit(1) #이건 필수로 있어야 함
elif microresult >= 10 and microresult < 90: #주차중
print("차가 주차중입니다")
continue
else: #차가 다시 뒤로 나가면 조도센서로 처음부터 다시 인식
print("차가 나갔습니다")
GPIO.output(17, False)
import serialard
serialard.sensor()
sys.exit(1) #이것도 필수
micro()
// 차가 주차 완료라고 인식하면 QR코드 사진을 찍고 QR인식으로 넘어간다.
4) qrprocess.py
def qr():
import pymysql #데이터베이스 import
from datetime import datetime
#라즈베리파이 local 데이터베이스 연결
#conn = pymysql.connect(host = 'localhost', user='phpmyadmin', password='1234', db = 'testDB', charset='utf8')
#curs=conn.cursor() #데이터베이스 커서 생성
stnowday = datetime.today().strftime("%Y%m%d")
nowday = int(stnowday)
print(type(nowday))
print(nowday) # YYYYmmddHHMMSS 형태의 시간 출력
//
//
//
for d in decoded:
datas =d.data.decode('utf-8')
data1=datas.split(' ')[0]
data2=datas.split(' ')[1]
print(data1)
print(data2)
if(int(data2)>=nowday):
print("유효한 코드입니다")
else:
print("만료된 코드입니다")
if(data1=='P'):
print("임산부")
elif(data1=='D'):
print("장애인")
else:
print("유효하지 않은 코드입니다")
#sql = "UPDATE picam SET piImg = %s, piExtract=%s where id=8" #id가 8인 위치에 데이터 수정
#sql = "Insert into picam (piPlot, piPorD, piName,piImg,piExtract) VALUES(%s,%s,%s,%s,%s)"
#sql = "UPDTAE picam SET piImg = %s, piExtract=%s where piName=%s and piPlot=%s" #수정
#curs.execute(sql, ('한성대학교 주차장','P','P1', empPicture, chars)) #sql실행
#curs.execute(sql, (empPicture, chars)) #sql실행
#conn.commit()
#conn.close()
import serialard #다시 조도센서로 출입하는 차량을 인식하기 위한 import
serialard.sensor()
qr()
//QR인식 후 다시 조도센서 인식으로 넘어감
'일상일기' 카테고리의 다른 글
(10) 캡스톤디자인 10강_유효하지 않은 QRcode 처리 (0) | 2022.04.27 |
---|---|
(9) 캡스톤디자인 9강_qrprocess.py 수정 (0) | 2022.04.26 |
(7) 캡스톤디자인 7강_프로토타이핑과 led센서 추가 (0) | 2022.04.25 |
(6) 캡스톤디자인 6강_조도센서, 초음파센서, 번호판인식 수정 및 프로토타입 (0) | 2022.04.25 |
(5) 캡스톤디자인 5강_차량 번호판 인식 (0) | 2022.04.25 |