【开源项目】基于STM32的服装仓库环境监测系统设计与实现

2023-12-21 00:20:52

该系统结合了多种物联网的技术如WiFi技术、嵌入式技术等,通过温湿度传感器和火焰传感器实时采集仓库的温度、空气湿度和仓库明火情况。系统能够自动判断并处理异常情况,当温湿度超过阈值时风扇模块开始工作进行通风,当有明火时抽水泵模块开始工作。通过WiFi模块将监测到的数据上传到APP,同时可在APP上控制风扇和抽水泵的工作状态。

系统分析与总体设计

可行性分析

可行性分析一般包括技术可行性、经济可行性、操作可行性分析。本文便从这几个方面对系统进行可行性分析。

(1)技术可行性

本系统使用keil uVision5进行开发,搭配温湿度传感器、火焰传感器等硬件工具,这些工具在可用性、安全性以及可靠性等方面都有一定的保障,并且本人能够熟练地使用这些软件和硬件,所以本课题研究在技术上是可行的。

(2)经济可行性

????经济可行性分析主要是对系统设计所用的资源进行经济效益评估,本系统设计使用的开发板、传感器以及其它各类硬件的开销都比较小,开发环境的配置也几乎没什么开销,系统的运行仅需一台上位机和一部手机。总的来说,开发和运行本系统所带来的经济开销完全在预期内。

(3)操作可行性

本系统实现后,操作简单,不需要特定的环境,只需要将传感器放置在仓库的监测区域,就能够实时监测仓库的环境参数,用户在APP上便可查看实时数据,风扇和抽水泵都是由系统自动控制,不需要过多操作,当然,用户若想手动控制只需要点击APP上的开关按键就行,非常方便。

需求分析

服装仓库环境监测系统的实现是为了解决在服装仓库环境监测方面存在的智能化和实时性不强的问题,仓库管理者对该系统的需求主要如下:

(1)实时监测仓库环境。传统的环境检测方式最大的缺点就是实时性不强,目前许多服装仓库还是采用传统的人工监测方式,无法做到时刻监测,而且自动化水平较低,环境不符合要求时,只能由工作人员手动改善。传统的仓库环境监测耗时费力,还容易出现测量疏忽和错误操作。所以需要系统能够实时检测并记录仓库环境参数。

(2)防潮。当下雨天空气比较潮湿时,水汽会从仓库的缝隙内进入库内,导致空气潮湿。尤其是南方梅雨时节较长,仓库的墙体会吸附过多的水分,然后渗进仓库内。一些建造在地下的仓库也会因为地面返潮导致库内空气湿度过高。而衣物特别是纯棉制品是很容易吸附水分的,长时间的潮湿会导致大量霉菌滋生,损坏衣物的材质,使其失去其商用价值。虽说一般情况下仓库管理者会定期检查并进行防潮操作,但这无疑增加了管理仓库的压力和成本,所以需要系统能够自动判断仓库空气是否潮湿并自动进行防潮操作。

3防火。衣物都属于易燃物,服装仓库一旦发生火灾,仓库内的衣物会在短时间内被引燃,火灾的发生往往是不可预料的,处理不及时的话不仅仓库内的衣物会成为一堆灰烬,还有可能造成人员伤亡,这是仓库管理者无法接受的,所以系统需要能够自动预防火灾的发生。

(4)随时查看数据和能够手动控制防火防潮操作。系统仅仅能实时检测数据还不够,仓库管理者需要能随时查看这些数据,了解自己仓库内的情况。有时,因某些原因,比如传感器损坏而导致系统无法正常检测数据或检测到的数据有异常时,需要系统的使用者能手动控制系统。

系统总体设计

本系统一共包含五个组成部分,如图1所示,分别是温湿度监测模块、火焰监测模块、风扇模块、抽水泵模块和手机APP模块。

??????????

?????????????????????????图1 系统功能图

(1)温湿度监测模块:通过温湿度传感器检测仓库的空气温湿度,并将数据传回到单片机。

(2)火焰监测模块:通过火焰传感器检测仓库是否存在明火,并将结果传回单片机。

(3)风扇模块:系统分析接收到的温湿度数据,从而控制风扇状态,如果接收到的数据高于设置的参数阈值,则单片机控制风扇转动进行通风,同时蜂鸣器报警,直到接收到的数据恢复正常。

(4)抽水泵模块:如果火焰传感器检测到仓库存在明火,则单片机控制抽水泵抽水进行灭火,同时蜂鸣器报警。若明火消失则抽水泵停止工作。

(5)手机APP模块:通过WiFi模块将单片机接收到的数据实时上传到APP,使得仓库管理者能够随时通过APP查看仓库情况,并且能在APP上设置环境参数阈值,同时可在APP上手动控制风扇和抽水泵的工作状态。

