计算机科学与技术学院课程设计报告(2013—2014学年第一学期)课程名称:基于WIFI模块的无线数据传输班级:学号:姓名:指导教师:2015年7月课设要求:课题:基于WIFI模块的无线数据传输课题内容:随着科技进步,很多嵌入式设备使用以太网接口实现数据传输,有线方式需布线、使用点不灵活等问题,采用WIFI模块实现无线通信,方便、灵活成为很多嵌入式设备完成数据传输的首选。课题关键是采用WIFI模块实现数据的无线传输,有多种传输方式、应用场合。每组根据兴趣,结合某一背景,提出较有新意的题目。写出项目规划书,实现目标等,并进行答辩,指导教师批准后实施。硬件设备:提供:1个WIFI模块,自制:1个嵌入式采集与控制模块WIFI模块由实验室提供,基础的嵌入式数据采集模块、与WIFI模块通信的接口模块等由学生自行开发,亦可使用单片机课程设计时所用实验板一、设计方向及初步设计流程:用WIFI传输实时温度数据,从温度传感器(用户设备)——单片机——wifi模块——手机显示,即:用户设备是一温度采集器,由单片机完成温度的采集和WIFI模块的控制。手机需要温度数据时,则发送“1”(填写在如图1发送文本框中,点击发送),单片机接收到“1”命令时候则需要将温度数据返回。反之,单片机发送数据手机亦然。图1二、具体方案:元器件:ds18b20、单片机最小系统、wifi模块232-x、max232、RS232、FT232、5v变压器、安卓手机1、传感器的选择:1、1首先我们要确定传感器,这里我们选择了数字式温度传感器DS18B20原因:DS18B20新型单总线数字式温度传感器,集温度测量和A/D转换于一体直接输出数字量,接口几乎不需要外围元件,硬件电路结构简单,传输距离远可以很方便的实现多点测量;与单片机接口几乎不需要外围元件。特点:DS18B20具有以下主要特性(1)单总线接口方式:与微处理器连接时仅需要一条信号线即可实现双向通讯;(2)使用中无需外部器件,可以利用数据线或外部电源提供电能,供电电压范围3.3-5.5V;(3)直接读出数字量,工作可靠,精度高,且通过编程可实现9~12位分辨率读出温度数据,转换12的温度数据最大仅需要750ms;(4)温度测量范围-55℃~+125℃,-10℃~+85℃之间测量精度可达±0.5℃;(5)可设定非易失的报警上下限值,一旦测量温度超过此设定值,即可给出报警标志,通过软件写入用户报警上下限值1、2DS18b20的管脚图、电路连接方式及电源供电选择:图2(a)外部电源供电(注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。)1、3ds18b20工作原理1、3、1ds18b20温度存储形式DS18B20的温度数据用高低两个字节的补码来表示,如图2所示,S=1时表示温度为负,S=0时表示温度为正图3在ds18b20的寄存器中,以补码的形式进行存储温度,如图3,一共2个字节,LSB是低字节,MSB是高字节,寄存器中每个数字如同卡尺的刻度一样分布,图3可以看出,二进制的最低位(2-4)变化1,代表温度变化0.625℃1、3、2ds18b20时序ds18b20的硬件简单,这就增强了程序方面的要求,所以对ds18b20的时序的掌握很重要由于DS18B20采用的是1-Wire总线协议方式,即用一根数据线实现数据的双向传输,单线通信功能是分时完成的,有严格的时序概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)-发ROM操作命令-发存储器操作命令-处理数据。工作时序为:a.初始化时序第一步:拉低DS18B20这个引脚,持续500us;第二步:延时60us;第三步:读取存在脉冲,并且等待存在脉冲结束(ds18b20在第二步之后会自动拉低电平60~240us)b.写时序c.读时序1、3、3RAM存储器操作指令:(1)ReadScratchpad读暂存寄存器:0xBE(2)ConvertTemperature启动温度转换:0x44,当发送一个启动温度转换的指令后,DS18b20开始进行转换注意:若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复、跳过ROM指令、执行读RAM的存储器操作指令、读数据2、程序2、1主程序流程串口初始化——读温度(一直循环)——串口检测到“1”发送当前温度值——显示函数——串口中断,发送数据2、2子程序及函数(1)ds18b20初始化(2)ds18b20读一个字节(3)ds18b20写一个字节(4)读温度(温度转换)(5)串口初始化3、单片机:(1)烧写程序软件:,硬件:FT232(需要下载驱动),STC89C52单片机,单片机最小系统,这一步要注意的点是端口号、芯片类型、单片机冷启动(2)串口通信:单片机与串口的连接是RXD-TXD,TXD-RXD,程序中写串口初始化、中断程序(3)最小系统管脚图:(4)程序:#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^0;unsignedinttemp,temp1,temp2,temper,xs,flag,a,s,cc;ucharcodenumber[]=0123456789;//显示字符voiddelay1(unsignedintm){unsignedinti,j;for(i=m;i0;i--)for(j=110;j0;j--);}voiddelay(unsignedintm){while(m--);}voidInit_DS18B20()//ds18b20复位,检测存在脉冲的信号{unsignedcharx=0;DQ=1;//单片机给高电平delay(8);DQ=0;//单片机给低电平delay(80);DQ=1;//ds18b20自动低电平,表示ds18b20存在delay(4);x=DQ;delay(20);}ucharReadOneChar()//读8位ds18b20,dat为要读的数据{unsignedchari=0;unsignedchardat=0;for(i=8;i0;i--){DQ=0;dat=1;DQ=1;if(DQ)dat|=0x80;delay(4);}return(dat);}voidWriteOneChar(unsignedchardat)//写8位ds18b20,dat为要写的数据{unsignedchari=0;for(i=8;i0;i--){DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat=1;}}voidduwendu(){unsignedchara=0;unsignedcharb=0;Init_DS18B20();WriteOneChar(0xcc);//skiprWriteOneChar(0x44);//温度转换delay(5);Init_DS18B20();WriteOneChar(0xcc);WriteOneChar(0xbe);//从RAM中读数据delay(5);a=ReadOneChar();//低8位b=ReadOneChar();//高8位temp1=(b4)&0x7f;//去除高四位,即正负位temp1+=(a&0xf0)4;//个位temp2=a&0x0f;//小数temp=((b*256+a)4);//整数xs=temp2*0.0625*10;temper=temp+xs;}oidckinit()//串口初始化{TMOD=0x20;//设置定时器1为工作方式2TH1=0xfa;TL1=0xfa;TR1=1;SCON=0x50;PCON=0x80;//波特率加倍EA=1;ES=1;}voidfas(unsignedchardat)//发送数据{ES=0;//串口中断允许位SBUF=dat;while(!TI);TI=0;ES=1;}voidmain(){ckinit();//串口初始化while(1){duwendu();if(flag==1){if(a=='1'){fas(number[temp/10]);//十位fas(number[temp%10]);//个位fas('.');//小数点fas(number[xs%10]);//小数fas('');fas('C');}flag=0;}}}voidser()interrupt4{RI=0;//接收标志位a=SBUF;//接收的数据flag=1;}4、max232:用于ttl-uart电平转换,此次课设单片机与wifi模块电平不同连接方式:txd、rxd与单片机串口连接,9孔与wifi模块连接5、wifi(1)工作模式:透明传输模式,原因:选择透明传输模式,比较简单,不用知道传输的内容是什么,接收到什么传输什么(2)Wifi模块课设有两种,一种wifi232-x(有底板),另一种是wifi232-t(集成的小芯片),wifi232-x相对于集成芯片稳定许多,因为wifi232-t会时常出现搜索不到信号的情况,在调试过程中构成了困难,wifi232-x模块的使用:电源为5v,连接电源后,注意观察板子上的亮灯情况reload,ready,link,电源接通,reload即亮起,等待ready指示灯亮后,表示系统已启动完成,即可在pc机上无线网络搜索该wifi(初始ssid为HF-ALLx-AP),进入网址10.10.100.254,默认用户名和密码均为admin。进入页面可修改wifi模块的参数,比如ssid(同时使用同一种模块的比较多,建议换个专属的名称,也为了避免别人不知道的情况下改了参数,可选择加密具体做法如下),在这个界面还可以修改所需的波特率,最后点击保存,重启wifi模块,之后根据新的ssid重新连接到wifiWifi模块设置图:(3)模块恢复出厂设置如果设置错误,导致模块不能正常工作,可恢复出厂设置。①、在模块工作状态下(Ready灯亮),将模块的Reload引脚拉低一秒(短接到GND或者按Reload按钮),再放开悬空,等待模块重启,即恢复到默认设置。②、登录网页,在模块管理子页面内,有恢复出厂配置按钮。6、串口调试助手这是一个可用来调试单片机和wifi的软件,1、串口调试:首先我们要设置好usb接到PC机上对应的串口的端口,(可通过设备管理器中的端口号查询com)接着设置与串口设备相同的波特率,其他不更改,点击“打开”(可事先在单片机芯片上写好程序,进行通信调试如果能正常显示就表示调试成功,且芯片及程序有用2、网络接收端,设置协议类型为:client,服务器地址wifi模块ip地址:10.10.100.254,服务器端口号:8899,设置完成后,点击连接。在1的基础上不加单片机,而是用rs232将wifi串口连接在pc机上,此时就可以在串口和网络之间进行数据数据收发测试了,串口到网络的数据流向是:计算机串口-模块串口-模块WIFI-计算机网络,网络到串口的数据流向是:计算机网络-模块WIFI-模块串口-计算机串口。如果可以使用,即wifi模块正常7、手机APP调试助手除了计算机上用的串口转网络测试工具外,还有安卓(android)系统下的TCPIP调试助手通过扫描下面的二维码下载到手机安装。保持前面计算机上的测试软件开启状态,链接也依然开启。手机开启WIFI功能,找到并加入HF-A11X的WIFI网络,如上右图在手机上启动有人网络助手软件,切换到TCPClient界面,点击增加,创建10.10.100.254的8899端口的TCP连接,创建成功后,会建立和WIFI模块的TCP连接。如图所示建立连接成功后,手机发送数据,计算机上的串口会收到信息,计算机的串口发送信息,计算机上测试软件的网络部分会收到信息,同时手机上的网络助手也会收到信息。三、ds1