智能仓储管理系统设计与实现

2023-12-25 11:31:07

智能仓储管理系统设计与实现

第一章?绪论

1.1 设计背景

物联网(英文:Internet of Things,缩写:IoT)是万物相连的互联网,即把所有物品通过信息传感设备与互联网连接起来,以实现智能化识别、定位、跟踪、监管等功能。随着物流业的不断发展和市场竞争的加剧,仓储物流管理变得越来越复杂和严峻。传统的仓储管理方式已经无法满足现代化物流的需求,需要通过数字化技术来提高仓储管理效率和质量,降低成本,提升企业竞争力。智能仓储管理系统的设计背景就是为了解决传统仓储管理的瓶颈和问题,通过数字化技术提高仓储管理效率和质量,实现仓储物流的高效、精细化管理。智能仓储管理系统可以提供实时的仓库储存位置和货物信息,实现对货物的实时监控和跟踪,在货物入库、出库、移库等方面实现智能化管理,降低人工操作的错误率,提高作业效率,同时提高库存管理的精度和准确性。此外,智能仓储管理系统还可以结合物联网、人工智能等技术,实现对货物的智能化预测和优化,帮助企业更好地管理物流供应链,提高企业的运营效益和市场竞争力。

1.2 设计依据

智能仓储管理系统的设计依据主要包括以下方面:

1. 仓储管理需求:随着物流业的发展,仓储管理要求越来越高,需要提高仓储效率和精度,降低管理成本和错误率。因此,智能仓储管理系统应运而生,通过自动化和数字化的手段,提高仓储管理的质量和效率。

2. STM32硬件平台特点:STM32是一种低功耗、高性能的微控制器,具有强大的计算和处理能力,可广泛应用于物联网、智能制造、自动化控制等领域。因此,选择STM32作为智能仓储管理系统的硬件平台,可以提高系统的性能和稳定性。

3. 外围设备选择:智能仓储管理系统需要连接多种外围设备,如温湿度传感器、RFID读写器、显示屏等。在选择这些设备时,需要考虑到其性能、适配性和可靠性等因素,保证系统的正常运行和数据准确性。

4. 软件开发技术:为了实现智能仓储管理系统的各项功能,需要采用适合的软件开发技术,如C语言或其他高级语言编程、STM32开发工具包和相关的第三方库、微信小程序/H5页面/公众号等技术。同时,还需要考虑到系统的可扩展性和稳定性,以便后期的功能升级和维护。

综上所述,智能仓储管理系统的设计依据主要是基于仓储管理需求和STM32硬件平台的特点,同时需要选择合适的外围设备和软件开发技术,保证系统的功能实现和运行稳定性。

1.3 设计的主要内容和功能

智能仓储管理系统的设计主要涵盖以下内容和功能:

1. 硬件平台:智能仓储管理系统的硬件平台采用STM32微控制器,它具有高性能、低功耗、可靠性高等特点,能够满足系统的各项要求。

2. 仓储管理:智能仓储管理系统能够实现货物的自动识别、分类、计数、存储、取出等功能,通过RFID技术和传感器等外围设备,实现对货物的实时监控和管理。

3. 温湿度监测:智能仓储管理系统还能够实现对仓库内温湿度等环境参数的实时监测,保证货物的储存环境符合要求。

4. 系统报警:智能仓储管理系统能够实现对仓库内异常情况的实时监测,并能够通过报警器等设备及时发出警报。

5. 数据管理:智能仓储管理系统能够实现对货物、设备、环境等数据的收集、存储、处理和分析,并能够生成相关报表和统计数据,为管理决策提供支持。

6. 可视化界面:智能仓储管理系统提供友好的可视化界面,方便操作和管理人员进行实时监控和管理。

7. 远程控制:智能仓储管理系统能够实现远程控制和监测,使得管理人员能够随时随地对仓库进行管理和监控。

综上所述,智能仓储管理系统的设计主要包括硬件平台、仓储管理、温湿度监测、报警系统、数据管理、可视化界面和远程控制等功能,旨在提高仓储管理的效率和精度,降低管理成本和错误率。

第二章?设计方案

2.1 设计思路

1. 通过温度传感器对环境温度进行采集,并用实时显示在 OLED 液晶屏上:

智能仓储管理系统中,温度传感器是用于采集仓库环境温度的重要设备之一。通过将温度传感器与STM32微控制器进行连接,可以实现对仓库环境温度的实时采集。温度值采集完成后,系统将通过OLED 液晶屏将采集到的实时温度值进行显示,方便管理人员及时了解仓库环境温度情况。

2. 可以设定一个固定的报警温度值,达到或者超过该温度就会报警:

为了确保仓库内温度不超过一定阈值,智能仓储管理系统中可以设定一个固定的报警温度值。当仓库环境温度达到或超过该温度值时,系统将自动触发报警功能,提醒管理人员进行处理。

3. 环境温度超过报警温度后报警,报警形式包括:蜂鸣器声音响,LED 灯亮起来:

