[技術ネタ]Arduinoで安くてオトクに無線通信(315MHz編)

投稿者: yuki 投稿日:

315MHz無線通信 受信側

無線通信したいけど、
XBee(*1)さんは¥2,500くらいして安くなったにせよ大量につかうと割高だし、
ESP-WROOM-02さん(*2)は¥1,000以下で安いけどWifiでネットワーク組むほどは…
とよくばりなアナタに。

消費電力おさえめで、ネットワーク組むほど賢いのは不要、
ついでにいうと送信だけとかでもokですよ!って方には恐らくベストな選択肢、
315MHzさんのお話です。

※ あとは通信速度もとめてたり、通信距離求めている場合は微妙かも。

 

必要なハードウェア


Arduino UNO x 2
https://www.switch-science.com/catalog/789/


送信モジュール(315MHz) [RF315-TX5-R]
http://www.aitendo.com/product/4138

| VCC | 1.8 – 3.6V |
| 動作電流 | 10mA |
| 外形寸法 | 11.0 x 16.0 x 5.0mm |


受信モジュール(315MHz) [RF315-RXB12]
http://www.aitendo.com/product/2607

| VCC | 3.3 – 5.0V |
| 動作電流 | 2.5 – 2.7mA |
| 出力 | 300 – 500m |
| 外形寸法 | 30.0 x 8.5 x 5.0mm |
| バンド幅 | 200KHz |

 

配線

送信側

| Arduino UNO | 送信モジュール側(RF315-TX5-R) |
| 3.3V | VCC |
| D12 | DATA |
| GND | GND |

 

受信側

| Arduino UNO | 受信モジュール(RF315-RXB12) |
| 3.3V | VCC |
| D11 | DATA |
| GND | GND |

 

ソース

送受信は、お手軽無線用モジュール VirtualWire をつかいます。

送信側

#include <VirtualWire.h>

#define SEND_PIN 12 // D12

void setup() {
  vw_set_tx_pin(SEND_PIN);
  vw_setup(2000);
}

void loop() { 
  int numData = 25;
  char datas[numData];
  for (int i = 0; i < numData; i++) {
    datas[i] = i;
  }
  vw_send((uint8_t *)datas, numData);
  vw_wait_tx();
}

送信データが少ない場合、
vw_setupの2000msを6~7000msくらいまで上げると、
送信速度があがるようです。

受信側

#include <VirtualWire.h>

#define RECV_PIN 11

void setup() {
  delay(1000);
  Serial.begin(9600);
  Serial.println("receiver setup");

  vw_set_rx_pin(RECV_PIN);
  vw_setup(2000);
  vw_rx_start();
}

void loop() {
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen)) {
    Serial.print("Got: ");
    for (int i = 0; i < buflen; i++) {
      Serial.print(buf[i], DEC);
      Serial.print(' ');
    }
    Serial.println();
  }
}

 

テスト


こんな感じにシリアルのモニタにでればokです。

 

おまけ

文字列の送信をしたい方向けのサンプル落ちてたので、ぺたり。

How to use 315Mhz RF transmitter and receiver modules with arduino

めでたしめでたし。

[^1] … https://www.switch-science.com/catalog/996/
[^2] … https://www.switch-science.com/catalog/2346/


yuki

Yuki Anai is a Japanese artist working with sound, lighting, sensing technology. He was born in Oita, Japan, 1987. Completed Graduate School of Media Design, Keio University. He was worked at teamLab for seven years, engaged on set up art and product team. After graduated he started own company that focused on consulting a space design of lighting. His inspiration for artworks come from nature's messages. For example, "A Seashore" express light fluctuation like a surface of a sea. “in the rain” express potential of rain, it works as communication media of us. He got many prizes of award: "Ah" got a Grand Prize of Asia Digital Award 2012, "ChAir" got Best Award of Smart Illumination Award 2012, teamLab Hanger got a Prize of 14th Japan Media Art Festival(as teamLab), etc.