无线仓库管理解决方案.docx

上传人:小飞机 文档编号:1945206 上传时间:2022-12-27 格式:DOCX 页数:11 大小:1MB
返回 下载 相关 举报
无线仓库管理解决方案.docx_第1页
第1页 / 共11页
无线仓库管理解决方案.docx_第2页
第2页 / 共11页
无线仓库管理解决方案.docx_第3页
第3页 / 共11页
无线仓库管理解决方案.docx_第4页
第4页 / 共11页
无线仓库管理解决方案.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《无线仓库管理解决方案.docx》由会员分享,可在线阅读,更多相关《无线仓库管理解决方案.docx(11页珍藏版)》请在三一办公上搜索。

1、无线仓库管理解决方案1. 需求分析1.1仓库管理现状随着计算机技术的普及,越来越多的中小企业已经开始使用计算机(数据库)开进行仓库管理。经调查,大多数的小型企业仍然采用用笔记账,再统一录入数据库的模式。这样,办公室并不能获得最新的库存情况从而不能做出正确的决策。另外,有些公司仓库离办公室(数据库服务器)较远,一来一回也耽误了时间。于是,用高效的方案来解决仓库库存与数据库同步的问题是迫在眉睫的事情。1.2无线仓库管理的优点无线仓库管理最大的亮点在于实时性。仓库管理人员在入库的时候,只需要在手持设备上输入相应的产品以及数量,即可以实时地更新数据库,为办公室人员获得最新的库存信息提供了保证。相对于有

2、线传输,无线传输省去了布线的麻烦。这也是目前流行的方案。1.3开发限制由于经济基础等条件制约,采用的硬件并不能实现长距离通讯。但要声明的是,这只是个解决方案,只提供思路。如果要应用到实际,将结合实际情况对硬件做出相应的更改。2. 概要设计2.1部署图2.2进程视图3. 详细设计3.1硬件说明(1)开发板:SPCE061A EMU BOARD61板是SPCE061A EMU BOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片

3、机项目初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电。板上自带两个16位输入/输出接口。无线射频芯片自带的驱动程序使用IOB的低8位,MzL02-12864 LCD模组自带的驱动程序使用IOA。而61板上的三个按键KEY1、KEY2、KEY3是直接和IOA的最低3位相连的(参考61板的电路原理图1),造成按键对显示模组干扰的问题。于是,解决方案将使用IOA的高8位作为无线射频nRF2401芯片的接口,IOB作为MzL02-12864 LCD模组的接口。详细驱动的改动下面会有说明。图 1 PCB图(2

4、)nRF2401无线射频芯片发送端(配套61板)nRF2401A 及其外围电路如图2,包括nRF2401A 芯片部分、稳压部分、晶振部分、天线部分。电压VDD 经电容C1、C2、C3 处理后为芯片提供工作电压;晶振部分包括Y1、C9、C10,晶振Y1允许值为:4MHz、8MHz、12 MHz、16 MHz,如果需要1Mbps 的通信速率,则必须选择16MHz晶振。天线部分包括电感L1、L2,用来将nRF2401A 芯片ANT1、ANT2 管脚产生的2.4G 电平信号转换为电磁波信号,或者将电磁波信号转换为电平信号输入芯片的ANT1、ANT2 管脚。为方便与61 板的连接,模组提供了两个接口J1

5、、J2,其中J1 为nRF2401A 的控制端口和通道1 的收发通道,J2 为预留端口,是通道2 的接收通道。J1 接口为10Pin 的插孔,其布局和61 板的I/O 端口布局一致,可以直接插接到61 板的I/O 端口使用。J2 预留,如果需要采用双通道接收时,可以将J2 对应的3 根信号线引出,接到单片机的I/O 上即可。图 2 nRF2401电路原理图 图 3 接口电路图对应的I/O 连接和功能描述如表所示。接收端(NewMsgUSB2401)NewMsg-NetUSB3模块是NewMsg公司自行研发的PC端无线数据收发模块,其并配备CYPRESS公司的USB SLAVE芯片EZUSB_F

6、X2LP68013和射频芯片NRF2401,以2.4G的无线频段进行无线数据传输,并通过USB2.0协议同PC进行高速通信,保证了高速通信质量,并且在无线通信协议上实现了严格的数据校验机制,保证了数据的可靠通信。NewMsg-NetUSB3模块可进行本机地址和发送地址的配置,实现多点PC和PC,PC和电子系统的数据传输。(3)MzL02-12864 LCD模组MzL02-12864 为一块128X64 点阵的LCD 显示模组,模组上的 LCM 采用COG 技术将控制(包括显存)、驱动器集成在LCM 的玻璃上,接口简单、操作方便;为方便用户的使用,铭正同创在LCM 的基础上设计了MzL02-12

