K210触摸屏人脸识别开灯,温湿度dht22,蜂鸣器,按键
触摸屏界面
温湿度传感器用的是dht22。
温湿度界面

人脸识别开灯(锁)界面
灯泡是12V的我们需要用3.3V的光耦隔离寄存器,给灯泡单独供电,D+接3.3V,D-接GND,S-接GND,S+接信号引脚,高电平点亮。COM端接正极,ON常开端接灯泡的正极。

这是beep蜂鸣器的代码事件。
// An highlighted block
def event_handlerr(obj,event):
global KEY_NODE
if event == lv.EVENT.CLICKED:
print("I am Clicked")
KEY_NODE = not KEY_NODE
beep.value(KEY_NODE)
#按钮初始化
btn2 = lv.btn(lv.scr_act())
btn2.set_event_cb(event_handlerr)
btn2.align(None, lv.ALIGN.CENTER, 80, 80)
label = lv.label(btn2)
label.set_text("beep")
这是人脸识别开锁的代码
#按钮回调函数
def event_handler(obj, event):
global KEY_NODE
if event == lv.EVENT.CLICKED:
print("light Clicked")
KEY_NODE=not KEY_NODE
a = True
while(a):
clock.tick()
img = sensor.snapshot()
code = kpu.run_yolo2(task, img) #运行yolo2网络
#识别到人脸就画矩形表示
if code:
for i in code:
print(i)
b = img.draw_rectangle(i.rect())
LED_B.value(1)
utime.sleep(3)
LED_B.value(0)
lcd.display(img)
if KEY.value() == 0:
a = False
lcd.clear(lcd.WHITE)
btn1 = lv.btn(lv.scr_act())
btn1.set_event_cb(event_handler)
btn1.align(None, lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn1)
label.set_text("face Identify")
btn2 = lv.btn(lv.scr_act())
btn2.set_event_cb(event_handlerr)
btn2.align(None, lv.ALIGN.CENTER, 80, 80)
label = lv.label(btn2)
label.set_text("beep")
btn3 = lv.btn(lv.scr_act())
btn3.set_event_cb(wenshidu)
btn3.align(None, lv.ALIGN.CENTER, -80, -80)
label = lv.label(btn3)
label.set_text("Tem Hum")
#按钮初始化
btn1 = lv.btn(lv.scr_act())
btn1.set_event_cb(event_handler)
btn1.align(None, lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn1)
label.set_text("face Identify")
这是dht22温湿度的代码
def wenshidu(obj,event):
global KEY_NODE
if event == lv.EVENT.CLICKED:
print("wenshidu shuzhi")
KEY_NODE = not KEY_NODE
DHT22_IO_Register(20)
lcd.init()
lcd.draw_string(100, 0, "li dong", lcd.RED, lcd.BLACK)
lcd.draw_string(50, 32, 'DHT22 SHOW~', lcd.RED, lcd.BLACK)
utime.sleep_ms(100)
b=True
while(b):
if start_DHT22(): #//是否正确读取
temperature = GetDHT22_temperature();
humidity = GetDHT22_humidity();
#print(DHT22RH_Data_H,DHT22RH_Data_L,DHT22T_Data_H,DHT22T_Data_L)
print(('温度是:%.1f°C 湿度是:%.1f%% ')%(temperature*0.1,humidity*0.1))
lcd.draw_string(0, 64, ('T:%.1fC RH:%.1f%% ')%(temperature*0.1,humidity*0.1), lcd.RED, lcd.BLACK)
if KEY.value() == 0:
b=False
lcd.clear(lcd.WHITE)
btn1 = lv.btn(lv.scr_act())
btn1.set_event_cb(event_handler)
btn1.align(None, lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn1)
label.set_text("face Identify")
btn2 = lv.btn(lv.scr_act())
btn2.set_event_cb(event_handlerr)
btn2.align(None, lv.ALIGN.CENTER, 80, 80)
label = lv.label(btn2)
label.set_text("beep")
btn3 = lv.btn(lv.scr_act())
btn3.set_event_cb(wenshidu)
btn3.align(None, lv.ALIGN.CENTER, -80, -80)
label = lv.label(btn3)
label.set_text("Tem Hum")
#按钮初始化
btn3 = lv.btn(lv.scr_act())
btn3.set_event_cb(wenshidu)
btn3.align(None, lv.ALIGN.CENTER, -80, -80)
label = lv.label(btn3)
label.set_text("Tem Hum")
K210电阻屏界面代码
#将蓝灯引脚IO12配置到GPIO0,K210引脚支持任意配置
fm.register(17, fm.fpioa.GPIO0,force=False)
fm.register(15, fm.fpioa.GPIO2,force=False)
fm.register(16, fm.fpioa.GPIO1)
KEY_NODE = 1
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
LED_B = GPIO(GPIO.GPIO0, GPIO.OUT,value=0) #构建LED对象
beep = GPIO(GPIO.GPIO2, GPIO.OUT,value=0)
KEY = GPIO(GPIO.GPIO1,GPIO.IN)
i2c = I2C(I2C.I2C0, freq=400000, scl=30, sda=31)
#初始化触摸屏
ts.init(i2c)
lcd.init()
#lvgl显示接口初始化
lv.init()
clock = time.clock()
task = kpu.load("/sd/facedetect.kmodel") #模型SD卡上
#模型描参数
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
#初始化yolo2网络
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
#LCD参数配置
disp_buf1 = lv.disp_buf_t()
buf1_1 = bytearray(320*10)
lv.disp_buf_init(disp_buf1,buf1_1, None, len(buf1_1)//4)
disp_drv = lv.disp_drv_t()
lv.disp_drv_init(disp_drv)
#注册显示缓冲区
disp_drv.buffer = disp_buf1
#注册显示驱动回调
disp_drv.flush_cb = lv_h.flush
#设置屏幕的显示大小
disp_drv.hor_res = 320
disp_drv.ver_res = 240
#注册显示驱动到lvgl中
lv.disp_drv_register(disp_drv)
#触摸屏参数配置
indev_drv = lv.indev_drv_t()
lv.indev_drv_init(indev_drv)
indev_drv.type = lv.INDEV_TYPE.POINTER
indev_drv.read_cb = lv_h.read
lv.indev_drv_register(indev_drv)
完全可以实现电阻屏触摸哪一个就能实现对应的功能。如果进入界面后,要加入按键退出,清屏,初始化一下按键就可以。
if KEY.value() == 0:
a = False
lcd.clear(lcd.WHITE)
btn1 = lv.btn(lv.scr_act())
btn1.set_event_cb(event_handler)
btn1.align(None, lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn1)
label.set_text("face Identify")
btn2 = lv.btn(lv.scr_act())
btn2.set_event_cb(event_handlerr)
btn2.align(None, lv.ALIGN.CENTER, 80, 80)
label = lv.label(btn2)
label.set_text("beep")
btn3 = lv.btn(lv.scr_act())
btn3.set_event_cb(wenshidu)
btn3.align(None, lv.ALIGN.CENTER, -80, -80)
label = lv.label(btn3)
label.set_text("Tem Hum")
2万+



被折叠的 条评论
为什么被折叠?