2.4?系统的硬件结构设计

根据所提出的设计要求和功能,本系统硬件总体框架图如图2所示,系统硬件部分以STM32F103C8T6单片机为核心,通过DHT11温湿度传感器和火焰传感器检测仓库环境温湿度和明火情况,外接风扇和抽水泵,用于通风和灭火。同时通过ESP8 266WiFi模块与APP通信。

???

????????????????????????图2 系统硬件设计图

2.5 系统的软件功能结构设计

本系统程序设计主要是在keil5中使用C语言。手机APP开发是在Eclipse中使用JAVA语言设计的。程序设计主要包含如下三个部分:

(1)温湿度检测:一般来说,仓库温度应当低于35℃,空气湿度应当低于75,若温度或湿度高于对应的值,则系统控制风扇开启进行通风并报警,直到数据恢复正常。

(2)明火检测:当仓库内出现明火时,系统立即控制抽水泵抽水灭火并报警,直到明火消失。

(3)APP设计:APP的设计是为了使数据可视化,方便用户了解仓库的情况,除此之外,还需要在APP中加入风扇和抽水泵的控制按键以及设置阈值的按键。

服装仓库环境监测系统程序设计流程图如图3所示。

?????????

??????????????????????图3 系统程序设计流程图

系统的硬件结构实现

开发板

本系统采用的是STM32的最小核心开发板,即STM32F103C8T6开发板,它具有高性能、低成本、低功耗等优点,实物图如图4所示。STM32F103C8T6封装了48个引脚,其中VDD和VSS用于供电,C8T6开发板的工作电压为3.3V,其板载了一个LDO降压管,用于将USB提供的5V电压转化为3.3V。PA13和PA14引脚用于下载程序,如果引脚够用,一般不对这两个引脚进行设置,其他许多引脚都能够用来连接外设,完成不同的功能,需要注意的是C8T6开发板的工作电压和工作电流都很小,所以此开发板不能够带大功率的外设,如果系统需要,那需要采取其他措施。

??

图4 ?STM32F103C8T6开发板实物图

温湿度传感器模块

温湿度检测模块使用DHT11 数字温湿度传感器,传感器实物图如图5所示。DHT11 温湿度传感器是一款数字信号输出的温湿度复合传感器。传感器内部有两个元件用于测量温湿度,分别是一个电阻式感湿元件和一个 NTC 测温元件。传感器内部还有一个8位的单片机,该单片机将感湿元件和测温元件输出的模拟量转化成数字量并存储起来,方便用户使用单片机读取。DHT11产品参数如下:测温范围:0—50℃,测湿范围:20—90%RH。DHT11温湿度传感器具有低功耗、长期稳定、数字信号输出等特点,能满足许多应用场景以及本系统的设计需求。

DHT11为4引脚封装,如图5所示,从左至右分别为VDD、DATA、NC、GND。引脚接线如下:

1、VDD 供电 3.3~5.5V

2、DATA 串行数据,单总线

3、NC 空脚

4、GND 接地,电源负极

?????????????????

图5 ?dht11温湿度传感器实物图

DHT11通过DATA引脚与单片机通信,采用单总线的传输方式。每次传送40 bit数据,高位先出。每次通信4毫秒左右,数据分为整数部分和小数部分,但小数部分是无意义的,全部为0,其他部分都是0或1,格式如下:

数据格式:8bit(湿度)+8bit(湿度小数数据)+8bit(温度)+8bit(温度小数数据)+8bit(校验和)=40bit。

DHT11与单片机之间只通过一根数据线进行通信,也就是说两者之间每次只能由其中一个发送数据,另一个接收数据。DHT11并不会主动采集温湿度数据,空闲时处于低功耗模式,当需要采集数据时,主机首先发送一次开始信号,DHT11转为高速运行模式,当主机开始信号结束后,DHT11会回应一个响应信号,表示“握手成功”并先发送40bit的数据,然后在触发一次数据采集。由于DHT11先送出数据,然后再进行一次数据采集,所以单片机读出的数据是上一次测量的结果,但由于本系统是连续读取数据,所以并不影响本系统的实时性。通讯过程及时序是编程的依据,如图6所示。

??

?????????????????????????图6 ?DHT11通信完整时序图

火焰传感器模块

火焰传感器就是利用红外接收管对火焰比较敏感的特点,用特制的红外接收管制成的传感器。本系统采用的是三线火焰传感器,实物图如图7所示。本产品能够探测火焰发出的波段范围分别为700-1100 nm的短波近红外线。此火焰传感器的工作原理是将火焰强度转化为高低电平信号输出,输出引脚为DO引脚,电路原理图如图8所示。正常情况下,DO引脚输出高电平,当检测到火焰时,DO引脚输出低电平。输出引脚DO可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的改变。经测试,打火机测试火焰距离为80cm,火焰越大,测试距离越远,所以这款火焰传感器符合本系统设计的要求。引脚接线说明:VCC—接电源正极(3.5-5V)、GND—接电源负极、DO—数字信号输出。

