From ff370db202203fe6cf7e5d0249fcd029aff46c02 Mon Sep 17 00:00:00 2001 From: JingyuJung Date: Sun, 23 Oct 2016 02:53:22 -0400 Subject: [PATCH] Add Buzzer funtion --- Buzzer.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Keypad.py | 3 +++ Launcher.py | 8 +++++++ 3 files changed, 75 insertions(+) create mode 100644 Buzzer.py diff --git a/Buzzer.py b/Buzzer.py new file mode 100644 index 0000000..ed68041 --- /dev/null +++ b/Buzzer.py @@ -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() diff --git a/Keypad.py b/Keypad.py index 0dc1600..9a6b0ec 100644 --- a/Keypad.py +++ b/Keypad.py @@ -1,5 +1,6 @@ import os import serial +from Buzzer import Buzzer class Keypad: dev = '/dev/ttyUSB0' @@ -7,6 +8,7 @@ class Keypad: 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' @@ -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) diff --git a/Launcher.py b/Launcher.py index a9495df..7d8e5e5 100644 --- a/Launcher.py +++ b/Launcher.py @@ -2,6 +2,7 @@ from Keypad import Keypad from FaceAuth import FaceAuth from SettingParser import SettingParser +from Buzzer import Buzzer import os import time @@ -9,6 +10,7 @@ redisClient = RedisClient() faceAuth = FaceAuth(settingParser.read()['FACE_API_KEY']) keypad = Keypad() +buzzer = Buzzer() while True: time.sleep(2) @@ -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') @@ -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: @@ -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) @@ -59,4 +66,5 @@ else: # Not You print ('Password Auth Error') + buzzer.beepErr() keypad.lcdWrite("Password Auth", "Fail! try again")