315Mhz、433Mhz无线遥控信号的解码分析和模拟

摘要

前段时间学习无线电的同时了解到arduino是作为技能尚未成熟技术宅的我继树莓派又一个不错的选择。于是花了200元购得3块arduino开发板(2*nano&1*uno)和其他传感器等,同时看到了315M超再生模块,因为玩无线电的都知道315M是汽车遥控器,防盗闸门,路桥系统等最常用的信号频率,所以我就毫不犹豫的下单了。然后就有了今天的成果。Freebuf也有不少此类文章,关于315,433的解码我已掌握很多方法(其实使用SDR是个不错的选择),对滚码我也有一定研究和破解,本文步骤详细,思路明确,希望对大家有用。对arduino和315模块熟悉的可以直接进入第三步。

关键词:315M超再生模块、arduino。

引言:315MHz遥控器使用广泛,学习和深入了解其原理和实际操作,在获得无限乐趣的同时,可以学会防止自己的车被盗,并可以自己开发更安全的遥控锁设备,在做本项目的过程中我深刻体会到315M遥控系统的不安全性是个严重的问题,主要表现在315遥控系统解码简单,发射条件简单,易拷贝。下面是我在此次学习研究中得到的一些浅陋知识,在此详细描述。

以下是本次学习的原理框架:

框图说明:接收端接收信号,由arduino单片机解码,并将解码信息通过蓝牙发送到手机,在手机蓝牙串口监视器显示(解码过程);手机发送24位遥控码到单片机,单片机将24位遥控码通过发射端发出,用于遥控模拟接收端通过接收端PT2272芯片解码后在LED信号灯得到反馈,模拟接收端由单片机直接供电,发射端发出的信号也可直接有其他遥控接收端接收达到其他目的。

一、基础知识介绍:

1、Arduino介绍:

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队最早于2005年冬季开发。其成员包括Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。

它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。(摘自百度百科)

二、硬件介绍:

1、Arduino开发板

Arduino是开源硬件中最受IT行业,技术宅,学生喜爱的单片机开发板,其编程语言使用C语言,并且不像C51单片机的编程语言那么复杂,所以对于单片机的初学者来说无疑是最好的选择,本课题为简化实验流程,缩短开发时间,所以选择了简单却强悍的arduino单片机开发板,arduino开发板有很多硬件平台,常见的 arduino有以下两种:

(1) arduino UNO (是本文使用的arduino板卡)  (2)arduino NANO

2、315M模块如图所示,分为发送端(右)和接收端(左)。

3、用于模拟的遥控器和接收机

发射模块PT2262

接收模块PT2272

4、串口蓝牙模块

串口蓝牙模块直接使用蓝牙设备连接并通过接收ASCII码并以串口数据的形式传送至单片机,单片机将数据处理后做出固定反馈,型号为HC-06的蓝牙串口模块的默认名称为“ HC-06“,默认连接密码为“0000”,手机使用蓝牙调试助手等APP 可直接连接并可与手机直接通信,arduino单片机可直接与电脑进行串口通讯,但为了随时演示操作,使用手机直接通讯使操作更为方便,HC-06实物图如下:

三、解码和模拟

1、连接实物图:

实物图说明:左上角是蓝牙模块HC-06用于手机端连接控制,左边是315接收解码板以及配备遥控器,解码板由arduino供电,连接了5个LED信号灯用于接收的演示,中间是315M超再生模块的发送端和接收端 ,右边是arduino UNO 开发板。

2、315M超再生模块的发送端和接收端连接原理图

3、模拟测试效果描述:

串口发送A,B,C,D控制发送单次24位遥控二进制码,实现LED编号A,B,C,D的闪烁;

串口发送a,b,c,d控制连续发送24位遥控二进制码,实现LED编号A,B,C,D的常亮。

串口发送除以上任意命令实现LED的关闭。

四、解码验证及源代码

1、解码验证

当按下遥控器A键

●手机串口监视器得到的遥控码为

“010101010101010100001100”

●专业解码器显示的遥控码如下图,实际为24位码(我开始认为最后一位为解码器设计问题所导致的多余位,没有最后一位也可以重放,但后来的学习中我发现好多解码方式都保留了最后一位,实际的信号波形中并没有最后一位的高电平出现,所以第25位应该是“0”,对于这个问题我还是有疑惑,希望大家帮忙解释)

