Here we give a tutorial on how to control a lamp through face detector with HS device. The lamb automatically turns on if face appears, otherwise turn off.
Hardware list:
- HS device
- Raspberry Pi 3b
- 1 channel relay module
- 5V USB lamp
The built-in model Mobilenet-SSD face detector is used in this DIY demo. The logic is illustrated as below:
then we control the switch of the lamp through a 1 channel relay module. Connect GPIO
pin on Raspberry Pi to IN
on relay module, GND
pin to DC-
pin to complete the circult. The lamb will be controlled with the GPIO
electrical level triggered by the signal.
Prepare the Raspberry Pi and install SungemSDK
, connect HS device and the relay module.
Python script as relay module controllor:
#!/usr/bin/env python3
# coding=utf-8
# lamp.py
import RPi.GPIO as GPIO
PIN = 7
def setup():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN, GPIO.OUT)
def power(on=True):
# True high-electrical-level -> turn off; False low-electrical-level -> turn on
GPIO.output(PIN, on)
def clean():
GPIO.cleanup()
Service logic code:
#!/usr/bin/env python3
# coding=utf-8
import sys
sys.path.append("../../SungemSDK-Python")
import hsapi as hs
import lamp
def process(ret):
img = ret[0]
face = []
for box in ret[1]:
if (box[4] - box[2] > img.shape[1] * 0.8) \
and (box[5] - box[3] > img.shape[0] * 0.8):
continue
face.append(box)
return face
if __name__ == '__main__':
lamp.setup()
counter = 0
try:
net = hs.FaceDetector(zoom=True, verbose=0, threshSSD=0.55)
while True:
result = net.run()
faces = process(result)
counter += 1 if len(faces) > 0 else -1
if counter > 10: # detect faces in 10 frames in sequence
lamp.power(True) # turn on the light
counter = 10
elif counter < 0:
lamp.power(False) # turn off
counter = 0
finally:
lamp.clean()