当前位置:网站首页>K210 access control complete
K210 access control complete
2022-07-01 01:16:00 【Mrli0530】
1. Thermometry
#======================= Thermometry =====================#
from machine import I2C
import time
i2c = I2C(I2C.I2C0,freq=100000, scl=0, sda=1)
time.sleep_ms(100)
MLX90614_IIC_ADDR = const(0x5A)
MLX90614_TA = const(0x06)
MLX90614_TOBJ1 = const(0x07)
temp=0
class MLX90614:
def __init__(self,i2c,addr=MLX90614_IIC_ADDR):
self.addr=addr
self.i2c=i2c
def getObjCelsius(self):
return self.getTemp(MLX90614_TOBJ1) #Get celsius temperature of the object
def getEnvCelsius(self):
return self.getTemp(MLX90614_TA) #Get celsius temperature of the ambient
def getObjFahrenheit(self):
return (self.getTemp(MLX90614_TOBJ1) * 9 / 5) + 32 #Get fahrenheit temperature of the object
def getEnvFahrenheit(self):
return (self.getTemp(MLX90614_TA) * 9 / 5) + 32 #Get fahrenheit temperature of the ambient
def getTemp(self,reg):
global temp
temp = self.getReg(reg)*0.02-273.15 #Temperature conversion
def getReg(self,reg):
data = self.i2c.readfrom_mem(self.addr,reg,3) #Receive DATA
result = (data[1]<<8) | data[0]
return result
ir = MLX90614(i2c)
while (1):
ir.getObjCelsius()
print("temp %s *C"% (temp))
2. voice
import time
from fpioa_manager import fm
from machine import UART
#************************* A serial port 1 Parameters *******************************
fm.register(2, fm.fpioa.UART1_TX, force=True)
fm.register(33, fm.fpioa.UART1_RX, force=True)
uart_1 = UART(UART.UART1, 9600, 8, 0, 0, timeout=1000, read_buf_len=4096)
#****** Voice Announcements GB2312******#
a_1 = [0xBB,0xB6,0xD3,0xAD,0xCA,0xB9,0xD3,0xC3,0xBB,0xF9,0xD3,0xDA,0x4B,0x32,0x31,0x30,0xB5,0xC4,0xD6,0xC7,0xC4,0xDC,0xC3,0xC5,0xCE,0xC0,0xCF,0xB5,0xCD,0xB3,0x00]# Opening remarks
a_2 = [0xC7,0xEB,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x00]# Please wear a mask
a_3 = [0xD2,0xD1,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x20,0x20,0xC7,0xEB,0xBD,0xAB,0xC8,0xCB,0xCC,0xE5,0xCA,0xD6,0xCD,0xF3,0xB4,0xA6,0xD6,0xC3,0xD3,0xDA,0xB2,0xE2,0xCE,0xC2,0xB1,0xEA,0xD6,0xBE,0xB4,0xA6,0xB2,0xE2,0xCE,0xC2,0x00]# Wearing a mask Please place the wrist of the human body at the temperature measurement mark
a_4 = [0xCC,0xE5,0xCE,0xC2,0xD5,0xFD,0xB3,0xA3,0x00]# Normal temperature
a_5 = [0xC9,0xE3,0xCA,0xCF,0xB6,0xC8,0x00]# Centigrade
a_6 = [0xC7,0xEB,0xD4,0xDA,0x36,0x30,0xC3,0xEB,0xC4,0xDA,0xB7,0xC5,0xD6,0xC3,0xBD,0xA1,0xBF,0xB5,0xC2,0xEB,0xB5,0xBD,0xD6,0xB8,0xCA,0xBE,0xCE,0xBB,0xD6,0xC3,0x00]# Please be there. 60 Place the health code to the indicated position within seconds
a_7 = [0xC2,0xCC,0xC2,0xEB,0xC7,0xEB,0xCD,0xA8,0xD0,0xD0,0x00]# Green code, please
a_8 = [0xBB,0xCA,0xC2,0xED,0xD5,0xBE,0xD5,0xE2,0xC0,0xEF,0xB1,0xF0,0xB6,0xAF,0xB0,0xC2,0x00]# Yellow code
a_9 = [0xBA,0xEC,0xC2,0xEB,0xCE,0xA3,0xCF,0xD5,0xC7,0xEB,0xB5,0xC8,0xB4,0xFD,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xB4,0xA6,0xC0,0xED,0x00]# Red code danger, please wait for the staff to handle
a_10 = [0xCC,0xE5,0xCE,0xC2,0xD2,0xEC,0xB3,0xA3,0xC7,0xEB,0xC1,0xAA,0xCF,0xB5,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xBA,0xCB,0xCA,0xB5,0x00]# Abnormal body temperature
b_1=0
def yuyin():
global b_1
if b_1==0:
uart_1.write(bytes(a_10))
b_1=1
while(1):
#********* send out ***********#
yuyin()
3. Infrared human detection
Low level active
from Maix import FPIOA
from Maix import GPIO
fpioa = FPIOA()
fpioa.set_function(3,fpioa.GPIOHS0)
key = GPIO(GPIO.GPIOHS0,GPIO.IN)
while 1:
print(key.value())
4. Health code detection
1. Normal writing
import sensor, image
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
while(True):
img = sensor.snapshot()
img.lens_corr(1.6) # strength of 1.8 is good for the 2.8mm lens.
for code in img.find_qrcodes():
statistics=img.get_statistics(roi=code.rect())
img.draw_rectangle(code.rect())
color_l=statistics.l_mean()
color_a=statistics.a_mean()
color_b=statistics.b_mean()
#print(color_l,color_a,color_b)
if color_a<0:
print(" Green code ")
if color_a>15:
print(" The red code ")
if 5<color_a<15:
print(" Yellow code ")
#print(color_l)
2. Actually
import sensor,image,lcd,time
import KPU as kpu
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.set_vflip(1)
sensor.run(1)
clock = time.clock()
classes = ['A', 'B', 'C']
task = kpu.load(0x400000)
#task = kpu.load("/sd/m.kmodel")
anchor = (2.5542, 2.6313, 3.2321, 3.2009, 3.3906, 3.4375, 3.5714, 3.6629, 3.5937, 3.9844)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while(True):
clock.tick()
img = sensor.snapshot()
code = kpu.run_yolo2(task, img)
print(clock.fps())
if code:
for i in code:
a=img.draw_rectangle(i.rect())
img.draw_string(i.x(), i.y()-12, classes[i.classid()])
img.draw_string(i.x(), i.y()+12, '%.3f'%i.value())
a = lcd.display(img)
else:
a = lcd.display(img)
a = kpu.deinit(task)
5. masks
import sensor, image, lcd, time
import KPU as kpu
color_R = (255, 0, 0)
color_G = (0, 255, 0)
color_B = (0, 0, 255)
class_IDs = ['no_mask', 'mask']
def drawConfidenceText(image, rol, classid, value):
text = ""
_confidence = int(value * 100)
if classid == 1:
text = 'mask: ' + str(_confidence) + '%'
else:
text = 'no_mask: ' + str(_confidence) + '%'
image.draw_string(rol[0], rol[1], text, color=color_R, scale=2.5)
lcd.init()
sensor.reset(dual_buff=True)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)
sensor.set_vflip(1)
sensor.run(1)
task = kpu.load(0x300000)
anchor = (0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423, 5.6823)
_ = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
img_lcd = image.Image()
clock = time.clock()
while (True):
clock.tick()
img = sensor.snapshot()
code = kpu.run_yolo2(task, img)
if code:
totalRes = len(code)
for item in code:
confidence = float(item.value())
itemROL = item.rect()
classID = int(item.classid())
if confidence < 0.52:
_ = img.draw_rectangle(itemROL, color=color_B, tickness=5)
continue
if classID == 1 and confidence > 0.65:
_ = img.draw_rectangle(itemROL, color_G, tickness=5)
if totalRes == 1:
drawConfidenceText(img, (0, 0), 1, confidence)
else:
_ = img.draw_rectangle(itemROL, color=color_R, tickness=5)
if totalRes == 1:
drawConfidenceText(img, (0, 0), 0, confidence)
_ = lcd.display(img)
print(clock.fps())
_ = kpu.deinit(task)
6. The steering gear
''' Name of the experiment : Steering gear control (Servo Control) edition :v1.0 date :2019.12 author :01Studio 【www.01Studio.org】 explain : Control the steering gear to rotate to different angles by programming '''
from machine import Timer,PWM
import time
#PWM Configure by timer , Receive IO17 Pin (Pin IO17)
tim = Timer(Timer.TIMER1, Timer.CHANNEL3, mode=Timer.MODE_PWM)
S1 = PWM(tim, freq=50, duty=0, pin=4)
''' explain : Actuator control function function :180 Steering gear :angle:-90 to 90 Indicates the corresponding angle 360 Continuous rotation steering gear :angle:-90 to 90 Rotation direction and speed values . 【duty】 Duty cycle :0-100 '''
def Servo(servo,angle):
S1.duty((angle+90)/180*10+2.5)
while True:
#-90 degree
Servo(S1,-90)
time.sleep(1)
#-45 degree
Servo(S1,-45)
time.sleep(1)
#0 degree
Servo(S1,0)
time.sleep(1)
#45 degree
Servo(S1,45)
time.sleep(1)
#90 degree
Servo(S1,90)
time.sleep(1)
7. The human body passes the test
#******************* The human body passes the test *******************#
from Maix import FPIOA
from Maix import GPIO
fpioa = FPIOA()
fpioa.set_function(7,fpioa.GPIOHS1)
key = GPIO(GPIO.GPIOHS1,GPIO.IN)
while 1:
print(key.value())
8. low power consumption ( false )
import lcd
import image
import time
lcd.init()
lcd.draw_string(100, 100, "hello maixpy", lcd.RED, lcd.BLACK)
time.sleep(2)
lcd.clear()
import time
from machine import Timer
def on_timer(timer):
print("time up:",timer)
print("param:",timer.callback_arg())
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=5, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
print("period:",tim.period())
tim.start()
del tim
I think this one is quite NB Of , Record it , Ha ha ha ha ha ha ha
import time
from machine import Timer
from Maix import FPIOA
from Maix import GPIO
fpioa = FPIOA()
fpioa.set_function(3,fpioa.GPIOHS0)
key = GPIO(GPIO.GPIOHS0,GPIO.IN)
a_2=0
def on_timer(timer):
global a_2
if a_2<30:
a_2=a_2+1
else:
if key.value()==0:
print(" someone ")
else:
print(" no one ")
a_2=0
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
print("period:",tim.period())
tim.start()
Final use
from Maix import FPIOA
from Maix import GPIO
from board import board_info
from fpioa_manager import fm
def test_irq(pin_num):
global c_2
global c_1
print("key", pin_num, "\n")
c_2=0
c_1=0
fm.register(3, fm.fpioa.GPIOHS0)
key = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_NONE)
key.irq(test_irq, GPIO.IRQ_BOTH, GPIO.WAKEUP_NOT_SUPPORT,7)
c_1=0
c_2=0
from machine import Timer
def on_timer(timer):
global c_1
global c_2
if c_1<30:
c_1=c_1+1
else:
c_2=1
c_1=0
tim1 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
tim1.start()
while (1):
if c_2==0:
print(" Work ")
else:
print(" low power consumption ")
lcd.draw_string(50, 20, "low power mode")
9.K210 Taking pictures
# Untitled - By: hy - Friday 5 month 20 2022
# Untitled - By: hy - Friday 5 month 20 2022
import sensor, image, time,os,uos
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
i=0
while(True):
clock.tick()
img = sensor.snapshot()
i=i+1
img.save("snapshot-%d.jpg" % i) # Save Pic.
time.sleep(1)
Two 、 whole
1.K210
#***************** voice ***********************#
from fpioa_manager import fm
from machine import UART
#************************* A serial port 1 Parameters *******************************
fm.register(2, fm.fpioa.UART1_TX, force=True)
fm.register(33, fm.fpioa.UART1_RX, force=True)
uart_1 = UART(UART.UART1, 9600, 8, 0, 0, timeout=1000, read_buf_len=4096)
#****** Voice Announcements GB2312******#
a_1 = [0xBB,0xB6,0xD3,0xAD,0xCA,0xB9,0xD3,0xC3,0xBB,0xF9,0xD3,0xDA,0x4B,0x32,0x31,0x30,0xB5,0xC4,0xD6,0xC7,0xC4,0xDC,0xC3,0xC5,0xCE,0xC0,0xCF,0xB5,0xCD,0xB3,0x00]# Opening remarks
a_2 = [0xC7,0xEB,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x00]# Please wear a mask
a_3 = [0xD2,0xD1,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x20,0x20,0xC7,0xEB,0xBD,0xAB,0xC8,0xCB,0xCC,0xE5,0xCA,0xD6,0xCD,0xF3,0xB4,0xA6,0xD6,0xC3,0xD3,0xDA,0xB2,0xE2,0xCE,0xC2,0xB1,0xEA,0xD6,0xBE,0xB4,0xA6,0xB2,0xE2,0xCE,0xC2,0x00]# Wearing a mask Please place the wrist of the human body at the temperature measurement mark
a_4 = [0xCC,0xE5,0xCE,0xC2,0xD5,0xFD,0xB3,0xA3,0x00]# Normal temperature
a_5 = [0xC9,0xE3,0xCA,0xCF,0xB6,0xC8,0x00]# Centigrade
a_6 = [0xC7,0xEB,0xD4,0xDA,0x36,0x30,0xC3,0xEB,0xC4,0xDA,0xB7,0xC5,0xD6,0xC3,0xBD,0xA1,0xBF,0xB5,0xC2,0xEB,0xB5,0xBD,0xD6,0xB8,0xCA,0xBE,0xCE,0xBB,0xD6,0xC3,0x00]# Please be there. 60 Place the health code to the indicated position within seconds
a_7 = [0xC2,0xCC,0xC2,0xEB,0xC7,0xEB,0xCD,0xA8,0xD0,0xD0,0x00]# Green code, please
a_8 = [0xBB,0xCA,0xC2,0xED,0xD5,0xBE,0xD5,0xE2,0xC0,0xEF,0xB1,0xF0,0xB6,0xAF,0xB0,0xC2,0x00]# Yellow code
a_9 = [0xBA,0xEC,0xC2,0xEB,0xCE,0xA3,0xCF,0xD5,0xC7,0xEB,0xB5,0xC8,0xB4,0xFD,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xB4,0xA6,0xC0,0xED,0x00]# Red code danger, please wait for the staff to handle
a_10 = [0xCC,0xE5,0xCE,0xC2,0xD2,0xEC,0xB3,0xA3,0xC7,0xEB,0xC1,0xAA,0xCF,0xB5,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xBA,0xCB,0xCA,0xB5,0x00]# Abnormal body temperature
#******************* Infrared human body *******************#
from Maix import FPIOA
from Maix import GPIO
fpioa = FPIOA()
fpioa.set_function(3,fpioa.GPIOHS0)
key = GPIO(GPIO.GPIOHS0,GPIO.IN)
#***************** masks *************************#
import sensor, image, lcd, time
import KPU as kpu
color_R = (255, 0, 0)
color_G = (0, 255, 0)
color_B = (0, 0, 255)
class_IDs = ['no_mask', 'mask']
def drawConfidenceText(image, rol, classid, value):
text = ""
_confidence = int(value * 100)
if classid == 1:
text = 'mask: ' + str(_confidence) + '%'
else:
text = 'no_mask: ' + str(_confidence) + '%'
image.draw_string(rol[0], rol[1], text, color=color_R, scale=2.5)
lcd.init()
sensor.reset(dual_buff=True)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)
sensor.set_vflip(1)
sensor.run(1)
task = kpu.load(0x300000)
anchor = (0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423, 5.6823)
_ = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
img_lcd = image.Image()
#************************ Are you healthy **********************#
classes = ['A', 'B', 'C']
b_1=0
task1 = kpu.load(0x500000)
anchor1 = (2.5542, 2.6313, 3.2321, 3.2009, 3.3906, 3.4375, 3.5714, 3.6629, 3.5937, 3.9844)
a = kpu.init_yolo2(task1, 0.5, 0.3, 5, anchor1)
#======================= Thermometry =====================#
from machine import I2C
import time
i2c = I2C(I2C.I2C0,freq=100000, scl=0, sda=1)
time.sleep_ms(100)
MLX90614_IIC_ADDR = const(0x5A)
MLX90614_TA = const(0x06)
MLX90614_TOBJ1 = const(0x07)
temp=0
class MLX90614:
def __init__(self,i2c,addr=MLX90614_IIC_ADDR):
self.addr=addr
self.i2c=i2c
def getObjCelsius(self):
return self.getTemp(MLX90614_TOBJ1) #Get celsius temperature of the object
def getEnvCelsius(self):
return self.getTemp(MLX90614_TA) #Get celsius temperature of the ambient
def getObjFahrenheit(self):
return (self.getTemp(MLX90614_TOBJ1) * 9 / 5) + 32 #Get fahrenheit temperature of the object
def getEnvFahrenheit(self):
return (self.getTemp(MLX90614_TA) * 9 / 5) + 32 #Get fahrenheit temperature of the ambient
def getTemp(self,reg):
global temp
temp = self.getReg(reg)*0.02-273.15 #Temperature conversion
def getReg(self,reg):
data = self.i2c.readfrom_mem(self.addr,reg,3) #Receive DATA
result = (data[1]<<8) | data[0]
return result
ir = MLX90614(i2c)
#************ Variable -**********#
b_1=0
#===================== The steering gear ===============#
from machine import Timer,PWM
tim = Timer(Timer.TIMER1, Timer.CHANNEL3, mode=Timer.MODE_PWM)
S1 = PWM(tim, freq=50, duty=0, pin=6)
def Servo(servo,angle):
S1.duty((angle+90)/180*10+2.5)
while (1):
#******* Temperature **********#
ir.getObjCelsius()
print("temp %s *C"% (temp))
#******* voice *****#
if b_1==0:
uart_1.write(bytes(a_10))
b_1=1
#******* infrared *****#
print(key.value())
#***** The steering gear *****#
Servo(S1,-90)
time.sleep(1)
Servo(S1,-45)
2.esp8266
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "ESP82666";//wifi account number
const char* password = "12345678";//wifi password
WiFiUDP Udp;
unsigned int localUdpPort = 2333; // Local listening port
char incomingPacket[255]; // Storage Udp Data sent by the client
char replyPacket[] = "Hi there! Got the message :-)"; // Answer message
String comdata = "";
String a_1,a_2,S;
//********* Setting up IP*************//
IPAddress local_IP(192, 168, 137, 185);
// Set your Gateway IP address
IPAddress gateway(192, 168, 137, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8); //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optional
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.printf("Connecting to %s ", ssid);
if(!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
// start-up Udp Listener Service
Udp.begin(localUdpPort);
// Print local ip Address ,udp client The end will use
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
//Serial.println(comdata);
Udp.beginPacket("192.168.137.32", 2333);Udp.print(comdata);Udp.endPacket();
// S = comdata.charAt(0); // Take the method in the object charAt
// a_1=comdata.substring(1);
// if(S=="A"){Udp.beginPacket("192.168.137.32", 2333);Udp.print(a_1);Udp.endPacket();}
// if(S=="B"){Udp.beginPacket("192.168.137.32", 2334);Udp.print(a_1);Udp.endPacket();}
// if(S=="C"){Udp.beginPacket("192.168.137.32", 2335);Udp.print(a_1);Udp.endPacket();}
// if(S=="D"){Udp.beginPacket("192.168.137.32", 2336);Udp.print(a_1);Udp.endPacket();}
// if(S=="E"){Udp.beginPacket("192.168.137.32", 2337);Udp.print(a_1);Udp.endPacket();}
comdata = "";
}
// analysis Udp Data packets
int packetSize = Udp.parsePacket();
if (packetSize)
{
// received Udp Data packets
//Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
// Read Udp Data packets
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
// Print information to the serial debugger
Serial.println(String(incomingPacket));
// Go to udp The remote end sends a reply message
}
}
1.
#***************** voice **************************#B
from fpioa_manager import fm
from machine import UART
fm.register(2, fm.fpioa.UART1_TX, force=True)
fm.register(33, fm.fpioa.UART1_RX, force=True)
uart_1 = UART(UART.UART1, 9600, 8, 0, 0, timeout=1000, read_buf_len=4096)
b_1=0
#********** Voice Announcements GB2312******#
a_1 = [0xBB,0xB6,0xD3,0xAD,0xCA,0xB9,0xD3,0xC3,0xBB,0xF9,0xD3,0xDA,0x4B,0x32,0x31,0x30,0xB5,0xC4,0xD6,0xC7,0xC4,0xDC,0xC3,0xC5,0xCE,0xC0,0xCF,0xB5,0xCD,0xB3,0x00]# Opening remarks
a_2 = [0xC7,0xEB,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x00]# Please wear a mask
a_3 = [0xD2,0xD1,0xC5,0xE5,0xB4,0xF7,0xBF,0xDA,0xD5,0xD6,0x20,0x20,0xC7,0xEB,0xBD,0xAB,0xC8,0xCB,0xCC,0xE5,0xCA,0xD6,0xCD,0xF3,0xB4,0xA6,0xD6,0xC3,0xD3,0xDA,0xB2,0xE2,0xCE,0xC2,0xB1,0xEA,0xD6,0xBE,0xB4,0xA6,0xB2,0xE2,0xCE,0xC2,0x00]# Wearing a mask Please place the wrist of the human body at the temperature measurement mark
a_4 = [0xCC,0xE5,0xCE,0xC2,0xD5,0xFD,0xB3,0xA3,0xC7,0xEB,0xD4,0xDA,0x36,0x30,0xC3,0xEB,0xC4,0xDA,0xB7,0xC5,0xD6,0xC3,0xBD,0xA1,0xBF,0xB5,0xC2,0xEB,0xB5,0xBD,0xD6,0xB8,0xCA,0xBE,0xCE,0xBB,0xD6,0xC3,0x00]# Normal temperature
a_5 = [0xC9,0xE3,0xCA,0xCF,0xB6,0xC8,0x00]# Centigrade
a_7 = [0xC2,0xCC,0xC2,0xEB,0xC7,0xEB,0xCD,0xA8,0xD0,0xD0,0x00]# Green code, please
a_8 = [0xBB,0xCA,0xC2,0xED,0xD5,0xBE,0xD5,0xE2,0xC0,0xEF,0xB1,0xF0,0xB6,0xAF,0xB0,0xC2,0x00]# Yellow code
a_9 = [0xBA,0xEC,0xC2,0xEB,0xCE,0xA3,0xCF,0xD5,0xC7,0xEB,0xB5,0xC8,0xB4,0xFD,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xB4,0xA6,0xC0,0xED,0x00]# Red code danger, please wait for the staff to handle
a_10 =[0xCC,0xE5,0xCE,0xC2,0xD2,0xEC,0xB3,0xA3,0xC7,0xEB,0xC1,0xAA,0xCF,0xB5,0xB9,0xA4,0xD7,0xF7,0xC8,0xCB,0xD4,0xB1,0xBA,0xCB,0xCA,0xB5,0x00]# Abnormal body temperature
uart_1.write(bytes(a_1))
#******************* Infrared human body *******************#
from Maix import FPIOA
from Maix import GPIO
from board import board_info
from fpioa_manager import fm
def test_irq(pin_num):
global c_2
global c_1
print("key", pin_num, "\n")
c_2=0
c_1=0
fm.register(3, fm.fpioa.GPIOHS0)
key = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_NONE)
key.irq(test_irq, GPIO.IRQ_BOTH, GPIO.WAKEUP_NOT_SUPPORT,7)
#******************* The human body passes the test *******************#
from Maix import FPIOA
from Maix import GPIO
fpioa = FPIOA()
fpioa.set_function(7,fpioa.GPIOHS1)
key1 = GPIO(GPIO.GPIOHS1,GPIO.IN)
#***************** masks *************************#
import sensor, image, lcd, time
import KPU as kpu
color_R = (255, 0, 0)
color_G = (0, 255, 0)
color_B = (0, 0, 255)
class_IDs = ['no_mask', 'mask']
def drawConfidenceText(image, rol, classid, value):
text = ""
_confidence = int(value * 100)
if classid == 1:
text = 'mask: ' + str(_confidence) + '%'
else:
text = 'no_mask: ' + str(_confidence) + '%'
image.draw_string(rol[0], rol[1], text, color=color_R, scale=2.5)
lcd.init()
sensor.reset(dual_buff=True)
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
#sensor.set_hmirror(0)
#sensor.set_vflip(0)
sensor.run(1)
lcd.rotation(2)
task = kpu.load(0x300000)
anchor = (0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423, 5.6823)
_ = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
img_lcd = image.Image()
#==================ESP8266====================#
fm.register(34, fm.fpioa.UART2_TX, force=True)
fm.register(35, fm.fpioa.UART2_RX, force=True)
uart_2 = UART(UART.UART2, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)
def ckjs():
global read_data1
global r_4
global f_1
global f_2
global f_3
global SSS
if f_1==1 and f_2==0 and f_3==0 :
img.draw_string(0, 0, "Mode 2")
if f_1==1 and f_2==1 and f_3==0 :
img.draw_string(0, 0, "Mode 1")
if f_1==0 and f_2==0 and f_3==0 :
img.draw_string(0, 0, "Mode 3")
read_data1 =str(uart_2.read())
if read_data1!='None':
print(read_data1[2:3])
SSS=0
if read_data1[2:3]=='a':
r_4=1
if read_data1[2:3]=='b':
f_1=1
f_2=0
f_3=0
if read_data1[2:3]=='c':
f_1=1
f_2=1
f_3=0
img.draw_string(0, 0, "Mode 1")
if read_data1[2:3]=='d':
f_1=0
f_2=0
f_3=0
#uart_2.write("asd")
#********************** low power consumption ******************#C
c_1=0
c_2=0
from machine import Timer
def on_timer(timer):
global c_1
global c_2
if c_1<60:
c_1=c_1+1
else:
c_2=1
c_1=0
tim1 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
tim1.start()
#===== Temperature measurement cheating detection ====#
fpioa.set_function(8,fpioa.GPIOHS3)
key2 = GPIO(GPIO.GPIOHS3,GPIO.IN)
#===================== The steering gear ===============#
from machine import Timer,PWM
tim = Timer(Timer.TIMER1, Timer.CHANNEL3, mode=Timer.MODE_PWM)
S1 = PWM(tim, freq=50, duty=0, pin=6)
def Servo(servo,angle):
S1.duty((angle+90)/180*10+2.5)
Servo(S1,-45)
#--------------- Taking pictures -----------------#
import os
#============== Mode filtering ===============H
#******************* Defining variables *****************#
h_3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
h_1=h_2=0
#********************* Mode filtering ********************#
def lvbo(c_1):
global e_1
global h_1
global h_2
global h_3
global a_3
global a_2
global G_1
global SSS
if h_1<50:
h_3[h_1]=c_1
h_1=h_1+1
else:
h_2=max(h_3, default=' The list is empty. ', key=lambda v: h_3.count(v))
print(h_2)
#**** Prepare for the next time ****#00
if h_2==1 and SSS==0:
uart_1.write(bytes(a_3))
G_1=1
SSS=1
if h_2==2 and SSS==0:
uart_1.write(bytes(a_2))
if f_2==1 and f_3==1:
SSS=0
#time.sleep(2)
h_1=1
h_3=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
#======================= Thermometry =====================#
from machine import I2C
import time
i2c = I2C(I2C.I2C0,freq=100000, scl=0, sda=1)
time.sleep_ms(100)
MLX90614_IIC_ADDR = const(0x5A)
MLX90614_TA = const(0x06)
MLX90614_TOBJ1 = const(0x07)
temp=0
class MLX90614:
def __init__(self,i2c,addr=MLX90614_IIC_ADDR):
self.addr=addr
self.i2c=i2c
def getObjCelsius(self):
return self.getTemp(MLX90614_TOBJ1) #Get celsius temperature of the object
def getEnvCelsius(self):
return self.getTemp(MLX90614_TA) #Get celsius temperature of the ambient
def getObjFahrenheit(self):
return (self.getTemp(MLX90614_TOBJ1) * 9 / 5) + 32 #Get fahrenheit temperature of the object
def getEnvFahrenheit(self):
return (self.getTemp(MLX90614_TA) * 9 / 5) + 32 #Get fahrenheit temperature of the ambient
def getTemp(self,reg):
global temp
temp = self.getReg(reg)*0.02-273.15 #Temperature conversion
def getReg(self,reg):
#data = self.i2c.readfrom_mem(self.addr,reg,3)
#result = (data[1]<<8) | data[0]#Receive DATA
#return result
try:
data = self.i2c.readfrom_mem(self.addr,reg,3)
result = (data[1]<<8) | data[0]#Receive DATA
return result
except:
result=0
return result
ir = MLX90614(i2c)
def kaimen():
global r_4
global SSS
Servo(S1,0)
print("1234")
if key1.value()==0:
Servo(S1,-45)
SSS=0
time.sleep(1)
r_4=0
#---------------- Global variables -------------#FGR
#******* Function of open *******#
f_1=1# masks
f_2=1# Temperature
f_3=0# QR code
f_4=0# Image storage
#******* detection result *******#
G_1=0
G_2=0
G_3=0
#######
SSS=0# Process variables
J=0
#######
r_1=0
r_2=0
r_3=0
r_4=0
read_data1=0
while (1):
if c_2==0:
J=0
#******* masks **********#
img = sensor.snapshot()
ckjs()
if f_1==0:
if SSS==0:
code = kpu.run_yolo2(task, img)
if code:
totalRes = len(code)
c_1=0
for item in code:
confidence = float(item.value())
itemROL = item.rect()
classID = int(item.classid())
if confidence < 0.52:
_ = img.draw_rectangle(itemROL, color=color_B, tickness=5)
continue
if classID == 1 and confidence > 0.65:
_ = img.draw_rectangle(itemROL, color_G, tickness=5)
lvbo(1)
if totalRes == 1:
drawConfidenceText(img, (0, 0), 1, confidence)
else:
lvbo(2)
_ = img.draw_rectangle(itemROL, color=color_R, tickness=5)
if totalRes == 1:
drawConfidenceText(img, (0, 0), 0, confidence)
if f_1==1:
G_1=1
SSS=1
#******* Temperature **********#
if f_2==0:
if SSS==1:
ir.getObjCelsius()
#
if key2.value()==0:
c_1=0
if temp==-273.15:
pass
else :
print("temp %s *C"% (temp))
img.draw_string(50, 0, "temp %s *C"% (temp))
_ = lcd.display(img)
if temp<37.3:
print(" Has been ")
uart_1.write(bytes(a_4))
time.sleep_ms(2000)
G_2=1
SSS=2
else:
uart_1.write(bytes(a_10))
time.sleep_ms(2000)
SSS=0
if f_2==1:
G_2=1
SSS=2
#******* Health code **********#
if f_3==0:
if SSS==2:
for code in img.find_qrcodes():
print(code.payload())
c_1=0
if code.payload()=="1":
print(" Red ")
uart_2.write("12")
SSS=0
r_1=0
uart_1.write(bytes(a_9))
sensor.skip_frames(60)
if code.payload()=="2":
print(" green ")
uart_1.write(bytes(a_7))
r_4=1
sensor.skip_frames(60)
r_1=0
if code.payload()=="3":
print(" yellow ")
uart_2.write("12")
SSS=0
r_1=0
uart_1.write(bytes(a_8))
sensor.skip_frames(60)
if f_3==1:
G_3=1
SSS=0
if r_4==1:
kaimen()
_ = lcd.display(img)
else:
print(" low power consumption ")
if J==0:
lcd.clear()
J=1
lcd.draw_string(150, 100, "low power mode")
a = kpu.deinit(task)# Uninitialize
del(img)
边栏推荐
- The question of IBL precomputation is finally solved
- A proper job is a good job
- Fluent JSON serialization deserialization
- Golang treasure house recommendation
- Dls-20 double position relay 220VDC
- Exploring the road of steam education innovation in the Internet Era
- None of the following candidates is applicable because of a receiver type mismatch
- 问题解决:如何管理线程私有(thread_local)的指针变量
- 【网络丢包,网络延迟?这款神器帮你搞定所有!】
- 闭锁继电器YDB-100、100V
猜你喜欢
随机推荐
Dls-20 double position relay 220VDC
Oracle data integrity
Left join displays the specified value when the left join matching data is null
Authentication principle of Ranger plug-in
The quantity and quality of the devil's cold rice 101; Employee management; College entrance examination voluntary filling; Game architecture design
闭锁继电器YDB-100、100V
[learning notes] structure
Practical shell knowledge
CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解
ArrayList分析1-循环、扩容、版本
对libco的一点看法
最长的可整合子数组的长度
Set different background colors for the border and text of the button
[learning notes] double + two points
Using C language to realize the exchange between the contents of two arrays (provided that the array is the same size)
Oracle table creation and management
文件服务设计
What is product thinking
【2023联发科提前批笔试题】~ 题目及参考答案
06.论Redis持久化的几种方式









