hey_ming 2024-05-01 10:45 采纳率: 0%
浏览 7
已结题

init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗

我是在maixhub上训练的模型,导进亚博k210
练完模型后给的三个文件复制到tf卡,tf卡也挂载成功
在maixpy运行main文件的时候lcd屏一直显示loading model,串行终端信息一直卡在

init i2c:2 freq:100000
[MAIXPY]: find ov2640
[MAIXPY]: find ov sensor
是main文件哪里有问题吗?
我试着找了boot文件,改了自己的路径,运行boot的时候终端信息是一样的,没报错,lcd白屏
固件也烧录了,版本是v0.6.2
亚博的k210板卡是摄像头开发版在一起的,应该不会有模块链接的问题?
拿maixpy的实例helloworld跑过,摄像头可以正常使用
main文件在下面

# generated by maixhub, tested on maixpy3 v0.4.8
# copy files to TF card and plug into board and power on
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
from machine import UART
from fpioa_manager import fm

input_size = (224, 224)
labels = ['痛苦', '中性', '害怕', '惊讶', '开心', '疑惑', '愤怒', '难过']
anchors = [4.31, 4.59, 5.88, 6.09, 4.16, 5.16, 4.66, 4.19, 4.91, 5.34]

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=input_size)
    img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
    lcd.display(img)

class Comm:
    def __init__(self, uart):
        self.uart = uart

    def send_detect_result(self, objects, labels):
        msg = ""
        for obj in objects:
            pos = obj.rect()
            p = obj.value()
            idx = obj.classid()
            label = labels[idx]
            msg += "{}:{}:{}:{}:{}:{:.2f}:{}, ".format(pos[0], pos[1], pos[2], pos[3], idx, p, label)
        if msg:
            msg = msg[:-2] + "\n"
        self.uart.write(msg.encode())

def init_uart():
    fm.register(10, fm.fpioa.UART1_TX, force=True)
    fm.register(11, fm.fpioa.UART1_RX, force=True)

    uart = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=256)
    return uart

def main(anchors, labels = None, model_addr="/sd/m.kmodel", sensor_window=input_size, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.set_windowing(sensor_window)
    sensor.set_hmirror(0)
    sensor.set_vflip(0)
    sensor.run(1)

    lcd.init(type=1)
    lcd.rotation(0)
    lcd.mirror(False)
    lcd.clear(lcd.WHITE)

    if not labels:
        with open('labels.txt','r') as f:
            exec(f.read())
    if not labels:
        print("no labels.txt")
        img = image.Image(size=(320, 240))
        img.draw_string(90, 110, "no labels.txt", color=(255, 0, 0), scale=2)
        lcd.display(img)
        return 1
    try:
        img = image.Image("startup.jpg")
        lcd.display(img)
    except Exception:
        img = image.Image(size=(320, 240))
        img.draw_string(90, 110, "loading model...", color=(255, 255, 255), scale=2)
        lcd.display(img)

    uart = init_uart()
    comm = Comm(uart)

    try:
        task = None
        task = kpu.load(0x300000)
        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:
                    pos = obj.rect()
                    img.draw_rectangle(pos)
                    img.draw_string(pos[0], pos[1], "%s : %.2f" %(labels[obj.classid()], obj.value()), scale=2, color=(255, 0, 0))
                comm.send_detect_result(objects, labels)
            img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))
            lcd.display(img)
    except Exception as e:
        raise e
    finally:
        if not task is None:
            kpu.deinit(task)


if __name__ == "__main__":
    try:
        # main(anchors = anchors, labels=labels, model_addr=0x300000, lcd_rotation=0)
        main(anchors = anchors, labels=labels, model_addr="/sd/model-120037.kmodel")
    except Exception as e:
        sys.print_exception(e)
        lcd_show_except(e)
    finally:
        gc.collect()

  • 写回答

25条回答 默认 最新

  • 专家-皆知 2024-05-01 10:46
    关注
    获得0.15元问题酬金

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    根据你描述的问题,可能的原因和解决方案如下:

    1. I2C通信问题:确保你的I2C连接正确,包括数据线、时钟线、地线和电源线。I2C设备地址是否设置正确。

    2. OV2640摄像头模块问题:检查摄像头模块是否正确连接到开发板上,以及是否提供了正确的电源和地线。

    3. 固件或boot文件问题:确保你烧录的固件版本与你的硬件兼容,以及boot文件是否正确指向了你的应用程序。

    4. main文件问题:检查main文件中的代码逻辑,确保没有逻辑错误或者等待时间过长的操作。

    5. 模型文件问题:确保模型文件没有损坏,并且正确地放置在TF卡上。

    6. 权限问题:确保你的应用程序有足够的权限访问硬件设备。

    7. 串口波特率设置问题:确保你的串口波特率设置正确,以便能够正确地读取串口输出。

    8. LCD显示问题:检查LCD的初始化代码,确保LCD已经正确初始化。

    如果你需要检查main文件的代码,你可以将main文件的代码贴出来,我可以帮你检查是否有明显错误。

    此外,如果你需要绘制I2C连接图或者摄像头连接图,我可以帮你绘制一个基本的连接图:

      [ 主板 ]
            |
            |
       +------------+
       |           |
       |  I2C      |
       |  设备     |
       +------------+
            |
            |
       +------------+
       |           |
       | 摄像头    |
       |  模块     |
       +------------+
    

    这个图展示了I2C设备和摄像头模块与主板的连接关系。你需要确保所有的连接都是正确的,并且供电和地线都已经接好。

    如果你需要更详细的帮助,请提供更多的信息,例如你的main文件代码,或者你的硬件连接图。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月9日
  • 修改了问题 5月1日
  • 修改了问题 5月1日
  • 创建了问题 5月1日

悬赏问题

  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示