产品详情
简单介绍:
无线通讯模块:MCU_RF_V1.2
无线通讯模块=无线串口使用说明书:
250信道,250地址
不大于28dbm发射功率
半双工透明传输 无线应用 简单有效
无线爱好者得福音,提供全部技术支持
代替232、485等传统有线方案
彻底解决有线方案施工繁琐、设备后期维护成本高等难题
更大功率模块或其他要求请来电,我司可定制
详情介绍:
无线通讯模块MCU_RF_V1.2
无线通讯模块=无线串口使用说明书
无线通讯模块主要技术参数:
Ø 250信道,250地址
Ø 不大于28dbm发射功率
Ø 半双工透明传输 无线应用 简单有效
Ø 无线爱好者得福音,提供全部技术支持
Ø 代替232、485等传统有线方案
Ø 彻底解决有线方案施工繁琐、设备后期维护成本高等难题
Ø 更大功率模块或其他要求请来电,我司可定制
长沙尊龙凯时电子有限公司/长沙双能电子科技有限公司
电话:0731-83520730/83520732/85862870/84167806 / 84167808
传真:0731-84167807/85862870
地址:长沙桐梓坡西路229号麓谷国际工业园A1栋三楼
网址:http://www.sunman.cn/,http://www.sunneng.com.cn/
Ø MCU_RF_V1.2外形图
如模块外观因设计有所改变,请以实际产品为准。
Ø 尺寸
² 模块长*宽*厚 30*20*2
² 与MCU_RFB_V1.2模块引脚完全兼容
Ø 模块介绍
1、配置我司的简易天线,离地面高于1.2米的地方,工作频率433MHz,空中速率20Kbps,(VCC输入为7.5V),空旷地实测有效通信距离可达800m,1200m仍有信号(如降低空中速率或更换高增益天线,有效通信距离还可增大)。
2、基础载波频率为433MHz,可通过串口命令选择不同信道和地址,适合多节点的特殊场合。
3、串行接口:TTL电平,8N1模式,默认波特率为9600bps。
4、信道:通过配置可提供250个信道,信道选择和地址选择配置相同的两个模块才能正常通讯。
5、地址:通过配置可提供250个不同地址,信道选择和地址选择配置相同的两个模块才能正常通讯。
6、透明数据传输:提供透明的数据接口,能够适应任何标准或非标准用户协议,自动过滤掉空中产生的噪声信号和假数据,即发及所收。
7、智能数据控制:可无限制连续发送数据,即使空中为半数工数据传输,用户也无需多余的编程操作,只需从串口接收/发送即可,其余空中收/发、网络连接、数据应答、数据重发等,模块自动完成。
8、宽电压、低功耗:模块3.3V和3.3V~8V双电源供电,接收电流小于20mA,发射电流请参照电流与VCC电压对照表。
9、高可靠性、体积小:嵌入式高速单片机和高性能射频芯片,外围电路少,可靠性高,故障率低,并有看门狗实时监控,即使射频芯片**扰(如雷击等)也可重新启动,改变目前无线通讯行业的致命问题,使该产品永不死机。
Ø 应用
² 工业遥控、遥测
² 自动化数据采集
² 无线数据传输
² 楼宇自动化、安防、机房设备监控、门禁系统
² 汽车检测设备
² 互动节目表决设备
² 政府路灯节能设备
² 工业控制、银行系统等
Ø 引脚说明
引脚 | 方向 | 说明 |
1、GND | 输入 | 电源地 |
2、VCC33 | 输入 | 3.3V电源输入(3.3-3.6) |
3、CD | 输入 | 命令/数据输入选择,低电平为命令,高电平为数据 |
4、NC | -- | 空,模块定制预留接口 |
5、NC | -- | 空,模块定制预留接口 |
6、NC | -- | 空,模块定制预留接口 |
7、NC | -- | 空,模块定制预留接口 |
8、NC | -- | 空,模块定制预留接口 |
9、NC | -- | 空,模块定制预留接口 |
10、NC | -- | 空,模块定制预留接口 |
11、NC | -- | 空,模块定制预留接口 |
12、NC | -- | 空,模块定制预留接口 |
13、NC | -- | 空,模块定制预留接口 |
14、NC | -- | 空,模块定制预留接口 |
15、RXD | 输入 | 串行数据输入 |
16、TXD | 输出 | 串行数据输出 |
17、GND | 输入 | 电源地 |
18、VCC | 输入 | 3V~8V电源输入 |
19、RF | 输入/输出 | 天线接口 |
Ø 电气特性
典型参数 | 数值 | 单位 |
工作电压VCC33 | 3.3-3.6 | V |
工作电压VCC | 3-8 | V |
各IO口操作电压 | 3.3-3.6 | V |
温度范围 | -40-70 | ℃ |
工作湿度 | 10-90 | % |
工作频率 | 433 | MHz |
发射功率 | <=28 | dbm |
空中速率 | 20 | Kbps |
发射电流 | 90-250 | mA |
接收电流 | 20 | mA |
*高灵敏度 | -110 | dbm |
串口速率 | 9600 | bps |
Ø 发射电流与VCC电压对照表
VCC(V) | Pout(dbm) | 发射电流(mA) |
3.0 | 21.50 | 90 |
3.6 | 22.98 | 111 |
4.5 | 24.61 | 132 |
5 | 25.34 | 142 |
6 | 26.52 | 161 |
7 | 27.33 | 176 |
7.5 | 28.11 | 185 |
8 | 28.51 | 204 |
Ø 使用说明
1、命令流程及命令列表
模块可以输入命令以读取或改变运行参数,输入命令流程如下:
1)、将C/D脚拉低,进入命令状态
2)、通过串口连续的发送命令数据包
3)、等待串口返回
4)、将C/D脚拉高,进入正常数据传输状态
一条完整的命令数据包包含8个字节:
字节 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
含义 | 包头 | 包头 | 命令字 | 数据 | 数据 | 数据 | 数据 | 和校验 |
包头:MCU向模块发送命令包时,固定为0x24,模块返回时固定为0x25;
命令字:不同的命令有着不同的命令字,参照命令列表;
数据:要传送的命令数据或模块返回的命令数据,参照命令列表;
和校验:除和校验字节外所有字节累加和,取低8位。
注意:
1)、模块以数据超时(每个连续的数据之间不超过30ms)方式判断数据包是否传送完毕,因此一次数据包的传送必须是连续不间断的,MCU也可以数据超时方式接收模块返回的数据包;
2)、不同的命令执行时间不同,一次命令数据包发送完毕后,必须等待模块返回或等待命令执行超时才能启动下一次的命令传送,否则可能出现不可预料状况,所有命令执行等待时间小于100ms;
3)、在模块返回之前,CD脚不能拉高,否则可能出现不可预料状况;
4)、如遇到不可解析的命令数据包或命令执行失败,模块将返回命令解析错误数据包;
5)、模块出厂默认使用信道0、地址0,建议使用前先读取模块当前的信道值和地址值,根据命令不同,可以选择设置参数是否需要掉电保存;
6)、模块在命令状态(即CD脚拉低),不会接收无线数据。
命令数据包列表:
含义 | 数据包格式 | 备注 | |
设置信道和地址(参数掉电不保存) | MCU至模块 | 0x24 0x24 0x01 信道值地址值 0x00 0x00 和校验 | 信道值、地址值取值范围 0x00~0xf9 |
模块返回 | 0x25 0x25 0x01 信道值地址值 0x00 0x00 和校验 | ||
读取信道和地址 | MCU至模块 | 0x24 0x24 0x02 0x00 0x00 0x00 0x00 和校验 | |
模块返回 | 0x25 0x25 0x02 信道值地址值 0x00 0x00 和校验 | ||
读取上次数据传输无线信号强度 | MCU至模块 | 0x24 0x24 0x03 0x00 0x00 0x00 0x00 和校验 | 测试,信号强度根据LQI和 RSSI计算 |
模块返回 | 0x25 0x25 0x03 LQI RSSI 0x00 0x00 和校验 | ||
设置信道和地址(参数掉电后保存) | MCU至模块 | 0x24 0x24 0x04 信道值地址值 0x00 0x00 和校验 | 信道值、地址值取值范围 0x00~0xf9 |
模块返回 | 0x25 0x25 0x04 信道值地址值 0x00 0x00 和校验 | ||
复位模块 | MCU至模块 | 0x24 0x24 0xfe 0x00 0x00 0x00 0x00 和校验 | 特殊情况下使用 |
模块返回 | 0x25 0x25 0xfe 0x00 0x00 0x00 0x00 和校验 | ||
命令解析错误返回 | 模块返回 | 0x25 0x25 0xff 0x00 0x00 0x00 0x00 和校验 |
举例:
如将信道和地址修改为0x18、0xF3,并且掉电后不保存,操作步骤如下:
1)、将C/D脚拉低,进入命令状态
2)、通过串口发送命令
0x24 0x24 0x01 0x18 0xF3 0x00 0x00 0x54
3)、等待串口返回
0x25 0x25 0x01 0x18 0xF3 0x00 0x00 0x56
4)、将C/D脚拉高,进入正常数据传输状态
2、上电
模块上电后需要等待不小于5ms才能操作。
3、典型连接示意图
如果需要控制模块加电和断电以降低功耗,只需控制VCC33的通断即可。
4、与电脑连接示意图
Ø 示例代码
/********************************************************************
;copyright :SN.LTD
;filename :main.c
;mcu :STC12LE5204
;crystal :12MHZ
;startdate :2011.6.11
;enddate :
;writeby :liubo
;revision :A
;describe :模块通信测试
;notice :
;complier :Keil C
;********************************************************************
; --------------------------------
; GND |1 GND RF 19 |
; VCC33 |2 VCC33 |
; P1.0 |3 CD |
; |4 |
; |5 |
; |6 |
; |7 |
; |8 |
; |9 |
; |10 |
; |11 |
; |12 |
; |13 |
; |14 |
; TXD |15 RXD |
; RXD |16 TXD |
; GND |17 GND |
; VCC |18 VCC |
; --------------------------------
;
;********************************************************************/
#include "STC.h"
#include <intrins.h>
sbit CD = P1^0;
unsigned char RX_Buf[64];
unsigned char RX_Count;
/*----------------------------------------------------
函数名: delay_5us
返回值: 无
参 数: i,延时计数
功 能: 5us延时
----------------------------------------------------*/
void delay_5us(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=3;j>0;j--);
}
/*----------------------------------------------------
函数名: UartInit
返回值: 无
参 数: 无
功 能: 初始化串口,19200,8N1
----------------------------------------------------*/
void UartInit(void) //19200bps@12MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //**定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xD9; //设定定时初值
TH1 = 0xD9; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/*----------------------------------------------------
函数名: com_interrupt
返回值: 无
参 数: 无
功 能: 串口中断处理
----------------------------------------------------*/
void com_interrupt(void) interrupt 4
{
if(_testbit_(RI)) //如果是串口接收引发的中断
{
RX_Buf[RX_Count] = SBUF;
RX_Count++;
}
else
{
}
}
/*----------------------------------------------------
函数名: Send_Char
返回值: 无
参 数: unsigned char
功 能: 通过串口发送一字节数据
----------------------------------------------------*/
void Send_Char(unsigned char buffer)
{
ES = 0;
SBUF = buffer;
while(!TI); //等待发送完成
TI = 0;
ES = 1;
}
/*----------------------------------------------------
函数名: Send_buf
返回值: 通过串口发送的字节个数
参 数: buffer,要发送的数据缓冲,i,要发送的数据个数
功 能: 通过串口发送一字节数据
----------------------------------------------------*/
unsigned char Send_buf(unsigned char *buffer,unsigned short i)
{
unsigned short j;
if(i==0)
return 0;
for(j=0;j<i;j++)
{
Send_Char(*(buffer+j));
}
return j;
}
void get_and(unsigned char * buf,unsigned char count)
{
unsigned char i,j;
j = 0;
for(i=0;i<count;i++)
{
j += buf[i];
}
buf[i] = j;
}
unsigned char check_and(unsigned char *buf,unsigned char count)
{
unsigned char i,j;
j = 0;
for(i=0;i<count;i++)
{
j += buf[i];
}
if(j==buf[i])
{
return 1;
}
else
{
return 0;
}
}
void main(void)
{
unsigned char buf[8],i;
for(i=0;i<64;i++)
{
RX_Buf[i] = 0;
}
RX_Count = 0;
delay_5us(1000); //上电延时5ms
UartInit();
CD = 0; //命令输入状态
buf[0] = 0x24;
buf[1] = 0x24;
buf[2] = 0x01;
buf[3] = 0x01;
buf[4] = 0x01;
buf[5] = 0;
buf[6] = 0;
get_and(buf,7);
Send_buf(buf,8); //发送命令,设置信道1,地址1
RX_Count = 0;
while(!(RX_Count==8));
if(!check_and(buf,7))
{
//错误处理
}
if((RX_Buf[0]!=0x25||(RX_Buf[1]!=0x25))
{
//错误处理
}
if(RX_Buf[2]!=0x11)
{
//错误处理
}
if(RX_Buf[3]!=0x01)||(RX_Buf[4]!=0x01))
{
//错误处理
}
CD = 1; //设置命令完成,数据输入状态
Send_buf("this is test!",13); //发送数据
while(1);
}
Ø 建议及注意事项
1、说明书描述的通信距离均为实测,无线通信距离受天线、遮挡物、数据速率等因素影响很大,如有特殊要求,请联系本司;
2、无线通信为半双工,不建议同时向成对模块发送数据,不建议连续对模块发送大量数据,建议每次发送数据不超过1024字节;
3、空中存在大量电磁杂波,虽然模块做了滤波处理,但不能保证将所有杂波滤掉,有可能在串口输出无用数据,建议按照一定格式编排数据;
4、成对模块使用*小间距建议不小于50cm,距离太近,容易造成信号阻塞;
5、应用程序和引脚与MCU_RFB_V1.2完全兼容。