Openmv和arduino串口通信的优化,以及根据不同颜色的色块,进行简易判断

本文介绍了如何优化OpenMV与Arduino之间的串口通信,通过识别颜色发送简化数据,以及在Arduino端接收和处理数据。在Robocup中国机器人大赛的项目中,作者分享了接线细节、代码优化以及注意事项,包括使用特定串口、设置波特率、处理JSON数据格式等,以提高通信效率和识别准确性。
摘要由CSDN通过智能技术生成

Openmv和arduino串口通信的优化,以及根据不同颜色的色块,进行简易判断

最近在搞Robocup中国机器人大赛,我们组的项目是自动分拣机器人。我主要负责我们组电控中视觉识别和主程序书写部分。因为在视觉识别及串口通信这部分,绕了很大的弯路,所以写一篇文章在这里,供大家参考。

目的

通过openmv对小球进行识别,并把识别到的数据转换为0,1,2…通过串口,发送给arduino板,从而实现串口通信。(例如,识别到红色,就发送0给arduino板,这样arduino在判断时更为简单,代码书写更简便,其次,串口通信速度更快,不挤占传输空间,让识别更加准确)

器材

arduino开发板,Mega2560(代码和uno板可以共用)

Openmv

第一部分 接线

接线这部分是很有讲究的,arduino在虚拟软串口的时候,只有部分串口是可以进行调用的,我试过好几种方案,最终发现arduino里面只有10,11,12,13串口是可以使用的,其余串口均不能作数据传输的软串口,官方例程中给的是10,11。如果串口被占用的同学,可以试着用一下12,13来进行数据传输。

arduino Openmv

12-----------------p4

13-----------------p5

GND------------GND

VIN--------------5V

官方给的教程中,openmv驱动需要3.3-7v的电压,VIN口最好接5v,所以在通过arduino板子给openmv供电,脱机运行的时候,可以将VIN口和arduino上的5V接在一起。这样就可以脱机运行了。

第二部分 代码

在代码实现方面,官方例程中,传输的数据属于json格式的数据,传输的数据太多,这里进行优化。这里同样传输jason数据格式的数据,但是,仅传输一个字符过去。

Openmv代码

import sensor, image, time
import json
from pyb import UART


blue_threshold   = (22, 67, 9, 127, -128, -54)#蓝色的阈值
red_threshold   = (41, 61, 42, 127, -128, 127)#红色的阈值
yellow_threshold   = ( 60 ,10,-15,20,30,80)#黄色的阈值


sensor.set_hmirror(True)
sensor.set_vflip(True)
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) 
  • 22
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值