【CW32】基于CW32的GY-33颜色识别模块的应用

2023-09-30 CW32生态社区公众号
MCU,小蓝板,CW32,CW32F030C8 MCU,小蓝板,CW32,CW32F030C8 MCU,小蓝板,CW32,CW32F030C8 MCU,小蓝板,CW32,CW32F030C8

GY-33是一种基于TCS34725颜色传感器的颜色识别模块。TCS34725是一种高精度光学传感器,能够检测红、绿、蓝三个基本色的光谱信息,从而实现对物体颜色的准确识别,该模块的具体应用场景包括以下几个方面:

(1)电子设备颜色校准:在电子设备制造过程中,颜色一致性非常重要。使用GY-33模块可以帮助制造商检测和校准电子设备的颜色,确保不同设备之间的颜色表现一致。

(2)色彩分析和精确匹配:GY-33模块在颜色分析和匹配方面有广泛应用。例如,在印刷行业中,可以使用该模块来检测和匹配颜色样本,从而确保印刷品的准确颜色表现。

(3)机器人视觉系统:GY-33模块可以用于机器人视觉系统,帮助机器人在环境中对不同颜色的物体进行识别和分类。这在物流、仓储和自动导航系统中非常有用,机器人可以根据物体的颜色属性执行相应的任务。


例程资料链接如下:

BD网盘链接:

https://pan.baidu.com/s/1B1Fa4GhmScSGR6VQNDsE3w 
提取码:855c


二、所需物料

本实验使用到了CW32F030C8小蓝板、GY-33颜色识别模块、0.96寸OLED显示屏,RGB全彩LED模块、轻触开关模块及Keil5开发环境。

【GY-33与单片机连线】:

VCC<-->+3.3V

GND<-->GND

DR<-->PA5

CT<-->PA4

【LED与单片机连线】:

V<-->+3.3V

R<-->PA0

G<-->PA1

B<-->PA2

【轻触开关与单片机连线】:

VCC<-->+3.3V

GND<-->GND

OUT<-->PB9

此模块有两种方式读取数据,即串口UART或者 MCU_IIC,本次实验采用MCU_IIC的方式。

有简单的7种颜色识别,单片机不参与数据处理工作,不需要计算RGB值,直接读取吧 数据即可。需要特别注意的是:


三、核心代码

main.c:

#include "main.h"

#include "RGB.h"

#include "GTIM.h"#include "Delay.h"

#include "GY_33.h"

#include "OLED.h"

#include "Key.h"

#include "BTIM.h"
#define LENGTH 3   //读取数据的长度

uint8_t press_flag=0; //按键按下标识

uint8_t data[LENGTH]={0}; //存放读取到的RGB数据

uint8_t color[1]={0};  //存放模块识别到的颜色数据

char *str[]={"blue","dblue","green","black","white","pink","yellow","red"};//模块可以识别到的颜色
int main()

{

    uint8_t i;

    OLED_Init();      //OLED显示

   RGB_GPIO_Init();  //RGB灯GPIO初始化

  GTIM2_Init();     //GTIM2初始化配置为PWM输出模式

  I2C_GPIO_Init();  //GY-33模块GPIO初始化

  Key_GPIO_Init();  //按键GPIO初始化

  BTIM_Init();      //BTIM定时器初始化,定时控制按键扫描周期

//  WriteData(GY33_ADDR,Config,0x51);  //启动白平衡,等级亮度为5
 while(1)

  {

    if(press_flag==1)  //若按键标识已打开,代表有按键按下,执行按键功能

    {

      OLED_Clear(); //清屏

      if(ReadData(GY33_ADDR,R,data,LENGTH)) //读取模块检测颜色并进行处理后返回的RGB值

      {

        OLED_ShowString(1,1,"RGB:"); 

       OLED_ShowNum(1,5,data[0],3);  //R值

        OLED_ShowNum(2,5,data[1],3);  //G值

        OLED_ShowNum(3,5,data[2],3);  //B值

      }

      RGB_Running(data);  //RGB全彩LED灯根据读取到的RGB进行显示

      Delay_ms(100);      //数据读取间隔应不小于100ms

      if(ReadData(GY33_ADDR,Color,color,1))//读取模块检测颜色并进行处理后的颜色信息返回值

      {

        for(i=0;i<8;i++) //8-bits数据,逐位判断

        {

          if((color[0]>>i)==1) //判断哪一位为1

          {

            OLED_ShowString(4,1,"Color:"); 

           OLED_ShowString(4,7,str[7-i]); //显示对应颜色

            break;

          }

        }

      }

      press_flag=0; //执行完关闭按键标识

    }

    }

}
void BTIM1_IRQHandler(void)  //BTIM1中断服务函数