●逻辑分析仪分析结果

根据以上三组数据对比,验证单片机解码没有任何问题。

2、arduino源代码如下:

/*本作品使用的例程中包含RCSwitch库文件用于信号的解码和编码发送*/ #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() {   Serial.begin(9600); //串口打印命令帮助信息  Serial.print("HELP:A-flash the lamp A\n     B-flash the lamp B\n     C-flash the lamp C\n     D-flash the lamp D\n");   Serial.print("     a-open the lamp A\n     b-open  the lamp B\n     c-open the lamp C\n     d-open  the lamp D\n\n");     mySwitch.enableReceive(1);   mySwitch.enableTransmit(10);}2 void loop() {     if(mySwitch.available())     {     output(mySwitch.getReceivedValue(),mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(),mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());    mySwitch.resetAvailable();     }   /* Same switch as above,but using binary code */   if(Serial.available()>0)//如果串口有数据进入的话   { delay(10);           //延时50 可以一次性发送多个命令    char M=Serial.read();//每次读一个字符,是ASCII码的    if(M==‘A‘)     {   Serial.print("Thecommand is A\n");  mySwitch.send("010101010101010100001100");//遥控器-A   Serial.print("      OK!!! The LED A has been DONE\n");     }        if(M==‘a‘)     {      Serial.print("The command is a\n");      Serial.print("      OK!!! TheLED A has hlod ON\n");      while(Serial.available()<=0)       {       mySwitch.send("010101010101010100001100");//遥控器-A 按下不放       }     }   if(M==‘B‘)     {   Serial.print("Thecommand is B\n");  mySwitch.send("010101010101010111000000");//遥控器-B   Serial.print("      OK!!! The LED B has been DONE\n");     }      if(M==‘b‘)     {      Serial.print("The command is b\n");       Serial.print("      OK!!! The LED B has hlod ON\n");      while(Serial.available()<=0)       {       mySwitch.send("010101010101010111000000");//遥控器-B 按下不放       }     }   if(M==‘C‘)     {   Serial.print("Thecommand is C\n");  mySwitch.send("010101010101010100000011");//遥控器-C   Serial.print("      OK!!! The LED C has been DONE\n");     }          if(M==‘c‘)     {      Serial.print("The command is c\n");      Serial.print("      OK!!! TheLED C has hlod ON\n");      while(Serial.available()<=0)       {       mySwitch.send("010101010101010100000011");//遥控器-C按下不放       }     }   if(M==‘D‘)     {   Serial.print("Thecommand is D\n");  mySwitch.send("010101010101010100110000");//遥控器-D   Serial.print("      OK!!! The LED D has been DONE\n");     }          if(M==‘d‘)     {      Serial.print("The command is d\n");      Serial.print("      OK!!! TheLED D has hlod ON\n");      while(Serial.available()<=0)       {       mySwitch.send("010101010101010100110000");//遥控器-D按下不放       }     }   } }

在整个过程中为了研究方便用到汽车遥控码解码器,以方便对本次实验解码的正确性进行校验。



摘要

前段时间学习无线电的同时了解到arduino是作为技能尚未成熟技术宅的我继树莓派又一个不错的选择。于是花了200元购得3块arduino开发板(2*nano&1*uno)和其他传感器等,同时看到了315M超再生模块,因为玩无线电的都知道315M是汽车遥控器,防盗闸门,路桥系统等最常用的信号频率,所以我就毫不犹豫的下单了。然后就有了今天的成果。Freebuf也有不少此类文章,关于315,433的解码我已掌握很多方法(其实使用SDR是个不错的选择),对滚码我也有一定研究和破解,本文步骤详细,思路明确,希望对大家有用。对arduino和315模块熟悉的可以直接进入第三步。

关键词:315M超再生模块、arduino。

引言:315MHz遥控器使用广泛,学习和深入了解其原理和实际操作,在获得无限乐趣的同时,可以学会防止自己的车被盗,并可以自己开发更安全的遥控锁设备,在做本项目的过程中我深刻体会到315M遥控系统的不安全性是个严重的问题,主要表现在315遥控系统解码简单,发射条件简单,易拷贝。下面是我在此次学习研究中得到的一些浅陋知识,在此详细描述。

