概述
RGB巡线传感器模块专为小车巡线比赛设计。它包含4个RGB补光灯和4个光敏接收管,该模块既可以用于深色背景浅色赛道做巡线,也可以用于浅色背景深色赛道做巡线,只要背景与赛道色差灰度值大于阈值(背景与赛道在RGB域的色差越大,巡线效果越好),RGB巡线传感器模块均能用于巡线。该模块具有检测速度快,通过按键学习场地功能,适应性良好等优点。本模块接口是蓝白色色标,说明是双数字、I2C接口,需要连接到主板上带有蓝白色标示接口。
技术规格
● 工作电压:5V DC
● 工作温度:0℃~70℃
● 检测高度:依跑道材质和光照情况不等,建议模块探头距跑道5mm~15mm间
● 信号模式:I2C通信(对应蓝色白色色标)
● 模块尺寸:48 x 72 x 26.5 mm (长x宽x高)
功能特性
● 支持Arduino IDE编程, 并且提供运行库来简化编程;
● 具有四只LED指示灯用于巡线反馈以及新环境学习情况;
● 使用RJ25接口连线方便;
● 适配makeblock DIY平台金属件:模块的白色区域是与金属梁接触的参考区域;
● 模块化安装,兼容乐高系列;
● 配有接头支持绝大多数Arduino系列主控板;
● 支持场地学习功能:识别并记录所用场地的背景及路径的颜色;
● 支持eeprom存储:学习后的数据会保留到eeprom,防断电丢失数据;
● 支持切换RGB补光颜色:目前暂时支持三种颜色切换(红、绿、蓝),长按2秒按键切换RGB颜色;
● 巡线灵敏度可调;
● 具有反接保护,电源反接不会损坏IC;
● 一个主板最多同时支持4路巡线传感器模块。
引脚定义
RGB巡线模块有六个针脚的接头,每个针脚的功能如下表
序号 | 引脚 | 功能 |
---|---|---|
1 | SDA | I2C数据接地 |
2 | SCL | I2C时钟接口 |
3 | VCC | 电源线 |
4 | GND | 接地 |
5 | S2 | I2C地址分配口 |
6 | S1 | I2C地址分配口 |
连线模式
● RJ25连接
由于RGB巡线传感器模块接口是蓝白色标,当使用RJ25接口时,需要连接到主控板上带有蓝白色标的接口。以Makeblock Megapri为例,可以连接到5,6,7,8 号接口,如下图所示:
● 杜邦线连接
当使用杜邦线连接到Arduino Uno主板时,模块A0引脚需要连接到ANALOG(模拟)口,如下图所示:
学习方法
如果比赛场地、环境、RGB传感器模块安装位置等发生了变化,建议重新学习传感器模块,学习信息会保存在eeprom,防掉电丢失。完整的学习过程包括四个步骤:
1.调整补光灯颜色:根据场地背景和线的颜色,通过长按按钮选择合适的补光灯颜色。
2.学习背景颜色:将RGB传感器模块安装在待使用的位置,并使其4个RGB灯都正对场地背景,单击按键,四个led指示灯开始慢闪,2~3秒后学习完成,led指示灯停止闪烁。
3.学习赛道颜色:将RGB传感器模块安装在待使用的位置,并使其4个RGB灯都正对赛道,双击按键,四个led指示灯开始慢闪,2~3秒后学习完成,led指示灯停止闪烁。
4.测试确认:保持该模块在待使用的位置,调整四个探头的位置以确认其是否能正确检测到背景及线的颜色。检测到背景时探头对应的LED亮起,检测到线时对应的LED熄灭。
编程指导
● Arduino 编程
如果使用Arduino编程,需要调用库Makeblock-Library-master 来控制RGB巡线模块。
本程序通过Arduino编程,使用两路增强型180编码电机进行巡线控制,工程文件根目录必须包含MeRGBLineFollower源文件和MeEnhanceEncoderOnBoard源文件,如下:
MeRGBLineFollower180motorAuriga.ino是基于Auriga主控板、180编码电机做底盘的巡线例子,代码如下:
RGB巡线传感器主要函数功能列表
函数 | 功能 |
---|---|
void setKp(float value) | 设置巡线灵敏度,灵敏度是用于调节巡线响应速度,值越大巡线时转弯越灵敏 |
int16_t getPositionOffset(void) | 获取传感器偏离赛道的位置偏移量,输出值为巡线灵敏度Kp与4个传感器融合算法模拟量的乘积,范围-512 ~512,大于0时表示传感器偏向左边,值越大越偏向左边;小于0时表示传感器偏向右边,负值越大越偏向右边 |
uint8_t getPositionState(void) | 获取传感器的位置状态,为0表示RGB灯在赛道上,为1表示RGB在背景色上,bit0~bit3分别表示RGB1~RGB4的状态,有16种自由组合状态 |
uint8_t getStudyTypes(void) | 获取RGB传感器学习状态,0-未学习,1-正在学习背景色,2-正在学习赛道色 |
● mBlock 编程
RGB巡线传感器模块支持mBlock编程环境,必须安装RGBLineFollower插件,如果使用180编码电机做底盘巡线则还必须安装EnhanceEncoderOnBoard增强型编码电机插件。
插件安装方法:打开mBlock软件 → 扩展 → 扩展管理器→找到RGBLineFollower和EnhanceEncoderOnBoard插件包 → 下载插件包即可。现在机器人模块会出现插件语句块,如下:
语句块简介:
接口:Port1 ~Port12
地址:地址1~地址4(0 ~ 3),任意端口可以和任意地址绑定,但所有语句块里面一个端口只能绑定唯一一个地址
语句块 | 描述 |
---|---|
设置巡线灵敏度,灵敏度是用于调节巡线响应速度,值越大巡线时转弯越灵敏 | |
获取传感器偏离赛道的位置偏移量,输出值为巡线灵敏度Kp与4个传感器融合算法模拟量的乘积,范围-512 ~512,大于0时表示传感器偏向左边,值越大越偏向左边;小于0时表示传感器偏向右边,负值越大越偏向右边 | |
获取传感器的位置状态,为0表示RGB灯在赛道上,为1表示RGB在背景色上,bit0~bit3分别表示RGB1~RGB4的状态,有16种自由组合状态 | |
获取RGB传感器学习状态,0-未学习,1-正在学习背景色,2-正在学习赛道色 |
基于Auriga主控板、180编码电机做底盘的巡线例子,如下:
基于mCore主控板、TT马达做底盘的巡线例子,如下:
原理分析
RGB巡线传感器主要有4对RGB发射管和光敏接收管,如下图:
当RGB经过不同颜色背景时,光敏接收管将接收到不同的光信息转化为电信号,并经过放大器后由模拟口输出具体数值。软件再把4个光敏接收管的模拟值做融合算法,最终计算输出传感器模块偏离赛道的位置偏移量,用户可以直接把该偏移量用于控制左右两个电机转速实现巡线。