一、功能说明
单片机采用STC8H1K17型号,搭载51内核,配备OLED显示屏,用于展示波长与定时时间信息。设备支持手动与定时两种操作模式,定时时间范围设定为5至99秒之间。用户可通过按键实现手动模式与定时模式之间的切换。
在手动模式下,用户可通过按键或蓝牙控制灯光的开启与关闭。而在定时模式下,用户既可通过蓝牙模块,亦可利用按键设置定时开关灯光的功能,定时时间则可通过按键进行灵活调整。
在定时模式下,用户选定合适的参数(包括定时时间与需开启的灯光)后,按下开始按钮,环境传感器随即启动波长检测功能。若检测到的波长强度小于预设范围,灯光将自动开启。待定时时间到达预设值后,灯光将自动关闭。
二、硬件设计
2.1 原理框图
2.2 各功能框图说明
2.2.1 MCU最小系统
STC8H1K17具备内置的高精度时钟单元和硬件复位电路,因此在使用时无需外部时钟电路和复位电路,有助于降低成本。
在单片机电源输入部分增加一个2.2uF和一个100nF的旁路电容,其主要功能包括:
1、滤除电源上的高频噪声。
2、储能,当负载需要瞬时电流时,电容率先为其提供电流,减小电源产生的波动。
3、给高频信号提供最近的低阻抗回流路径,减少对其他芯片电源的干扰。
2.2.2 电源电路
电源电路采用LDO AMS1117-3.3将+5V直流电转+3.3V直流电。该LDO具有低纹波噪声功能,确保系统的稳定性和可靠性。电路图描述如下:
DC1 - 直流电源适配器+5V输入
USB1 - USB +5V供电接口
SW1 - 电源开关
D1 - 肖基特二极管,电源反接起到保护的效果
D2 - 瞬态抑制二极管,通过利用该器件的非线性特性,将过电压钳制到一个较低的电压值,实现对后级电路的保护。
U1 - LDO,将+5V转为+3.3V
C1/C2/C3/C4 - 主要用于滤除由电源输出的直流电压中所含的杂波和噪声,并将其平滑处理为一个稳定的直流电压输出
R1 - 限流电阻
LED1 - 电源指示灯
2.2.3 按键电路
按键电路采用点触按键,当用户按下按键时,电路会检测到按键的接触,并产生低电平信号,从而触发相应的操作。用户可通过这些按键修改定时时间和开启灯光。电路图描述如下:
SW2/SW3/SW4/SW5 - 点触按键,点触按键的工作原理:按钮与触点机械作用,按下按钮,弹簧收缩,触点接触导电条,电路接通;松开按钮,弹簧恢复原状,触点离开导电条,电路断开。
2.2.4 光谱检测电路
光谱检测电路使用AS7341模块,AS7341是以AS7341可见光谱传感IC为核心的传感器,它能够感知环境中不同波段的可见光成分值,在灵敏度、准确度上也均比较可观,同时介于它的体积非常小,如果你将用来做一个微型的光谱分析仪,它将是一个非常好的选择。AS7341使用IIC总线与单片机进行通信。
2.2.5 LED控制电路
LED控制电路负责控制LED灯的亮灭。模拟不同灯光的波长,在LED控制电路中,SS8050的主要作用是通过调节其基极电流来控制集电极电流,从而实现对LED灯的控制。
在电路中,SS8050的基极通过限流电阻与微控制器GPIO相连,下拉电阻的作用是在单片机初始化时可能输出电平不确定,在这种情况下把基极下拉到确定的低电平,防止出现误动作,另外还能起到关断快速放电的作用,集电极则与LED灯相连,而发射极则接地。当微控制器输出高电平信号时,SS8050的基极电流增大,导致集电极电流也增大,从而点亮LED灯;反之,当微控制器输出低电平信号时,SS8050的基极电流减小,集电极电流也减小,LED灯熄灭。
2.2.6 OLED显示电路
采用0.96寸OLED显示屏以展示光谱相关信息,同时,在设置定时时间的过程中,也运用OLED实现人机交互功能。
2.2.7 蓝牙发送接收电路
HC-05模块与单片机通过串口通信,波特率9600无检验。
HC-05蓝牙模块主要应用于与手机进行连接和数据交互。这种模块与单片机协同工作,使得单片机能够便捷地通过蓝牙发送数据给手机,同时也能接收手机发送过来的数据。
HC-05蓝牙模块可以与手机APP进行连接,通过APP远程控制光谱控制器。用户可以通过手机APP发送指令给单片机,再由单片机控制灯光和定时时间。同时,单片机也能实时反馈光谱的波长信息给手机APP,让用户随时了解光谱控制器的运行状况。
三、软件设计
3.1 主函数关系图
整体软件函数关系图如下,此图详细且全面地展现了主函数与各子函数之间的内在联系与逻辑结构。
3.2 AS7341
3.2.1 时序图
AS7341与单片机通过IIC总线进行通信,IIC通信速率最高支持400KHz。
开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据
void AS7341_ReadAllChannels(uint16_t *readings_buffer)
{
uint8_t rev_data[12] = {0};
int i = 0;
AS7341_SetBank(false);
AS7341_SpectralMeasurement(false);
AS7341_SetSMUX(AS7341_SMUX_WRITE);
AS7341_F1F4_Clear_NIR();
AS7341_SetEnableSMUX();
AS7341_SpectralMeasurement(true);
while (!AS7341_WaitDataReady())
{
Delay_Ms(2);
}
AS7341_ReadCommand(AS7341_REG_CH0_DATA_L, rev_data, 12);
for (i = 0; i < 4; i++)
readings_buffer[i] = rev_data[i * 2 + 1] << 8 | rev_data[i * 2];
AS7341_SetBank(false);
AS7341_SpectralMeasurement(false);
AS7341_SetSMUX(AS7341_SMUX_WRITE);
AS7341_F5F8_Clear_NIR();
AS7341_SetEnableSMUX();
AS7341_SpectralMeasurement(true);
while (!AS7341_WaitDataReady())
{
Delay_Ms(2);
}
AS7341_ReadCommand(AS7341_REG_CH0_DATA_L, rev_data, 12);
for (i = 0; i < 6; i++)
readings_buffer[4 + i] = rev_data[i * 2 + 1] << 8 | rev_data[i * 2];
}
AS7341可见光传感器采用业内知名的AMS公司推出的新一代AS7341光谱传感IC。该传感器有8个可见光通道,每个通道对应不同的波长,当环境灯光处于该波长范围内时,该通道的数值会增大。
四、演示视频
光谱控制器演示视频
光谱控制器蓝牙控制演示视频
五、技术交流
如果您有更好的建议或者在阅读过程中遇到任何问题或疑虑,欢迎加我QQ ,一起探讨技术问题,我的QQ号是986571840,加的时候请注明CSDN。
感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。
请在转载作品时注明出处,严禁抄袭行为。