2018年1月17日水曜日

Arduinoで無線送受信モジュールを使ってみました

Arduinoで無線リンクのやり方を習うため、
低コストで少量のデータ送受信ができる433MHzの無線送受信モジュールを注文しました。

使い方はとても簡単です。
まず、RadioHeadというライブラリをダウンロードし、librariesフォルダにおきます。
そして、二つのArduinoを準備します。

一つは送信用、一つは受信用です。

送信用コード:
#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600);   // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}

void loop()
{
    const char *msg = "Hello World!";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    Serial.print("sent ");
    Serial.println(msg);
    delay(5000);
}

受信用コード:
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600); // Debugging only
    if (!driver.init())
         Serial.println("init failed");
    else
         Serial.println("ready");
}

void loop()
{
    uint8_t buf[12];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
    {
      int i;
      // Message with a good checksum received, dump it.
      Serial.print("Message: ");
      Serial.println((char*)buf);         
    }
}

送信モジュールのVCCを送信用Arduinoの5V、GNDをアース、DATAをピン12に接続します。
受信モジュールのVCCを受信用Arduinoの5V、GNDをアース、DATAをピン11に接続します。

両方のArduinoに電源を入れ、受信用Arduinoをコンピューターにつながり、
9600bpsでSerial接続します。
すると、
ready
Message: Hello World!
Message: Hello World!
Message: Hello World!
のような出力が出てくるはずです。
これで、一つのArduinoからもう一つのArduinoへメッセージを送ることができます。

ちなみに、日本では電波法というものがあり、
規制もとても厳しいです。
免許なくても自由に使える帯域が本当に少ないです。
今回使用するモジュールは433MHz、
そして315MHzのモジュール(aitendo発売)もあります。
しかし、433MHzも315MHzも規制があります。
使用する433MHzモジュールは低出力(10mW)なので、
規制を越えるような電波強度は出ないと思いますが、
念のため、継続使用や量産などはちゃんと法律を確認し、
出力を確認して、必要な免許を取ってからお使いください。

プログラムや配線等の参考はこちらです。(少し換えましたが。)
電波法などは総務省の専用ページを確認しましょう。

0 件のコメント:

コメントを投稿