基于 STM32自研多任务+SpringBoot+Vue 农业大棚智能调光系统

2023-08-03 00:48:00

工作以后常常容易感到疲于奔命,即使在周末也没有得到高质量的休息。打工人/学生党如何过周末?你有哪些延长周末和下班时间的好方法吗?- 方法就是多积累,多发博客,将感悟全写出来!!,接下来我给大家展示一个课程设计:源码和硬件端代码就不与展示了,在该博客的资源绑定中,大家如果有兴趣可以参考一下。前后端代码保存在我的资源中

我的主要任务:

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.

一、绪论

1.1 选题背景

        传统的农业生产不仅受到季候的影响限制,还会受到天气变化的严重影响。特别是在春天和冬天,雨雪天气多的季节,在北部地区的大部分农作物都受到限制。目前,大部分农业大棚内的一些环境因素是通过人工干预控制的,现在的农业大棚无法满足人们追求高品质的要求。

        光照是植物生长的重要因素之一,冬季和早春季节气温低、光照不足,会对植物生长和发育产生不良影响。因此,通过调节温室照明设施的设置和使用,可以缓解光照不足的问题。

        传统的人工控制灯光强度和光照时间的方式存在一定的弊端,如浪费能源、光照不均匀等,同时缺乏对植物生长需求的实时响应。为了解决这些问题,发展智能化的灯光控制系统,具有重要的实践意义。

        针对以上问题,本选题旨在设计一种农业大棚智能灯光调节系统,实现光照强度实时调控,以达到节能、高效、智能、自动化的目标。同时,需要考虑系统的适应性、稳定性、经济性和可扩展性等因素,以满足不同植物生长需求和不同地区气候条件所需要的光照要求。

1.2 国内外研究现状

        国外研究现状:农业大棚智能补光技术起源于荷兰、美国、日本等国家。早在20世纪90年代,荷兰就开始研究植物生长灯,并在随后的研究中发现LED灯具有很好的植物补光效果。美国也在农业大棚智能补光方面进行了探索,研究人员利用计算机控制LED植物生长灯,以满足植物生长的光需求。在日本,研究机构使用LED灯和荧光灯作为植物生长光源,并取得了一定的研究成果。

        国内研究现状:我国在农业大棚智能补光方面的研究相对较少,直到近年来才开始逐渐关注。研究人员主要集中在高校和科研机构,主要研究方向包括植物生长灯的设计与控制策略、光源设备的优化与改进等方面。目前,我国在农业大棚智能补光方面仍存在许多挑战,如光源设备的能效、光环境的稳定性和多样性等方面的问题。

        总的来说,农业大棚智能补光技术得到了国内外学者的广泛关注,但在国内研究相对较少。在未来的研究中,需要进一步加强实践应用和系统优化,以提高农业大棚智能补光技术的效果和效益。

1.3 设计和研究方向

        本课题基于以上分析,构想出基于STM32F429IG开发板自带的光敏二极管和LED灯,通过设置PWM的占空比和脉冲宽度占比来实现自动调节LED灯的亮度。通过修改呼吸灯的例程,写出一个基于脉冲宽度占比以等差数列形式的呼吸灯,此时我们只需要不修改脉冲宽度即可实现LED灯亮度调节。前端基于Vue+Echarts+Element-Plus来进行页面渲染,后端基于SpringBoot实时获取前端响应的数据向串口发送对应的提示信息,并且同时实时采集光照强度返回给前端,如此循环即可构成一个在客户端的实时动态响应。

二、总方案设计

        在硬件上主要分为三个区域,一个是光敏二极管检测区,实时采集当前光照强度;第二个是LED灯补光区;第三个是蜂鸣器提醒区,当阈值设置不合理(小于10大于90)时蜂鸣器将进行报警。

        在软件上,后端设计:可以利用Java的RXTX.jar包可以进行串口通信,然后基于SpringBoot框架进行后端搭建主要实现功能应有实时获取串口发过来的光敏二极管的电压值,然后根据自定义规则转换光照强度;向前端发送当前光照强度;接收前端设置的阈值和其余LED灯的状态,然后向串口发送对应的信息来控制LED灯。前端设计:先初始化实时变化折线图,然后从后端获取数据,将数据加载到折线图中,再将数据返回给后端。

        主控模块选择使用 STM32F429IGT6 芯片进行编程、控制以及测量传输 数据功能。系统架构如下图1:

