
RGB耳环 V1.0
简介
前些日子突然刷到一个视频,国外大佬纯手工打造了一个戴在耳朵上的RGB耳环,看起来非常漂亮,我自己就想着也来打造一块,采用了ws2812的灯珠,于是有了这款基于立创EDA设计的RGB耳环的样品。
简介:前些日子突然刷到一个视频,国外大佬纯手工打造了一个戴在耳朵上的RGB耳环,看起来非常漂亮,我自己就想着也来打造一块,采用了ws2812的灯珠,于是有了这款基于立创EDA设计的RGB耳环的样品。开源协议
:GPL 3.0
描述
一、WS2812概述:
WS2812 内部集成了处理芯片和3颗不同颜色的led灯(红,绿,蓝),通过单总线协议分别控制三个灯的亮度强弱,达到全彩的效果。
1、数据传输时间:

2、时序波形图:

3、24 bit数据结构:
每一个灯需要 8 bits(1 byte) 的数据 (8个1时最亮、8个0时不亮),所以一颗 ws2812 共需要24 bits(3 bytes) **(24个1时最亮、24个0时不亮)**的数据。
注:高位先发,按照 GRB 的顺序发送数据

二、WS2812驱动的几种方式
1、使用 延时函数
直接翻转IO口产生时序,这种方式最为简单易用,只需要控制延时的时间,就可以从产生0和1码,它需要占用系统资源。
2、通过SPI控制
使用 SPI 数据传输产生时序,只需要控制在合适的波特率,在传输不同数据的时候,可以产生符合要求的0和1码,这种方式需要等同于使用了一个SPI设备。
3、使用 DMA+Timer 产生时序
这种方式需要使用一个定时器,其中一个通道固定产生一个周期1.25us的PWM,占空比2/3,接着需要另一个通道,在周期的1/3处搬运数据到IO口,若为1,PWM不变,若为0,PWM则为0码,这种方式有更大的局限性,由于DMA只能搬运至少一个字节,所以每次会同时改变8个IO口的高低电平,或许使用位带操作可以解决这问题
4、使用 Timer+PWM+DMA 产生时序
本文讨论的实现方案,这种方案有2种驱动的方式,一种是直接建立一个大的数组,存放所有灯珠的数据,然后启动DMA传输,第二种是建立2个灯组数据大小的数组,当DMA传输一个灯珠数据时,改变另一个灯组数据,通过不断改变数组的方式,节约内存,相比较而言,第一种方式较为直观,第二种方式则可以解决灯珠较多的情况,本文讨论第一种的原理和程序的实现。
三、TIM+PWM+DMA驱动WS2812
定时器 TIM 用以产生一个固定周期的PWM,DMA用以改变PWM 的占空比:
如图,DMA通过不断的搬运数据到定时器调节占空比的CCR寄存器,实现ws2812时序的产生,在STM32中,通过配置外设可实现:定时器每产生一次溢出事件(即计数完成),就请求一次DMA搬运一个数据(长度:字节/半字/字可选),所以用户只需要将数据排列在数组里,就可以产生所需要的时序。
四、原理图介绍
1、主控电路:

采用STM32F103C8T6这款单片机,加入必要的滤波电容,使其防止波形不稳。
2、晶振电路:

采用贴片的8MHz晶振使其节约空间。
3、复位电路:

4、电源电路:

采用AMS117-3.3对宽电压输入非常友好。加入滤波电容使其波形更加平顺,提供一个3.3V的稳压电源,为单片机供电。
5、指示灯电路:

加入指示灯是指示PCB板有没有电源输入,为了更好地看清PCB板是否在工作状态。
6、下载电路:

此接口是为方便调试才引入,调试完成后次针脚可撤除,影响成品美观性。
7、电源接口:

此接口为PCB板提供一个电池电源,为整个PCB板供电。
8、RGB灯电路:

相较于直驱RGB灯,此内置芯片集成的WS2812灯占用针脚少,方便在拥挤的PCB板上布线,可增加其拓展性。
五、PCB介绍
1、顶层:

2、底层:

3、整体:

6、3D仿真图


设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论