找回密码
 注册
关于网站域名变更的通知
查看: 246|回复: 1
打印 上一主题 下一主题

【疯壳·无人机教程12】开源编队无人机-串口(视觉数据获取)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-8 15:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
COCOFLY教程
——疯壳·无人机·系列
串口(视觉数据获取)

- {- E" ?2 t/ Q: p* o: _' r) z4 e1 f" T: U
9 o1 a; S6 \# Y/ f$ K

# ?* V3 c4 Y$ `( m9 s
" J. I9 r" U9 U8 _5 V- ?    图1
; k! ]5 W' h- E' {7 s9 @1 @" v& C7 ]$ t3 p% r  l; H  P
6 U; ]" r, k8 y1 Y3 A
4 f! \+ `/ `. L% r' \0 Z9 C7 L* g
    一、OPENMV        模组简介% F! h/ r+ `) i: d

, x1 b- l- m4 a2 f( w2 X$ l9 _! J    OPENMV 是一个开源、低成本、功能强大的机器视觉模块。以 STM32F767 为核心,集成了 OV7725 摄像头芯片,在小巧的硬件模块上,用 C 语言高效地实现了核心机器视觉算法,提供 Python 编程接口。开发者、电子发烧友以及智能设备开发商都可以用 Python 语言使用 OPENMV 提供的机器视觉功能,为自己的产品和发明增加有特色的竞争力。" l. v- U% p6 P+ q, N, O
    OPENMV 上的机器视觉算法包括寻找色块、眼球跟踪、边缘检测、标志跟踪等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。使用者仅需要写一些简单的 Python 代码,即可轻松的完成各种机器视觉相关的任务。小巧的设计,使得 OPENMV 可以用到很多创意的产品上。比如,可以给机器人提供周边环境感知能力;给智能车增加视觉巡线功能;甚至,可以给工厂产品线增加残次品筛选功能等。* c0 D0 l0 z3 g3 p
    COCOFLY 上的无人机视觉模组采用的就是 OPENMV,其实物图如下图所示。
4 l4 z6 N+ _* T7 J- z5 ?
* }1 _# Q3 p6 x. a6 h2 F7 B+ x' E     . K$ L. t; ]* U) R
    图2
% I/ Q/ x. U4 A/ c% W3 o7 h& S    其中OPENMV 的Python 代码已经写好提供给用户,如果用户需要修改的话, 也可以修改使用,目前 OPENMV 串口发出的视觉数据的协议框架如下表所示。4 q* L+ n/ [6 s- u5 o
4 T  G# I# A7 U5 m9 _( j4 g4 j$ O
   " h) W3 w+ U/ j: M5 r4 n! X
    表1, y. K6 u9 V* k% z
    其中帧头是固定为两个字节:0xAA、0xAA;功能字为一个字节;长度为数据的长度,也为一个字节;数据位 n 个字节;和校验为一个字节,即帧头开始相加到最后一个字节,保留低 8 位。
0 c& U# ~# V% @0 L4 O    视觉模组的接收数据,即模式设置的协议框架如下表所示。, P$ N% H9 a) R  s6 c
$ C% q3 r; U0 ~: ~* `
   
2 r5 V4 f1 K& Y, z! h    表2" e* q5 ^' c% j$ Q7 T
    其中帧头是固定为两个字节:0xAA、0xAF;功能字为 0xF1;长度为数据的长度,也为一个字节;Mode,即 OPENMV 的模式设置,为 1 个字节;和校验为一个字节,即帧头开始相加到最后一个字节,保留低 8 位。
& |1 C0 f5 N' J6 E/ Y    该数据的协议用户均可自定义,详情可以看配套的OPENMV 的Python 源码,) j: T, D% W  m* G/ v: k
    OPENMV 的具体使用方式可以查看 OPENMV 官网。