图 1系统架构图

三、原理设计

3.1 硬件设计

3.1.1 ADC介绍

        STM32F429IGT6 有 3 个 ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,每个 ADC有 16 个外部通道。另外还有两个内部 ADC 源和 VBAT 通道挂在 ADC1 上。ADC 具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。

        如下图2是ADC的功能框图:

图 2 ADC功能框图

3.1.2 光敏传感器介绍

        GECSTM32F4 开发板板载了一个光敏二极管(光敏电阻),作为光敏传感器,它对光的变化非常敏感。光敏二极管也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的 PN 结,具有单向导电性,因此工作时需加上反向电压。

        无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射 PN 结时,可以使 PN 结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。因此可以利用光照强弱来改变电路中的电流。

        利用这个电流变化,我们串接一个电阻,就可以转换成电压的变化,从而通过 ADC 读取电压值,判断外部光线的强弱。

        如下图3是光敏传感器的原理图:

图 3光敏传感器连接图

        图中,CS1 是光敏二极管,R76 为其提供反向电压,当环境光线变化时,CS1 两端的电压也会随之改变,从而通过 ADC1_IN5 通道,读取光敏电阻上面的电压,即可得到环境光线的强弱。光线越强,电压越低,光线越暗,电压越高。

3.1.3 蜂鸣器介绍

        蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

        GECSTM32F4 开发板板载的蜂鸣器是电磁式的有源蜂鸣器,如下图4所示,图5是蜂鸣器的原理图。

图 4有源蜂鸣器

图 5蜂鸣器原理图

3.1.4 GPIOLED介绍

        如下图是STM32F429IGT6的LED原理连接图:

图 6 LED原理连接图

        本实验板连接了 3 个 LED 灯,这些 LED 灯的阴极都是连接到 STM32 的 GPIO 引脚,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。

3.2 软件设计

3.2.1 SpringBoot后端工程程序设计

        首先程序运行应当获取串口发送的电压,然后将此转换成自定义规则((300-电压值*100)/300*100)-10)的光照强度。为什么规则要设置为上述那样呢,因为通过实践可得最暗的情况下电压值最接近3.0V,然后电压值和光照强度成反比,而我们的假设光照强度的范围为:0-100,这样就有了(300-电压值*100)/300*100,至于后面还要减个10是为了贴切实际,因为按上述公式的话,即使最暗情况下也还是有10以上的光照强度,因此我这里就减10。

        然后将数据发送到前端,前端响应完之后发数据个后端,后端接收数据再重定向到获取串口,如此重复,程序流程图如下图7:

图 7 后端程序流程图 

3.2.2 Vue前端工程程序设计

        前端接收数据,并刷新实时折线图(这里为了避免折线图过于混乱,设置了折线图只显示20个点位),再返回前端此时设置的阈值和其余LED灯状态返回给后端,程序流程图如下图 8 所示:

图 8 前端程序流程图

四、实验与调试

4.1 实验环境

        Dell Insprion 5509笔记本电脑,Keil5,IntelliJ IDEA 2021.1 ,Visual Studio Code,Google Chrome浏览器,STM32F429IGT6开发板

4.2 实验方法

  1. 结合例程中的所有头文件,编写Stm32多任务微系统,
  2. 编写相关测试代码,烧录进开发测试。
  3. 结合多任务微系统呼吸灯案例,编写智能补灯代码
  4. 烧录,测试智能补灯
  5. 编写后端代码,实时获取串口发送的数据
  6. 根据后端接口,编写前端代码
  7. 烧录进开发板,运行前后端,整合测试

4.3 实验结果

        把所有程序运行起来,访问localhost:5173,你会看见如下图13所示的效果:客户端响应就是类似如下,动态效果保存我的资源中:

图 9 运行效果

        目前我们看到开发板是要补灯的,观察开发板状态,如下图10 所示:

图 10 开发板状态

其他测试结果:

表 1 测试结果

测试内容

结果

点击LED0开(关)灯是否LED0是否开(关)灯

点击LED0开(关)灯是否LED0是否开(关)灯

调节阈值折线图是否发生相应变化

开发板LED灯状态是否与折线图对应

测试补光时LED灯亮度是否实时调节

当阈值大于90或小于10时蜂鸣器是否报警

