Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions Buzzer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import os
import time

class Buzzer:

def __init__(self):
self.pwm0_path = "/sys/class/pwm/pwmchip0/"
os.system("echo 0 > " + self.pwm0_path + "export")
os.system("echo 1000000 > " + self.pwm0_path + "pwm0/period")

def settingPeriod(self, period):
os.system("echo " + period + " > " + self.pwm0_path + "pwm0/period")

def settingDutyCycle(self, cycle):
os.system("echo " + cycle + " > " + self.pwm0_path + "pwm0/duty_cycle")

def enablePwm(self, msg):
if msg == True:
os.system("echo 1 > " + self.pwm0_path + "pwm0/enable")
else:
os.system("echo 0 > " + self.pwm0_path + "pwm0/enable")

def on(self):
self.enablePwm(True)

def off(self):
self.enablePwm(False)

def beep(self):
self.settingDutyCycle("500000")
self.settingPeriod("1000000")
self.on()
time.sleep(0.15)
self.off()

def beepOpen(self):
self.settingDutyCycle("0")
self.settingPeriod("1000000")
self.on()
self.settingDutyCycle("400000")
time.sleep(0.1)
self.settingDutyCycle("500000")
time.sleep(0.1)
self.settingDutyCycle("600000")
time.sleep(0.1)
self.off()

def beepErr(self):
self.settingPeriod("10000000")
self.settingDutyCycle("5000000")
self.on()
time.sleep(0.5)
self.off()

def beepPicture(self):
self.settingPeriod("100000000")
self.settingDutyCycle("50000000")
self.on()

if __name__=="__main__":
buzzer = Buzzer()
buzzer.beepPicture()
time.sleep(3)
buzzer.off()
3 changes: 3 additions & 0 deletions Keypad.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import os
import serial
from Buzzer import Buzzer

class Keypad:
dev = '/dev/ttyUSB0'
baud = 9600
def __init__(self):
self.serial = serial.Serial(self.dev, self.baud)
self.serial.flush()
self.buzzer = Buzzer()

def lcdWrite(self, firstString, secondString):
sendMsg = firstString + ':' + secondString + '\n'
Expand All @@ -27,6 +29,7 @@ def read(self):
pw = list();
while True:
ch = self.serial.read().decode("utf-8")
self.buzzer.beep()
print (ch)
pwChar = pwChar + '*'
self.lcdWrite("PASSWORD", pwChar)
Expand Down
8 changes: 8 additions & 0 deletions Launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
from Keypad import Keypad
from FaceAuth import FaceAuth
from SettingParser import SettingParser
from Buzzer import Buzzer
import os
import time

settingParser = SettingParser()
redisClient = RedisClient()
faceAuth = FaceAuth(settingParser.read()['FACE_API_KEY'])
keypad = Keypad()
buzzer = Buzzer()

while True:
time.sleep(2)
Expand All @@ -21,7 +23,9 @@
if remoteFaceId == 'None':
keypad.lcdWrite("Face Auth", "Not have image")
continue
buzzer.beepPicture()
localFaceId = faceAuth.takePicture()
buzzer.off()
if localFaceId == 'None':
keypad.lcdWrite("Face Auth", "try again..")
print ('Cannot find face')
Expand All @@ -30,11 +34,13 @@
if result == True:
# Open door
keypad.openDoor()
buzzer.beepOpen()
time.sleep(1)
keypad.lcdWrite("Face Auth", "Welcome!")
print ('Open Door')
elif result == False:
# Not You
buzzer.beepErr()
keypad.lcdWrite("Face Auth", "try again..")
print ('Face Auth Error')
else:
Expand All @@ -44,6 +50,7 @@
time.sleep(1)
keypad.lcdWrite("Password Auth", "Welcome!")
print ('Open Door')
buzzer.beepOpen()
elif localPassword == settingParser.read()['MASTER_PW']:
keypad.openDoor()
time.sleep(1)
Expand All @@ -59,4 +66,5 @@
else:
# Not You
print ('Password Auth Error')
buzzer.beepErr()
keypad.lcdWrite("Password Auth", "Fail! try again")