脳波でドローンを操る:EEG(MindWave)× Arduino MKR1000 でマイクロ・レーシング・ドローンを飛ばす
概要
NeuroSky MindWave Mobile(脳波センサー)で取得した「集中度(Attention)」をProcessing経由でArduino MKR1000へ送信し、ドローン・コントローラーのジョイスティック信号をPWM→ローパス・フィルタでアナログ電圧に変換して注入することで、離着陸を「念力」で制御するプロジェクトです。ステアリング(ヨー/ピッチ/ロール)は固定値とし、スロットルのみ脳波で制御します。
必要なパーツ
- Arduino MKR1000(3.3V動作必須) ×1
- マイクロ・レーシング・ドローン+純正コントローラー ×1
- MindWave Mobile NeuroSky ×1
- 100µF 電解コンデンサ ×4
- 220Ω 抵抗 ×4
- ブレッドボード、ジャンパー・ワイヤー多数
- はんだごて、テスター、デソルダ・ツール
仕組み:全4フェーズ
Phase 1: コントローラー基板ハック
- コントローラー分解、ジョイスティック(2軸×2=4ポテンショメータ)を特定
- 電源投入状態でテスター測定:各スティックの「中立/最大/最小」電圧を記録(例:1.65V/3.3V/0V)
- ジョイスティック基板から取り外し、+/−端子間に10Ω抵抗をハンダ付けして回路を完成
- 各スティックの信号線(計4本)と電源線(B+, B-)をソリッド・ワイヤーで引き出し
注意:コントローラー電圧(単3×2≈3.3V)とMKR1000の3.3V出力が一致するため直結可能。5V系Arduinoでは分圧やレベル・シフタ必須。
Phase 2: PWM→アナログ変換(ローパス・フィルタ)
ArduinoのanalogWrite()はPWM(パルス幅変調)出力。コントローラーは直流電圧を期待するため、RCローパス・フィルタ(R=220Ω, C=100µF)で平滑化。カットオフ周波数約7.2Hzで、PWMキャリア(490Hz)を十分減衰。4チャネル分をブレッドボード上に並列実装。
Phase 3: Arduino側回路とスケッチ
MKR1000のPWMピン(D2-D5)から各フィルタへ出力、フィルタ出力をコントローラー基板の信号線へ接続。スケッチはシリアル(115200bps)で「throttle,yaw,pitch,roll」の4整数(0-255)を受信し、analogWrite()で出力するだけの最小構成。
Phase 4: Processing + MindWave 連携
- PCにMindWaveドライバ/ThinkGear Connectorインストール、Bluetoothペアリング
- Processing 3にMindSetライブラリ(Jorge Cardoso版)導入
- COMポート設定:Arduino用とMindWave用をそれぞれ指定
- 集中度(0-100)をスロットル値(30-255)へマッピング、40%未満でゼロ
- シリアルでArduinoへ送信。'k'キーでキルスイッチ(全停止)
制御マッピング詳細
| スティック | 機能 | 中立値 | 脳波制御 |
|---|---|---|---|
| 左スティック 上下 | スロットル | 127 | 集中度で可変(40%→30, 100%→255) |
| 左スティック 左右 | ヨー | 127 | 固定 |
| 右スティック 上下 | ピッチ | 127 | 固定 |
| 右スティック 左右 | ロール | 127 | 固定 |
安全上の注意
- コントローラー/ドローン破損リスクあり。自己責任で。
- プロペラ回転中の接触防止、保護メガネ着用
- 屋内飛行は十分な広さと障害物除去必須
- MindWaveのフィット感不良でノイズ大→信号強度監視必須
発展のヒント
- 瞑想度でヨー制御、瞬きでキルスイッチ等、他のEEG指標を割り当て
- PID制御や高度センサー融合でホバリング安定化
- 複数ドローンを異なる周波数で同時制御
- EEG以外の入力(音声、ジェスチャー、ジョイスティック等)への応用
リソース
- Arduinoスケッチ(Drone Control)
- Processingスケッチ(Processing master)
- 回路図:ローパス・フィルタ×4、MKR1000-コントローラー接続図
- 動画チュートリアル(記事内リンク)
まとめ
「PCBハック+ローパス・フィルタ+シリアル通信+EEG」という最小構成で、ドローンの離着陸を脳波で制御するデモを実現。ジョイスティックのポテンショメータをバイパスし、Arduinoからアナログ電圧を注入する手法は、あらゆるアナログ・ジョイスティック機器へ応用可能。「念力で飛ばす」体験は、BCI(ブレイン・コンピュータ・インターフェース)入門として極めて刺激的です。
製造プロセス
- TinyML言語検出器:Edge ImpulseとArduino Nano 33 BLE Senseで「はい」を多言語判別
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
- ATtiny85ミニアーケード:スネークゲーム - 手のひらサイズOLEDゲーム機の製作
- ポータブル距離検出器:Arduino Nano自作キット(HC-SR04、18650電源、3Dプリントケース付き)
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- 高度なリモートコントロールグリッパーロボット: 精密ハンドリング向け
- 銅メッキプロジェクト:Arduino UNOで作るスマート電気メッキシステム
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
- Arduinoシフトレジスタで美しい光のシーケンスを作成