没有合适的资源?快使用搜索试试~ 我知道了~
首页OpenMV&&stm32通信
OpenMV&&stm32通信
45 下载量 193 浏览量
更新于2023-05-04
评论 6
收藏 299KB PDF 举报
OpenMV&&stm32通信 目录: 1.开篇之言 2.简单介绍 3.主要代码 4.结篇之语 ——————————————————————————————- 1.开篇之言 (不用看这,都是废话) ……由于新型冠状病毒的影响,不能开学,也不能回学校准备比赛。又学校推迟一周在网上开课,无聊中开启我人生中第一篇博客,由于第一次写博客,错误之处多多指教。也以此为第一篇博客来记录自己的学习和加深印象,也当做笔记啦!!!!!! ……半年前的大一暑假协会组织我们留校培训,这是目前最充实的一个暑假,两个月的暑假在家待了4天 5夜,在路上待了两天,其余都是在学校度过余假啦!!!!!! ……在培训二十天的时候,
资源详情
资源评论
资源推荐
OpenMV&&stm32通信通信
OpenMV&&stm32通信通信
目录:目录:
1.开篇之言开篇之言
2.简单介绍简单介绍
3.主要代码主要代码
4.结篇之语结篇之语
——————————————————————————————-
1.开篇之言开篇之言 (不用看这,都是废话)(不用看这,都是废话)
……
由于新型冠状病毒的影响,不能开学,也不能回学校准备比赛。又学校推迟一周在网上开课,无聊中开启我人生中第一篇博客,由于第一次写博客,错误之处多多指教。也以此
为第一篇博客来记录自己的学习和加深印象,也当做笔记啦!!!!!!
……
半年前的大一暑假协会组织我们留校培训,这是目前最充实的一个暑假,两个月的暑假在家待了
4
天
5
夜,在路上待了两天,其余都是在学校度过余假啦!!!!!!
……
在培训二十天的时候,学长给布置任务练手,让做个
捡羽毛球机器人捡羽毛球机器人
当时刚学完
51
,下面准备学
stm32
,就决定用
stm32
作为主控来完成任务。
……
当天晚上买了是他们
32
学习板,我买的是洋桃一号开发板,当时买回来大概十天学了是
stm32
大部分,然后我们放了一星期假,我提前回来一天开始着手做任务,从
OpenMV
开
始开启下半暑假旅程。
……
当然十天学
stm32
比较水,后来开学又看了正点原子的视频,正点原子和杜洋老师的
stm32
区别是有的,个人感觉正点原子比杜洋老师讲的细,不过杜洋老师的学着比正点原子好
学点,好上手一些,但是推荐用正点原子比较好,毕竟是
32
界的大佬,讲的也挺好,资料也多。
2.简单介绍简单介绍
这里我主要写一点关于OpenMV与stm32通信的,识别羽毛球需要OpenMV,然后把数据转给stm32
1.OpenMV使用Python编程,用的语法较少,简单了解一下即可,OpenMV底层是用C语言写好的函数,用户只要用Python调用就可以啦,我这是通过形状识别的圆形识别来检测羽
毛球的位置(只传输在画面中的x,y坐标)。
2.stm32使用串口中断来接受数据。
3.主控是洋桃一号开发板,由于是半年前做的,现在在家没有任何实物,所以里面接线图,实物图几乎都没有,请见谅。
4.另外说句题外话,想学Python的小伙伴们可以考虑风变科技的Python小课,我是前几天看卓大大推荐的8.9元的体验课,于是体验了一下,教学方式采用文字交互式学习,挺有趣,
我是今天刚闯完体验课的4关,由于后面因为比赛也没时间,所以打算以后再学吧!!!!
3.主要代码主要代码
OpenMV的所有代码,这里识别摄像头画面中最大的圆的中心坐标(的所有代码,这里识别摄像头画面中最大的圆的中心坐标(x,,y))
import sensor, image, time, math
from pyb import UART
import json
import ustruct
sensor.reset()
sensor.set_pixformat(sensor.RGB565) # grayscale is faster
sensor.set_framesize(sensor.QQVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
uart = UART(3,115200) #定义串口3变量
uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters
def find_max(circles): #定义寻找球面积最大的函数
max_size=0
for circle in circles:
if circle.magnitude() > max_size:
max_circle=circle
max_size = circle.magnitude()
return max_circle
def sending_data(cx,cy): #发送函数(我这里没用的,还是留着吧)
global uart;
#frame=[0x2C,18,cx%0xff,int(cx/0xff),cy%0xff,int(cy/0xff),0x5B];
#data = bytearray(frame)
data = ustruct.pack("<bbhhb",
0x2C,
0x12,
int(cx),
int(cy),
0x5B)
uart.write(data);
def recive_data(): #接收函数
global uart
if uart.any():
tmp_data = uart.readline();
print(tmp_data)
while(True):
clock.tick()
img = sensor.snapshot()
circles = img.find_circles(threshold = 2500, x_margin = 10, y_margin = 10, r_margin = 10,
r_min = 2, r_max = 100, r_step = 2);
cx=0;cy=0;
if circles:
#如果找到了目标球
max_c = find_max(circles);
#在圆周围画一个圆
#img.draw_circle(circle.x(), circle.y(), circle.r(), color = (255, 0, 0))
#用圆标记出目标颜色区域
img.draw_cross(max_c[0], max_c[1]) # cx, cy
img.draw_cross(160, 120) # 在中心点画标记
#在目标颜色区域的中心画十字形标记
cx=max_c[0];
cy=max_c[1];
img.draw_line((80,60,cx,cy), color=(127));
#img.draw_string(160,120, "(%d, %d)"%(160,120), color=(127));
img.draw_string(cx, cy, "(%d, %d)"%(cx,cy), color=(127));
sending_data(cx,cy); #发送点位坐标
recive_data();
stm32里部分代码,只是串口部分的,用的里部分代码,只是串口部分的,用的PA.9和和PA.10
weixin_38621272
- 粉丝: 3
- 资源: 959
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0