4.4 实验结果分析

        通过测试和分析,我们的系统能够根据客户端设置的阈值来进行自动补光,如果阈值不合理也能进行报警提醒,并且也可以操控其他LED灯的开闭。并具有很好的动态效果。

更多推荐

第一章:最新版零基础学习 PYTHON 教程(第三节 - 下载并安装Python最新版本)

在这里,我们将讨论如何获得与在Windows/Linux/macOS上安装Python相关的所有问题的答案。Python由GuidovanRossum于20世纪90年代初开发,最新版本为3.11,我们可以简称为Python3。如何下载并安装Python?要了解如何安装Python,您需要了解Python是什么以及它实际

实时多人关键点检测系统:OpenPose | 开源日报 0907

CMU-Perceptual-Computing-Lab/openposeStars:27.9kLicense:NOASSERTIONOpenPose是一个开源项目,它是第一个能够在单个图像上联合检测人体、手部、面部和脚步关键点(总共135个关键点)的实时多人系统。该项目具有以下核心优势:2D实时多人关键点检测功能支持

PyTorch深度学习实战(11)——卷积神经网络

PyTorch深度学习实战(11)——卷积神经网络0.前言1.全连接网络的缺陷2.卷积神经网络基本组件2.1卷积2.2步幅和填充2.3池化2.3卷积神经网络完整流程3.卷积和池化相比全连接网络的优势4.使用PyTorch构建卷积神经网络4.1使用PyTorch构建CNN架构4.2验证CNN输出小结系列链接0.前言卷积神

数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

全文链接:http://tecdat.cn/?p=27384在本文中,数据包含有关葡萄牙“VinhoVerde”葡萄酒的信息(点击文末“阅读原文”获取完整代码数据)。介绍该数据集(查看文末了解数据获取方式)有1599个观测值和12个变量,分别是固定酸度、挥发性酸度、柠檬酸、残糖、氯化物、游离二氧化硫、总二氧化硫、密度、

【运维篇】二、配置文件与多环境控制

文章目录1、临时属性2、IDEA中的临时属性3、配置文件4级分类4、关于四级分类的思考5、自定义配置文件6、多环境开发(yaml版)7、配置文件按环境分类8、include与group再细粒度9、一点思考10、多环境开发兼容问题1、临时属性jar包或者镜像已经打完了,想修改下服务的配置,如何实现?⇒临时属性如修改服务的

JavaScript深入理解JSON.stringify

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.JSON.stringify()属性replacerspacetoJSON2.应用场景数据传输数据存储日志记录数据展示3.完整优雅的实现4.注意事项循环引用特殊类型性能优化总结引言在JavaScript

Android编译snowboy

一、Ubuntu安装git1.打开终端在Ubuntu系统中,我们可以使用终端输入命令进行操作。打开终端的快捷键为Ctrl+Alt+T。2.安装Git在终端中输入以下命令,即可开始安装Git。sudoapt-getinstallgit登录后复制安装过程中需要输入管理员密码,安装完成后,终端会输出Git的版本号等信息。3.

将近 5 万字讲解 Python Django 框架详细知识点(更新中)

Django框架基本概述Django是一个开源的Web应用后端框架,由Python编写。它采用了MVC的软件设计模式,即模型(Model)、视图(View)和控制器(Controller)。在Django框架中,模型层负责与数据库交互,进行数据的增、删、改、查等操作。视图层用于封装结果,生成页面展示的HTML内容。控制

基于Simulink的用于电力系统动态分析

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Matlab代码、Simulink及文章💥1概述本文介绍了基于Simulink

KT142C-sop16语音芯片的4个IO口如何一对一触发播放_配置文件详细说明

目录KT142C是一个提供串口的SOP16语音芯片,完美的集成了MP3的硬解码。内置330KByte的空间,最大支持330秒的语音长度,支持多段语音,支持直驱0.5W的扬声器无需外置功放如上图,芯片有4个IO口可以一对一,详见如下说明2.3芯片4个IO触发口功能-配置文件-简单说明2.4配置文件注意事项--以及常见问题

pytest框架前后置设置,以及pytest默认规则

一、pytest框架的默认规则1、模块名默认必须以test开头或者以test结尾2、测试类必须以Test开头,并且不能有__init__方法3、测试方法默认必须以test开头当然以后的一些默认规则除测试类不能使用__init__方法外其余的都是可配置的,当然一般情况下我们也不会去修改这些默认配置。二、使用setup与t

热文推荐