工作以后常常容易感到疲于奔命,即使在周末也没有得到高质量的休息。打工人/学生党如何过周末?你有哪些延长周末和下班时间的好方法吗?- 方法就是多积累,多发博客,将感悟全写出来!!,接下来我给大家展示一个课程设计:源码和硬件端代码就不与展示了,在该博客的资源绑定中,大家如果有兴趣可以参考一下。前后端代码保存在我的资源中
我的主要任务:
1. 后端获取STM32开发的信息,并能与之完成串口通信
2. 前端页面的编写,完成前后端的交互
3. (硬件端)根据自定义参数编写智能补灯函数
基于 STM32自研多任务+SpringBoot+Vue
农业大棚智能调光系统
科技兴农是农业发展的必由之路,通信技术融入到传统农业大棚环境监测是其典型代表。为确保农业大棚设置合理的照明系统,必须对大棚内光照强度进行精度监测。针对当前棚内照明强度不能调节、布线复杂、成本高等缺点,提出了一种基于stm32技术的智能调节灯光强度系统。
我们所提出的智能灯光控制系统,能够根据当前设置的大棚所需要的光照阈值来确定是否需要进行大棚补光,并且可以根据当前光照实时改变补光强度,并且能够在客户端实时观测到当前大棚的自然光照强度和补光强度。如果阈值设置不合理蜂鸣器也是进行报警提醒。
关键词:智能补光、stm32、SpringBoot、农业大棚
Based on STM32 Self developed multitasking + SpringBoot+Vue
Automatic lighting system for agricultural greenhouses
Abstract
Promoting agriculture through technology is the necessary path for agricultural development, and the integration of communication technology into traditional agricultural greenhouse environmental monitoring is a typical representative. To ensure a reasonable lighting system for agricultural greenhouses, it is necessary to accurately monitor the light intensity inside the greenhouses. A smart light intensity adjustment system based on STm32 technology is proposed to address the current shortcomings of unadjustable lighting intensity, complex wiring, and high cost in the greenhouse.
Our proposed intelligent lighting control system can determine whether greenhouse lighting is needed based on the current lighting threshold set for the greenhouse, and can change the lighting intensity in real time according to the current lighting. It can also observe the natural lighting intensity and lighting intensity of the current greenhouse in real time on the client.If the threshold setting is not reasonable, the buzzer will also provide an alarm reminder.
Keywords : Intelligent lighting, STM32, SpringBoot, Agricultural greenhouse.
传统的农业生产不仅受到季候的影响限制,还会受到天气变化的严重影响。特别是在春天和冬天,雨雪天气多的季节,在北部地区的大部分农作物都受到限制。目前,大部分农业大棚内的一些环境因素是通过人工干预控制的,现在的农业大棚无法满足人们追求高品质的要求。
光照是植物生长的重要因素之一,冬季和早春季节气温低、光照不足,会对植物生长和发育产生不良影响。因此,通过调节温室照明设施的设置和使用,可以缓解光照不足的问题。
传统的人工控制灯光强度和光照时间的方式存在一定的弊端,如浪费能源、光照不均匀等,同时缺乏对植物生长需求的实时响应。为了解决这些问题,发展智能化的灯光控制系统,具有重要的实践意义。
针对以上问题,本选题旨在设计一种农业大棚智能灯光调节系统,实现光照强度实时调控,以达到节能、高效、智能、自动化的目标。同时,需要考虑系统的适应性、稳定性、经济性和可扩展性等因素,以满足不同植物生长需求和不同地区气候条件所需要的光照要求。
国外研究现状:农业大棚智能补光技术起源于荷兰、美国、日本等国家。早在20世纪90年代,荷兰就开始研究植物生长灯,并在随后的研究中发现LED灯具有很好的植物补光效果。美国也在农业大棚智能补光方面进行了探索,研究人员利用计算机控制LED植物生长灯,以满足植物生长的光需求。在日本,研究机构使用LED灯和荧光灯作为植物生长光源,并取得了一定的研究成果。
国内研究现状:我国在农业大棚智能补光方面的研究相对较少,直到近年来才开始逐渐关注。研究人员主要集中在高校和科研机构,主要研究方向包括植物生长灯的设计与控制策略、光源设备的优化与改进等方面。目前,我国在农业大棚智能补光方面仍存在许多挑战,如光源设备的能效、光环境的稳定性和多样性等方面的问题。
总的来说,农业大棚智能补光技术得到了国内外学者的广泛关注,但在国内研究相对较少。在未来的研究中,需要进一步加强实践应用和系统优化,以提高农业大棚智能补光技术的效果和效益。
本课题基于以上分析,构想出基于STM32F429IG开发板自带的光敏二极管和LED灯,通过设置PWM的占空比和脉冲宽度占比来实现自动调节LED灯的亮度。通过修改呼吸灯的例程,写出一个基于脉冲宽度占比以等差数列形式的呼吸灯,此时我们只需要不修改脉冲宽度即可实现LED灯亮度调节。前端基于Vue+Echarts+Element-Plus来进行页面渲染,后端基于SpringBoot实时获取前端响应的数据向串口发送对应的提示信息,并且同时实时采集光照强度返回给前端,如此循环即可构成一个在客户端的实时动态响应。
在硬件上主要分为三个区域,一个是光敏二极管检测区,实时采集当前光照强度;第二个是LED灯补光区;第三个是蜂鸣器提醒区,当阈值设置不合理(小于10大于90)时蜂鸣器将进行报警。
在软件上,后端设计:可以利用Java的RXTX.jar包可以进行串口通信,然后基于SpringBoot框架进行后端搭建主要实现功能应有实时获取串口发过来的光敏二极管的电压值,然后根据自定义规则转换光照强度;向前端发送当前光照强度;接收前端设置的阈值和其余LED灯的状态,然后向串口发送对应的信息来控制LED灯。前端设计:先初始化实时变化折线图,然后从后端获取数据,将数据加载到折线图中,再将数据返回给后端。
主控模块选择使用 STM32F429IGT6 芯片进行编程、控制以及测量传输 数据功能。系统架构如下图1:
图 1系统架构图
STM32F429IGT6 有 3 个 ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,每个 ADC有 16 个外部通道。另外还有两个内部 ADC 源和 VBAT 通道挂在 ADC1 上。ADC 具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。
如下图2是ADC的功能框图:
图 2 ADC功能框图
GECSTM32F4 开发板板载了一个光敏二极管(光敏电阻),作为光敏传感器,它对光的变化非常敏感。光敏二极管也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的 PN 结,具有单向导电性,因此工作时需加上反向电压。
无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射 PN 结时,可以使 PN 结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。因此可以利用光照强弱来改变电路中的电流。
利用这个电流变化,我们串接一个电阻,就可以转换成电压的变化,从而通过 ADC 读取电压值,判断外部光线的强弱。
如下图3是光敏传感器的原理图:
图 3光敏传感器连接图
图中,CS1 是光敏二极管,R76 为其提供反向电压,当环境光线变化时,CS1 两端的电压也会随之改变,从而通过 ADC1_IN5 通道,读取光敏电阻上面的电压,即可得到环境光线的强弱。光线越强,电压越低,光线越暗,电压越高。
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
GECSTM32F4 开发板板载的蜂鸣器是电磁式的有源蜂鸣器,如下图4所示,图5是蜂鸣器的原理图。
图 4有源蜂鸣器
图 5蜂鸣器原理图
如下图是STM32F429IGT6的LED原理连接图:
图 6 LED原理连接图
本实验板连接了 3 个 LED 灯,这些 LED 灯的阴极都是连接到 STM32 的 GPIO 引脚,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。
首先程序运行应当获取串口发送的电压,然后将此转换成自定义规则((300-电压值*100)/300*100)-10)的光照强度。为什么规则要设置为上述那样呢,因为通过实践可得最暗的情况下电压值最接近3.0V,然后电压值和光照强度成反比,而我们的假设光照强度的范围为:0-100,这样就有了(300-电压值*100)/300*100,至于后面还要减个10是为了贴切实际,因为按上述公式的话,即使最暗情况下也还是有10以上的光照强度,因此我这里就减10。
然后将数据发送到前端,前端响应完之后发数据个后端,后端接收数据再重定向到获取串口,如此重复,程序流程图如下图7:
图 7 后端程序流程图
前端接收数据,并刷新实时折线图(这里为了避免折线图过于混乱,设置了折线图只显示20个点位),再返回前端此时设置的阈值和其余LED灯状态返回给后端,程序流程图如下图 8 所示:
图 8 前端程序流程图
Dell Insprion 5509笔记本电脑,Keil5,IntelliJ IDEA 2021.1 ,Visual Studio Code,Google Chrome浏览器,STM32F429IGT6开发板
把所有程序运行起来,访问localhost:5173,你会看见如下图13所示的效果:客户端响应就是类似如下,动态效果保存我的资源中:
图 9 运行效果
目前我们看到开发板是要补灯的,观察开发板状态,如下图10 所示:
图 10 开发板状态
其他测试结果:
表 1 测试结果
测试内容 |
结果 |
点击LED0开(关)灯是否LED0是否开(关)灯 |
是 |
点击LED0开(关)灯是否LED0是否开(关)灯 |
是 |
调节阈值折线图是否发生相应变化 |
是 |
开发板LED灯状态是否与折线图对应 |
是 |
测试补光时LED灯亮度是否实时调节 |
是 |
当阈值大于90或小于10时蜂鸣器是否报警 |
是 |
通过测试和分析,我们的系统能够根据客户端设置的阈值来进行自动补光,如果阈值不合理也能进行报警提醒,并且也可以操控其他LED灯的开闭。并具有很好的动态效果。