暑期实训第四课(无线串口模块进行通讯)

来源:互联网 发布:招聘游戏程序员 编辑:程序博客网 时间:2024/05/29 17:57


无线串口通信

        上周完成了数据采集终端的制作,并且将其收集到的数据成功显示到lcd显示器上,这无疑是件很振奋人心的事情,标志着我们的过程正在一步一步深入着,从放假到现在,历时快一个月了,终于能够做出一点成果出来了。

        E14-TTL100无线串口:

E14-TTL模块是亿佰特电子科技有限公司推出的一款中心频率为 2.4GHz的无线通信模块。它具有 TTL电平的串口通信接口,支持波特率为 1200-115200多达 7种波特率。

E14-TTL采用目前较新的无线射频芯片,以及低功耗高性能单片机构成。用户无需关心复杂的无线通信配置,只需要通过串口连接到设备, 2个模块即可取代一条传统的串口线,省去布线工作,且比传统串口传输距离更远。

E14-TTL可设置为跳频模式,此时提供 3个基本信道供用户设置,模块将使用其余信道进行跳频处理,保证数据可靠传输。其主要有以下几点优点:

1.支持跳频模式,具有极强的抗干扰能力,只能进行点对点通信。

2.高速传输,多种速率下可以进行连续无限制传输,极小的数据延迟。

3.支持定频模式,可以进行广播通信。

4.超远的传输距离,实测最远达到 2.4KM100MW版本)。

E14-TTL100共有6个引脚,分别是:

  1. 电源引脚,3.0-5.5V(可定制 1.8-3.6V版本);

  2. GND引脚,接地,连接到电源参考地;

  3. SET引脚,输入,低电平进入控制模式(用于设置模块参数),悬空或高电平透传模式;

  4. TXD引脚,输出,TTL串口输出,接到外部 RXD

  5. RXD引脚,输入,TTL串口输入,接到外部 TXD

  6. AUX输出引脚,FREQ.7=0:串口输出指示,可用于唤醒和控制外部设备

学习中需要注意:                                                                                                                   

1.以上任何引脚,其输入电平不得高于 5.2V,否则,可能导致模块永久性损坏。 

2.5V 3V系统的 UART接口,均可直接连接,也可以串联 5.1K内限流电阻,或进行不低于2.5V的分压

3.AUX引脚功能详解:

FREQ.7 = 0时,AUX被定义为串口指示,模块 TXD引脚需要向外传输串口数据之前,会将 AUX引脚拉高约 1-2ms,此信号可以用于唤醒外部单片机(单片机必须保证 1ms内完成唤醒),也可以用于外部 485芯片传输方向驱动(需反相)。

        此次我们使用的无线串口共有两种模式,分别是控制模式和透传模式两种。

        控制模式:

SET=0时,模块进入控制模式,在控制模式下,用户可以:设置模块工作参数。这些参数可以掉电保存。

在设置模块参数时,需要借助串口调试助手,我们使用Arduino论坛的串口调试助手来设置参数。

设置步骤如下:

第一步:将主机串口设置为 96008N1

第二步:将 SET引脚拉低,使 SET=0

第三步:等待模块返回“START”字符;

第四步:通过串口发送 5字节设置数据到模块;

第五步:若命令正确,模块返回“OK”,表示设置成功,否则模块返回“ERROR,表示设置失败,参数未得到改变。

第六步(可选):发送读取命令,模块会将用户设置的参数返回。发送一个字节:0xC1即可读取参数。

透传模式:

SET= 1时,模块工作于透明传输模式。当向串口输入数据时,模块会自动转为发射状态,将这些数据通过无线发射出去。发射完毕后,自动转为接收状态。对方模块收到无线数据后,通过串口将这些数据发到主机。模块串口、无线接口工作方式按照控制模式下所设置的参数。

关于数据延迟(重要):无线模块在带来极大便利的同时,也将带来数据延迟。模块收到串口数据,通过无线发射出去,速度取决于用户设定的空中速率,接收方收到后,再通过串口发出。这个过程经历了多个环节,具有几十 ms到几百 ms不等的延迟时间。具体时间取决于用户设置。我司高速 2.4G模块具有极快的速度,用户可根据不同需要进行选取。

  1. 跳频模式:

 跳频模式下,模块接收电流将大大增加,发射电流无影响。