7、864 模组,将模组所必需的外围电容电阻集成到模组上,并引出多种形式的引线接口方便用户使用。MzL02-12864 模组与各种MCU 均可进行方便简单的接口操作。3.2编码实现3.2.1寄存器设置以及驱动更改前面提到由于LCD模组使用16位IOA作为接口,而IOA0/1/2与KEY1/2/3直接相连(详细翻阅PCB图),这导致的结果是,按键按下时会对LCD模组进行干扰。于是便选择IOB作为LCD模组的接口,IOA高8位作为无线射频的接口。详细驱动更改如下:查看SPCE061A中文编程手册,找到IOA和IOB的读写寄存器地址分别为7000H和7005H,每个寄存器16位。如图:LCD模组接口说明

8、,如下表:打开LCD模组的接口头文件LCD_PortConfig.h,宏定义LCD模组在IOB读写寄存的偏移量:#defineLCD_EP0x1000#defineLCD_RW0x0800#defineLCD_A00x0400#defineLCD_RE0x0200#defineLCD_CS0x0100然后把驱动宏定义的IOA全部改成IOB,并且添加IOB相应寄存器的地址的宏定义:#defineP_IOB_DATA(volatile unsigned int *)0x7005#defineP_IOB_BUFFER(volatile unsigned int *)0x7006#defineP_IO

9、B_DIR(volatile unsigned int *)0x7007#defineP_IOB_ATTRIB(volatile unsigned int *)0x7008无线射频模组的驱动更改相应比较简单,参照数据手册,把原来的偏移地址(低8位)0x00100x0020改成(高8位)0x01000x2000,然后把所有指向IOB地址的地方重新指向IOA的地址即可。3.2.2主菜单介面制作介绍:由于开发板:SPCE061A EMU BOARD只有个,一个用于,剩下只有三个,为了能够实现多个介面之间的转换,我们用键代表向下转换,键代表向上转换,键代表确定。键和键都有循环切换菜单的功能。我们设计的

10、菜单是用一个个图片组成。每切换一个菜单我们就换一张图片。图片之间的切换并没有减慢我们系统的速度。我们的菜单主要由以下图片组成:这些图片通过的制作就可以变为一个个数组。在显示时只要调用这些数组就可以了。菜单的制作主要是调用函数void LCD501_Bitmap(int x,int y,unsigned int *p),这个函数主要是用来显示图片的。用来显示我们的菜单。在一开机时,就显示第一第图片,然后就处于等待状态,当接收到的信息时,就开始换下一张图片。当接收到信息时就开始选项上一张图形,并把它们显示出来。当接收到时就进了另一个介面,用于输入订单的数量。这个下面有中有详细的介绍。下图为它的流程

11、图:3.2.3数量选择界面功能介绍:通过61板上的3个按键(key1,key2,key3)实现数字的输入。输入数字为3位,即 输入范围是从0至999。输入范围可以根据实际应用需要进行修改。进入本功能菜单后,屏幕的上方会显示“add hundry”,表示初始状态下每按一次key1,该数字将增加100。下方显示“000”,表示初始数量为0。如果此时5次key1,则屏幕上的值为“500”,即此时输入数量值是500。key2用于决定每次输入的大小,如按下key2后,上方显示“add ten”表示每按一次key1数字增加10,如果显示“add one”表示每按一下key1增加1。当某一位上的数为9时,再

12、增加1后则重新置为0。在进入“add one”之后想对百位或十位数字进行修改,可以按key2进入其他模式进行输入。当输入结束后,按key3退出数量输入功能,进入发送功能。流程图:开始Add hundry加100Key1Key3按键Key2Add ten加10Key1Key3按键Key2Add one加1Key3Key1按键结束Key2变量说明:unsigned data3用于存放百位,十位和个位数的值,方便对于各位数的操作和输出显示。每一位的初始值为0,最大值是9,如果达到9之后再发出1请求(按下key1),则该位的值重新置为0。char show4 前三位分别存放data中的三个数字对应的字

13、符,即0-9,第四位存放的是0,因为数量值是以字符串的形式输出到显示屏,而字符串的需要以0为结束标志。char display315 用于存放输入模式的提示信息,包括“add hundry”,“add ten”,“add one”。int i 用于计算当前所处的输入模式,当i=0,处于“add hundry”模式,当i=1,处于“add ten”,当i=2,处于“add one”模式。i的初始值为0,当key2被按下,如果i值为2,则将i置为0,否则将i值加1。函数说明:delay() 延时函数,由于按下按键后会产生抖动,即按下一次会产生多个按键信号,程序也会相应的做出多次处理,这样就无法得到

14、预期的效果。为了获取稳定的按键信息,须要避开这段抖动期。这时就要使用这个延时函数。intputdata()实现数量的输入和数据发送。初始模式为“add hundry”,数量的初始值为“000”。按下key2键选择输入模式,key1键决定每一位数的大小。由于按键的数量限制,本功能只能单向递增,所以函数循环输入的方式,即在到达极限值的时候再增加就会回到初始值。如在达到“add one”模式后,再按下key2键就会回到“add hundry”模式;在按下key1键后如果该位数已经为9,则会被重新置为0。数据输入结束后,按下key3键退出,程序会将输入的各位数字分别发到计算机端,由计算机端完成对数据的

