概述
315M无线模块广泛地运用在车辆监控、遥控、家庭防盗系统、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、等领域中。
DFRobot推出的这款315M RF Shield接收摸块能很方便的融入到现有315M无线网络中去,同时模块还集成一个xbee接口,可以为创客们提供更多315M转蓝牙、315M转wifi、315M转zigbee等无线解决方案。
RF Shield可以和使用SC2260、SC2262、PT2260、PT2262等编码芯片为核心的315M传感器、控制器通讯。
技术指标
- 模块接口:Arduino兼容
- 占用端口:数字口3,8,9,10,11
- 工作频率:315MHz
- 工作电流:最大10mA
- 调制方式:ASK
- 解调方式: 超外差式
- 灵 敏 度:典型-102dBm最差-98dBm
- 传输速率:最大9.6kbps
- 接收带宽:±1.25MHz(6dB)
- 天线阻抗:75欧姆
- 解码芯片:SC2272锁存型
- 数据输出:兼容CMOS电平标准
- 扩展接口:xbee接口
- 传输距离:开阔地<50米
- 工作温度:0~+70℃
设置地址码
RF Shield最大拥有8位的三态地址管脚,每个三态地址管脚可设置成三种状态:高电平、低电平、浮空,因此可支持多达6561个地址的编码。每个三态地址管脚的电平设置由短接帽实现。在管脚的上方是L,下方是H。因此,用短接帽短接L和地址管脚,那么此时地址管脚就是低电平。同样的道理,用短接帽短接H和地址管脚,那么此时地址管脚就是高电平。如果不接端帽,此时地址管脚就是浮空状态。
实际使用中,地址码取决于所使用的遥控器的地址码,只有这两者的地址码相同,才有可能进行通讯。**我们的315M金属遥控器的默认地址码是浮空,因此,需要将所有的短接帽拔掉。**您也可以拆开遥控器,通过设置短接焊脚修改遥控器的地址码。
RF Shield的使用
RF Shield采用SC2272为接收解码芯片,SC2272一般是与SC2262配对使用,也可以和其他兼容型号配对使用。RF Shield最大拥有8位的三态地址管脚,可支持多达6561个地址的编码。因此极大的减少了编码的冲突和非法对编码进行扫描以使之匹配的可能性。
为保证SC2272能可靠的接收到SC2262发送的数据,SC2272的振荡频率要与SC2262的振荡频率匹配。最佳的匹配振荡频率是SC2272是SC2262的2倍。振荡频率可以通过振荡电阻的调整作出改变。
用户在购买发射装置和RF Shield配套使用时,需要注意发送装置的发射频率、芯片型号以及振荡电阻是否可选。
在此给出几款兼容型号的发射芯片振荡电阻的匹配参数:
芯片型号 | SC2272(RF Shield) | 发送端 | SC2262 | SC2260 | PT2260 | PT2262 |
---|---|---|---|---|---|---|
振荡电阻值 | 620K(默认阻值) | 匹配阻值 | 4.7M | 12M | 1.2M | 4.7M |
推荐使用我们的金属无线遥控器315MHz(SKU:FIT0355)与本模块配套使用,更加方便快捷!
- 根据遥控器的地址码,通过插拔该模块上A0~A7的短接帽,设置该接收模块的地址码。只有在遥控器和接收器地址码同样的情况下,才有可能接收到数据。金属无线遥控器315MHz(SKU:FIT0355)的地址码为浮空,因此本模块的短接帽需要全部拔去。
- 将该模块上的拨动开关波动到PROG端,烧写示例代码。完成后需要拨动到RUN端。
- 调节将该模块上的接收天线,使之垂直于Arduino板子,增加接收距离。
- 打开串口监视器,按遥控器上的按键,该模块的指示灯会闪烁一次,表明收到遥控器发来的命令。同时,可以在串口监视器上看到遥控器的哪个键按下了。按下的键为高电平“1”
示例代码
/*以下四个管脚定义,对应遥控器上的四个按键(遥控器为推荐的无线遥控器315MHz(SKU:FIT0355))*/
int D1 = 8; //解码芯片数字输出管脚1
int D2 = 9; //解码芯片数字输出管脚2
int D3 = 10; //解码芯片数字输出管脚3
int D4 = 11; //解码芯片数字输出管脚4
int ledPin = 13; //接收指示灯
volatile int state = LOW;
void setup()
{
Serial.begin(9600);
/*以下管脚的顺序分别对应遥控器的4个按键*/
pinMode(D4, INPUT); //分别初始化为输入端口,读取解码芯片输出管脚的电平
pinMode(D2, INPUT);
pinMode(D1, INPUT);
pinMode(D3, INPUT);
pinMode(ledPin, OUTPUT);
attachInterrupt(1, blink, RISING); //数字口3,中断1,对应解码芯片的接收中断管脚
digitalWrite(ledPin, LOW);
}
void loop()
{
if (state != LOW) //如果接收到遥控器的命令,则进入该语句
{
state = LOW;
delay(1); //适当延时,等待管脚电平稳定
digitalWrite(ledPin, HIGH);
Serial.print(digitalRead(D4)); //分别读取解码芯片输出管脚的电平,并打印出来
Serial.print(digitalRead(D2));
Serial.print(digitalRead(D1));
Serial.println(digitalRead(D3));
delay(300);
digitalWrite(ledPin, LOW);
}
}
void blink()
{
state = ! state;
}