1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wio BG770AでEnOceanセンサを受信してみた

1
Last updated at Posted at 2026-06-21

はじめに

今回は、WioBG770AでEnOceanの受信を試してみたいと思います。

EnOceanは電池レスで動作するセンサが豊富で、IoT用途にとても相性が良い無線規格です。WioBG770Aと組み合わせることで、省電力なセンシングデータをクラウドへ送信する構成が期待できます。

Qiita記事_1280x720(169).png

今回のゴール

  • WioBG770AでEnOceanのデータが受信できることを確認

使用したもの

  • Wio BG770A
  • EnOceanセンサ(開閉センサなど)
  • EnOceanユニット(TCM410J搭載)

接続方法

WioBG770AのUARTのポートに、EnOceanを接続します。

Qiita記事_1280x720(169).png

注意事項

EnOceanユニット(TCM410J)は本来5V電源での動作が想定されています。
今回はWioBG770AのGrove(3.3V)で動作させていますが、これは仕様外のため動作保証はありません。環境や個体差によっては正常に動作しない可能性があります。

サンプルコード

まずは受信データをそのままシリアル出力させます。

#include <Arduino.h>
#include <Adafruit_TinyUSB.h>
#include <WioCellular.h>

// EnOcean モジュール(TCM410J)との UART 通信設定
#define ENOCEAN_SERIAL    Serial1   // Grove UART は Serial1 に接続
#define ENOCEAN_BAUD      57600     // TCM410J の固定ボーレート

// 受信バイト間のギャップがこの時間(ms)を超えたら1パケット終端とみなす
#define PACKET_TIMEOUT_MS 20

void setup() {
    // USB CDC シリアルモニター初期化(最大3秒待機)
    Serial.begin(115200);
    while (!Serial && millis() < 3000) {}

    Serial.println("=== EnOcean Receiver (Wio BG770A + TCM410J) ===");

    // Grove コネクタへの電源供給を有効化
    WioCellular.begin();
    WioCellular.enableGrovePower();
    delay(100);  // 電源安定待ち

    // EnOcean モジュールとの UART 通信開始
    ENOCEAN_SERIAL.begin(ENOCEAN_BAUD);

    Serial.println("Waiting for EnOcean data...");
    Serial.println();
}

void loop() {
    static uint32_t lastByteAt = 0;  // 最後にバイトを受信した時刻
    static bool     receiving  = false;

    // 受信バッファにデータがある間、1バイトずつ16進数で出力
    while (ENOCEAN_SERIAL.available()) {
        uint8_t b = (uint8_t)ENOCEAN_SERIAL.read();
        if (b < 0x10) Serial.print('0');  // ゼロパディング(例: 0x05 → "05")
        Serial.print(b, HEX);
        Serial.print(' ');
        lastByteAt = millis();
        receiving  = true;
    }

    // 一定時間バイトが来なければパケット終端と判断して改行
    if (receiving && millis() - lastByteAt > PACKET_TIMEOUT_MS) {
        Serial.println();
        receiving = false;
    }
}


サンプルコードはGithubで公開しています。

実際の動作確認

image.png

先頭の 0x55 はEnOceanの同期バイト(Sync Byte)です。
このデータが確認できれば、EnOceanフレームの受信ができています。

まとめ

WioBG770AとEnOceanユニットを使って、EnOceanのデータが受信できることが確認できました。

次回

次は実際にEnOceanセンサのデータを受信してみて、データの中身を見ながら、センサ値(温度や開閉など)を取り出してみたいと思います。また、WioBG770Aを使っているので、SORACOMに送ってクラウド連携も試してみる予定です。

その他の参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?