I完成工作
1.利用摄像头模块ESP32-CAM完成模型箱内图像的采集,之后使用微型开源库Micro-RTSP将采集到的图像数据处理为RTSP流,并利用Wi-Fi将该RTSP视频流发送到上位机。2.利用STM32单片机完成离心机内部直流伺服电机的转速采集,并通过串口协议将转速数据发送到Wi-Fi模块ESP32内部,ESP32接收到数据后通过无线的方式将速度数据转发到上位机。
3.利用Python语言及其库完成了离心机系统上位机程序设计,包括视频和图片的采集与显示、转速图的绘制与显示、试验数据管理、下位机自动控制和自定义速度文件等功能。
II视频采集实现
考虑到转子空间有限且转子内部没有光线,选取的摄像头应尽量满足体积小、供电容易、自带补光灯等要求。虽然目前有很多种类的网络摄像头,但是大部分摄像头的体积较大且不支持外部程序访问,使用起来较为困难。因此我们决定采用开源的摄像头模块ESP32-CAM,RTSP(实时流传输协议)是TCP/IP协议族中的应用层协议,被广泛应用于流式媒体传输,开源计算机视觉库opencv也提供了读取RTSP视频流的接口,为方便上位机读取,摄像头采用RTSP协议完成视频流传输。C/C++的开源库Micro-RTSP是一个微型库,它可用于从资源受限的MCU提供RTSP流。通过访问开源库Micro-RTSP库的GITHUB页面,可以得到针对ESP32-CAM的Arduino代码,将程序烧录到ESP32-CAM后,连接到wifi即可在PC端访问到ESP32-CAM采集到的视频流。 当采用QVGA格式的图像时,帧率可以达到25帧到30帧左右:
原理如下图所示
![alt 文本](https://i.bmp.ovh/imgs/2021/07/b3b8742cc302cf3d.png)
采集效果如下图所示
III离心机转速采集实现
使用ST官方提供的函数库可以快速实现测速功能,首先打开定时器2的时钟,并将其初始化为编码器模式,再将定时器2的通道1和通道2配置为浮空输入模式,便可以完成定时器的初始化设置。参考开源电子网OpenEdv的串口配置程序,完成对串口1配置,再主程序中只需要调用printf函数便可以完成数据发送。速度采集原理与采集程序流程
IV无线通信部分
使用ESP32完成上位机与下位机的通信,上位机通过无线网络的方式将各种操控指令发送到离心机,下位机接收到指令后,按照指令内容进行开机、暂停、调速等操作,而且离心机的转速还可以通过无线网络的方式传输到上位机,而无需任何物理上的连线该部分电路原理如图
![](https://i.bmp.ovh/imgs/2021/07/65b7c6331e1dce22.png)
V程序部分实现
1.使用到的库PyQt5(前端界面)
matplotlib(绘制参数曲线)
opencv(读取离心机内部的RTSP视频流)
socket(用于和ESP32通信,控制离心机)
2.程序结构和系统结构如下
>程序结构
![](https://i.bmp.ovh/imgs/2021/07/4bba84b8ba36ca73.png)
>系统结构
![](https://i.bmp.ovh/imgs/2021/07/cb43f2fcd79baf5c.png)
2.程序运行效果如下
>程序主界面
![](https://i.bmp.ovh/imgs/2021/07/96956d2364fd4735.png)
>程序提供的速度文件编辑工具
![](https://i.bmp.ovh/imgs/2021/07/b43e6c9c96e4ada6.png)
>实现视频缩放效果和图像二值化、轮廓提取
![](https://i.bmp.ovh/imgs/2021/07/64e25a715acab35c.png)
VI效果展示
下位机
上位机