{

  static unsigned int cnt = 0;

   if(BTIM_GetITStatus(CW_BTIM1,BTIM_IT_OV))

    {

    if(++cnt>=20)  //20ms定时,执行一次按键扫描

    {

      cnt = 0;

      if(Key_Scan()==1)  //返回值不为0时

        press_flag=1;    //打开按键标识

    }

    BTIM_ClearITPendingBit(CW_BTIM1,BTIM_IT_OV); //清除标志位  }}
GY-33.c:

#include "main.h"

#include "Delay.h"

#include "GY_33.h"
void I2C_GPIO_Init(void)   //GY-33颜色识别模块GPIO初始化

 __RCC_GPIOA_CLK_ENABLE();

   GPIO_InitTypeDef GPIO_InitStruct;

   GPIO_InitStruct.IT=GPIO_IT_NONE;

  GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_OD;      //开漏输出

  GPIO_InitStruct.Pins=GPIO_PIN_4|GPIO_PIN_5;

  GPIO_InitStruct.Speed=GPIO_SPEED_HIGH; 

 GPIO_Init(CW_GPIOA, &GPIO_InitStruct);   SCL(1);  SDA(1);

}
void I2C_Delay() //I2C延时函数{  Delay_us(time);}
uint8_t I2C_Start(void)  //发送起始信号

{

  SDA(1); 

 SCL(1); 

 I2C_Delay(); 

 if(ReadSDA==0)

 return 0;  

SDA(0); 

 I2C_Delay();

  if(ReadSDA==1) 

return 0;  SCL(0); 

 I2C_Delay(); 

  return 1;

}
void I2C_Stop(void)  //发送停止信号

 SDA(0);

  SCL(0); 

 I2C_Delay();

  SCL(1); 

 I2C_Delay(); 

 SDA(1);}
void I2C_SendACK(uint8_t ackbit)  //发送应答

{

  SDA(ackbit); 

 SCL(1);

 I2C_Delay();

  SCL(0); 

 I2C_Delay();

}
void I2C_SendByte(uint8_t Byte)  //发送1字节(8-bit)的数据

{

  uint8_t i; 

 SCL(0); 

 for (i = 0; i < 8; i++) 

 { 

   if(Byte&0x80) SDA(1); 

   else 

SDA(0); 

   SCL(1); 

   I2C_Delay();

    SCL(0); 

   Byte<<=1; 

   I2C_Delay();

  }

}
uint8_t I2C_ReceiveByte(void)  //接收1字节(8-bit)的数据

{

  uint8_t data,i;

  SDA(1);

  Delay_us(1); 

 for(i=0;i<8;i++)

  { 

   SCL(1);

    data<<=1;

    if(ReadSDA==1)

 data|=0x01;

    I2C_Delay();

    SCL(0);

    I2C_Delay(); 

 } 

  return data;

}
uint8_t I2C_WaitAck(void) //等待应答

{

  uint16_t i; 

 SDA(1); 

 SCL(1);  

while(ReadSDA==1)

  {  

  if(++i==500)

      break;

  } 

 if(ReadSDA==1) 

 { 

   SCL(0);

    return 0;

  } 

 I2C_Delay();

  SCL(0); 

 I2C_Delay(); 

  return 1;

 }
uint8_t WriteData(uint8_t Slave_Addr,uint8_t REG_Addr,uint8_t data)  //写操作

 if(I2C_Start()==0) 

RETURN   I2C_SendByte(Slave_Addr); 

   if(I2C_WaitAck()==0) RETURN   I2C_SendByte(REG_Addr); 

     if(I2C_WaitAck()==0) RETURN                   I2C_SendByte(data); 

 if(I2C_WaitAck()==0) RETURN                 I2C_Stop();                    //发送停止信号   return 1;}
uint8_t ReadData(uint8_t Slave_Addr,uint8_t REG_Addr,uint8_t *data,uint8_t length) //读操作

