沈阳航空航天大学电子信息工程学院毕业设计(论文)
对于路由转发的节点机,我在软件的设计上,简单的说是先让这个路由节点接收到发送端发送的数据,这个数据通过泛洪的方式,将数据发送出去,这时,接收端就可以接收到发送端的数据。
在无线局域网中,之所以要用到路由转发这个功能,是因为发送端和接收端的距离超过了nRF2401本身的传输距离,这样,接收端就不能接收到发送端发送过来的数据。这时,我们就要利用这个路由节点,将数据转发到接收端。
在路由端,我们要完成的软件中最重要的就是接收数据和发送数据。但是在现实的无线局域网中是远远不够的,在现实中的无线路由转发,是要考虑传输路径的。在这条路径中,有着最好的传输效率,最小的误码率。在这条路径的选择上,是需要大量的实验的,这实验数据中,找到这条最好的数据传输路径。
在数据发送的时候,我们需要将发送数据打上标号,这个标号是节点的记号,用来记录这个数据是在那个节点机中发送过来的,在路由端的这个节点机中,也有自己的标号,路由节点接收到数据的时候,这个数据的标号是发送节点的标号,在这时,要判断路由节点是否为目标节点,如果是目标节点,那么就处理这个数据。如果不是目标节点,那么就要将这个数据发送出去,这时,这个数据的标号已经变为了路由节点的标号,在接收端接到的数据,也是这个有路由节点标号的数据。在这个数据的传输上,数据是不变的,变化的只是记录节点的标号,这样,数据在传输的时候,不会发送数据混叠。路由转发的流程图如图4.3所示。
- 26 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
开始 初始化 nRF2401配置 否 接收数据信号DRI是否为1 发送标志位是否为1 否 是 进入接收状态 是 进入发送状态 接收1位数据 否 发送1位数据 是 数据是否接收完毕 否 是 数据校验 数据是否方完毕 是 数据是否正确 否 丢弃接收数据请求
图 4.3 路由转发节点流程图
- 27 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
第5章 调试情况及其排故
在这次毕业设计的调试过程中分为硬件检查、软件调试和软硬件联调三个步骤。系统模拟调试是把已调好的各个模块,按照总体要求连成一个完整的整体。软件部分还要与所设计的硬件系统进行联机调试。在任何一个设计中,电路调试部分能够检验设计方案的可行性和正确性。在这个过程中可能要遇到在设计中没有考虑到的地方,通过调试可以使设计得到更好的补充。
首先是确保硬件的每一个连接都是正确的,没有漏焊和虚焊的情况。还有所用的器件都是正确的。其次,要保证软件的编译能通过,对代码本身来讲是没有错误的。最后完成的是最艰难的工作—软硬件联调。
5.1 硬件调试部分
硬件调试部分主要是检查焊接点和确定各个功能部件无故障,从而保证后续工作的顺利进行。在整个毕业设计中,其实硬件调试部分是非常重要的一个环节,因为当我们在最后的软硬件联调的时候,往往认为问题是软件的问题,而忽略了硬件本身的问题。这个时候我们往往是不停地去解决软件上的问题,殊不知软件本身没有什么问题,而是因为硬件上某个焊接点没有焊接好而造成整个系统不能使用。 5.1.1电源模块的调试
在整个设计系统中,因为nRF2401需要3.3v的电压,而单片机需要5v电源供电,所以我需要三个3.3v和5v的电源模块。因为干电池本身的噪声过大,所以不能用干电池作为单片机的供电系统。而AMS1117是一款很常用的稳压芯片,使用也很简单,如果想要一个5v的稳定电压,只要在AMS1117-5这个芯片的VIN端输入一个大于5v的电源,在VOUT端就可以输出稳定的5v电压。3.3v的电压原理相同。
在电路连接好后,只要用电压表测试VOUT端的电压,就可以确定整个电源模块是否可以正常工作。电源电路输入输出电压如表5.1所示。
- 28 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
表 5.1 电源模块的输入输出电压
模块电压 ams117-5输入端 ams117-5输出端 ams117-3.3输入端 ams117-3.3输出端 第一个稳压模块 5.86v 5.01v 5.01v 3.34v 第二个稳压模块 5.64v 5.03v 5.03v 3.31v 第三个稳压模块 5.73v 5.01v 5.01v 3.32v 5.1.2 nRF2401无线模块
在nRF2401模块中,主要有10个外接引脚,其中: 1管脚和2管脚为电源,需要接入3.3v电压;
3管脚为CE,芯片使能,其中发送模式时高电平>10us,接收模式为高电平,待机模式为低电平;
4管脚为CSN,SPI片选使能,低电平使能; 5管脚为SCK,SPI时钟; 6管脚为MOSI,SPI串行输入; 7管脚为MISO,SPI串行输出; 8管脚为IRQ,中断,低电平使能;
9管脚和10管脚为芯片接地端。在这两个管脚上要分别于单片机和电源共地。 由于nRF2401使用的是模块,所以在nRF2401的硬件模块上,没有什么需要过多调试的东西,只要保证这个模块没有虚焊的情况即可。在检测是否有虚焊的时候,只需要一个万用表,将其打倒二极管档,然后将两个焊点分别用两个表笔相连,如果万用表显示导通,则表明这个nRF2401的模块上是没有虚焊的。
5.2 软件调试部分
首先,确定设计思想和设计方案后,画出各个阶段的流程图,归纳总结各阶段
- 29 -
沈阳航空航天大学电子信息工程学院毕业设计(论文)
流程图所需要的子程序。然后根据流程图编写程序。最后,将编好的程序在keil软件中进行编译调试,观察程序的运行情况。在编译调试的过程中,出现最大的问题是没有定义这样的问题,这里边有两种情况,一个是找不到自己定义的变量,另一个是找不到已经定义好的函数。
对与第一种问题主要是因为在定义变量的时候,取名字不够规范,这样在自己调用变量的时候,有时候会忘掉某个字母或者字母的大小写没有区别好,这个是需要自己在以后编写代码的时候,需要注意的地方,即规范自己的变量名。
对于第二种问题,那就是在自己编写函数的时候,有时候定义了一个或多个形参,但是在调用函数的时候,没有在函数中写入参数,这样也是不对的。
当编译代码没有语法错误的时候,就要考虑代码的结构和语法上了逻辑是否有问题了,这就要通过软硬件联调来实现了。
5.3 软硬件联调部分
nRF2401无线传感器节点机的设计中,最重要的部分是路由转发的功能,但在这之前,我们要完成的是点对点通信、点对多点通信和双机通信。因为只有完成了点对点和点对多点的通信,才能让nRF2401这个无线通信模块完成通信的功能,而双机通信是完成无线路由转发功能的重要组成部分,因为无线路由就是在一个节点上接收到信号后再将数据发送出去,这也就是相当于双机通信的一个过程。
在两个nRF2401无线模块单向发送数据的时候,我们将代码烧写到单片机后,通过一个按键作为外部中断,当检测到按键按下的下降沿的时候,发送数据。
在刚开始的时候,肯定会出现在接收端没有现象的情况,这样就需要我们细心的检查是发送端没能发送数据还是在接收端没能接收到数据。这也是在整个毕业设计中最先要解决的地方,同时也是困难的地方。正所谓万事开头难就是这个道理。因为在这个过程中,我们要完成的是nRF2401的配置,SPI协议和发送和接收数据基本方法。若果没能完成这个任务,那么无法完成整个毕业设计。
在检查到底是那个模块没有工作还是两个模块都没有工作的时候,首先在单片机的一个I/O口上接一个一个发光二级管,当发送模块发送完数据的时候,让这个I/O
- 30 -