一旦仓库环境温度超过设定的报警温度阈值,智能仓储管理系统将会触发报警功能。报警形式包括蜂鸣器声音响和LED 灯亮起来,避免管理人员在嘈杂的环境中无法及时发现报警信号。

4. 能够通过程序动态修改报警温度阈值:

为了确保智能仓储管理系统的弹性和可配置性,系统支持动态修改报警温度阈值。在系统运行过程中,管理人员可以通过程序界面对报警温度阈值进行动态修改,从而保证报警温度阈值能够适应不同的仓库温度环境。

5. 通过数字温度传感器进行温度采集:

智能仓储管理系统中,数字温度传感器是用于采集温度值的重要设备之一。数字温度传感器与STM32微控制器进行连接,通过数字信号的方式将温度值传输到系统中。相比于传统的模拟温度传感器,数字温度传感器具有精度高、稳定性好、抗干扰能力强等优点,更加适用于仓库环境温度的采集。

2.2 系统构成

温湿度控制器以单片机为控制核心,以温湿度传感器为检测单元,设计完成

温湿度智能监控系统。当温湿度传感器采集到仓库温湿度数据后,传送至单片机,单片机经过处理之后一方面通过液晶屏显示出来,通过内设报警器及亮灯等装置,实时的对仓库内的环境进行检测和控制。另一方面将采集到的数据记录下来,上传到单片机。同时为了保证传输数据的准确性,所有的命令和数据都会遵循严格的通信协议,从而方便用户能随时查看仓库温湿度情况,对不同时刻的温湿度数据进行整理分析。

在本系统设计中,主要由温湿度采集模块、控制和处理模块、通信模块、执行模块等几部分组成。而我们主要考虑的有两点:控制器的选择和温湿度传感器的选择。控制器是整个系统的核心,它关系到系统稳定有效的运行,而我们可选范围有单片机、DSP 等几种。温湿度传感器是整个系统的前端采集单元,负责数据的采集,它是系统构成的基础,我们可供选择的方案有传统的温湿度传感器、集成式泗湿度传感器和数字式温湿度传感器等几种。考虑到实际运用中不仅要求统运行稳定、数据准确等,还对价格、开发周期、使用环境等也提出了比较高的要求,所以我们的首要任务是选择适合现场环境的的温湿度传感器以及性价比的内核控制芯片。

图1、系统的构成成分

第三章 系统设计与实现

学校提供的现成STM32硬件板子,使得我们可以直接进行程序的设计和编写,无需关注硬件方面的问题。这在学习和开发嵌入式系统方面是非常便利的。

在进行程序设计和编写时,我们需要使用Keil软件,这是一款专门用于嵌入式系统开发的集成开发环境。在Keil中,我们可以使用C语言来编写程序,并且可以使用各种库函数来完成不同的任务。使用库函数可以减少我们的编程工作量,同时也可以提高程序的可读性和可维护性。

为了使得程序结构更加清晰和模块化,我们应该将不同的函数程序、库函数、中断服务函数、延迟函数、控制不同模块的函数等分别放在不同的文件夹中,并设置好每个函数的头文件和源文件。这样做可以使得程序的结构更加清晰,也便于我们进行模块化设计和代码复用。同时,我们应该尽量避免使用全局变量,以减少程序的耦合度,提高程序的可靠性和可维护性。

图2、模块化编程

在逐个添加和编写控制模块的函数时,我们需要对每个函数进行测试,并及时检查错误。在进行编译和运行时,我们应该注意代码的规范性和正确性,以避免出现一些低级错误。如果出现错误,我们应该及时进行调试,找出问题所在,并进行修复。

在程序编写完成后,我们需要将程序烧录到芯片中进行观察效果和进行调试。在烧录程序时,我们应该注意芯片的型号和参数设置,并保证烧录的程序与硬件板子相匹配。在观察效果和进行调试时,我们应该仔细分析程序的运行情况,找出问题所在,并及时进行修复。

如果程序运行正常,我们应该编写下一个函数,并将所有函数添加到主函数中进行测试运行。在进行测试时,我们应该尽可能地模拟各种情况,以保证程序的稳定性和可靠性。如果发现问题,我们应该及时进行修复,直到程序可以正常运行为止。

综上所述,学校提供的现成STM32硬件板子为我们进行程序设计和编写提供了很大的便利。在进行程序设计和编写时,我们应该注意代码的规范性和正确性,同时也要注意程序的可读性和可维护性。在进行测试和调试时,我们应该仔细分析程序的运行情况,并及时进行修复,以保证程序的稳定性和可靠性。

图3、功能实现展示图

第四章 系统测试

智能仓储管理系统设计与实现的系统测试是确保系统能够正常运行,具备稳定性和可靠性的关键步骤。系统测试主要包括功能测试和性能测试两个方面。

在功能测试中,通过模拟实际操作,检查系统各项功能是否正常。包括系统登陆、仓库管理、货物入库、货物出库、库存查询、货物移动、数据统计等模块的测试。在测试过程中,需要模拟多种不同情况,包括正常操作、异常操作、边界情况等,确保系统在各种情况下都能够正常运行并输出正确的结果。同时,还需要检查系统是否存在漏洞和安全隐患,确保系统的安全性。

