物联网课程设计报告.docx
《物联网课程设计报告.docx》由会员分享,可在线阅读,更多相关《物联网课程设计报告.docx(23页珍藏版)》请在冰点文库上搜索。
物联网课程设计报告
《物联网技术》
课程设计说明书
题目:
物联网终端自制板的优化
院(系):
信息科学与工程学院
专业班级:
电子科学与技术
学生姓名:
学号:
指导教师:
2014年11月24日至2014年12月5日
华中科技大学武昌分校制
物联网技术课程设计任务书
课程设计题目(可任选一):
1.无线传感器数据采集器
2.无线远程控制显示系统
3.简易智能门禁系统
4.公交一卡通刷卡器
课程设计题目内容及具体要求:
(1)无线传感器数据采集器
设计要求:
基于zigbee技术,通过多种传感器采集现场数据,能针对不同的监测对象,选择不同类型的传感器进行数据采集,采集的数据通过zigbee模块由采集节点传送给汇聚节点,汇聚节点能将接收到的数据显示出来;数据的上传可以实现定时上传和主动报警上传等方式,也可由汇聚节点主动调取采集节点的数据。
(2)无线远程控制显示系统
设计要求:
该系统首先实现128*64图形点阵液晶显示器的显示,应可实现各种字符、数字、中英文及图形的任意显示功能;设计无线遥控功能,通过zigbee无线模块可在线下载要显示的信息内容,并可灵活控制显示内容、显示顺序、方向、速度等,利用无线遥控方式可较方便地控制实时翻屏、滚屏等动态显示方式。
(3)简易型智能门禁系统
设计要求:
采用射频识别技术实现小区楼宇的门禁管理,使用非接触式智能IC卡作为出入身份鉴别凭证,可实现对通道进出权限的控制;在异常情况下能实现报警功能;对正常的进出行为应能记录下来以备查询;同时应配备相应显示器件以显示一些提示信息,本系统应能实现多重功能的有机结合和智能控制。
(4)公交一卡通刷卡器
设计要求:
采用射频识别技术,使用非接触式智能IC卡作为公交卡,刷卡器能够对用户卡的合法性进行认证,具备黑名单管理和存储功能,发现非法卡,会立即报警提示;可设定乘车卡类、时段、票价,按照不同单价收费,显示清晰、明亮,信息简单、明了,对不同的状态不同卡类,不同地段能够显示不同的信息,根据不同客户可选用数码管显示或LCD显示;应具备扣费记录查询功能。
三、原始资料
硬件资源:
网蜂zigbee开发板、RFID读写卡模块、各种传感器、空白ID卡、CC2530系列编程仿真器、PC机.
设计指导书:
zigbee实战演练,优灵电子13。
56M模块资料包
四、进程安排
(1)第1天:
任务布置及相关知识讲解
(2)第2-3天:
资料查阅与方案制定
(3)第4—8天:
硬件设计、程序编制与调试阶段
(4)第9天:
撰写设计报告
(5)第10天:
答辩与考核阶段
五、主要参考资料
[1]网蜂科技.Zigbee实战演练。
电子文档,2012。
[2]陈勇。
物联网系统开发及应用实战.南京:
东南大学出版社,2014.
[3]华清远见.物联网应用开发详解——基于ARMCortex—M3处理器的开发设计。
北京:
电子工业出版社,2013。
[4]王建平.RFID应用项目综合实训.大连:
东软电子出版社,2012.
指导教师(签名):
20年月日
1总体设计……………………………………………………………………………页码
1.1××××××××……………………………………………………………………页码
1。
2××××××××……………………………………………………………………页码
2硬件设计…………………………………………………………………………………页码
2.1××××××××……………………………………………………………………页码
2。
2××××××××……………………………………………………………………页码
3软件设计…………………………………………………………………………………页码
3.1××××××××……………………………………………………………………页码
3.2××××××××……………………………………………………………………页码
4系统测试…………………………………………………………………………………页码
总结…………………………………………………………………………………页码
1总体设计
1。
1总体设计思路
本系统采用网蜂Zigbee核心版为通讯手段,将各个传感器有机制地链接在一起,实现传感器可控的数据采集,数据的采集后发送到远程终端,而后以串口通讯为手段与目标机实现系统的融合,从而在目标机上形象而直观地实现数据的显示和系统的结构形态框图,以及历史数据的存储,利于对各个节点以及整个系统所在环境的调查与分析。
1。
2功能图
1.3终端程序流程图
2终端硬件设计
2。
1altium线路图
2.1。
1Zigbee核心板
2。
1.2光照度传感器
2。
1。
3温湿度传感器
2.1.4烟雾传感器
2.1.5热释电传感器
2。
1。
6LCD12864
3软件设计
3。
1修改后的应用END2.c
voidEND_SendOnceNews(uint8*data);
voidEND_GetNumberMessage(uint8*num);//显示编号函数
voidDelayms(uintxms);//i=xms即延时i毫秒
voidGenericApp_SendTheMessage(void);//发送本节点1的网络号
voidGenericApp_SendTheMessagedenity(void);
voidxiachuancanshu(afIncomingMSGPacket_t*pkt);
voidEND_SendOnceMessage(uint8data);
voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)
{
uint8temp;
uint8*str,msg[8]={0};
inti,j,k;
uint16Time=0;
uint8backcmd=0;
//uint8*str=pkt—>cmd。
Data;
//HalLedBlink(HAL_LED_1,2,50,500);
switch(pkt->clusterId)
{
caseCOOR_TO_ONE:
END_GetNumberMessage(pkt->cmd。
Data);
temp=*(pkt-〉cmd。
Data);
osal_nv_write(END_NV_ID,0,1,&temp);
break;
caseCOOR_Keys_CLUSTERID:
break;
caseSAMPLEAPP_COM_CLUSTERID:
break;
caseSAMPLEAPP_CLUSTERID:
break;
caseHUOQUJIEDIANDATA:
END_SendPointToPointMessage();
//HalLedBlink(HAL_LED_4,2,50,500);
break;
caseXIACHUANCANSHU:
//HalLedBlink(HAL_LED_4,2,50,500);
str=pkt->cmd。
Data;
j=*str;
for(i=0;i〈j-1;i++)
{
msg[i]=str[i+2];
HalUARTWrite(0,msg+i,1);
}
for(k=0;k〈j—1;k++)
{
Time=Time*10;
Time+=(int)(msg[k]-0x30);
}
TIMEOUT=Time;
//HalUARTWrite(0,(uint8*)&TIMEOUT,sizeof(TIMEOUT));
osal_nv_write(END_NV_TIME,0,4,&TIMEOUT);
//xiachuancanshu(str);
break;
caseCONTROLNODE:
HalLedBlink(HAL_LED_1,2,50,500);
//LED1=0;
str=pkt-〉cmd。
Data;
j=*str;
for(i=1;i〈=j;i++)
{
HalUARTWrite(0,str+i,1);
}
LED1_ONOFF();
if(P2_1==0)
{
END_data。
ctl_node.light=0x0001;
}
else
END_data。
ctl_node.light=0;
backcmd=1;
AF_DataRequest(&END_DstAddr,&SampleApp_epDesc,
CMDTIMESUCCESS,
sizeof(backcmd),
&backcmd,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS);
//HAL_TURN_ON_LED1();
//HalLedOnOff(HAL_LED_1,HAL_LED_MODE_OFF);
break;
default:
break;
}
return;
}
voidEND_SendPointToPointMessage(void)//终端定时发送点对点的信息
{
//LED1_ONOFF();
DHT11();
END_data.DHT11_value[0]=(uint16)ucharT_data_H;
END_data。
DHT11_value[1]=(uint16)ucharRH_data_H;
wendu[0]=ucharT_data_H/10+0x30;
wendu[1]=ucharT_data_H%10+0x30;
shidu[0]=ucharRH_data_H/10+0x30;
shidu[1]=ucharRH_data_H%10+0x30;
smoke_test();
END_data.smoke_value=smoke_value;
smokes[0]=smoke_value/1000+0x30;
smokes[1]=smoke_value/100%10+0x30;
smokes[2]=smoke_value/10%10+0x30;
smokes[3]=smoke_value%10+0x30;
light_test();
END_data。
Light_value=light_value;
lights[0]=light_value/10000+0x30;
lights[1]=light_value/1000%10+0x30;
lights[2]=light_value/100%10+0x30;
lights[3]=light_value/10%10+0x30;
lights[4]=light_value%10+0x30;
if(KEY==1)
{
lcd_display(1,3,wendu);
lcd_display(2,3,shidu);
lcd_display(3,3,smokes);
}
elseif(KEY==2)
{
lcd_display(3,3,lights);
}
//structend_send_dataEND_data;
//二号传感器:
烟雾传感器
END_data。
sensor_state|=(0x0001〈<3);
////////////////////////////////////////////////////////////////////
if(PEOPLE==1)//三号传感器:
人体红外释热
{
Delayms(10);
if(PEOPLE==1)
{
END_data。
rs_hongwai=1;
}
}
else
END_data。
rs_hongwai=0;
END_data。
sensor_state|=(0x0001<<4);
END_data。
sensor_state|=(0x0001<〈2);
////////////////////////////////////////////////////////////////////////////////
//boolDHT11_state=DHT11_TEST();//四号传感器:
DHT11获取温湿度
/*unsignedcharWenShiDu[2][2];
WenShiDu[0][0]=*(pkt—〉cmd.Data)/10+'0’;
WenShiDu[0][1]=*(pkt—〉cmd.Data)%10+’0’;
WenShiDu[1][0]=*(pkt->cmd。
Data+1)/10+’0';
WenShiDu[1][1]=*(pkt->cmd。
Data+1)%10+'0';*/
//if(DHT11_state)
//{
END_data.sensor_state|=(0x0001<〈5);
//}
//if((ucharT_data_H<1)||(ucharT_data_H〉100)||(ucharRH_data_H<1)||(ucharRH_data_H〉100))
//END_data。
sensor_warn|=(0x0001<〈5);
//END_data.DHT11_value[0]=(uint16)ucharT_data_H;
//END_data.DHT11_value[1]=(uint16)ucharRH_data_H;
//HalUARTWrite(0,&ucharT_data_H,1);
END_data.sensor_state|=(0x0001〈<15);
AF_DataRequest(&END_DstAddr,&SampleApp_epDesc,
END_POINT_TO_POINT_CLUSTERID,
sizeof(END_data),
(uint8*)&END_data,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS);
return;
}
4系统测试
4。
1系统修改后测试效果图
图1物联网系统运行
图2整个终端运行
图3终端未焊接的裸板
图4协调器端的用户界面
图5协调器端的数据采集图形显示
5总结
本次课设遇到如下问题:
a、终端的12864在进入界面时候不能正常显示;
b、DH11引脚和所设计终端板的插槽不符合;
c、存在两种lcd12864一种5v供电一种3.3v,不能通用;
d、厂家所给的资料中所标注的引脚和实际的有差别;
e、拓扑结构需要协调器在ARM11的完成启动后再次重启才能显示拓扑结构;
解决方法如下:
a、原因是lcd12864在进入显示模式后,直接显示。
来不及给lcd12864执行指令的时间,因此显示前加入延时20ms,给lcd执行指令的时间;
b、平常DH11是3脚:
VCCGNDD0,没有NC悬空,因此自己改装DH11以符合读写数据要求;