室内农场种植之新型LED照明技术的研究:AS7341光谱控制器

news2024/12/26 22:30:37

一、功能说明

单片机采用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。

感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。

请在转载作品时注明出处,严禁抄袭行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EOS Black灵魂回响黑色联机需要加速吗 超好用的联机加速器推荐

灵魂回响黑色是一款全新的MMORPG游戏&#xff0c;游戏在提供沉浸感超强的剧情的同时&#xff0c;也带来了压倒性的游戏画质。同时&#xff0c;游戏的职业系统十分自由&#xff0c;从人物属性到装备属性、到技能搭配、甚至到职业都可以任意DIY&#xff0c;把角色养成发挥到了极致…

本地大模型服务 Ollama:从安装到使用

文章目录 前言一、下载安装1.1 官网安装1.2 压缩包安装1.3 docker 安装二、命令行使用2.1 常用命令2.2 模型列表2.3 使用三、Open-WebUI3.1 安装3.2 修改语言3.3 使用参考前言 Ollama 是专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的开源框架,它有如下几个特点…

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07 1. 数据重复1.1 数据传递语义1.2 幂等性1.2.1 如何开启幂等性1.2.2 同一个消息&#xff0c;多个分区都会存在吗&#xff1f; 1.3 事务1.3.1 Kafka 事务原理1.3.2 Kafka事务的作用和意义作用具体应用场景 2. 数据有序3. 数…

LogicFlow 学习笔记——10. LogicFlow 进阶 边

我们可以基于 Vue 组件自定义边&#xff0c;可以在边上添加任何想要的 Vue 组件&#xff0c;甚至将原有的边通过样式隐藏&#xff0c;重新绘制。 如 Example3 中所示&#xff1a; 锚点 默认情况下&#xff0c;LogicFlow 只记录节点与节点的信息。但是在一些业务场景下&#…

易兆微电子_嵌入式软件工程师笔试题

易先电子 嵌入式软件工程师笔试题(十七) 1.关键字 extern是什么含义, 请举例说明。 修饰符extern用在变量或者函数的声明前&#xff0c;用来说明 “ 此变量 / 函数是在别处定义的&#xff0c;要在此处引用 ”。 //main.c #include <stdio.h>int main() {extern int num…

HTML播放flv

页面效果&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

Object类hashCode方法和equals方法源码

hashCode方法 顶级类Object里面的方法&#xff0c;所有类都是继承Object的&#xff0c;返回值int类型 根据一定的hash规则&#xff08;存储地址、字段、或者长度等&#xff09;&#xff0c;映射成一个数值&#xff0c;即散列值 public static int hashCode(Object a[]) {if (a…

windows系统下安装redis,并进行密码配置

一、windows系统下安装redis Redis&#xff08;Remote Dictionary Server &#xff0c;远程字典服务&#xff09; 是一个高性能的key-value数据格式的内存数据库&#xff0c;是NoSQL数据库。redis的出现主要是为了替代早起的Memcache缓存系统的。 内存型(数据存放在内存中)的非…

MPI并行计算关键点讲解及使用入门

MPI&#xff08;Message Passing Interface&#xff09;是并行计算领域的一个关键标准&#xff0c;它定义了一套用于在多个计算节点间进行高效消息传递和数据交换的通信协议和库。在高性能计算&#xff08;HPC&#xff09;领域&#xff0c;MPI尤为重要&#xff0c;特别是在处理…

Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画

页面过渡效果 Nuxt3 利用 Vue 的 组件 在页面和布局之间应用过渡效果。 nuxt.config.ts 文件配置&#xff1a; export default defineNuxtConfig({app: {pageTransition: { name: page, mode: out-in }}, })在页面之间添加过渡效果&#xff0c;在 app.vue 文件中添加以下 CS…

opencv 打开图片后,cv::mat存入共享内存的代码,实现消费者与生产者模型。XSI信号量和POSIX 信号量

文章目录 基于 sys 系统信号量(XSI信号量)常用api参考 基于 POSIX 信号量有名信号量常用 api 无名信号量常用 api 参考 实践-基于POSIX有名信号量生产者消费者模型任务说明同步关系互斥关系 设置一个互斥信号量&#xff0c;实现对共享内存的互斥访问设置两个信号量&#xff0c;…

ESP32 矩阵键盘 4*3状态机

简洁高效的ESP32处理矩阵键盘代码… /**********矩阵键盘IO映射***************3(9) 1(8) 5(4)2(13)7(12)6(18)4(19)*************************************/ uint8_t Trg0,Cont0; void Key_Task(void) {uint8_t ReadData,ColumnData,RowData;pinMode(9,INPUT_PULLUP);pin…

[面试题]RabbitMQ

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

候选键的确定方法-如何判断属性集U的子集K是否为候选键、如何找到关系模式的候选键

一、候选键的定义 在关系模式R(U,F)中&#xff0c;若&#xff0c;且K满足&#xff0c;则K为关系模式R的候选键 关系模式R的候选键必须满足以下两个条件&#xff1a; &#xff08;1&#xff09;必须是属性集U的子集 &#xff08;2&#xff09;完全函数决定属性集U 二、如何…

使用opencv合并两个图像

本节的目的 linear blending&#xff08;线性混合&#xff09;使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂&#xff0c;留个坑&#xff0c;感觉本科的时候线代没学好。不对&#xff0c;我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…

工控 UI 风格美轮美奂

工控 UI 风格美轮美奂

Docker 部署项目,真的太雅了~

大家好&#xff0c;我是南城余&#xff01; 最近在找工作&#xff0c;正好手里有台服务器&#xff0c;之前项目上线用的宝塔部署项目上线&#xff0c;在公司实习了一年后&#xff0c;发现如今项目部署都使用的是容器化部署方案&#xff0c;也就是类似于和 Docker 一样的部署方案…

PFC 离散元数值模拟仿真技术与应用

近几年&#xff0c;随着计算能力的提高和算法的优化&#xff0c;离散元仿真技术得到了快速发展&#xff0c;并在学术界产生了大量研究成果。在 PFC 离散元计算中无需给定材料的宏观本构关系和对应的参数&#xff0c;这些传统的参数和力学特性在程序中可以自动得到。据调查&…

【绝对有用】刚刚开通的GPT-4o计算这种数学题目出现问题了

欢迎关注如何解决以上问题的方法&#xff1a;查看个人简介中的链接的具体解决方案

Matlab数学建模实战应用:案例2 - 传染病传播

目录 前言 一、问题分析 二、模型建立 三、Matlab代码实现 四、模型验证 灵敏度分析 五、模型应用 实例总结 总结 前言 传染病传播模型是公共卫生和流行病学的重要研究内容&#xff0c;通过数学建模可以帮助我们理解传染病的传播规律和趋势&#xff0c;以便制定有效的…