在性能测试中,需要测试系统的响应时间、并发处理能力、负载能力等方面。通过模拟多个用户同时访问系统,检查系统是否能够及时响应、并发处理,以及在高负载情况下是否能够保证系统的稳定性和可靠性。

在测试过程中,需要根据测试结果反馈,对系统进行进一步优化和改进。如果存在漏洞和问题,需要及时修复。在系统测试完成后,还需要进行用户接受测试,让实际用户体验系统的使用情况,以便对系统进行最终的完善和优化。

综上所述,智能仓储管理系统的设计与实现的系统测试是确保系统能够正常运行、稳定可靠的重要步骤。只有通过充分的测试,才能保证系统的质量和稳定性,为实际用户提供良好的使用体验。

图4、手机扫码显示和控制界面

第五章 总结

本次基于STM32单片机的智能仓储管理系统课程设计,通过对STM32单片机的学习和掌握,结合实际应用场景,设计并实现了一套仓储管理系统。

基于 STM32 单片机的智能仓储管理系统是一个适合初学者的 STM32 设计,本系统设计包含了 GPIO 的配置、ESP8266 的配置与使用、传感器 DHT11 的使用、串口发送信息、OLED 显示等的使用。本系统主要部分即温湿度采集和 WiFi数据传输,比较适合初学者学习理论知识后对知识的总结和融会贯通。 OLED的应用对于本系统是非必要的,一般来讲串口输出调试信息即可作为程序反馈。对于初学者来说如果想要走物联网这条线,本系统难度适中可以作为一个的炼手的例程。智能仓储管理系统是一套可无人值守 24 小时不间断实时监控记录的自动化监测系统。该系统能对其所在环境的温湿度进行监测记录,并将温湿度数据实时上传至云平台,从而达到对该环境的温湿度进行实时监测控制,并可以在温湿度异常的情况下实现超限报警。

在设计过程中,首先完成了硬件部分的设计,包括硬件电路的搭建和外围设备的接口设计。接着,结合Keil软件进行软件设计和编码,实现了系统的各种功能,包括数据采集、数据存储、数据处理、通信等。最后,通过编写网页实现了远程控制。

通过本次课程设计,我不仅掌握了STM32单片机的基础知识和应用技能,还深入了解了仓储管理系统的实际应用场景和需求,同时也锻炼了我的团队合作能力和解决问题的能力。

在以后的学习和工作中,我将继续深入学习STM32单片机的应用,并结合实际应用场景,不断提升自己的实践能力和创新能力,为社会做出更大的贡献。

?

int main(void)
{
  int temp,humi;//用于存放温湿度数据
 char show_text[100],upload_data[100];

 LED_Init();      //LED灯初始化
 BEEP_Init();     //蜂鸣器灯初始化
 DHT11_Init();    //DHT11灯初始化
 OLED_Init();     //OLED灯初始化
 USART2_Init();   //USART2灯初始化
	
 OLED_Clear ();   //开机清屏
 delay_s(1);//DHT11上电后要等待1s,以越过不稳定状态
 while(1)
 {
  if(DHT11_Get(&temp,&humi))
  {
   //如果采集失败
   LED_On(LED0);
   delay_ms(100);
   LED_Off(LED0);
  }
  else
  {
   //如果采集成功
   sprintf(show_text,"Temp:%2d",temp);
   OLED_ShowString(0,0,(u8*) show_text,16);
   
   sprintf(show_text,"Humi:%2d",humi);
   OLED_ShowString(0,2,(u8*) show_text,16);
   
  //通过串口2将温度湿度数据发送给ESP8266,然后ESP8266会将这份数据发送给服务器
   //数据格式不能错!
   sprintf(upload_data,"/12/dht11/%d_%d\n",temp,humi);
   USART2_SendString(upload_data);
 
   LED_On(LED2);
   delay_ms(100);
   LED_Off(LED2);
   if(temp>=35)
   {
    BEEP_On();//如果温度过高(达到29度),就报警
   }
   else
   {
    BEEP_Off();//如果温度正常
   }
  }
  delay_s(2); //连续采集温湿度数据的时间间隔建议不低于2s
 }
}

//每当串口2接收到一个字节数据,该中断处理函数就会被自动执行一次
void USART2_IRQHandler(void)
{
 unsigned short cmd;
 
 if(USART_GetITStatus(USART2,USART_IT_RXNE)) //判断是否接收完成中断
 {
  cmd=USART_ReceiveData(USART2);
   if(cmd=='a')
  {
   //发送为a为开灯操作
   LED_On(LED1);
  }
  else if(cmd=='b')
  {
   //发送为b为关灯操作
   LED_Off(LED1);
  }
  else if(cmd=='c')
  {
   //发送为c开始报警
   BEEP_On();
  }
  else if(cmd=='d')
  {
   //静音
		 BEEP_Off();
  }
}
}

?年 ???月 ??日

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