?????????

?????????????????????????图7 火焰传感器实物图

????????????

???????????????????????图8 火焰传感器电路原理图

ESP8266WiFi模块

ESP8266实际上是一个通信芯片,实物图如图9所示。ESP8266集成了完整的TCP/IP协议栈和MCU,通过串口与用户单片机进行通信。ESP8266能够使用户的硬件设备联网,使用户的硬件可以通过WiFi网络与其他设备进行数据通信。ESP8266通过串口AT指令与单片机通信,实现串口透传。这个模块支持三种工作模式,分别为STA 模式:ESP8266模块作为客户连接服务器,上位机通过互联网实现对设备的远程控制。AP 模式:ESP8266模块作为热点,实现上位机直接与模块通信,实现局域网无线控制。STA+AP 模式:两种模式的共存模式。本系统将工作模式设置成了AP模式,通过AT指令实现模块初始化和数据通信。ESP8266是一种无线设备,且性能非常稳定,能适应各种应用环境。其引脚说明如表1所示。

表1 ESP8266引脚说明

引脚

功能

VCC

接电源3.3-5V

GND

接地

TXD

串口发送引脚

RXD

串口接收引脚

RST

复位

IO-0

烧写固件

????????

???????

图9 ESP8266WiFi模块实物图

风扇与继电器模块

市面上有很多风扇都能够作为本系统的风扇模块,经过选择,本系统风扇模块使用的是普通的Delta/台达电脑电源散热风扇,经测试,该产品性能良好,可以完成本系统的设计工作。普通的散热风扇工作电压比较大,而且没办法与单片机直接相连,想要实现单片机对风扇的控制就需要另一个模块,那便是继电器。本系统使用的是电磁继电器,实物图如图10所示。电磁继电器本质就是一个由电磁感应触发的开关,起到一个传递、桥梁的作用,可以把外界接收进来的如温度、光照等信号转化为开关是否开合的信号,从而起到控制电路的作用。通过继电器可以实现弱电控制强电、低电压小电流控制高电压大电流。电磁继电器有三个输入端,三个输出端。输入端分别是VCC接电源正极、GND接电源负极、IN接信号的控制端,一般与单片机引脚相连,输出端分别是COM公共端、NC常闭端、NO常开端。在继电器没有工作的情况下,公共端与常闭端是导通的,与常开端是断开的,当继电器收到触发信号时,公共端就会和常闭端断开,和常开端导通,也就起到了控制作用。

???????????

图10 电磁继电器实物图

电磁继电器内部结构图如图11所示,A代表常闭端,B代表公共端,C代表常开端,默认状态下AB导通,当继电器收到单片机的触发信号时,D、E两端产生电流,电磁铁产生吸力使得BC导通。

????????????

图11 电磁继电器内部结构图

抽水泵模块

本系统采用的抽水泵为DC电机小水泵,型号为JT-DC3W-3。实物图如图12所示。该型号的水泵分为立式和卧式,本系统使用立式水泵,该水泵驱动方式为电动,工作额定电压为3V,适合电压为3-5V。该水泵是直流水泵,所以电压要为直流供电。其使用方式如图13所示。水泵无法与单片机直接相连,在本系统中,水泵同样与继电器相连,从而达到由单片机控制开关的目的。该水泵虽然禁止无水空转,但短时间空转并无太大影响,可以完成本系统的设计任务。

??????????????

图12 小水泵实物图

????????????

图13 水泵使用方式

系统硬件整体连接

本系统各部分硬件通过电路板连接到一起,实物连接图如图14所示。

??????????

图14 硬件实物整体连接图

系统的软件功能实现

开发工具及开发环境搭建

本系统使用Keil5进行开发。Keil5支持C语言开发,并集成了许多开发板的库函数,在进行开发时使用C语言和这些库函数结合就可以完成项目。Keil5的开发环境搭建步骤如下:

  1. 到官网下载keil5开发环境MDK,下载途径如图15所示。

??????

图15 keil官网MDK下载界面

  1. 运行MDK.exe安装keil5。
  2. 软件安装完成后,还要给软件添加库文件,使keil可以支持相应的单片机开发,由于本系统使用的是STM32F103C8T6开发板,所以需要添加STM32F10xx系列的库文件,如图16所示。

??????????

图16 STM32库文件添加

  1. 由于下载的keil是试用版,最多只能运行32k的工程文件,所以需要破解软件Keygen破解keil,使其能正常使用。破解软件和步骤可在网络上查询。

温湿度检测和显示模块

