zoukankan      html  css  js  c++  java
  • 【雕爷学编程】Arduino动手做(92)--- 433M无线收、发模块

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

    实验九十二:433M无线发射接收模块 超再生防盗报警无线模组

     

     

    超再生
    是一种直放式接收机,是利用正反馈原理,把经过放大了的信息回馈到输入端,再放大、循环,信号本身不经过变频,直接进行处理,具有电路简单、灵敏度高、体积小,成本低等优点,也有灵敏度不稳定、选择性差、抗干扰能力差等缺点。所谓直放,是与超外差技术相对应的。也就是说信号本身不经过变频,直接进行处理。

    与超外差技术相比,超再生技术有如下优点:
    1、电路简单,最简单的接收机只需1个晶体管即可完成从高放、检波、功放的所有功能。
    2、灵敏度高。
    3、体积小,成本低。
    它的主要缺点是:
    1、灵敏度在全波段不稳定,起伏较大,所以主要适合作固定频率接收机。
    2、选择性差、抗干扰能力差。
    3、频率稳定性差,易产生频率漂移。
    4、近距接收时易产生阻塞。


    433m无线模块
    433MHz无线收发模组,采用高频射频技术,因此也叫RF433射频小模块。其由全数字科技生产的单IC射频前端与ATMEL的AVR单片机组成,可高速传输数据信号的微型收发信机,对无线传输的数据进行打包、检错、纠错处理。元器件都采用工业级标准,工作稳定可靠,体积小便于安装。适用于安全报警、无线自动抄表、家居及工业自动化、远端遥控、无线数传等等广泛领域。

    发射模块
    1、通讯方式:调幅AM
    2、工作频率:315MHz/433MHz
    3、频率稳定度:±75kHz
    4、发射功率:≤500mW
    5、静态电流:≤0.1μA
    6、发射电流:3~50mA
    7、工作电压:DC 3~12V
    8、发射头(采用2SC3357三极管)

    特别适合多发一收无线遥控及数据传输系统。声表谐振器的频率稳定度仅次于晶体,而一般的LC振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。发射模块未设编码集成电路,而增加了一只数据调制三极管Q1,这种结构使得它可以方便地和其它固定编码电路、滚动码电路及单片机接口,而不必考虑编码电路的工作电压和输出幅度信号值的大小。比如用PT2262或者SM5262等编码集成电路配接时,直接将它们的数据输出端第17脚接至数据模块的输入端即可。

     发射模块具有较宽的工作电压范围3~12V,当电压变化时发射频率基本不变,和发射模块配套的接收模块无需任何调整就能稳定地接收。当发射电压为3V时,空旷地传输距离约20~50米,发射功率较小,当电压5V时约100~200米,当电压9V时约300~500米,当发射电压为12V时,为最佳工作电压,具有较好的发射效果,发射电流约60毫安,空旷地传输距离700~800米,发射功率约500毫瓦。当电压大于12V时功耗增大,有效发射功率不再明显提高。这套模块的特点是发射功率比较大,传输距离比较远,比较适合恶劣条件下进行通讯。天线最好选用25厘米长的导线,远距离传输时最好能够竖立起来,因为无线电信号传输时收很多因素的影响,所以一般实用距离只有标称距离的一半甚至更少,这点需要开发时注意。

    数据模块采用ASK方式调制,以降低功耗,当数据信号停止时发射电流降为零,数据信号与发射模块输入端可以用电阻或者直接连接而不能用电容耦合,否则发射模块将不能正常工作。数据电平应接近数据模块的实际工作电压,以获得较高的调制效果。
    发射发射模块最好能垂直安装在主板的边缘,应离开周围器件5mm以上,以免受分布参数影晌。模块的传输距离与调制信号频率及幅度,发射电压及电池容量,发射天线,接收机的灵敏度,收发环境有关。一般在开阔区最大发射距离约800米,在有障碍的情况下,距离会缩短,由于无线电信号传输过程中的折射和反射会形成一些死区及不稳定区域,不同的收发环境会有不同的收发距离。

     

    超再生接收模块
    体积:30x13x8毫米
    主要技术指标:
    1、通讯方式:调幅AM
    2、工作频率:315MHz/433MHz
    3、频率稳定度:±200kHz
    4、接收灵敏度:-106dBm
    5、静态电流:≤5mA
    6、工作电流:≤5mA
    7、工作电压:DC 5V
    8、输出方式:TTL电平

    接收模块的工作电压为5伏,静态电流4毫安,它为超再生接收电路,接收灵敏度为-105dbm,接收天线最好为25~30厘米的导线,最好能竖立起来。接收模块本身不带解码集成电路,因此接收电路仅是一种组件,只有应用在具体电路中进行二次开发才能发挥应有的作用,这种设计有很多优点,它可以和各种解码电路或者单片机配合,设计电路灵活方便。

    这种电路的优点在于:
    1、天线输入端有选频电路,而不依赖1/4波长天线的选频作用,控制距离较近时可以剪短甚至去掉外接天线
    2、输出端的波形在没有信号比较干净,干扰信号为短暂的针状脉冲,而不象其它超再生接收电路会产生密集的噪声波形,所以抗干扰能力较强。
    3、模块自身辐射极小,加上电路模块背面网状接地铜箔的屏蔽作用,可以减少自身振荡的泄漏和外界干扰信号的侵入。
    4、采用带骨架的铜芯电感将频率调整到315M后封固,这与采用可调电容调整接收频率的电路相比,温度、湿度稳定性及抗机械振动性能都有极大改善。可调电容调整精度较低,只有3/4圈的调整范围,而可调电感可以做到多圈调整。可调电容调整完毕后无法封固,因为无论导体还是绝缘体,各种介质的靠近或侵入都会使电容的容量发生变化,进而影响接收频率。另外未经封固的可调电容在受到振动时定片和动片之间发生位移;温度变化时热胀冷缩会使定片和动片间距离改变;湿度变化因介质变化改变容量;长期工作在潮湿环境中还会因定片和动片的氧化改变容量,这些都会严重影响接收频率的稳定性,而采用可调电感就可解决这些问题,因为电感可以在调整完毕后进行封固,绝缘体封固剂不会使电感量发生变化。

    433M无线发射接收模块
    发射模块可和市场上固定码、学习码的同频率接收模块任意配套使用,可配套本店无线接收模块使用。声表稳频、性能稳定、工作电压范围宽、产品一致性好、性价比高。超再生接收模块采用LC振荡电路,内含放大整形,输出的数据信号为TTL电平,可直接至解码器,使用极为方便,并且价格低廉。接收模块有较宽的接收带宽,一般为±10MHz,出厂时一般调在315MHz或433.92MHZ(如有特殊要求可调整频率,频率的调整范围为266MHz~433MHz)。

    模块应用
    遥控开关、接收模块、摩托车、汽车防盗产品、家庭防盗产品、电动门、卷帘门、窗、遥控插座、遥控LED、遥控音响、遥控电动门、遥控车库门、遥控伸缩门、遥控卷闸门、平移门、遥控开门机、关门机等门控系统、遥控窗帘、报警主机、报警器、遥控摩托车、遥控电动车、遥控MP3等。

    使用备注
    1、VCC电压要与模块工作电压一致,且要做好电源滤波;
    2、天线对模块的接收效果影响很大,最好接1/4波长的天线,一般采用50欧姆单芯导线,天线的长度433M的约为17cm;
    3、天线位置对模块接收效果亦有影响,安装时,天线尽可能伸直,远离屏蔽体,高压,及干扰源的地方;使用时接收频率、解码方式及振荡电阻应与发射匹配。
    4、收发模块都需要外接天线,不然信号距离只有几厘米。

    实验接线示意图

     

     

    【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

    实验九十二: 433M无线发射接收RF模块 超再生防盗报警无线模组

     实验开源代码

    /*
    【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
     实验九十二: 433M无线发射接收RF模块 超再生防盗报警无线模组
    1、工具-管理库-搜索“RCSwitch”库-安装
    2、发射模块
    VCC GND  DATA- arduino D6脚
    3、接收模块
    VCC GND  DATA- arduino D2脚
    */
    
    #include <RCSwitch.h>
    RCSwitch myFa = RCSwitch();//定义发送端
    RCSwitch myShou = RCSwitch();//定义接收端
    unsigned long i = 0; //注意,这里的数据类型,不能用int
    
    void setup(){
      myFa.enableTransmit(6);//发送端接6号口(或其它口)
      myShou.enableReceive(0);//接收端接中断0(中断0为Arduino的2口)
     Serial.begin(9600);//打开串口调试
    }
    
    void loop(){
     i = i+1;
     myFa.send(i, 24);//发送端发送数据,i为数字
     if (myShou.available()) {
       int value = myShou.getReceivedValue();//接收端获取数据
       if (value != 0) {
         Serial.println(i);
       }
       myShou.resetAvailable();//接收端重设活动状态
     }
     delay(1000);
    }
    

      实验串口返回情况

     

      实验场景图

     

    /*
    
    【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
    
     实验九十二: 433M无线发射接收RF模块 超再生防盗报警无线模组
    
    1、工具-管理库-搜索“RCSwitch”库-安装
    
    2、发射模块  VCC GND  DATA- arduino D12脚
    
    3、LED 接D13
    
    */
    
    
    
    #include <VirtualWire.h>
    
    void setup()
    
    {
    
      Serial.begin(9600);  // Debugging only
    
      Serial.println("setup"); // Prints "Setup to the serial monitor"
    
      vw_set_tx_pin(12);     // Sets pin D12 as the TX pin
    
      vw_set_ptt_inverted(true); // Required for DR3100
    
      vw_setup(4000);     // Bits per sec
    
    }
    
    void loop()
    
    {
    
      const char *msg = "hello";  // Message to be sent
    
      digitalWrite(13, true);   // Flash a light to show transmitting
    
      vw_send((uint8_t *)msg, strlen(msg)); //Sending the message
    
      vw_wait_tx(); // Wait until the whole message is gone
    
      digitalWrite(13, false);  // Turn the LED off.
    
      delay(50);         // A short gap.
    
    }
    

      实验串口返回情况

     

    /*
    
    【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
    
     实验九十二: 433M无线发射接收RF模块 超再生防盗报警无线模组
    
    1、搜索“VirtualWire”库并安装
    
    2、接收模块 VCC GND  DATA- arduino D12脚
    
    */
    
    
    
    #include <VirtualWire.h>
    
    int count;
    
    
    
    void setup(){
    
      Serial.begin(9600); // Debugging only
    
      Serial.println("setup"); //Prints "Setup" to the serial monitor
    
      vw_set_rx_pin(12);    //Sets pin D12 as the RX Pin
    
      vw_set_ptt_inverted(true); // Required for DR3100
    
      vw_setup(4000);   // Bits per sec
    
      vw_rx_start();    // Start the receiver PLL running
    
    }
    
    
    
    void loop(){
    
      uint8_t buf[VW_MAX_MESSAGE_LEN];
    
      uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
      if (vw_get_message(buf, &buflen)) // Non-blocking
    
      {
    
     int i;
    
        digitalWrite(13, true); // Flash a light to show received good message
    
     // Message with a good checksum received, dump it.
    
     Serial.print("Got: ");
    
      
    
     for (i = 0; i < buflen; i++)
    
     {
    
          char c = (buf);
    
          Serial.print(c);
    
       Serial.print(" ");
    
     }
    
        count++;
    
        // Serial.print(count);
    
     Serial.println("");
    
        digitalWrite(13, false);
    
      }
    
    }
    

      

     实验串口返回情况

     

     

     

  • 相关阅读:
    django 重建一个表
    近期数据工作的知识点总结(model-dict高级用法)
    搬运django中文网 CentOS7下部署Django项目详细操作步骤(django安装网站有时候打不开,备份用)
    创建ftp免密只读用户(外系统读取csv共享数据)
    某某系统从外部基础库读取数据
    离线安装 django-axes
    django queryset用法总结二
    django queryset用法总结一
    nginx 启动,停止 重启
    安装安全狗失败 ,linux wget的时候不去找目标ip,而是路由到其他ip,原因分析
  • 原文地址:https://www.cnblogs.com/eagler8/p/15409882.html
Copyright © 2011-2022 走看看