以下是本次学习的原理框架:

框图说明:接收端接收信号,由arduino单片机解码,并将解码信息通过蓝牙发送到手机,在手机蓝牙串口监视器显示(解码过程);手机发送24位遥控码到单片机,单片机将24位遥控码通过发射端发出,用于遥控模拟接收端通过接收端PT2272芯片解码后在LED信号灯得到反馈,模拟接收端由单片机直接供电,发射端发出的信号也可直接有其他遥控接收端接收达到其他目的。

一、基础知识介绍:

1、Arduino介绍:

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队最早于2005年冬季开发。其成员包括Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。

它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。(摘自百度百科)

二、硬件介绍:

1、Arduino开发板

Arduino是开源硬件中最受IT行业,技术宅,学生喜爱的单片机开发板,其编程语言使用C语言,并且不像C51单片机的编程语言那么复杂,所以对于单片机的初学者来说无疑是最好的选择,本课题为简化实验流程,缩短开发时间,所以选择了简单却强悍的arduino单片机开发板,arduino开发板有很多硬件平台,常见的 arduino有以下两种:

(1) arduino UNO (是本文使用的arduino板卡)  (2)arduino NANO

2、315M模块如图所示,分为发送端(右)和接收端(左)。

3、用于模拟的遥控器和接收机

发射模块PT2262

接收模块PT2272

4、串口蓝牙模块

串口蓝牙模块直接使用蓝牙设备连接并通过接收ASCII码并以串口数据的形式传送至单片机,单片机将数据处理后做出固定反馈,型号为HC-06的蓝牙串口模块的默认名称为“ HC-06“,默认连接密码为“0000”,手机使用蓝牙调试助手等APP 可直接连接并可与手机直接通信,arduino单片机可直接与电脑进行串口通讯,但为了随时演示操作,使用手机直接通讯使操作更为方便,HC-06实物图如下:

三、解码和模拟

1、连接实物图:

实物图说明:左上角是蓝牙模块HC-06用于手机端连接控制,左边是315接收解码板以及配备遥控器,解码板由arduino供电,连接了5个LED信号灯用于接收的演示,中间是315M超再生模块的发送端和接收端 ,右边是arduino UNO 开发板。

2、315M超再生模块的发送端和接收端连接原理图

3、模拟测试效果描述:

串口发送A,B,C,D控制发送单次24位遥控二进制码,实现LED编号A,B,C,D的闪烁;

串口发送a,b,c,d控制连续发送24位遥控二进制码,实现LED编号A,B,C,D的常亮。

串口发送除以上任意命令实现LED的关闭。

四、解码验证及源代码

1、解码验证

当按下遥控器A键

●手机串口监视器得到的遥控码为

“010101010101010100001100”

●专业解码器显示的遥控码如下图,实际为24位码(我开始认为最后一位为解码器设计问题所导致的多余位,没有最后一位也可以重放,但后来的学习中我发现好多解码方式都保留了最后一位,实际的信号波形中并没有最后一位的高电平出现,所以第25位应该是“0”,对于这个问题我还是有疑惑,希望大家帮忙解释)

●逻辑分析仪分析结果

根据以上三组数据对比,验证单片机解码没有任何问题。

2、arduino源代码如下:

/*本作品使用的例程中包含RCSwitch库文件用于信号的解码和编码发送*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
  Serial.begin(9600);
//串口打印命令帮助信息
 Serial.print("HELP:A-flash the lamp A\n     B-flash the lamp B\n     C-flash the lamp C\n     D-flash the lamp D\n");
  Serial.print("     a-open the lamp A\n     b-open  the lamp B\n     c-open the lamp C\n     d-open  the lamp D\n\n");
    mySwitch.enableReceive(1);
  mySwitch.enableTransmit(10);}2
void loop()
{
    if(mySwitch.available())
    {
    output(mySwitch.getReceivedValue(),mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(),mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
   mySwitch.resetAvailable();
    }
  /* Same switch as above,but using binary code */
  if(Serial.available()>0)//如果串口有数据进入的话
  { delay(10);           //延时50 可以一次性发送多个命令
   char M=Serial.read();//每次读一个字符,是ASCII码的
   if(M==‘A‘)
    {
  Serial.print("Thecommand is A\n");
 mySwitch.send("010101010101010100001100");//遥控器-A
  Serial.print("      OK!!! The LED A has been DONE\n");
    }
       if(M==‘a‘)
    {
     Serial.print("The command is a\n");
     Serial.print("      OK!!! TheLED A has hlod ON\n");
     while(Serial.available()<=0)
      {
      mySwitch.send("010101010101010100001100");//遥控器-A 按下不放
      }
    }
  if(M==‘B‘)
    {
  Serial.print("Thecommand is B\n");
 mySwitch.send("010101010101010111000000");//遥控器-B
  Serial.print("      OK!!! The LED B has been DONE\n");
    }
     if(M==‘b‘)
    {
     Serial.print("The command is b\n");
      Serial.print("      OK!!! The LED B has hlod ON\n");
     while(Serial.available()<=0)
      {
      mySwitch.send("010101010101010111000000");//遥控器-B 按下不放
      }
    }
  if(M==‘C‘)
    {
  Serial.print("Thecommand is C\n");
 mySwitch.send("010101010101010100000011");//遥控器-C
  Serial.print("      OK!!! The LED C has been DONE\n");
    }
         if(M==‘c‘)
    {
     Serial.print("The command is c\n");
     Serial.print("      OK!!! TheLED C has hlod ON\n");
     while(Serial.available()<=0)
      {
      mySwitch.send("010101010101010100000011");//遥控器-C按下不放
      }
    }
  if(M==‘D‘)
    {
  Serial.print("Thecommand is D\n");
 mySwitch.send("010101010101010100110000");//遥控器-D
  Serial.print("      OK!!! The LED D has been DONE\n");
    }
         if(M==‘d‘)
    {
     Serial.print("The command is d\n");
     Serial.print("      OK!!! TheLED D has hlod ON\n");
     while(Serial.available()<=0)
      {
      mySwitch.send("010101010101010100110000");//遥控器-D按下不放
      }
    }
  }
}

在整个过程中为了研究方便用到汽车遥控码解码器,以方便对本次实验解码的正确性进行校验。

时间: 2024-10-25 00:32:24

315Mhz、433Mhz无线遥控信号的解码分析和模拟的相关文章

RTL-SDR + GnuRadio+RFcat 分析、重放无线遥控信号