15、处理。之所以将数字分位发送,是因为发送模块最大只能发送8位二进制数,分开发送可以消除对输入数据极限值的限制。发送结束后退出本函数。3.3.3发送功能发送前首先配置接收端(PC)的地址Address5=0x00, 0x00, 0x00, 0x00, 0x01;调用驱动的nRF2401_Intial()、nRF2401_Mode(1)、nRF2401_SetAddress(Address,5)进行无线初始化。在数量选择菜单按下key4后,触发发送函数nRF2401_SendByte(),把商品编号和数量一起发送(用Delay函数进行延时)。为了演示,约定商品编号为0106,分别对应6种不同的教材。

16、函数nRF2401_SendByte():void nRF2401_SendByte(unsigned int TxData)unsigned int i;/*P_IOA_Dir |= DATA;*P_IOA_Buffer |= CE;Delay_Us(10);/for(i=0; iAddrByteCnt; i+)nRF2401_WriteByte(AddrBufferi);nRF2401_WriteByte(TxData);*P_IOA_Buffer &= CE;*P_IOA_Buffer &= DATA;Delay_Us(200);参数TxData为传进来的数据(字节)。CE宏定义为无线射

17、频的使能端,偏移地址为0x0200,对应IOA9接口。调用函数nRF2401_WriteByte(),先把接收端地址写入缓冲,然后再把数据TxData写入缓冲(nRF2401数据报格式)。最后实现发送的功能。3.3.4 接收端PC由于PC端不涉及嵌入式的开发,此处只做简单说明。接收端采用NewMsg公司的无线射频产品NetUSB2401,用的芯片与嵌入式设备相同,是nRF2401。在程序初始化的时候,按照嵌入式设备端的设置,把通道、收发频率、接受宽度设为一致,然后设置好地址。根据发送端发来的商品编号从数据库获取当前数量,然后加上发送端发来的数量,最后更新数据库。运行界面如下:4. 经验总结 组

18、员:*本次设计是基于硬件的软件编程,主要的工作是熟悉硬件的工作机制,以及系统自带的函数的功能和应用。在本功能的实现中,主要的困难是硬件的限制(输入按键较少),和按键抖动的消除。为了克服按键少的问题,我们利用按位递增循环输入的方法,这在前面已经提到,这样可以充分利用现有的硬件资源。而按键抖动问题,由于一开始被忽略,导致程序调试过程中出现意想不到的错误。在发现这个问题后,我们选择用添加延时来去除抖动。由于系统自带的延时函数效果不明显,所以重新编写了一个延时函数delay()。组员:*1:这次开发我花最多的时间并不是在开发上,而是在看一个一个的源码或者说是事例上.刚开始的时候真的不知道怎么去做,看了

19、别人做的后,自己才感觉到开发也并不是那么的难.才知道一切问题都有解决的办法。2:我这次的主要工作就是要做一个菜单。由于我们的显示屏和例子中的不一样,所以我们自己找了不少资料,菜单主要是结合了按键和显示这两个功能。我们在如何使用按键以及如何让它显示上找资料。一个个的例子让我知道了按键的工作过程和显示原理,接下做就比较简单了。3:通过这次比较,我感觉我学到了不少知识,不过让我感受最深的是-很多事情看似很难,但只要肯用心支做就一定可以做好。组员:*第一个感觉时就嵌入式开发,想说爱你不容易。里面涉及太多的硬件知识,这是我们软件工程专业所缺乏的。碰到问题时,首先想到要查找DataSheet,了解每个寄存

20、器的配置究竟代表什么含义。必要的时候,还要翻看PCB图,弄懂接口之间是如何连接的。这很重要,在开发的过程中,一开始,LCD模组和按键老是冲突。后来翻阅PCB图,才发现按键并不是采用中断的模式,而是直接跟IOA的前三位相连。找出问题的所在后,立刻查找DataSheet,为模组不同的接口重新分配引脚。这样问题才得以解决。当然,无线仓库管理解决方案只是一个设想。很多地方我们想到了,但是并没有去实现。例如,嵌入式设备端的产品信息更新功能,语音功能等。但这也只是时间的制约而已。我想,如果我们想去做,就一定能成功,只有想不到,而没有做不到的,尽管途中会碰到种种困难,但是,嵌入式开发的成功,会比任何软件开发的成功更有成就感!而且,那种碰到问题,不断的探索和解决的过程也是很享受的。参考文献:SPCE061A中文编程手册无线传输模组_使用说明书V1.0北京铭正同创科技有限公司MzL02-12864 LCD模组编程手册11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号