Arduinoで作るリアルタイム360°レーダー:ステップバイステップ製作ガイド
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO R3 | 1 | 制御用マイコン |
| 超音波距離センサー HC-SR04 | 1 | 距離測定用 |
| 180°サーボモーター(RobotGeek等) | 2 | 水平・垂直回転用(2個で360°カバー) |
| ジャンパーワイヤー | 1式 | 配線用 |
必要な工具
- パイプ(サーボ取り付け用構造材)
- ホットグルーガン(固定用)
使用ソフトウェア
- Arduino IDE(ファームウェア書き込み)
- Microsoft Visual Studio 2015(PC側レーダー描画アプリ開発・EXE生成)
プロジェクト概要
2台の180°サーボモーターを直交配置し、超音波センサーを搭載して全方位360°の距離スキャンを行うレーダーシステムを製作しました。Arduinoがサーボ制御と距離測定を行い、シリアル通信でPCへデータ送信。PC側アプリ(Visual Studio製)がリアルタイムでレーダー画面を描画し、1回転(360°)ごとに前回スキャンを薄く残しながら新しいスキャンを重ねて表示します。さらに、取得した距離データを画像にステガノグラフィ(難読化埋め込み)する機能も実装:一見普通の画像ファイルに見えるが、中にレーダーデータが隠蔽されています。
製作手順
Step 1: 部品準備
- Arduino UNO R3
- サーボモーター ×2(水平回転用・垂直回転用)
- HC-SR04 超音波センサー
- ジャンパーワイヤー多数
Step 2: 組み立てと配線
配線図に従って接続します。サーボの信号線をArduino D2(水平)、D3(垂直)に、超音波センサーのTrigをD9、EchoをD10に接続。PCとUSB接続し、シリアルポート(COM3やCOM5等)をデバイスマネージャーで確認しておきます。
完成したら、PC側レーダー描画アプリ(EXE)をダウンロードして実行してください。EXEファイルはこのページの「Custom parts and enclosures」セクションから入手可能です。EXEの動作に問題がある場合や、自前でアプリを作りたい場合はご相談ください。
Arduinoスケッチ(サーボ制御・距離測定・シリアル出力)
#include <Servo.h>
Servo Down; // 水平回転用(0-180°)
Servo Up; // 垂直回転用(0-180°)
const int trigPin = 9;
const int echoPin = 10;
long duration;
int pos = 0;
int pos2 = 0;
int distance;
int _degrees;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Down.attach(2);
Up.attach(3);
Serial.begin(9600);
}
void loop() {
// 初期位置に戻す
Down.write(0);
Up.write(0);
// 水平スキャン(0→180°)
for (pos = 0; pos <= 180; pos += 1) {
Down.write(pos);
_degrees = pos; // 水平角度
measureDistance();
delay(50);
// 水平180°到達時に垂直スキャン(0→180°)を実行
if (pos == 180) {
for (pos2 = 0; pos2 <= 180; pos2 += 1) {
Up.write(pos2);
_degrees = pos + pos2; // 合成角度(0-360°相当)
measureDistance();
delay(50);
}
}
}
// 戻り動作(高速)
for (pos = 180; pos >= 0; pos -= 1) {
Down.write(pos);
Up.write(pos);
delay(5);
}
}
void measureDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // cm換算
Serial.print(distance);
Serial.print(",");
Serial.println(_degrees);
}
PC側アプリケーション機能
- リアルタイムレーダー描画:受信した距離・角度データを極座標プロットで表示
- スキャン履歴の重ね合わせ:1回転ごとに前回スキャンを半透明で残し、変化を視認可能
- データの画像ステガノグラフィ:レーダーデータを画像ファイル(PNG等)に埋め込み、外見上は普通の画像として送受信可能。通信内容を秘匿したい用途に対応
- AIによる最適埋め込み:画像インポート時に、AIが最も検出されにくい埋め込み手法を自動選択
回路図(複数アングル)
ダウンロードファイル
- PC側レーダー描画アプリ(EXE): circular_draw_qP2ROsoPds.rar(Custom parts and enclosuresセクション)
- Arduinoスケッチ:上記コード参照
補足・注意点
- サーボは180°タイプを2個使用し、機械的に直交配置することで擬似的な360°カバーを実現しています。本格的な360°連続回転サーボやスリップリングを使う設計も可能ですが、コスト・複雑さの観点からこの構成としました。
- 超音波センサーの指向性・分解能・測定距離(2cm〜4m)により、近距離・狭角度の物体検出に適しています。屋外長距離用途にはLiDAR等の検討が必要です。
- シリアル通信ボーレートは9600bps。ProcessingやPython等でも同様にデータ受信・描画可能です。
- ステガノグラフィ機能はPC側アプリに実装されており、Arduino側には含まれません。
製造プロセス
- ArduinoとInfineon 3D磁気センサーで作る無線磁気データ転送
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- ArduinoとTEA5767で作る高性能FMラジオ受信機
- Arduino 101で作る万歩計:DHT11温湿度センサー&LCD表示付き