跳频模式是为最大程度保证通信可靠性而设置,所以其通信速率将降低,此时建议单帧连续传输不高于 256字节。

 由于模块将根据一定算法规则,收发过程中,频率将产生变化。变化范围不限于用户设定的基本频点。模块具有一个特定的扩频序列。用户无需关心这个序列。

 跳频模式仅提供 012三个信道,用户输入参数大于 2,将视为等于 2

若用户在同一区域内需要更多的通信工作组,可以通过设置不同地址来进行区分。

通信双方必须同时设置为跳频模式,方可进行相互通信。

B、定频模式

在定频模式下,可以支持点对多点传输,电流等同于跳频模式。

定频模式提供 0-12,共 13个信道供用户使用,用户输入参数大于 12,将视为等 12

定频模式下,数据传输速率将高于跳频模式。

通信双方必须同时设置为定频模式,方可进行相互通信。

在使用过程中,E14-TTL无线串口也有其配套的通信转接板,即USB虚拟串口转接板,RS485转接板和RS232转接板。这里由于我们基本上都是在电脑上对无线串口操作,因此我们采用了USB虚拟串口转接板来进行数据的无线传输,这样接线非常简单,只需要将其对应的引脚连接上,当然,作为接收的装置,其TXDRXD引脚需要和USB虚拟串口转接板上的RXDTXD引脚连接。

当然除此之外,还有直接将无线串口接在Arduino板子上的方法。

        值得一提的是,在一开始我们并不知道这种方法,后来在询问了以为有经验的大神之后我们才掌握这种方法,原理其实也不难。

        在将无线串口接到板子上,其实应该注意到,Arduino板子上的0脚和1脚分别对应TXD输出和RXD输出,因此在实际的接线过程中,不应该将其TXD引脚和RXD引脚反接,而一开始我们没有想到这个原因,反而浪费了我们不少时间。

        另外,在程序方面,因为无线串口其实也实现串口的功能,因此,要使用Arduino板子连接无线串口,只需要向板子里面写入一个空程序就可以了。

无线串口在使用过程中只需要将其当作普通串口使用就可以了,但是问题又出来了。在一块Arduino板子上只有两个0,和1两个硬件连接引脚,而在实际的通信过程中,无线串口的功能除了发送数据之外,还需要有接收数据的功能,因此这就不得不用到Arduino UNO板子的软件模拟串口功能。

一般来说,普片将Arduino板子上的自带的串口称为硬件串口(0引脚和1引脚),而使用SoftwareSerial类库模拟成的串口称为软件模拟串口(软串口)。

SoftwareSerial类库:

SoftwareSerial类库是Arduino UNO板子上集成的类库包含在SoftwareSerial文件里面,在使用时我们只需要调用就可以用了,非常方便。

调用格式:

#include<SoftwareSerial.h>

另外,我们在实际使用中创建一个对象,使用构造函数声明自带的所使用的RXD引脚和TXD引脚,具体格式如下:

SoftwareSerial mySerial = SoftwareSerial( rxPin, txPin);

                  SoftwareSerial mySerial( rxPin, txPin);

        参数:

                  mySerial,用户自定义的对象。

                  rxPin,软件接收引脚。

                  txPin,软件发送引脚。

软串口作为串口用,它与硬串口相同的是,它也需要初始化,其他的串口函数也能直接作用在软串口上。

Listen()函数:

    功能:开启软串口监听状态。

    Aduino在同一时间只能监听一个软串口,当需要监听某一个软串口时,需要调用listen函数来开启监听功能。

    语法:mySerial.listen();

    参数:mySerial,用户自定义的软串口对象。

    返回值:无。

本周主要在研究无线串口,在不断遇到问题,不断解决问题的过程中,不知不觉,自己学的东西越来越多,自己的知识越来越丰富。

0 0
原创粉丝点击