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!
プログラムや配線等の参考はこちらです。(少し換えましたが。)
電波法などは総務省の専用ページを確認しましょう。
低コストで少量のデータ送受信ができる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;
{
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 件のコメント:
コメントを投稿