高校の文化祭で音と光のインスタレーションを自作した話



こんにちは！！
この記事では、文化祭で展示した音と光のインスタレーション作品について解説します！！


<iframe width="400" height="380" src="https://www.youtube.com/embed/t5REk24PNAI" title="2023年11月 LEDPole 収穫祭" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## 開発チームについて
この作品は 燈－Tomoshibi Technology－ という私が立ち上げたモノづくりチームで開発しました。

普段はロボット技術をベースに動き回るディスプレイやロボットアームなど[様々な作品](https://jun-robot.github.io/portfolio/)を開発しています。

この文化祭でのインスタレーションは2023年10月ごろに1ヶ月ほどで開発しました。

## 概要

主な機材はノートパソコンとLEDを搭載した2mのPoleを10本を使用しました。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/0b3bc936-9667-d147-8fc1-6efe9d2f4b00.jpeg">

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/e445462d-f33f-9d41-4d1e-62838361df29.jpeg">

大まかなシステムは、ノートパソコン内で実行されているTouchDesignerで音楽を流すのと同時に低周波成分の大きさを計算して、各PoleにArtNet経由で送信します。Poleには、ESP32が搭載されていて、ArtNetで送られてきた音の大きさ等の情報をもとに、接続されているNeoPixelを光らせます。


## 各Poleの仕様について
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/210ee664-4696-62ee-3233-f7af20835ced.jpeg">

### ハード
それぞれのPoleには、[メンバーのねこ](https://x.com/cat_nekonekone)が設計してくれた、このようなESP32搭載の自作基板が載っています。
この基板には、電源保護回路、マイクの増幅回路、デバッグ用のディスプレイ&スイッチ等が搭載されています。そして、一番重要なのが、固有のIDを振るためのDIPスイッチです。

スイッチの切り替えで、LEDの光度を変更できるようにして、強い電源がなくても、開発できるように工夫しました。

また、構造体は3030シリーズのアルミフレームで作っています。このサイズだと、ナットを入れる溝に[秋月で売っているLEDテープ](https://akizukidenshi.com/catalog/g/g112982/)がピッタリ収まるので便利でした。

1m60LEDのテープを2mの棒の4面に貼り付けたので、Pole1本あたり、全部で480LEDが搭載されていました。

### ソフト
TouchDesignerからArtNet経由で受信した値に基づいて、LEDの光らせ方を変化させるシンプルなソフトウェアです。

初期のソフトウェアでは、現在のMODE情報、メインカラーのHSV、サブカラーのHSV、音の大きさの8byteを受信していました。後から打ち上げ用の情報やランダムに光を動かす情報等も追加しました。

MODEと自分のIDによって、光り方が変化するような実装をしていました。そうすることで、大量にあるESP32のコードを書き換えなくても、表現を変化させられるような構造にしました。
例えばMODEが1（単色モード）の場合は、すべてのPoleがメインカラーの値をそのまま表示します。もしMODEが2（2色モード）の場合は奇数IDのPoleはメインカラー、偶数IDのPoleはサブカラーといった運用をしました。そして、音の大きさの情報を元に、どの高さのLEDまで光らせるかを決定していました。
こうすることで、パソコン側のTouchDesignerから自由に様々な演出を作ることができました。

また、TouchDesignerから各LEDの色を直接指定することも考えたのですが、1本あたり480LEDでそれぞれRGBがあるので、最低でも1440byteの情報をやりとりすることになり、私の実装力では遅延が大きすぎてしまったため、断念しました。
この実装ができていれば、複数のPoleを組み合わせて、1つの絵を表示するような演出もできたと考えています。

## TouchDesigner側の処理について
<iframe width="400" height="380" src="https://www.youtube.com/embed/LenXOIJ-vec" title="TouchDesignerで作った音と光のインスタレーション" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

ここでは、音楽を流すと同時に、フーリエ変換し低周波成分を抽出して、各Poleに送信していました。また、天井にプロジェクションマッピング（？）も行っていたため、その処理も実行していました。

なので、どんな曲でもMP3ファイル（別にTDに読み込めれば何でも）さえあれば一瞬で演出できちゃうのがこのシステムの良さでした。EDMを流したらクラブ風になるし、ゆったりめの曲を流せば、ふんわりした空間になるしで、とても柔軟性の高いシステムに仕上がっていました。

実は当初の予定では、パソコンでは音楽を流すのみで、各Poleに搭載されたマイクで音楽を分析しようと考えていたのですが、足音や外部の雑音、ノイズと音楽を判別することが難しく断念し、音が鳴るのと同時にArtNetで送られてくるシステムにしました。

## 制御台について

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/4ef053c6-9eb9-a699-b995-adeec92daaec.jpeg">

この制御台に、パソコン、スピーカー、プロジェクター、Wi-Fiルーター、Poleの5V電源を生成する電源装置を設置していました。

各Poleに入力する電源は5Vなのですが、最大で1本あたり15Aほど消費する計算だったので、5V60Aの電源装置を4台使っていました。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/bf3b3e71-cdd5-7b2b-0efa-b3ee6c99d6cf.jpeg">

（縛ってるの良くないです。）

また、ここに長い延長コード兼10口の電源タップを伸ばしてきて、各種装置に電源を供給していました。スイッチ付きの電源タップだったのが地味に良くて、調整する時に自由に動作を止めたりできたのがとても便利でした。

## 準備が大変だった話。
サクッと作りましたって感じで書いてきましたが、ここまで大きなシステムを作るのは初めてでとても苦労したため、触れておきます。

文化祭前からシステムなどは準備していたのですが、ハードウェアを組み立てるのは準備になってから行ったのでとても大変でした。
組み立て途中に部品のミスが発覚したりと、四苦八苦でしたが完成させることができました。同じような機会があったら、準備期間より前に一本だけでもテストで組み立ておくべきです。

文化祭準備日の2日間はメンバー3人に加え、顧問の先生、友人数人にも手伝ってもらったり、先生のご厚意で時間を延長してもらったりと、沢山の人の支えもあり完成させることできました。

手伝ってくれた皆さんに感謝です。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/c7bd6a3f-f679-fec9-c4b2-b32856cc6885.jpeg">

家に届いた物資の輸送。バリアフリーの大切さを学んだ。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/a18d8c13-9a03-1c55-f48e-918690aa228c.jpeg">

無限に組み立て、線を作るのが大変だった


## 当日の様子
最後になりますが、当日の様子をいくつか掲載します。
たくさんのお客さんに訪れてもらうことができました。

![IMG20231029150635.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/226575ee-ee4e-9781-7833-b48076ba186b.jpeg)


#### 会場の様子

<iframe width="401" height="713" src="https://www.youtube.com/embed/s_I_yV9jN2c" title="高校生が作った音と光のインスタレーション" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

#### 限定公開しているデモ動画

https://youtu.be/cqryxi8yUIE

https://youtu.be/7XuvS_rLJD4


## 今後の展望

2024年5月現在、文化祭からは半年ほどたち、ハードウェアからソフトウェアまで様々なバージョンアップを重ねています。

回路では5V10Aまで対応したDCDCコンバーターを開発したり、構造ではアクリルパイプを二重にかぶせる構造にすることで、より美しい見た目にしたり、ソフトウェアでもArtNetだけでなく、RS485（DMA）にも対応させたりしています。

https://x.com/i/status/1770621218376540656

今後は、複数のPoleを用いて、空間に存在する3Dオブジェクトを表示するシステムを構築したいです。そのためにも通信のラグを抑えて、ノートパソコンから各LEDのピクセルを制御できるようにしていきたいと考えています。

まずは、7月に行われるRoboCupJuniorの世界大会でこのPoleを用いたパフォーマンスをしてきますので応援よろしくお願いいたします。

全国大会での様子↓
<iframe width="400" height="380" src="https://www.youtube.com/embed/sfEVmlThWUo" title="RoboCupJuniorJapanOpen2024 本番パフォーマンス" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


## さいごにちょっと宣伝

世界大会の渡航費を集めるために、クラウドファンディングを実施しているので、ぜひ見にきてください！
他のロボットの説明やチームについてもまとまっています！！

[<img width = 400 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/8d40f59f-e993-e464-e0a9-7a5f3a4bf6da.png">](https://camp-fire.jp/projects/view/762605?utm_campaign=cp_po_share_c_msg_mypage_projects_show)]


## 参考
- [ピクセルマッピングでLEDテープライト制御　NeoPixel+ESP32＋TouchDesigner](https://qiita.com/taisuke0430/items/af25dbc1d4b0642a439e)
- [ArtNet DMX で Lチカしてみた。(ESP8266/ESP32 + NeoPixel LED)](https://qiita.com/kitazaki/items/fb3f6e6f5b007b8c3b54)