STM32CubeMX | | 使用小熊派玩转颜色识别传感器(纯手工打造E53传感器模块)
Posted Engineer-Bruce_Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32CubeMX | | 使用小熊派玩转颜色识别传感器(纯手工打造E53传感器模块)相关的知识,希望对你有一定的参考价值。
关注、星标嵌入式云IOT技术圈,精彩及时送达
我买来做颜色识别传感器的模块是TCS34725,如下图所示(相关资料和本文demo请滑到文末通过clone我的码云仓库链接获取):我买的是如上图所示的方形版本。
1、颜色识别传感器TCS34725概述
本模块是基于 AMS 的 TCS3472XFN 彩色光数字转换器为核心的颜色传感器,传感器提供红色,绿色,蓝色(RGB)和清晰光感应值的数字输出。集成红外阻挡滤光片可最大限度地减少入射光的红外光谱成分,并可精确地进行颜色测量。具有高灵敏度,宽动态范围和红外阻隔滤波器。最小化 IR 和 UV 光谱分量效应,以产生准确的颜色测量。并且带有环境光强检测和可屏蔽中断。通过 I2C 接口通信。(摘自说明手册)
颜色传感器的应用:颜色分类分拣系统、多颜色喷头的3D打印机、医疗方面等。
2、原理图与通信接口
通信协议是基于I2C,I2C时序如下:
写时序:
读时序:
I2C的设备地址是0x29。
I2C相关的文章可以参考:
3、颜色传感器E53小板纯手工打造
4、STM32CubeMX配置
由于我手焊的这块E53直接用的就是I2C1接口,所以就在以往带LCD的工程上再配置一路I2C即可:
以往文章有关小熊派的SPI OLED的demo参考:
基于小熊派光强传感器BH1750状态机驱动项目升级(带LCD屏显示)
接下来直接生成工程即可。
5、移植例程
官方已经为我们提供了STM32的例程代码,所以我们直接移植过来然后修改成我们想要的效果就行了,白嫖毫无费功夫:
当然,如果你觉得调的参数有问题,可以修改下面这个函数,将积分时间进行修改:
int begin(void)
{
/* Make sure we're actually connected */
uint8_t x = read8(TCS34725_ID);
if(x != 0x4D )
return false ;
_tcs34725Initialised = true;
/* Set default integration time and gain */
/*积分时间,增益值控制*/
setIntegrationTime(TCS34725_INTEGRATIONTIME_2_4MS);
//RGB值过大,光强超出检查范围,减小增益(TCS34725_GAIN_16X)
setGain(TCS34725_GAIN_1X);
/* Note: by default, the device is in power down mode on bootup */
enable();
return true;
}
所有的宏定义位于tcs34725.h中,这些宏定义具体的作用是什么,请详细阅读该模块的数据手册:
6、实验效果
经过测试结果,我个人感觉这个传感器的识别效果误差还是挺大的,可能会受环境、距离等因素影响,不过,用来简单做些DIY问题不大。
7、项目开源地址
本节代码已同步到码云的代码仓库中,获取方法如下:
码云仓库:
https://gitee.com/morixinguan/bear-pi/tree/master/25.TCS34725_Color_Sensor
获取项目方法:
git clone https://gitee.com/morixinguan/bear-pi.git
我还将之前做的一些项目以及练习例程在近期内全部上传完毕,与大家一起分享交流,如果有任何问题或者对该项目感兴趣,欢迎加我微信:morixinguan一起交流学习。
往期精彩
U盘容量大小造假技术手段实现之8M变4G(以STM32 SPI_FLASH为例)
手把手教你在STM32上实现OLED视频播放(很简单也很硬很肝!)
一些值得被定义为常用C语言头文件库的漂亮宏定义(值得收藏,以备使用参考)
觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
以上是关于STM32CubeMX | | 使用小熊派玩转颜色识别传感器(纯手工打造E53传感器模块)的主要内容,如果未能解决你的问题,请参考以下文章
小熊派开发笔记-串口读取RS485输出的土壤七合一传感器数据(基于STM32CubeMX)
STM32CubeMX基础例程(小熊派):09.厨房烟雾监测系统加强版