環境発電(エネルギー・ハーベスト)を利用したシステム開発 ―― ワイヤレスとバッテリレスを組み合わせてビル設備のエネルギー消費を大幅削減

懸田 信行

tag: 組み込み 電子回路

技術解説 2010年9月 9日


●14バイトのデータを取得

 次に,送信するデータ構成(パケット仕様)について説明します.

 EnOcean社の無線モジュールでは暗号化の処理が行われていません.バイナリ・データを組み合わせて,そのまま送受信します.これは,低電力で動作させるためです.

 データ配列の例を以下に示します.

[SYNC_1] [SYNC_0] [H_SEQ/LENGTH] [ORG] [DATA3-0] [MID3-0] [STATUS] [CHKSUM]
8ビット 8ビット 3ビット/5ビット 8ビット 8ビット×4 8ビット×4 8ビット 8ビット


 開発キットでは,デフォルトでは上記のようなデータ配列になっています.バイナリ・データが表示できるターミナル・ソフトウェアであれば,上記のデータを取得できます.

 取得データの内訳を以下に示します.

[00] [02] [03] [04] [05] [06] [07] [08] [09] [10] [11] [12] [13]    
[A5] [5A] [HEAD] [ORG] [DAT3] [DAT2] [DAT1] [DAT0] [MID3] [MID2] [MID1] [MID0] [STATUS] [ChkSum] - STM
[A5] [5A] [HEAD] [ORG] [DAT3] [DAT2] [DAT1] [DAT0] [MID3] [MID2] [MID1] [MID0] [0x00] [ChkSum] - Soler


 トータルで14バイトのデータを取得できます.各バイト・データは以下のとおりです.

  • [SYNC_1],[SYNC_0]はそれぞれA5,5A
  • HEADは,0x0B(送信)/ 0x6B(受信)
  • ORGは,0x05:PTM(RPS)/ 0x06:STM(1バイト:1BS)/ 0x07:STM(4バイト:4BS)/ 0x08:CTM(HRC)/ 0x0A:6バイト・データ(6DT)/ 0x0B:モデム・アクノレッジ(MDA)
  • STATUSは,0x20:OFF / 0x30:ON
  • DAT0~DAT3は,取得したデータを4バイトで表示
  • MID0~MID-3は,出荷時に設定されたノードのIDを4バイトで表示

 

●EasyCommを使ってデータを受信

 では,実際に評価キットを使ってシステムを構成した例を示しましょう.ここでは,ExcelなどのVBA(VisualBasic for Applications)を利用してシリアル・ポート(COMポート)にアクセスするツール「EasyComm」を使ってデータを受信するまでを説明します.EasyCommの使い方についてはEasyCommのWebページ(http://www.activecell.jp/ec/index.htm)などを参照してください.

 まず,EasyCommのモジュールのec,ecDef,Module1,Module2,Module3をExcelにあるVBAのモジュールとして組み込みます.続いて,ExcelのワークシートにVBAのボタンを二つ用意します.リスト1にVBAのサンプルを示します.この例では,それぞれのボタンをCommandButton1,CommandButton3としています.

リスト1 EasyCommを使ってデータを受信するVBA

'Generalの変数宣言
Dim Stop_id As Byte

Private Sub CommandButton1_Click()
'エラー時の処理対策
On Error GoTo Error

'変数宣言
Dim InData() As Byte
Dim disp As String
Dim man_id As String

'ストップボタンのフラグ
Stop_id = 0

'ポート番号をシートから読込み
port = Cells(3, 5).Value

'指定が無かったらmsgboxで表示して終了
If port = "" Then
    MsgBox ("ポートを指定してください")
    End
Else
'ポート番号に文字が入っていたら,COMポートのイニシャライズ設定を行う.
    ec.COMn = port
    ec.Setting = "9600,n,8,1"       '9600bps/8/n/1で固定.書式の順序に注意が必要です.
    ec.Delimiter = ec.DELIMs.CrLf   '初期設定,詳しくはec.COMのサイトを参照してください.

'バッファクリア
    ec.InBufferClear
   
'イニシャライズ終了で,動作開始を表示
    Cells(2, 5).Value = "動作中"

End If

'スタートボタンを消す.2度押しを回避.
CommandButton1.Visible = False

'Receive-----------------------------------------------

    'バッファからの吸出しデータサイズ(Byte)
    ec.BinaryBytes = 14

    ' Stopボタンが押されるまでループ
Do Until Stop_id = 1
   
    'Inbufferが14Byte以上になったらInData配列へデータを吸出し
    If ec.InBuffer > 13 Then
        InData() = ec.Binary
        GoSub DAT_Recieve
    End If
   
    '割込みを許可.
    DoEvents

Loop

End

DAT_Recieve:

    disp = ""       '取得データを削除

    'Inbufferから表示用に連続データとして取得
    For i = 0 To 13
        '上記[00]-[13]のデータを連続データとして読込み
        disp = disp & Right("0" & Hex(InData(i)), 2)
    Next i
   
    'セルへ表示
    Cells(5, 2).Value = disp

Return

' エラー処理
Error:
   
    'ポートクローズ
    ec.COMn = 0 'Port close
        'スタートボタンを表示
    CommandButton1.Visible = True
    'メッセージを表示
    MsgBox ("エラーが発生しました")
    '動作中のメッセージを削除
    Cells(2, 5).Value = ""
    '終了
    End

End Sub

Private Sub CommandButton3_Click()
    '終了処理
    Stop_id = 1

    'スタートボタンを表示
    CommandButton1.Visible = True
    'ポートクロ-ズ
    ec.COMn = 0 'Port close
    '動作中のメッセージを削除
    Cells(2, 5).Value = ""
    'メッセージ表示
    MsgBox ("終了しました")
    '終了
    End

End Sub

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日