* ^$ E0 k) h  x$ a: W    二、串口视觉数据获取实验6 x  v, G$ ]: L# {# T9 q
2 {/ {- n+ D$ X1 M: m7 q
    串口视觉数据获取实验使用 STM32 的串口 1 即 UART1 与视觉模组相连, 串口 2 即 UART2,通过 USB 转串口模块连接电脑,把串口 1 获取到的视觉数据通过串口 2 传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组接到 USART1,把光流模组暂时取下,并且把 USB 转串口的线接到光流接3 ]* T4 s2 A; c: ?( s
    口处。0 N" \7 U0 S: V& z8 X, w7 ?4 @
    串口 1 和串口 2 的配置可以参考《串口(基础收发)》和《串口(光流数据获取)》两节,配置代码(通过调用官方库)的思路,如下表所示:$ \( r) ~+ R8 i; G2 A, q5 O
    代码思路7 ^- v4 M, Q% _, B) k  P

  A) w& ~% |6 B* R+ h; D! J    
2 l0 w7 m$ ~$ q* N  d; e    表3
$ o6 e' D/ r( p1 m! {9 k% W# Q. {    串口 2 初始化代码如下:5 }) }: _8 W# \! t- e' M, ~
( H/ ?5 H$ ^$ u0 j+ b
   
( Z) E* K- M9 h) ^$ e$ Y; a    图3! }! C* r3 `7 W- c
5 V# G. u1 O0 Q# v3 D  k6 g- D1 {
    这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。
% F: j8 F7 e( g    串口 1 接收到视觉模组的数据就转发到串口 2,串口 1 的中断函数代码如下。0 E1 o" \/ z' b2 T4 ?( j

; }" w9 U; F  B$ B: F/ ` ( L& d5 S' y: E2 H4 s8 P& n" u% r
    图4. s3 Z/ G7 |( R& c% t# Q; e7 V/ k
4 Q* D- w3 s$ M( G$ M1 q% T
    设置串口 1 的波特率为 1115200,串口 2 的波特率也设置为 115200,代码如下:
0 Y( V/ i  R8 I2 S9 G
& W& z  `: E, g6 y    
# i  @. B/ q- X5 S    图50 n, r" w$ C6 h: T  j9 j! O
    保存、编译、下载代码,确保串口 1 接上了视觉模组,然后再把串口 2 接上" H2 D/ e  t! H9 @
    USB 转串口模块,最后接到电脑的 USB 端口,如下图所示:
3 K& B! s& ^+ j5 Q/ R* m
, c  O0 K3 s* ?9 B" n) R      w& o. b( |! \* c/ L
    图6+ J: Y% |' }0 A: a( y3 @$ y7 d0 ?/ d( T
    然后在把 USB 转串模块插到电脑的 USB 口,打开电脑端的串口调试助手, 找到对应的 COM 口(前提是安装了 USB 转串口驱动),设置波特率为 115200, 打开,可以看到串口在不断打印视觉模组发送的数据,如下图所示。
: }( v) A, b- `4 e0 a) v! {7 ~7 r1 O* D/ N7 w
   
+ s/ d$ ^, d* u5 |9 p# J    图78 Z5 V9 ~9 h9 e$ o8 d+ t
7 y4 o: j4 [" S0 Q: h# b
$ y5 `/ F! R' G9 t3 k

" r" L  T4 c' T1 ^) C4 r9 p+ _% B0 e) K$ T! B7 T
, |8 r# v5 o6 @
    文件下载请点击: 【5】串口(视觉数据获取).pdf (610.08 KB, 下载次数: 0) ; m% {$ r/ M6 @, j6 ?
5 N0 w% V* d: W/ m, p4 G7 w0 t

  s+ Q* d- k' ~7 z9 q  R$ e3 F2 g8 L, `
; w: u( _4 V! l' i: h
' k- V, _* _' s! s3 s& W
  ], P+ h9 H% p  C( J& O& R5 _

该用户从未签到

2#
发表于 2022-9-8 21:11 | 只看该作者
通信协议定义需要加效验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-13 00:01 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表