PIXY2模块学习笔记

本文介绍了Pixy2这款开源视觉传感器的特性,包括其高速处理能力、多色彩识别和追踪功能。Pixy2通过色调过滤算法识别物体,并能通过SPI、I2C等接口与Arduino等控制器通讯。文章详细阐述了如何解决串口监视器显示问题、Arduino端口使用注意事项,以及如何将Pixy2连接到Arduino进行数据传输。还提供了Pixy2的使用教程、代码示例和相关API,便于读者进行图像识别项目的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

杂记
1、串口监视器无法显示。串口监视器不显示是因为以前接了一个显示屏,串口监视器在显示屏上面。解决办法:再接上一个显示屏,拖到电脑显示屏上关掉就行了。

2、用delay(1000),LED灯不闪烁。针对arduino UNO R3,原因是因为接的是端口1,而端口1是用来给计算机发送数据的,所以会一直是高电平导致LED永远不熄灭,换一个端口就行了。

3、一个教程:http://www.sohu.com/a/316471846_651319

4、arduino数据输出到Excel:http://url.cn/5vx6QcT
http://url.cn/5B1D3rB


一、 概述

1、简介
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我拿到的是二代的。

Pixy是一款在全球极受欢迎的开源视觉传感器(图像识别传感器),这款Pixy2是该系列的第二代版本。它能够让图像识别变得更容易,支持多物体识别,具有强大的多色彩颜色识别及色块追踪能力(最高支持7种颜色),就像它的前身一样,Pixy2只需按下一个按钮即可识别并记忆你教授的物体。同时,新版本增加线路追踪和小型条形码识别功能,较上一版本的Pixy反应更快,体型更小,功能更强。

Pixy系列是联合Charmed实验室和卡内基-梅隆大学共同推出的图像识别系统。Pixy2自带处理器,并搭载着一个图像传感器CMUcam5,它通过其处理器内部的算法,以颜色为中心来处理图像数据,选择性地过滤无用信息,从而得到有效信息——这样一来Pixy2只需将已经处理过的特定颜色物体的数据发送给与之连接的微型控制器(例如Arduino)即可,而不必向控制器输入所有原始视觉信息,处理后得到的数据更精确有效。因此,你的Arduino板或其它微控制器可以滕出许多资源来执行其他事件。Pixy2的输出的数据可以通过SPI,I2C等与arduino和树莓派等控制器直接通讯,自带的通讯线可以直插在Arduino控制板上面,方便制作具有图像识别功能的小机器人。它配套有开源的arduino及Linux库和示例文件。

2、技术参数
 帧率:每秒60帧
 支持的通信接口:SPI,I2C,UART,USB或模拟/数字输出
 处理器:恩智浦NXP LPC4330,204 MHz双核
 图像传感器:Aptina MT9M114,1296×976分辨率,集成图像流处理器
 透镜视场:水平60度,垂直40度
 功耗:典型值为140 mA
 电源输入:USB输入(5V)或Vin输入(6V~10V)
 RAM:264K bytes
 闪存:2M bytes
 可用的数据输出:UART串行,SPI,I2C,USB,数字,模拟
 尺寸:1.5“x 1.65”x 0.6“ 重量:10g
 集成光源: 约20 lumens

3、使用简介
Pixy使用的是基于色调过滤算法(hue-based color filtering algorithm)来识别物体。因为Pixy使用色调(hue),物体应有明显的色调,如:
在这里插入图片描述
在这里插入图片描述
有些物体因为没有色相(黑色、白色或灰色)或色相不明显,如:
在这里插入图片描述

在这里插入图片描述

给pixy供电,按住pixy顶部的按钮等待大约1秒钟,LED会变亮,先是显示白色,继续按会变其他颜色,有7个颜色(红、橙、黄、绿、青、蓝、紫),每一个颜色就像是一个盒子的编号,盒子中存放pixy学习到的颜色。松开按键,pixy会进入“light pipe”模式,此时LED的颜色就是pixy摄像头所看到的图像中间部分的颜色。

用LED的颜色来检查是否你的物体在Pixy视角的中心位置。当你感觉LED颜色和你的物体颜色很接近时,点击一下按键(按下并释放按键,就像单击鼠标一样)。如果Pixy感觉你的物体色调足够好(有足够的色彩饱和度[enough color saturation])的话,LED会闪烁,你现在已经操作完成。Pixy现在已经“学会”了你的物体,并且会追踪具有相同颜色的物体。如果物体的色调没有那么好,LED会关闭(不会闪)并且Pixy并没有学到物体。如果LED没有闪,可以换一个有更好色彩饱和度的物体。

