2023寒假一起练平台(3)- 基于Sipeed M1s Dock综合应用 网络相机
利用M1S实现网络相机功能,把M1S当成一个便捷的摄像头,可以通过在屏上显示,可以用过电脑端显示,本人这里以电脑端显示演示。
标签
嵌入式系统
接口
USB
meiyao
更新2023-03-29
362

2023寒假一起练平台(3)- 基于Sipeed M1s Dock综合应用

1、功能具体要求

项目5 -  网络相机

目标:完成一个基于Sipeed M1s Dock 的网络相机
具体要求:

  • 完成相机驱动,定时拍摄图片,并将图片通过网络传到电脑或服务器,实现长时间拍摄
  • 通过电脑端编程将图片合成为一个视频

下面开始对M1S探索工作。

1、先完成M1S初始化。

2、再把WIFI连接设置成功。

3、连接服务器,如果没有连接成功一直等待。

4、打开摄像头采集数据。

5、发数据给电脑端。

6、电脑合成再显示到屏幕上。

Ftk2ueIJCk1KQdDyBL7z936FumfG

2、项目完成描述:

使用到模块描述:

1、M1S:核心板,数据处理;

2、按键:S1,S2,BOOT,RST.

3、OV2685,摄像头;

3、功能描述:

先对软件操作说明一下:

首先打开软件时,先选择对的芯片,我这里选的是BL808,把设备接入电脑,这里一定要接入UART才行。

由于在另一台电脑上,下面的方法我就以官方示例来说明好了,白天在上班。

方法请看这个连接:

M1s DOCK 上手 - Sipeed Wiki

第一次上电时要按S1 S2再按复位再烧录相关的资料进去。

第二步就通过OTG烧录,可以在上面的连接中仔细查看,还是非常的清晰的。

但是在烧录时,需要按BOOT,RST,才可以正常烧进去。

这里我主要说一下U盘烧录,因为这一步我就弄错了,也是找了蛮久的原因才解决。

前面都把步骤弄对后,相关的程序烧录进去后,把板子接入到电脑,电脑里面会出现在个7M(我不知道大家的是不是这么大)大小的U盘,这个时候是不能下载编译好的程序进去的,如果把程序放进去后,会出现识别不到U盘,或者闪退,需要重新烧录,步骤在上图Bouffalo Lab Dev Cube 1.8.3 BL808这一步;如果正常操作没有问题,正常是7M这个盘符,那么需要S1,S2,RST进入到一个5点几M的U盘模式,也就是U盘下载模式,这个时候就可以把下载的程序拖入到这个U盘内,可以看到图像了。

具体步骤:

第一步,先图形化界面烧录,boot2, firmware, d0fw这三项要选上,而且还选对相应的文件。

第二步,文件选择对了后,把板子接入串口,再连接到PC,在界面右边选最大的那个端口,我这里是COM45,再把串口RATE改为2000000,再点Creat&Download,烧录时要按一下BOOT,RST,注意要先放开RST,再放开BOOT,直到下载到100%。

第三步,电脑装入虚拟机,进入LINUX编译好程序后,具体的步骤从连接上的第五大点开始看,SDK编译,我这里更改过几个什么样的参数,代码修改,需要

m1s xram wifi connect("WIFI名字","密码");m1s xram wifi upload stream("IP地址,就是电脑地址",8888(端口));然后编译完成后,重新生成代码。

第四步,就直接把BIN文件拖入到5M的U盘中,然后会重启一下。

摄像头采集数据 主控连接WiFi,然后尝试连接服务器,连接成功后,把摄像头采集的数据转发给电脑对应的IP地址和端口,电脑获得数据号,电脑获得数据后,把图像显示出来

结束操作。

3、实现效果:

Fq1rcAE20yACWOAIgsLdxKEZnIjJ

4、软件实现流程

Fsu7U0OdbI3CSCW90z8lhBJJKEvZ

5、合成代码

img_path = "F:\Evaluation\M1S\M1S"

#多帧合成视频   记录下的帧数

images_to_video(img_path,img_path+'video.mp4')

fps = 25 # 帧率

fourcc = cv.VideoWriter_fourcc(*'mp4v')

# img_array = []

g = os.walk(input_filepath)

count =0

for path,dir_list,file_list in g:

   # file_list = natsorted(file_list)

   for file_name in file_list:

      #取出前景文件

      front_pic = os.path.join(path, file_name)

      # print (front_pic)

     img=cv.imread(front_pic)

      imgInfo = img.shape

      size = (imgInfo[1],imgInfo[0])

      #获取图片宽信息

      while count <= 1:

        count = count + 1

        img=cv.imread(front_pic)

        imgInfo = img.shape

        size = (imgInfo[1],imgInfo[0])

        out = cv.VideoWriter(output_filename, fourcc, fps,size)

      if img is None:

        print(front_pic + " is non-existent!")#删除提示

        continue

      else:

        out.write(img)

总结:

本次实现M1S的项目功能,从中学到了如果通过摄像头实现网络相机的功能,在实现过程中,遇到了没有办法连接设备,而且使用M1S时操作繁多,不知道相对工作时需要按哪个按键,每次都要认真的去读资料,后面经过反复的研究发现,要把PC商的IP和端口要一一对应,最终才解决了这个问题,顺利的在电脑上显示,成功实现了网络相机的功能。

软硬件
电路图
附件下载
M1S.rar
团队介绍
个人
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号