在本系统温湿度检测模块中,通过for循环将DHT11发送的40位数据分成5个8位的数据,本系统设计中只用其中第一个和第三个这两个有意义的数据,也就是温度整数数据和湿度整数数据。然后将检测到的数据以ASCII码的形式显示在LCD屏上,同时可以通过按键设置阈值,部分代码如下。?????

?????

? ? ? ? ? ? ?

火焰检测模块

本系统中火焰传感器输出引脚与单片机PA1脚相连,通过GPIO _Read InputData Bit()函数读取PA1的输出值,同时将PA1的输出值宏定义为FIRE。在主函数中,系统每隔50ms读取一次PA1的输出值,即FIRE的值,当FIRE的值为1时判定没有火焰,当FIRE值为0时判定为有火焰,同时将计数标志coa的值设为100,每次循环递减,在此期间,系统一直判定存在火焰,直到coa的值为0,也就是说检测到了火焰,那从那一刻起,往后5秒内,无论火焰有没有消失,系统一直认为有火焰存在,这样可以使灭火模块运行的时间更长,灭火更彻底,部分代码如下。?

执行模块

本系统执行模块包括风扇、抽水泵和报警蜂鸣器,分别用PB6、PB5、PC13引脚控制。当检测到的温湿度超过设置的阈值时,或者按键S1按下时,使PB6输出高电平控制风扇转动,同时使PC13输出高电平控制蜂鸣器报警,当温湿度恢复到阈值以下时,使PB6和PC13输出低电平,风扇和蜂鸣器停止工作。当检测有火焰存在时,或者按键S2按下时,使PB5输出高电平控制水泵工作,同时使PC13输出高电平控制蜂鸣器报警,当火焰消失时,使PB5和PC13输出低电平,水泵和蜂鸣器停止工作。部分代码如下。

?

无线通信模块

本系统通过ESP8266WiFi模块实现无线通信,首先要对ESP8266进行初始化,本系统中通过串口2发送AT指令对ESP8266进行配置,同时ESP8266接收和发送数据也是通过串口2实现。在系统工作时,系统会首先检测ESP8266是否配置成功,如果没有配置成功,系统会自动配置,如果配置成功,会检测是否有用户连接,如果有连接就会检测是否有数据要发送,有的话就发送数据。通过串口2的中断处理实现数据的接收。数据发送和接收部分代码如图21、图22所示。???????

?

????????????

系统功能测试

温湿度检测模块测试

将系统上电,经测试,系统能实时检测温湿度的变化,并在APP上显示。如图17所示,湿度由36%变为了47%。?????????????

图17 温湿度检测正常

用手捂住温湿度传感器,传感器检测到的温湿度将会增加,当温度或湿度超过设定的阈值时,相应的值会变红,风扇将会开始工作,把手拿开,温湿度恢复都恢复正常时,风扇停止工作。测试结果如图18所示。

???????????????????

图18 温湿度异常测试

火焰检测模块测试

将火源放到火焰传感器旁边进行测试,经测试,系统能够实时检测火焰并显示,当检测到火源时,抽水泵会开始工作。当无火焰时,抽水泵停止工作。测试结果如图19所示。

??????????

图19 火焰检测测试

5.3 按键功能测试

本系统需要在APP上能够设置温湿度阈值,并且能够手动控制风扇和抽水泵的工作状态,经测试,能通过加减按键设置温湿度阈值,通过风扇开关按键和水泵开关按键控制风扇和水泵的开关。测试结果如图20所示,温湿度设定值分别由35℃、58%改为了33℃和55%,同时温湿度都没有超过设定值,但可以通过按键使风扇和水泵由停止状态变为运行状态。

????????????

图20 按键测试图

结束语

随着科学技术和物联网技术的快速发展,传统的人工检测环境的方式逐渐被各式各样的智能化和自动化水平更高的环境检测系统代替。本课题研究的智能服装仓库环境监测系统基于物联网嵌入式技术,以STM32为核心,在仓库的各个区域布置上温湿度传感器和火焰传感器,实时采集环境数据,并通过esp8266 WiFi模块将数据上传到APP,还配有风扇和抽水泵,当仓库温湿度数值超出阈值或有明火存在时,由系统自动做出一些相应处理。该系统的开发使用的是keil5开发工具和C语言,以及一些传感器模块:单片机控制的风扇模块,抽水泵模块等。APP开发使用的是eclipse开发工具和Java语言。本系统最大的特点是在环境监测的基础上增加了处理模块,能自动处理异常情况,比如仓库温度升高时,风扇自动开启进行通风。有明火时,抽水泵自动抽水。处理模块的设计减小了仓库管理的成本,同时极大地降低了仓库出事的风险。

系统源程序,关注公主呺:阿齐Archie,免费领取

文章来源:https://blog.csdn.net/m0_61712829/article/details/135118594
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。