智能快递柜资料Word格式文档下载.docx
《智能快递柜资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能快递柜资料Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
智能快递投递箱将快件暂时保存在投递箱内,并将投递信息通过短信等方式发送用户,为用户提供24小时自助取件服务,这种服务模式较好地满足了用户随时取件的需要,受到快递企业和用户的欢迎,为解决快件“最后一公里”问题提供了有效的解决方案。
国家邮政局领导高度关注智能快递投递箱的发展,指示要尽快开展智能快递投递箱相关标准研究工作,以期在发展初期就对智能快递投递箱的使用与管理问题进行研究和规范,以推动这种服务模式规范化、健康化发展。
自2003年以来,随着电子商务的快速发展,物流面临着严峻的考验。
众所周知,淘宝搞的双十一活动,掀起了一股网购大风。
不仅如此,快递包裹也跟着席卷开来。
各地的物流仓库都出现了快递包裹爆仓,出仓的速度远远跟不上进仓的速度。
这种现象的出现与快递配送的“最后一公里”不无关系。
各行各业试图解决这快递“最后一公里”的问题,包括增加配送人员,包裹代收,设立共同配送点等等,不过还是改变不了人等人的局面。
最终,智能快递终端被引用进来。
在国外,24小时自助快递站已经有10多年的发展历史,日本每栋楼宇都有一个标准的配置用来收发快递,操作十分简单,只有像信用卡等贵重或者重要物品一定要送达本人签字,德国、俄罗斯、法国、爱沙尼亚等欧洲国都在使用。
2012年2月至6月,DHL国际快递对瑞士3个不同地点的3台全天候自助包裹终端机进行了测试。
第一台自助包裹终端机于2月安装在苏黎世的一家加油站,已经投入运营,另外两台将安装到瑞士西部地区。
在国内,智能快递终端还处于刚刚起步状态。
不少高新科技公司纷纷推出了各种快递终端。
小部分地区已经出现了智能快递终端的身影,它们分布在大中专院校、企事业单位、社区、写字楼、工厂等地。
给收件用户提供了一个自由便捷的快递服务。
也许智能快递终端不能完美地解决物流的“最后一公里”,但是,可以肯定的是它将会给人们的生活带来极大的便利。
1.3设计研究的要求及能实现的主要内容
智能快递投递箱系统这一核心技术,包括前台站点快件存取和后台中心数据处理两部分。
物联网就是通过红外感应、蓝牙等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络。
有了“物物相连”的网络后还需要依靠先进的信息处理技术。
第2章设计过程及方案
2.1设计方案
系统采用STC89C52单片机板,使用红外线感应模块,按钮矩阵模块,蓝牙模块控制驱动器控制电机转动的不同角度,将齿轮和齿轮条与异步电机练接。
就可以实现齿轮条的转动来控制机械臂的定位。
我们在不同的三个按钮上设施了不同的使异步电机旋转的角度。
有60度,120度,360度。
当操作不同的按钮时三个异步电机就会转动不同角度,机械臂移动到不同位置寻找物品。
2.2设计原理
使用STC89C52单片机,在STC89C52单片机的P1.0-P1.3接步进电机一,P1.4-P1.7接步进电机二,在单片机P0.0-P0.3接步进电机三。
在P2口接矩阵按键,在P3.2接红外遥控,在单片机的P3.1接蓝牙模块的RXD,在步进电机的P3.2口接TXD。
其他引脚接VCC和GND。
第3章硬件电路设计
3.1最小系统设计
1)在STC89C52单片机的P1.0-P1.3接步进电机一
2)P1.4-P1.7接步进电机二
3)在单片机P0.0-P0.3接步进电机三
4)在P2口接矩阵按键,在P3.2接红外遥控
5)在单片机的P3.1接蓝牙模块的RXD
6)在步进电机的P3.2口接TXD。
其他引脚接VCC和GND
3.2重要元器件介绍
3.2.1单片机介绍
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
该单片机具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
3.2.2红外线介绍
红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;
红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。
发射机一般由指令键、调制电路、驱动电路、发射电路等几部分组成。
当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。
3.2.3蓝牙介绍
蓝牙(Bluetooth®
):
是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。
3.2.4步进电机
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。
虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
3.2.5步进电机驱动器
步进电机驱动器是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速和定位的目的。
3.2.6矩阵按键
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
第4章软件设计
软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。
将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。
软件程序:
#include"
reg51.h"
#include<
math.h>
#defineGPIO_KEYP2
#defineconst_interrupt_time792//840us定时值
sfrAUXR=0x8e;
sbitIR_sr=P3^2;
//外部中断口,数据接收口
voiddelay();
voidKeyDown(void);
voidTrunLeftMotor1(unsignedlongangle);
voidTrunRightMotor1(unsignedlongangle);
voidTrunLeftMotor2(unsignedlongangle);
voidTrunRightMotor2(unsignedlongangle);
voidTrunLeftMotor3(unsignedlongangle);
voidTrunRightMotor3(unsignedlongangle);
voidinitial();
//初始化外围
voidInt0();
//外部中断函数
voiddetector_IR();
longunsignedintNumKey=0;
unsignedcharucMotorStep=0;
//被触发的电机动作编号`
unsignedcharucdata;
//从遥控器中接受的编码
unsignedcharbusy=0;
unsignedchard=0;
/*******************************************************************************
*函数名:
main
*函数功能:
主函数
*输入:
无
*输出:
*******************************************************************************/
voidmain(void)
{
SCON=0X50;
AUXR=0x00;
TMOD=0X21;
TL1=0XFd;
TH1=0XFd;
ES=1;
EA=1;
TR1=1;
initial();
while
(1)
{
KeyDown();
detector_IR();
if(NumKey==1)
{
TrunLeftMotor1(60*1);
delay();
TrunLeftMotor2(60*1);
TrunLeftMotor3(360*1);
TrunRightMotor3(360*1);
TrunRightMotor2(60*1);
TrunRightMotor1(60*1);
NumKey=0;
}
if(NumKey==2)
TrunLeftMotor1(60*2);
TrunLeftMotor2(60*2);
TrunRightMotor2(60*2);
TrunRightMotor1(60*2);
if(NumKey==3)
TrunLeftMotor1(60*3);
TrunLeftMotor2(60*3);
TrunRightMotor2(60*3);
TrunRightMotor1(60*3);
if(ucMotorStep==1)
ucdata=0x74;
if(ucMotorStep==2)
if(ucMotorStep==3)
if(d==1)
{
d=0;
if(d==2)
if(d==3)
}
}
voidKeyDown(void)
{
chara=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!
=0x0f)//读取按键是否按下
delay();
if(GPIO_KEY!
=0x0f)//再次检测键盘是否按下
{
GPIO_KEY=0X7F;
switch(GPIO_KEY)
case(0X77):
NumKey=0;
break;
case(0X7b):
NumKey=1;
case(0X7d):
NumKey=2;
case(0X7e):
NumKey=3;
GPIO_KEY=0XBF;
case(0Xb7):
NumKey=4;
case(0Xbb):
NumKey=5;
case(0Xbd):
NumKey=6;
case(0Xbe):
NumKey=7;
GPIO_KEY=0XDF;
case(0Xd7):
NumKey=8;
case(0Xdb):
NumKey=9;
case(0Xdd):
NumKey=10;
case(0Xde):
NumKey=11;
GPIO_KEY=0XEF;
case(0XE7):
NumKey=12;
case(0XEb):
NumKey=13;
case(0XEd):
NumKey=14;
case(0XEe):
NumKey=15;
while((a<
50)&
&
(GPIO_KEY!
=0xf0))//检测按键松手检测
a++;
}
}
voiddelay()
unsignedinti=200;
while(i--);
voidTrunLeftMotor1(unsignedlongangle)
unsignedchartmp;
unsignedcharindex=0;
unsignedlongbeats=0;
unsignedcharcodeBeatCodeLeft[8]={
0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07,0x06};
beats=(angle*4076)/360;
while(beats--)
tmp=P1;
tmp=tmp&
0xF0;
tmp=tmp|BeatCodeLeft[index];
P1=tmp;
index++;
index=index&
0x07;
voidTrunRightMotor1(unsignedlongangle)
unsignedcharcodeBeatCodeRight[8]={
0x06,0x07,0x03,0x0B,0x09,0x0D,0x0C,0x0E};
tmp=tmp|BeatCodeRight[index];