はじめに
920MHz帯のWi-SUN規格の通信をLazuriteを使ってする
使用機器
IDEのインストール
Lazurite 関連ファイル から 「Lazurite IDE 」をインストールする
インストーラは「Next」をしてけば、だいたい入るはず
送信プログラム
もしくは Lazurite IDEから
ファイル > プロジェクトのサンプル > SubGHz > Welcome_SubGHz
でプログラムを開くと以下が表示される
Welcome_SubGHz.c
#include "Welcome_SubGHz_ide.h" // Additional Header
#define LED 26 // pin number of Blue LED
#define SUBGHZ_CH 36 // channel number (frequency)
#define SUBGHZ_PANID 0xABCD // panid
#define HOST_ADDRESS 0x5f8f // distination address
unsigned char send_data[] = {"Welcome to Lazurite Sub-GHz\r\n"};
void setup(void)
{
SubGHz.init(); // initializing Sub-GHz
Serial.begin(115200);
pinMode(LED,OUTPUT); // setting of LED
digitalWrite(LED,HIGH); // setting of LED
}
void loop(void)
{
SUBGHZ_MSG msg;
// Initializing
SubGHz.begin(SUBGHZ_CH, SUBGHZ_PANID, SUBGHZ_100KBPS, SUBGHZ_PWR_20MW); // start Sub-GHz
// preparing data
digitalWrite(LED,LOW); // LED ON
msg=SubGHz.send(SUBGHZ_PANID, HOST_ADDRESS, &send_data, sizeof(send_data),NULL);// send data
digitalWrite(LED,HIGH); // LED off
SubGHz.msgOut(msg);
// close
SubGHz.close(); // Sub-GHz module sets into power down mode.
sleep(2000); // sleep
return;
}
送信先の指定(6行目)
define HOST_ADDRESS 0x668C
0x668C の部分は各自の環境に変更する。
以下の基盤を例にすると、機器のアドレスは「5F5A」になるので
define HOST_ADDRESS 0x5F5A
送信される文字列(8行目)
unsigned char send_data[] = {"Welcome to Lazurite Sub-GHz\r\n"};
の部分が送信される文字列になる。
マイコンボードに転送
1.ポートの指定
ツール > シリアル通信 > 通信ポート
より COM にチェックを入れる。 入っていないと転送できません。
2.マイコンボードに転送
「マイコンボードに転送」をクリックすると転送されてエラーがなければ成功
受信プログラム
もしくは Lazurite IDEから
ファイル > プロジェクトのサンプル > SubGHz > Welcome_SubGHz
でプログラムを開くと以下が表示される
特に変更点はない
Print_SubGHz.c
#include "Print_SubGHz_ide.h" // Additional Header
#define SUBGHZ_CH 36
#define SUBGHZ_PANID 0xabcd
uint8_t rx_data[256];
uint32_t last_recv_time = 0;
SUBGHZ_STATUS rx; // structure for getting rx status
#define BLUE_LED 26
void setup(void)
{
SUBGHZ_MSG msg;
long myAddress;
Serial.begin(115200);
msg = SubGHz.init();
if(msg != SUBGHZ_OK)
{
SubGHz.msgOut(msg);
while(1){ }
}
myAddress = SubGHz.getMyAddress();
Serial.print("myAddress1 = ");
Serial.println_long(myAddress,HEX);
msg = SubGHz.begin(SUBGHZ_CH, SUBGHZ_PANID, SUBGHZ_100KBPS, SUBGHZ_PWR_20MW);
if(msg != SUBGHZ_OK)
{
SubGHz.msgOut(msg);
while(1){ }
}
msg = SubGHz.rxEnable(NULL);
if(msg != SUBGHZ_OK)
{
SubGHz.msgOut(msg);
while(1){ }
}
pinMode(BLUE_LED,OUTPUT);
digitalWrite(BLUE_LED,HIGH);
Serial.println("TIME HEADER SEQ PANID RX_ADDR TX_ADDR RSSI PAYLOAD");
Serial.println("-----------------------------------------------------------------------------------------------------------------");
return;
}
void loop(void)
{
short rx_len;
short index=0;
uint16_t data16;
rx_len = SubGHz.readData(rx_data,sizeof(rx_data));
if(rx_len>0)
{
digitalWrite(BLUE_LED, LOW);
SubGHz.getStatus(NULL,&rx); // get status of rx
// print time
Serial.print_long((long)millis(),DEC);
Serial.print("\t");
// print header
data16 = rx_data[index], index++;
data16 = data16 + ((uint16_t)rx_data[index] << 8), index++;
Serial.print_long((long)data16,HEX); // output 802.15.4e header
Serial.print("\t");
// print sequence number
Serial.print_long((long)rx_data[index],HEX), index++; // output 802.15.4e sequence number
Serial.print("\t");
// print PANID
data16 = rx_data[index], index++;
data16 = data16 + ((uint16_t)rx_data[index] << 8), index++;
Serial.print_long((long)data16,HEX); // output 802.15.4e rx PANID
Serial.print("\t");
// print RX_ADDR
data16 = rx_data[index], index++;
data16 = data16 + ((uint16_t)rx_data[index] << 8), index++;
Serial.print_long((long)data16,HEX); // output 802.15.4e rx address
Serial.print("\t");
// print TX_ADDR
data16 = rx_data[index], index++;
data16 = data16 + ((uint16_t)rx_data[index] << 8), index++;
Serial.print_long((long)data16,HEX); // output 802.15.4e tx address
Serial.print("\t");
// print RSSI
Serial.print_long((long)rx.rssi,DEC); // output RSSI of receiving packet
Serial.print("\t");
// print payload
Serial.write(&rx_data[index],(rx_len-index)); // output payload
// print ln
Serial.println("");
digitalWrite(BLUE_LED, HIGH);
}
return;
}
転送後
先ほど作成した「送信プログラム」を実行しながら、シリアルモニターを起動する。
シリアルモニターには送信プログラムで指定した文字列 「Welcome to Lazurite Sub-GHz」が表示されていれば成功!!