基于LM3S811控制器的易寻设计.docx
《基于LM3S811控制器的易寻设计.docx》由会员分享,可在线阅读,更多相关《基于LM3S811控制器的易寻设计.docx(10页珍藏版)》请在冰豆网上搜索。
![基于LM3S811控制器的易寻设计.docx](https://file1.bdocx.com/fileroot1/2023-1/21/450361ac-2f28-42b1-b809-79cd3f7cec41/450361ac-2f28-42b1-b809-79cd3f7cec411.gif)
基于LM3S811控制器的易寻设计
2011-2012德州仪器C2000及MCU创新设计大赛
项目报告
题目:
基于LM3S811控制器的“易寻”设计
学校:
安阳师范学院
组别:
本科组
应用类别:
低功耗应用类
平台:
Cortex-M
题目:
基于LM3S811控制器的“易寻”设计
摘要:
本项目包含一个基于Cortex-m3的LM3S811控制的无线发射模块,和多个无线接收模块。
要实现用LM3S811控制无线发射模块发出指定无线编码数据,同时用无线接收装置接收并解码,解码后与所发数据匹配的无线接收模块就会产生蜂鸣。
Obstract:
TheprojectincludesawirelesstransmittingandmanywirelessreceivemodulesbasedonthecontrolofLM3s811ofCortex-m3.WeplantousethewirelesstransmittingmoduleofLM3S811totransmitwirelessencodingdatasandatthesametimeusethewirelessreceivertoreceiveanddecodethemtomakethematchingmodulesuttersinging.
一、引言
首先“易寻”的意思就是易于寻找,在现实生活中我们常常会遇到这样的情况:
一件很常见的东西在用到它的时候怎么也找不到,任凭你焦头烂额的翻来翻去,却始终难有“蓦然回首那人却在灯火阑珊处”的霎那惊喜,于是就有了一句俗语,“踏破铁鞋无觅处”,找东西有时真的是难上加难,特别是对很多有健忘症的老人,在那种情况下找东西无疑是一种煎熬。
本系统就是基于这样的背景设计的,目的是为了让找东西不再变的那么困难。
而要达到这样的目的,我们要解决三个问题:
1、所找不到物体在一定的空间范围内位置的不确定性:
基于无线电信号发射时周围信号的无处不在,因此在一定范围内找东西我们选择用让当前所找不到的东西接收无线信号并产生响应的方式来找东西。
2、遗失物体的响应信号可能被阻隔的问题:
响应信号可以是光,声音,震动等。
由于光在白天不明显而且容易不阻隔,而震动耗能太大并且现象可能不明显,因为声音信号在一定范围内难阻隔且效果明显,我们选择用声音做为遗失物品接收到无线信号的相应信号。
3、接收响应模块要粘贴在易遗失的物体上,因此接收模块的大小可能会带来一些使用上不方便的问题。
由于一般易于遗失的物体体积都很小,因此,我们选择用集成电路的模式,尽可能的把接收响应模块做到最小,理想状态下,像纸贴一样又薄又小,这样就可以轻易的贴在容易遗失的物体上,做到轻便易于使用。
但由于我们条件的限制,接收相应模块的集成问题我们在这里不予考虑,只简单给出一点建议。
2、系统方案
本项目的系统模块图如图一:
其中LM3S811通过I/O端口输出一串模拟解码器PT2262的数字编码信号,通过无线发射模块发射出去,在这里无线发射模块我们选择了F05R发射模块,传送无线数据的频率为315MHZ,F0R的传送距离在空旷的地方超过100米,完全能满足我们在室内寻找东西的距离要求。
接收模块我们选择了接收频率为315MHZ的J04V接收模块,并与解码器PT2272连接解码,我们通过LM3S811发送与指定的PT2272地址编码相符的地址编码数据来触发PT2272的VT引脚为高电平,从而控制蜂鸣器发出声音。
………………
图一:
系统模块图
3、系统硬件设计
如图二所示为发射模块的硬件原理图:
图二:
发射模块的硬件原理图
该原理图做为例子,只针对两个接收模块,多模块需要引入键盘输入。
图中四个引脚是来自单片机的控制引脚,VCC向F05R提供电源,PWM2引脚做为通用输入输出端口向F05R输送待发送数据,PC4引脚做为接收模块选择控制端,当开关合上时PC4引脚电平被拉低,软件选择接收模块一发出响应,当开关断开时PC4为高电平,软件选择接收模块二发出响应。
F05R上的ANT为无线发射天线,增加发射距离。
如图三所示为接收模块的硬件原理图:
图三:
接收模块的硬件原理图
该原理图中,接收模块J04V接收到无线信号后把数据通过引脚2输送到PT2272的14引脚,经过与PT2272设定好的地址进行比对,比对完全相符后,PT2272的17引脚会输出高电平,触发蜂鸣器发出声音,比对不符合,无响应。
4、系统软件设计
软件流程图
5、系统创新
“易寻”是一个新的创意,结构简单,生产成本低,携带方便,有利于普及,适用人群广,具有很好的市场前景;虽然是一个传统功能的组合,但这样的运用还没有出现过。
6、测试与结论
测试方法:
发送不同的无线代码,看对应的接收模块能否收到并发出响声。
指标:
每个接收模块都能接到和自己预先设置地址相同的代码信号,并发出声音。
附录一:
图片
无线接收模块
无线发送模块
附录二:
源代码
#include"inc/hw_ints.h"
#include"inc/hw_memmap.h"
#include"inc/hw_types.h"
#include"driverlib/debug.h"
#include"driverlib/gpio.h"
#include"driverlib/sysctl.h"
#include"driverlib/uart.h"
#include"inc/hw_types.h"
#include"inc/hw_gpio.h"
#include"driverlib/sysctl.h"
#include"driverlib/systick.h"
#include"driverlib/interrupt.h"
//#include"drivers/display96x16x1.h"/*MaskforcutdownversionEVK*/
//*****************************************************************************
//
//!
\addtogroupexample_list
//!
UART(uart_echo)
//!
//!
ThisexampleapplicationutilizestheUARTtoechotext.ThefirstUART
//!
(connectedtotheFTDIvirtualserialportontheStellarisLM3S811
//!
EvaluationBoard)willbeconfiguredin115,200baud,8-n-1mode.All
//!
charactersreceivedontheUARTaretransmittedbacktotheUART.
//
//*****************************************************************************
//*****************************************************************************
//
//Theerrorroutinethatiscalledifthedriverlibraryencountersanerror.
//
//*****************************************************************************
#ifdefDEBUG
void
__error__(char*pcFilename,unsignedlongulLine)
{
}
#endif
charasg[128]={1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
charasg0[128]={1,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
//*****************************************************************************
//
//TheUARTinterrupthandler.
//
//*****************************************************************************
void
delay(unsignedlongi)//程序延时
{while(i)
i--;
}
//*****************************************************************************
//
//SendastringtotheUART.
//
//*****************************************************************************
void
UARTSend(constunsignedchar*pucBuffer,unsignedlongulCount)
{
while(ulCount--)
{GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0,*pucBuffer++);
delay(100);
};}
//*****************************************************************************
//
//ThisexampledemonstrateshowtosendastringofdatatotheUART.
//
//*****************************************************************************
int
main(void)
{
intucData;
//
//Settheclockingtorundirectlyfromthecrystal.
//
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|
SYSCTL_XTAL_6MHZ);//配置时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB|SYSCTL_PERIPH_GPIOC);//启用PB口PC口
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_0);//PB0为输出
GPIOPinIntClear(GPIO_PORTB_BASE,GPIO_PIN_0);//禁止PB0口中断
while
(1)
{ucData=GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_4);//读PC4的状态
if(ucData==0)//若PC4为低则启动接收模块1
{
UARTSend((unsignedchar*)asg0,128);
UARTSend((unsignedchar*)asg0,128);
UARTSend((unsignedchar*)asg0,128);
UARTSend((unsignedchar*)asg0,128);
delay(10000);//延时产生嘀嗒的效果
}
else//若PC4为悬空则启动接收模块2
{
UARTSend((unsignedchar*)asg,128);
UARTSend((unsignedchar*)asg,128);
UARTSend((unsignedchar*)asg,128);
UARTSend((unsignedchar*)asg,128);
delay(20000);
}
//
}
//
//LoopforeverechoingdatathroughtheUART.
//
}