{

    if(I2C_Start()==0) RETURN

           I2C_SendByte(Slave_Addr); 

     if(I2C_WaitAck()==0) RETURN 

          I2C_SendByte(REG_Addr); 

             if(I2C_WaitAck()==0) RETURN   if(I2C_Start()==0) RETURN   I2C_SendByte(Slave_Addr+1); 

  if(I2C_WaitAck()==0) RETURN    

               while(--length){    *data++=I2C_ReceiveByte(); 

   I2C_SendACK(0);

    Delay_ms(110); 

 }  

*data=I2C_ReceiveByte(); 

 I2C_SendACK(1); 

 I2C_Stop();                    //发送停止信号  

 return 1;  

            }



四、实物展示+效果演示

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由咪猫转载自CW32生态社区公众号,原文标题为:【CW32】基于CW32的GY-33颜色识别模块的应用,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

平台合作

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

精雕细琢打造MCU,武汉芯源开辟属于自己的Cortex-M0+新赛道!

物联网市场如火如荼,在大量基于Cortex™-M0+的MCU已经面市的情况下,Cortex™-M0+ MCU在以这片红海中还有发展的空间吗?答案是有,近日武汉芯源半导体推出的基于Cortex™-M0+内核CW32L010新品系列就是通过差异化的细节设计开辟了属于自己的新赛道。

2024-11-19 -  原厂动态 代理服务 技术支持 采购服务

M0+产品行业新标杆诞生,武汉芯源CW32L010安全低功耗MCU集合多项技术性能优势

2024年9月26日,武汉芯源半导体带着最新产品CW32L010安全低功耗MCU作客电巢直播间,举行了一场璀璨的XR技术新品发布会,此次直播,武汉芯源半导体技术总监 张亚凡、北中国区销售总监 孙秀艳与大家分享了武汉芯源半导体的发展历程和重要时刻,全面介绍和讲解了新品CW32L010实现的技术优势。

2024-11-05 -  原厂动态 代理服务 技术支持 采购服务

持续奋进,快速完善自有32位超低功耗MCU产品阵容

7月25日,2024全球MCU生态发展大会在深圳隆重召开,武汉芯源半导体在现场为电子行业参观者展示了多款MCU典型应用方案。,武汉芯源半导体技术总监张亚凡发表了主题演讲《持续奋进,快速完善自有32位超低功耗MCU产品阵容》,在宏观方面展示现有产品布局和未来产品计划,在微观方面展示产品外设细节功能的改进。

2024-08-16 -  原厂动态 代理服务 技术支持 采购服务

武汉芯源半导体安全低功耗MCU CW32L010 | 新品使用初体验

CW32L010新品的正式发布,标志着嵌入式技术领域的又一次创新突破。今日,我们有幸进行该新品的首次使用体验,以一块L010核心板为例,体验一下这颗芯片

2024-10-18 -  设计经验 代理服务 技术支持 采购服务

【经验】武汉芯源CW32系列MCU PWM输出功能指南

脉冲宽度调制(PWM),是在数字电路中达到模拟输出效果的一种手段,常见应用电机调速,照明灯调光等。在MCU中,主要通过定时器单元来时实现PWM输出,以CW32L083VxTx为例,LPTIM,GTIM,ATIM都可以输出PWM信号。

2023-02-23 -  设计经验 代理服务 技术支持 采购服务

武汉芯源半导体CW32L010系列安全低功耗MCU:驱动高速风筒新力量

MCU作为高速风简控制系统的核心,承担着传感器数据采集、高速电机控制、用户界面交互以及安全保护等多重任务。武汉芯源半导体CW32L010系列MCU可支持低成本、高性能、低功耗、高度集成的高速风筒方案,以满足市场对高效、安全、智能的高速风筒需求。

2024-12-12 -  应用方案 代理服务 技术支持 采购服务

基于CW32的MPU6050姿态传感器的应用开发配置教程

MPU6050是一种常用的六轴姿态传感器模块,结合了三轴陀螺仪和三轴加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。MPU6050 对陀螺仪和加速度计分别用了三个16 位的ADC(0~65535),将其测量的模拟量转化为可输出的数字量。

2023-11-01 -  设计经验 代理服务 技术支持 采购服务

【应用】基于国产32位MCU芯片CW32F030C8T6的智能门锁方案,主频64MHz,具备低功耗多功能优势

智能门锁集成3D识别算法、接近检测、指纹输入模块,低功耗计算芯片等于一体,解锁快、功耗低、续航久,现武汉芯源推出一款MCU芯片CW32F030C8T6助力于智能门锁设计。

2023-03-14 -  应用方案 代理服务 技术支持 采购服务

CW32L010 ARM®Cortex®-M0+低功耗32位MCU参考手册

