这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】K210MaixBit进行人脸检测--from业

共2条 1/1 1 跳转至

【原创】K210MaixBit进行人脸检测--from业

工程师
2024-10-18 20:34:02     打赏

一、K210 Maix Bit芯片介绍

1、K210 Maix Bit实物图

图片1.png图片2.png

2、K210 Maix Bit的板载功能

1)强大的处理器:

双核 64 位 RISC-V 处理器

内置多种硬件加速单元

2)存储功能:

片上 SRAM

板载 Flash

3)显示相关功能

LCD 连接器

显示控制引脚

4)摄像头连接功能

DVP 摄像头连接器

5)通信接口:

USB 转串口功能

GPIO 引脚

6)其他功能:

一键下载电路

RGB 灯

麦克风

复位按钮

3、K210 Maix Bit的引脚资源

1)总体数量和类型4:

具有8个通用GPIO(General Purpose Input/Output)和32个高速GPIOHS(High-Speed GPIO)。无论是通用GPIO还是高速GPIO,每个IO都可以分配到FPioa(现场可编程IO阵列)上的48个管脚之一。

2)已被默认使用的引脚4:

gpiohs31:连接 LCD 的直流(DC)信号。

gpiohs30:连接 LCD 的复位(RST)信号。

gpiohs29:用于 SD 卡的 SPI 片选信号。

gpiohs28:连接麦克风的 LED 时钟信号。

gpiohs27:连接麦克风的 LED 数据信号。

3)其他具有特定功能的引脚组2:

0-3号引脚:为 JTAG(Joint Test Action Group)引脚,常用于芯片的调试和测试。

4、5号引脚:为默认串口引脚,可用于与其他设备进行串口通信。

12-14号引脚:连接RGB灯,可通过编程控制灯光的显示。

16号引脚:为BOOT键引脚,连接了10kΩ的上拉电阻。

18-20号引脚:连接麦克风,用于音频的采集。

26-28号引脚:通过SPI协议实现对TF卡的读写功能。

4)引脚的电气特性:

① IO引脚的电压一般为3.3V。

RESET引脚的电压为1.8V。

4、K210 Maix Bit的原理图

图片3.png

二、K210 Maix Bit芯片的测试流程

1、基本功能测试

1)电源测试:将开发板连接到电源,检查开发板是否能够正常通电,电源指示灯是否亮起。测量芯片的供电电压是否在正常范围内

2)串口通信测试:通过串口连接开发板和电脑,使用串口调试工具发送和接收数据,检查串口通信是否正常。

3)GPIO 测试:使用代码或相关工具测试芯片的 GPIO引脚功能。

2、特定功能模块测试

1)初始化摄像头:使用sensor.reset()函数初始化摄像头,设置合适的频率和像素格式

2)图像采集测试:编写程序控制摄像头进行图像采集,检查是否能够正确获取图像数据。可以使用sensor.snapshot()函数拍摄一张照片,并将图像数据保存到内存或存储设备中,然后查看保存的图像是否完整、清晰。

3)图像识别测试:如果要测试芯片的图像识别功能,加载预先训练好的图像识别模型,使用摄像头采集的图像作为输入,运行图像识别程序,检查芯片是否能够正确识别图像中的目标物体或特征。

三、实验步骤

1、准备材料

K210 Maix Bit开发板、Maixpy软件

2、代码编写

import sensor, image, lcd, time

import KPU as kpu

import gc, sys

def lcd_show_except(e):

    import uio

    err_str = uio.StringIO()

    sys.print_exception(e, err_str)

    err_str = err_str.getvalue()

    img = image.Image(size=(224,224))

    img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))

    lcd.display(img)

def main(model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):

    try:

        sensor.reset()

    except Exception as e:

        raise Exception("sensor reset fail, please check hardware connection, or hardware damaged! err: {}".format(e))

    sensor.set_pixformat(sensor.RGB565)

    sensor.set_framesize(sensor.QVGA)

    sensor.set_hmirror(sensor_hmirror)

    sensor.set_vflip(sensor_vflip)

    sensor.run(1)

    lcd.init(type=1)

    lcd.rotation(lcd_rotation)

    lcd.clear(lcd.WHITE)

    anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

    try:

        task = None

        task = kpu.load(model_addr)

        kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]

        while(True):

            img = sensor.snapshot()

            t = time.ticks_ms()

            objects = kpu.run_yolo2(task, img)

            t = time.ticks_ms() - t

            if objects:

                for obj in objects:

                    img.draw_rectangle(obj.rect())

            img.draw_string(0, 200, "t:%dms" %(t), scale=2)

            lcd.display(img)

    except Exception as e:

        raise e

    finally:

        if not task is None:

            kpu.deinit(task)

if __name__ == "__main__":

    try:

        main( model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False)

        # main(model_addr="/sd/m.kmodel")

    except Exception as e:

        sys.print_exception(e)

        lcd_show_except(e)

    finally:

        gc.collect()

3、实现效果

图片4.png


专家
2024-10-19 11:46:57     打赏
2楼

学习学习


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]