Arduino 無(wú)線通信

2018-11-22 15:34 更新

無(wú)線發(fā)射器和接收器模塊工作在315 Mhz。它們可以輕松地裝入面包板,并可很好的與微控制器配合使用,創(chuàng)建一個(gè)非常簡(jiǎn)單的無(wú)線數(shù)據(jù)鏈路。使用一對(duì)發(fā)射器和接收器,模塊將只能單向傳輸數(shù)據(jù),因此,你將需要兩對(duì)(不同頻率)作為發(fā)射器/接收器對(duì)。

注意 - 這些模塊是任意的,并會(huì)接收相當(dāng)大量的噪音。發(fā)射器和接收器都在共同的頻率下工作,并且沒(méi)有ID。

無(wú)線發(fā)射器

接收器模塊規(guī)格

產(chǎn)品型號(hào) - MX-05V
工作電壓 - DC5V
靜態(tài)電流 - 4mA
接收頻率 - 315Mhz
接收靈敏度 - -105DB
尺寸 - 30*14*7mm

發(fā)射器模塊規(guī)格

產(chǎn)品型號(hào) - MX-FS-03V
發(fā)射距離 - 20-200米(不同電壓,不同結(jié)果)
工作電壓 - 3.5-12V
尺寸 - 19*19mm
操作模式 - AM
傳輸速率 - 4KB/S
發(fā)射功率 - 10mW
發(fā)射頻率 - 315Mhz
外置天線 - 25cm普通多芯或單芯線
從左到右的引腳分布 - DATA;VCC;GND

必需的組件

你將需要以下組件:

  • 2 × Arduino UNO板
  • 1 × Rf鏈路發(fā)射器
  • 1 × Rf鏈路接收器

程序

按照電路圖進(jìn)行連接,如下圖所示。

電路圖

草圖

在計(jì)算機(jī)上打開(kāi)Arduino IDE軟件。使用Arduino語(yǔ)言進(jìn)行編碼控制你的電路。通過(guò)單擊“New”打開(kāi)一個(gè)新的草圖文件。

Sketch

注意 - 你必須在Arduino庫(kù)文件中包含鍵盤(pán)庫(kù)。將VirtualWire.lib文件復(fù)制并粘貼到庫(kù)文件夾中,如下面屏幕截圖的高亮部分所示。

在Arduino庫(kù)文件中包含鍵盤(pán)庫(kù)

發(fā)射器的Arduino代碼

//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);
}

代碼說(shuō)明

這是一個(gè)簡(jiǎn)單的代碼。首先發(fā)送字符“1”,兩秒后發(fā)送字符“0”,以此類推。

接收器的Arduino代碼

//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);
      }
   }
}

代碼說(shuō)明

當(dāng)接收到字符“1”時(shí),連接到Arduino板上引腳5的LED亮起,當(dāng)接收到字符“0”時(shí),LED熄滅。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)