有一个配套pixy2的程序下载:https://github.com/charmedlabs/pixy2/raw/master/releases/pixymon_windows/pixymon_v2_windows-3.0.24.exe

详情参见:https://pixycam.com/

二、将pixy2与arduino连接

开始
官方介绍:http://url.cn/5mRflxy
一篇博客:http://www.makerlab.me/guides/6/articles/34
引脚接法:
在这里插入图片描述
在这里插入图片描述

安装arduino
从:https://www.arduino.cc/en/Main/Software 下载软件即可。
不推荐在微软应用商店直接下载。在这里插入图片描述

配置arduino库
1、 下载pixy2的库:https://pixycam.com/downloads-pixy2/
2、下载后解压,将解压的文件放到arduino的安装目录下的libraries目录如图:
在这里插入图片描述
在这里插入图片描述

再次进入arduino会看见:
在这里插入图片描述

Arduino API
官方说明:http://url.cn/5mvL76T
在Arduino上使用Pixy非常简单。您只需包含SPI和Pixy标头:
#include <Pixy2.h>
并将这个小家伙放在setup()和loop()函数之外,以创建Pixy的全局实例:
Pixy2 pixy;
Arduino库中最重要的方法是getBlocks(),它返回Pixy已检测到的对象数。然后,您可以在pixy.ccc.blocks[]数组中查找有关每个检测到的对象的信息(每个检测到的对象一个数组成员。)每个数组成员(i)包含以下字段:
• pixy.ccc.blocks[i].m_signature被检测对象的签名号(正常签名为1-7)
• pixy.ccc.blocks[i].m_x被检测物体中心的x位置(0到316)
• pixy.ccc.blocks[i].m_y被检测物体中心的y位置(0至208)
• pixy.ccc.blocks[i].m_width被检测物体的宽度(1至316)
• pixy.ccc.blocks[i].m_height被检测物体的高度(1至208)
• pixy.ccc.blocks[i].m_angle如果检测到的对象是颜色代码(-180至180),则对象检测到的对象的角度。
• pixy.ccc.blocks[i].m_index区块的追踪指数
• pixy.ccc.blocks[i].m_age该块已被跟踪的帧数。
• pixy.ccc.blocks[i].print()将检测到的对象信息打印到串行端口的成员函数

1、 video API:http://url.cn/5pQBG6z
2、 线路跟踪API:http://url.cn/5TESsaq
3、 彩色连接组件API:http://url.cn/5VGUygY
4、 通用API(无用):http://url.cn/5fCntTo
5、 Arduino API:http://url.cn/52WY3Zi
6、 在官网搜索API得到的结果:http://url.cn/514Put0

三、程序

代码

#include <Pixy2.h>
#include <SPI.h>

//测距


Pixy2 pixy;

float x, y, z;
int t = 0;

double bili = 0.56;

void setup()
{
  Serial.begin(9600);

  pixy.init();

}

void loop()
{

  int i;
  pixy.ccc.getBlocks();
  if (pixy.ccc.numBlocks)
  {

    float x1, y1, z1;
    //double x2, y2, z2;
    //x1 = 0.26 * ((pixy.ccc.blocks[0].m_x) );
    x1 = 0.26 * (pixy.ccc.blocks[0].m_x) - 42 ;
    y1 = 0.26 * (pixy.ccc.blocks[0].m_y) - 28;

    float h = 0.26 * (pixy.ccc.blocks[0].m_height);
    float w = 0.26 * (pixy.ccc.blocks[0].m_width);
    float temp = h * w;
    z1 = 62 - (sqrt(18 * 18 / temp)) * 58 ;

    if (t == 0) {
      x = x1;
      y = y1;
      z = z1;
      t++;
    }
    if (abs(x - x1) > 5) {
      x = x1;
    }
    if (abs(y - y1) > 5) {
      y = y1;
    }
    if (abs(z - z1) > 5) {
      z = z1;
    }

      z = 0;


    Serial.print(x); Serial.print(",");
    Serial.print(y); Serial.print(",");
    Serial.println(z);
    delay(10);

  }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值