0×00 前言 前段时间在<永不消逝的电波(二)HackRF入门:家用无线门铃信号重放> 一文中通过HackRF录制.重放了无线遥控信号,不过一直没来得及对信号进行分析,刚好在国外网站看到有大牛对遥控信号进行了分析(详见refer部分).在这里便按照国外大牛分析无线遥控信号的方法来依葫芦画瓢. *本文仅分享信号分析方式,因信号调制编码方式有所不同,如数据分析有出错,希望大家不要打我= ̄ω ̄=  0×01 环境搭建 Mac可使用port(www.macports.org) 或者brew(brew

GnuRadio Hacking ①:使用GnuRadio+SDR破解固定码无线遥控

0×01 信号捕获 在这篇文章中,我们将使用GnuRadio+SDR硬件对某品牌型号的无线跳蛋进行无线重放攻击的演示. 市面上常见的无线遥控工作的频段,通常工作在315Mhz.433Mhz,也有少数的会采用868Mhz.915Mhz这几个频点. 我们可以用电视棒.HackRF.BladeRF等SDR硬件来确定遥控的工作频率: 打开软件按下遥控器后,能在瀑布图上看到明显的反应: osmocom_fft -F -f 433e6 -s 4e6 gqrx 无线遥控中心频率:433870000 0×02

基于STC12系列单片机的通用红外遥控信号分析程序(一)

前言 最近学51单片机学习到红外遥控解码与发送部分,开发板的相关教程只有NEC协议的解码,基本的解码套路是1838接收头输出管脚接单片机外部中断0,当接收到红外信号时产生下降沿触发中断,在中断函数中先延时9ms判断电平再延时4.5ms判断电平,从而跳过引导码:再分别延时560us.1690us左右不等的时间判断电平来解码“0”或“1”,直到结束:红外发送思路就是根据NEC协议及红外码值的二进制码分别控制高低电平,并延时相应的时间.但存在这么几个问题: 1. 解码逻辑写死在中断处理函数中,不方便扩

【无线液位传输器应用案例】高位蓄水池水位无线遥控抽水泵方案

[无线液位传输器应用案例]高位蓄水池水位无线遥控抽水泵方案 一.方案介绍 本方案采用433MHz自主无线通信方式,没有运行费用,实时通信,并借助公用GSM网络,通过短信实现远程报警. 先将每个蓄水池分为2段,代表2个不同的水位高度,用浮球状态来表示蓄水池当前水位高度.把液位开关信号引入无线水位发射装置,如果水池附近没有动力电源,可以采用达泰一体化太阳能电源供电. 山下泵房控制室无线接收装置收到山上发来的上下水位信号后,通过控制电路输出开泵信号或者停泵信号.同时短信报警器给值班人员手机发送通知短信

智能无线交通信号控制系统方案

前言   随着城市车辆数目的急剧增长,车辆与路面的矛盾越来越突出,城市交通拥挤和堵塞导致道路的容量和管理效率降低 ,也是交通污染和事故的间接因素.尽管造成这种现象的原因很多 ,但各交叉口交通信号的不协调.不优化是主要的技术原因.由此而产生的城市智能交通优化交通信号系统将在很大程度上解决这一问题. 原有的交通信号控制系统采用光纤接入通信方式,施工困难,成本高,受地形.气候影响较大,设备维护困难:改用3G/4G网络,灵活性高,实现在线保持机制,3G/4G路由器网络速率已经满足信号机数据传输,通过运营

Mercedes-Benz NEC BGA 315MHZ 433MHZ 434MHZ GLK GLA GLC ML W204 W207 W212 W221 W222 S300 S350 S400 S500 S550 S600 C180 C200 C260 C300 ES350 GLK300 GLA200 E260L C200 B200 S320L Mercedes-Benz KEY PC

AUTO ECU CHIPS  STOCK ESL Motor  ELV Motor  Steering Lock Wheel Motor for Mercedes-Benz ESL/ELV Motor Steering Lock Wheel Motor for Mercedes-Benz W204 W207 W212 esl motor elv motor Mercedes-Benz NEC   BGA 315MHZ 433MHZ  434MHZ GLK GLA GLC ML W204 W20

√如何改善无线wifi信号质量

BAT满足了大众在公共场合对免费wifi的需求,路由器.WiFi共享精灵软硬兼施则构建家庭.办公室等室内场合的无线wifi环境.最基本的需求满足之后是什么呢,对wifi网络质量的要求,不要网络慢,不要wifi信号时断时续,可以吗? 一.不要网络慢,如何增强wifi信号,已经有朋友给出了答案:(只针对笔记本wifi情况) 二.如何延伸无线wifi信号距离,或扩大wifi覆盖范围 本人就有这样的体验,晚上睡前有个习惯看看微信,手机靠左还能wifi,翻个身就不行了,再翻回去,又默默地连接上去了--在如

智能家居---自发电无线遥控开关

您是不是幻想过安装开关不必开墙布线连接电源呢?您是不是幻想过家里的开关永远不必更换电池呢?您是不是还会幻想像拿着电视遥控一样随意控制开关呢?……其实,您的幻想我们都已经实现啦!现在的开关市场上出现了一种自发电无源无线开关,这种开关不同于传统开关,它无需使用电池,无需连接电源线.只需您手指轻轻按下开关的按键,产生的机械能就可自动转换为电能,从而控制灯具.空调.电视机等多种电器设备. 那么相比市场上传统的开关,无源无线开关为什么更受到大众青睐呢! 更方便 新装修的房子不想开墙布线?单控开关简单一步到

红外遥控--红外遥控的编解码以及识别驱动

红外遥控的编解码以及识别驱动        由于不同的遥控器的编码格式可能是不同的,这里只是目前我所用的这款遥控器的单片机识别程序以及可以对未知编码格式的红外遥控器进行解码的方法. 红外遥控器的编码一般由引导码.系统码.系统反码.功能码.功能反码.固定停止码或者校验码等组成. 1.实例 红外遥控器解码识别程序 作为例子的遥控器是属于一种空调遥控器的编码.(以后所说的T都是指400us的时间) 其编码格式由引导码+固定头码+功能码+校验码组成. 引导码脉冲为8T的高电平和8T的低电平. 位1脉冲宽