本资料为CW32L010微控制器参考手册,旨在为应用开发者提供关于如何使用该微控制器内存和外设的完整信息。手册内容涵盖系统架构、内存组织、电源控制、复位和时钟控制、中断、RAM和FLASH内存、GPIO、CRC、RTC、定时器、看门狗定时器、UART、SPI、I2C、红外调制发射器、ADC、电压比较器、低压检测器、调试接口和数字签名等模块的详细说明和编程指南。

武汉芯源  -  ARM® CORTEX®-M0+ LOW-POWER 32-BIT MCU,ARM®CORTEX®-M0+低功耗32位MCU,MCU,CW32L010

2024/9/23  - 用户指南  - Rev 1.0 代理服务 技术支持 采购服务

使用通用串口模块下载CW32F030芯片的方法

在常见的客户技术支持中,常有需要串口下载CW32芯片的问题,现整理一份文档供参考。

2024-07-20 -  设计经验 代理服务 技术支持 采购服务

【IC】武汉芯源CW32L010安全低功耗MCU,树立M0+产品行业新标杆!

近日,武汉芯源半导体CW32L010系列产品正式官方发布。这款产品以其卓越的产品性能,迅速在业界引起了广泛关注,并成功树立M0+产品行业的新标杆。产品是基于eFlash的单芯片低功耗微控制器,集成了主频高达48MHz的ARM®Cortex®-M0+内核、高速嵌入式存储器(多至64K字节FLASH和多至4K字节SRAM)以及一系列全面的增强型外设和I/O口。

2024-10-10 -  产品 代理服务 技术支持 采购服务

【经验】芯源CW32系列MCU电容式触摸按键设计指南

芯源半导体的CW32系列MCU电容式触摸按键设计指南向客户提供利用CW32内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南内容重点在于工作原理、软件检测过程以及调试指引。通过本文可了解到如何利用内置电压比较器和内置定时器及软件配合,实现灵活方便的按键检测。在介绍标准演示板和演示软件的性能参数同时,还会给出详细的调试建议以及设计参数选择倾向分析,帮助客户快速自信地完成设计并实施调试。

2023-07-27 -  设计经验 代理服务 技术支持 采购服务

【应用】基于CW32L系列MCU的指夹式血氧仪,实现更高精度测量

主控芯片建议使用CW32F003(20pin)资源足够,还便宜。CW32抗干扰性能可轻松通过ESD 8KV认证,加之优秀的ADC性能,是血氧仪类产品的不二之选

2023-09-07 -  应用方案 代理服务 技术支持 采购服务

CW32F030C8T6 MCU Supports an Ultra Wide Temperature Range of -40~105 ℃, Ensures Safe and Stable Operation of Portable Charging Gun

Wuhan Core Source Semiconductor‘s CW32F030C8T6 serves as the core control chip of the portable charging gun of Sihao New Energy Vehicle, indicating that CW32F030C8T6 microcontroller has been recognized by frontline host manufacturers.

2024-11-07 -  应用方案 代理服务 技术支持 采购服务

【技术】武汉芯源CW32定时器输入捕获的操作讲解

CW32系列MCU的GTIM、ATIM的每个定时器都带有至少4路独立的捕获/比较通道,输入捕获功能可以测量输入信号的脉冲宽度或者频率。本文进行武汉芯源CW32定时器输入捕获的操作讲解。

2023-02-16 -  技术探讨 代理服务 技术支持 采购服务
展开更多

电子商城

查看更多

品牌:武汉芯源

品类:通用MCU

价格:¥8.4750

现货: 10

品牌:武汉芯源

品类:MCU

价格:

现货: 0

品牌:武汉芯源

品类:MCU

价格:

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥4.8025

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥7.0625

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥7.6275

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥5.6500

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥4.8025

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥7.0625

现货: 0

品牌:武汉芯源

品类:通用MCU

价格:¥7.6275

现货: 0

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:RENESAS

品类:16-BIT MCU

价格:¥3.9530

现货:910,635

品牌:RENESAS

品类:MCU

价格:¥5.1500

现货:200,000

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:ADI

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:MCU

价格:¥5.8041

现货:86,925

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:Microchip

品类:MCU

价格:¥9.0000

现货:64,841

品牌:ST

品类:MCU

价格:¥15.5600

现货:58,800

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥257.6400

现货:58,799

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

IC烧录代工及IC自动化烧录

拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。

最小起订量: 1 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面