超音波センサーで動く「目」: 8x8 LEDマトリクス×2で表情豊かなインタラクティブアート
必要なパーツと材料
| パーツ | 数量 | 備考 |
|---|---|---|
| 超音波距離センサー HC-SR04 | 2 | 左右の「目」用。検知距離3-4m |
| Arduino Nano R3 | 1 | 小型、USB内蔵、GPIO豊富 |
| フォトレジスター (CdSセル) | 1 | 周囲明度検知、LED輝度自動調整用 |
| 8x8 LEDマトリクス MAX7219モジュール | 2 | デイジーチェーン接続可 (SPI) |
| ハーフサイズブレッドボード | 1 | 最初はこちらで組立推奨 |
| ジャンパーワイヤー | 1セット | 赤/黒は電源/GND、他色で信号分類推奨 |
| 抵抗 330Ω | 1 | CdS分圧用 |
使用するソフトウェア
- Arduino IDE
- ライブラリ:
MD_MAX72xx(LEDマトリクス制御),NewPing(超音波センサー制御)
プロジェクト概要
2つの超音波センサーと2つの8x8 LEDマトリクスで「目」を作り、人の動きを追視させるインタラクティブアート「UltrasonicEyes」です。リビングやオフィスに置いておくと、こちらを見たり、まばたきしたり、不気味かわいい動きで楽しませてくれます。
配線手順 (ブレッドボード)
- 電源/GND: NanoのGNDと3.3V (または5V) をブレッドボードの両レールに配線。左右レール同士も接続。
- 超音波センサー×2: VCC/GNDを電源レールへ。Trig/Echoをデジタルピンに接続 (左: Trig=2, Echo=3 / 右: Trig=4, Echo=5)。
- LEDマトリクス×2 (デイジーチェーン): 1つ目のVCC/GNDを電源レールへ。1つ目の出力側 (Dout, CLK, CS) を2つ目の入力側へ接続。1つ目の入力側をNanoのハードウェアSPIピンへ (CS=10, MOSI=11, SCK=13)。※他ボード使用時はハードウェアSPIピンを確認のこと。
- CdSセル + 330Ω抵抗: CdSをブレッドボード2行にまたがらせ、片側を330ΩでGNDへ、もう片側を電源へ。抵抗側の行からアナログピンA5へ配線 (0-255のアナログ値取得のため)。
動作原理
- 左右の超音波センサーで距離を交互に測定 (500ms間隔で干渉回避)。
ping_median(5)で中央値フィルタリング。 - 距離差が閾値 (250mm) 未満、または両方検知なし → 正面を向く。
- 右センサーの方が近い → 右を向く。左が近い → 左を向く。
- ランダムなタイミング (2-10秒) でまばたき (単発/二重まばたきをランダム選択)。
- CdS値で周囲明度を検知し、LEDマトリクスの輝度 (0-15) を自動調整。暗所では暗く、明所では明るく。
永久化・ケース化
ブレッドボードで動作確認後、ユニバーサル基板にはんだ付けし、3Dプリントケース (2パーツ) に収納。筆者のサイト (unexpectedmaker.com) で動画や拡張実験 (静電容量タッチボタンで目の形状切替等) を公開中。
ソースコード
主要定数: CS_PIN=10, MAX_DEVICES=2, LIGHT=A5, 超音波ピン t1=2,e1=3,t2=4,e2=5, maxDist=400cm。目のパターン (正面/右/左/まばたき) は8バイト配列で定義。ShowEye_* 関数で2デバイス分 (16列) に同一パターン書き込み。メインループで測定→判定→表示→遅延 (250ms) のサイクル。
3Dプリントデータ / 回路図
ケースSTL (設定不要、任意プリンターで出力可) とFritzing回路図 (.fzz, .png) が提供されています。
製造プロセス
- Arduino UNOとMAX7219で作るUFOアタックゲーム – レトロなドットマトリクスシューティング
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- 3D RGB アルドゥクロック:Bluetooth対応LED時計(RTC内蔵)
- 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- Arduinoとジョイスティックでインタラクティブゲーム – LEDフィードバック付き
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- Arduinoで作る自律走行ミニローバー
- ゲーム用カスタムArduinoジョイスティックハンドルの製作