Arduino 简明教程

Arduino - Wireless Communication

无线收发器模块在 315 Mhz 下工作。它们可以轻松地装入面包板,并且与微控制器配合良好,可以创建非常简单的无线数据链路。在一对收发器上,模块只工作于单向通信数据,但是,你需要两对(不同频率)作为收发器对。

Note - 这些模块是很随意的,并且会收到相当多的噪声。收发器都在常见频率下工作,并且没有 ID。

wireless communication

Receiver Module Specifications

  1. Product Model − MX-05V

  2. Operating voltage − DC5V

  3. Quiescent Current − 4mA

  4. Receiving frequency − 315Mhz

  5. Receiver sensitivity − -105DB

  6. 尺寸 - 30 * 14 * 7mm

Transmitter Module Specifications

  1. Product Model − MX-FS-03V

  2. 发射距离 - 20-200 米(不同电压,不同结果)

  3. Operating voltage − 3.5-12V

  4. 尺寸 - 19 * 19mm

  5. Operating mode − AM

  6. 传输速率 - 4KB/S

  7. Transmitting power − 10mW

  8. Transmitting frequency − 315Mhz

  9. 外部天线 - 25cm 普通多芯或单芯线路

  10. 从左→右的引脚排列 - (数据;VCC;GND)

Components Required

您将需要以下组件:

  1. 2 × Arduino UNO 板

  2. 1 × 射频链路发射器

  3. 1 × 射频链路接收器

Procedure

按照电路图进行操作,并按照下面给出的图片所示进行连接。

wireless communication connections

Sketch

在计算机上打开 Arduino IDE 软件。使用 Arduino 语言进行编码将控制您的电路。单击“新建”以新建一个草图文件。

sketch

Note - 你必须在你的 Arduino 库文件中包含键盘库。复制 VirtualWire.lib 文件,并像下面给出的屏幕截图中高亮显示的那样将其粘贴到库文件夹中。

arduino library file

Arduino Code for Transmitter

//simple Tx on pin D12
#include <VirtualWire.h>
char *controller;

void setup() {
   pinMode(13,OUTPUT);
   vw_set_ptt_inverted(true);
   vw_set_tx_pin(12);
   vw_setup(4000);// speed of data transfer Kbps
}

void loop() {
   controller="1" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,1);
   delay(2000);
   controller="0" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,0);
   delay(2000);
}

Code to Note

这是一个简单的代码。首先,它会发送字符'1',两秒后会发送字符'0',等等。

Arduino Code for Receiver

//simple Rx on pin D12
#include <VirtualWire.h>

void setup() {
   vw_set_ptt_inverted(true); // Required for DR3100
   vw_set_rx_pin(12);
   vw_setup(4000); // Bits per sec
   pinMode(5, OUTPUT);
   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 {
      if(buf[0]=='1') {
         digitalWrite(5,1);
      }
      if(buf[0]=='0') {
         digitalWrite(5,0);
      }
   }
}

Code to Note

当收到字符'1’时,连接到 Arduino 板上的引脚号 5 的 LED 会亮起,当收到字符'0’时,LED 会关闭。