ArduinoとInfineon 3D磁気センサーで作る無線磁気データ転送
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | 送信側マイコン |
| Infineon 3D Magnetic Sensor 2Go (TLE493D-W2B6) | 1 | 受信側、X/Y/Z軸磁界検出 |
| 電磁石 (自作可: エナメル線+鉄ボルト) | 1 | 送信側、磁界発生源 |
| リレーモジュール (5V駆動) | 1 | 電磁石ON/OFF制御 |
| ジャンパーワイヤー | 1式 | |
| 外部電源 (電磁石用, 5V/12V等) | 1 | 電磁石仕様に合わせる |
使用ソフトウェア
- Arduino IDE
- Infineon 3D Magnetic Sensor GUI (Windowsのみ, 公式ページ からダウンロード)
- Infineon XMCボードパッケージ (Arduino IDE用)
- TLE493D_W2B6 Arduinoライブラリ (GitHub)
プロジェクト概要
電波 (Wi-Fi/BLE/LoRa等) を使わず、磁界変調 でデータを無線伝送するユニークな実験プロジェクトです。Arduino UNOがリレー経由で電磁石をON/OFF (1/0) し、近くに置いたInfineon 3D磁気センサー (2Goボード) が磁界変化を検出してデータを復元します。距離は数cm〜十数cm程度ですが、電波不可環境やシンプルな近接通信に応用可能です。
ステップ1: 送信側 (Arduino UNO) 配線

- リレー入力 (IN) → Arduino デジタルピン 12
- 電磁石とその電源 → リレーの常開 (NO) 接点間に直列接続
- リレー共通 (COM) と NO に電磁石回路を接続

ステップ2: 送信側スケッチ
int incomingByte = 0;
int data = 0;
void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
Serial.println(F("Starting..."));
Serial.println(F("Send a string of binary digits (0/1)"));
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
data = 1;
if (incomingByte == '0') { // ASCII '0' = 48
digitalWrite(12, LOW); // 電磁石OFF
Serial.print('0');
delay(100); // ビット間隔 ~10bps
}
else if (incomingByte == '1') { // ASCII '1' = 49
digitalWrite(12, HIGH); // 電磁石ON
Serial.print('1');
delay(100);
}
else {
Serial.print('?');
}
}
else {
if (data == 1) {
digitalWrite(12, LOW); // 送信終了で電磁石OFF
Serial.println();
data = 0;
}
}
}
シリアルモニターで「101010」等を送信すると、リレーがカチカチ動作し電磁石が変調されます。
ステップ3: 受信側 (2Goボード) GUIインストール
- Infineon公式ページからGUI zipをダウンロード、インストール (USBドライバーも同時インストール)
- Windowsのみ対応 (Mac/LinuxはVM必須)
- 2GoをUSB接続、GUI起動、Linkボタン → Fast Mode選択でリアルタイム磁界データ表示

ステップ4: 動作テスト
電磁石を2Goセンサー近くに配置。Arduinoシリアルモニターで 1/0 送信。GUIの X/Y/Z グラフにパルスが現れれば成功。
ステップ5: 2GoをArduino IDEでプログラミング (スタンドアロン受信機化)
- Arduino IDE → ファイル → 環境設定 → 追加ボードマネージャURL に追加:
https://github.com/Infineon/Assets/releases/download/current/package_infineon_index.json - ツール → ボード → ボードマネージャー → 「XMC」検索 → インストール
- TLE493D_W2B6ライブラリ zip をダウンロード → スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストール
ステップ6: 受信側スケッチ (2Go単体動作)
#include
Tle493d_w2b6 mag3DSensor = Tle493d_w2b6();
const int sens = 1; // 感度閾値 (小さいほど高感度、環境磁界ノイズに注意)
void setup() {
mag3DSensor.begin();
mag3DSensor.enableTemp();
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
mag3DSensor.updateData();
// 3軸いずれかが閾値超過で磁界検出とみなす
if (abs(mag3DSensor.getX()) > sens ||
abs(mag3DSensor.getY()) > sens ||
abs(mag3DSensor.getZ()) > sens) {
digitalWrite(LED_BUILTIN, HIGH); // 検出時LED点灯
} else {
digitalWrite(LED_BUILTIN, LOW);
}
delay(50); // 20Hzサンプリング
}
ステップ7: 統合テスト
電磁石をセンサー近くに置き、2GoをUSB給電、ArduinoをPC接続。シリアルモニターで 1/0 送信 → 2Goの内蔵LEDが送信パターンに追従して点滅すれば完成。
感度調整: LEDが点きっぱなし → sens 増やす / 点かない → 減らす / 電磁石を近づける / 2Goリセット (抜き差し)。
発展アイデア
- Arduino側にボタン追加でヘッドレス送信機化
- スピーカー接続で磁界変調オーディオ伝送 (音楽ストリーミング?)
- マンチェスター符号化等でクロック同期・エラー検出追加
- 複数の電磁石/コイルで多値変調 (空間多重)
- センサー側もArduino接続し、双方向通信 (半二重) 実装
- 土壌/水中など電波届かない環境での近接テレメトリ
コードリポジトリ
https://github.com/tctree333/Arduino-3D-Sensor
製造プロセス
- 家庭用の低コストワイヤレスセンサーネットワークを構築
- Arduinoで実現する低コスト・リアルタイム太陽光パネル監視システム
- Arduinoで作る高精度エナジーモニター&データロガー – Dr. Wattsonボード活用
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- USB-MIDI機器をBluetooth LEでiOSに無線接続 ─ Arduinoベースの3つのアダプター設計
- スマートワイヤレス照明スイッチコントローラー:Arduinoで物理スイッチを遠隔操作
- 次世代磁気ナノ構造「透明マント」でデータストレージを革新
- Spark Microsystems、超低消費電力・低レイテンシIoT向けUWBトランシーバを発表
- 堅牢な長距離無線センサネットワークでリモートデータ監視を実現
- ワイヤレスMODBUS統合の理解:知っておくべきこと
- ワイヤレスSCADAへの移行:実証済み手法、核心的違い、信頼できる技術選択肢