建物の明かりをハックする「住人たち」「カリヨン」ができるまで #3 / 制御編
この記事は、廃墟となった学生宿舎を利用した展示「平砂アートムーヴメント」で出展した、窓から見える明かりをハックし、建物全体を作品にする作品の制作の記録です。
老朽化で使用停止となった筑波大学の平砂学生宿舎「9号棟」の東側のうち23室に制御回路を仕込み、明かりの動きで時を知らせる「カリヨン」実在する学生の生活を観察する「住人たち」の2作品を交互に展示しました。今回は「作品の制御とデータ収集」についてです。
これまでの2記事はこちら。まだお読みでない方、作品を直にご覧いただいたことのない方は、ぜひ1本目からどうぞ!
先の2記事と比べると技術的な話が多めです。ハイテクに親の仇があって相容れない系の方は「<カギ>の制作」あたりまで飛ばすと幸せになれそうです。
前回までのあらすじ
「準備編」では、建物の構造や設備を調べ、作品全体のシステム構成を決定しました。現場入りするまでには大量の部品の調達と、自作で組み立てる部品の設計をしていました。実際に現場入りしての「設営編」では、物量の多さと部品調整の想定外のシビアさに悪戦苦闘しながらも取付・配線をし、テスト運転をしました。
灯りの制御プロトコル
「準備編」でも取り上げましたが、建物内のシステム構成は図のようになっています。各居室の電灯スイッチにはモーターが取り付けられ、廊下に並んだ6室ごとに設置した制御装置に接続。制御装置は、作品の中心である東翼側ラウンジのWi-Fiに繋がっており、さらにその先は、廊下に通した光ファイバを介して、反対側のラウンジで別作品(Instant Sympathy)を動かしているPCへ接続されています。
階段を上り下りして各部屋を回るのは鬼のように大変なのですが、動かすのは手持ちのノートPCからWi-Fiに接続するだけで可能です。とてもたのしい。
制御にはArt-Net(DMX over Ethernet)という信号規格を使っています。これは舞台照明の制御に使われる信号(DMX512)をEthernetを介して転送するもので、早い話が身近なネットワーク機器を使って照明の制御ができるものと思って良いです。このような既存の規格を取り入れておくことで、作業の過程でそれに対応したツールやプログラムを活用できます。
舞台で照明機器ごとに番号が振られて個別に制御されるのと同じように、9号棟の部屋にも番号を振って信号に対応させました。
これで、Art-Netに対応した機器をネットワークに繋ぐだけで、自由に点灯・消灯をコントロールできるようになりました。既存の舞台照明用ソフトを使うこともできますが、実際にやってみると思い通りにいかず面倒なシーンがいくつかあり、設営中にお手製のテスト信号生成ツールを作ったりもしました。
というわけで、ここからは各作品固有の仕組みをご紹介していきます。
「カリヨン」の制御
音に合わせて灯りを点滅させる「カリヨン」は、決められた時間になったら予め記録されたパターンを再生するだけなので、仕組み自体は単純です。問題はそのパターンの記述の仕方で、全てのステップにおいて33室の点灯・消灯を記述していたら、データを作るだけで非常な時間がかかってしまいます。
実際にこれをやってしまったのが稲田の過去作品「リズム」です。6台のメカニカルリレーがリズムを刻むだけのガジェットですが、初期バージョンでは全てのステップに対して6つの0/1を並べたテキストで楽譜を記述していました。後に中身を書き換えた際に多少賢い書き方にはなりましたが、コードが読めない人でもこれを書くのが面倒そうなのはおわかりいただけるかと思います。
// 改良後のバージョンの楽譜データ (C++)
// 各ステップでどのリレーがON/OFFであるかをビットで表した値の配列
const char pattern[1000] PROGMEM = {
63,0,63,0,63,0,63,0,42,21,42,63,0,63,0,
63,0,63,0,63,0,63,0,42,21,42,63,0,63,0,
48,12,3,56,7,48,60,63,0,63,0,33,51,63,51,33,12,30,63,51,33,0,
48,12,3,56,7,48,60,63,0,63,0,33,51,63,51,33,12,30,63,0,
48,12,3,56,7,48,60,63,0,63,0,33,51,63,51,33,12,30,63,51,33,0,
48,12,3,56,7,48,60,63,0,63,0,33,51,63,51,33,12,30,63,0,
63,0,63,0,63,0,63,0,42,21,42,63,0,63,0,
63,0,63,0,63,0,63,0,42,21,42,63,0,63,0,
12,30,63,51,33,0,
};
// 各ステップにどれだけの単位時間をかけるかを表した値の配列
const char wait[1000] PROGMEM = {
4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,
2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,1,1,1,2,2,1,1,
2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,1,1,1,2,4,
2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,1,1,1,2,2,1,1,
2,2,2,1,1,1,1,2,2,1,1,2,2,2,1,1,1,1,2,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,
4,4,8,4,4,8,
};
「カリヨン」ではもう少し学習しました。以下は、「カリヨン」冒頭(動画では0:17〜0:43)の実際のパターン記述です。パターン記述自体をコードにしてしまうことによって制御構文が使えるようになり、記述量をざっくり減らすことができます。記述量が減りましたね!(そんな偉そうに言うほどのことでもない)
// カリヨン 「Opening」パートの制御コード (JavaScript)
const Score = require('../Score');
const score = new Score();
score.play('/sounds/opening.mp3');
score.wait(1000);
for(let i = 1; i <= 24; i++) {
score.set(i, 255);
score.wait(1000);
}
module.exports = score;
このコードは再生中に逐次実行されるのではなく、実行時に「全ステップに対し」「全チャンネルのON/OFFを記述した」データを吐き出します。実際に機器を駆動させる際には、省略された記述よりも全てベタ書きされた手順の方が扱いやすいので、その間を中継ぎする仕組みを作ったイメージです。
このコードを現場のPCへデプロイし、所定の時間になったら運転開始されるように仕込みます。なお、毎回の運転終了時に次回の起動時刻を決定してオンラインのデータベース(後述)に登録することで、Webサイトでの報知と音の同期再生を実現しています。
「住人たち」全体の構成
「住人たち」は、協力者の住処の電灯の点灯・消灯を<カギ>と呼ぶ装置で検出し、対応する部屋の電灯に反映させる作品です。見た目は地味なものですが、インターネットを介して集めたリアルタイムなデータによって制御される分、より複雑な仕組みで動いています。一体どうやって……?
全体の構造はこんな風になっています。GoogleのデータセンターのリソースをレンタルするGoogle Cloud Platform(GCP)を使い、全ての中心となるデータベースと、<カギ>がアクセスしてくるエンドポイント、一般来場者向けのWebサイト(下図)を作成しました。
図中で「データベース」と表記されているFirebase Realtime Databaseは、接続しておくとデータの更新をほぼ瞬時に通知してくれます。ここでは全ての<カギ>が送ってくる明るさの情報を保持しているので、明るさの変化があると、Webサイトと現場のサーバも即時に反応します。現場のサーバは先に述べたようにLANを通じて全ての電灯を制御できるので、このデータを電灯へリアルタイムに反映させています。
これが、全く離れた場所から瞬時にデータを集めて、建物の電灯をコントロールする仕組みです。
「住人たち」<カギ>の製作
全体の構成は既存のツールを使って難なく作れるのですが、問題は<カギ>です。
● 電灯の明滅を検出できる
● データを遠隔で取得できる
● 誰でもセットアップできる
を満たすデバイス。一瞬だけスマホのアプリにする案も検討していましたが、結局は独自デバイスを作成する方向で固まりました。Wi-Fi搭載のマイコンを使い、各「住人」が自宅のネットワークに接続することでデータを届けることができます。
○本体パッケージの製作
マイコンは剥き出しの電子基板です。通電部分に金属製のものや水分がかかるとほんとうに秒殺で壊れます。ひどいときには発煙・発火したりもします。一瞬の不注意で、いままで何台のマイコンを墓場送りにしたことか。👼
何も知らない人が扱うにはいささかリスクが高いので、ちゃんとしたパッケージを作らなければいけません。今回は、3Dプリンタとレーザーカッタで製作することにしました。大学の工作室、openfab創房(@sobo_online)が再び火を吹きます。
3Dプリンタで作ったケースに光センサーをつけた基板を入れ、アクリル板をレーザーで彫刻したものでフタをしました。
○本体ソフトウェアの製作
個人的に、内部に書き込むソフトウェア設計は一番緊張する部分でした。自作の機器を2週間以上他人に手渡し、問題なく動作しなければいけません。何かミスがあったら一巻の終わりです。なるべく複雑な処理は避けて作りましたが、それでもフロー図に起こしてみるとなかなかな感じになりました。(今回の記事のためにこの図を書いてびっくりした……)
Wi-Fiへの接続試行を最初に行い、接続されたらまずは先ほどクラウドに用意したAPIから現在の時刻を取得します。作品の稼働時間帯であるなら5秒毎に照度センサーの値をチェックし、大きな変化があった場合にデータをAPIへ送信します。何らかのエラーが発生した場合は全ての処理が止まりますが、この場合は5分ごと、また正常に稼働している時でも1時間ごとに全体の再起動がかかるので、予期しない事態でもフリーズしていなければ再起動して復帰します。
また、PCにUSBで接続してコマンドを送ることで、設定の読み書きや本体の制御ができます。ユーザー手元でのWi-Fi情報設定のほか、製造時に個体識別のトークンを書き込んだり、半田付け部分の導通確認をしたりできるようになっています。
あと地味に気を使ったのが、ユーザーへの動作状況のフィードバック。マイコンには画面がついていないので、電源のON/OFFも、エラーの状況も、全部ボード上のLED1つの点滅だけで示さなければいけません。
LEDの点滅ひとつでも、見た目ですぐに状態がわかるよう、またずっと部屋に置いておいても目障りにならないよう、気遣いのある設計が要求されます。エラーは目につきやすく、普段は目立たないように(でも電源が入っていることは確認できるように)、などと、ここもかなり気を使いました。誰か気付いてくれていたら嬉しいのですが、暗い部屋ではLEDも自動的に暗くなる優しさ機能を入れたりもしました。
○セットアップアプリと取説の製作
マイコンのプログラムは専用のソフトウェアがないと書き込めません。接続するWi-FiのSSID・パスワードも例外ではなく、初期設定を行うためのPCアプリを別途作成することにしました。制作の物量がどんどん増えていきますね!🔥💥🤔
また、作品の一部になってもらう「住人」の人たちに対して、<カギ>の取説、作品の一部としての振る舞い方などの資料を作成しました。一般の観客の目に触れない領域も作品の一部です。ちゃんとデザインを作ります。
「住人たち」の募集と<カギ>の配布
以上の準備と並行して実際に「住人」となってくれる学生を探し、個別に連絡をとって<カギ>のセットを配布しました。
パッケージは渡す際に複数個を用意し、「住人」自身に選んでもらう形にしました。<カギ>は内部のIDで接続先の部屋が決まっていますが、外観からは全く判別ができません。作った当の本人にもわかりません。自分がどの部屋に「住む」ことになるのかは、セットアップのアプリを開いてみて初めて、本人だけが知ることになります。
最終的に、作品には14人の「住人」たちが住んでくれました。自分で機器をセットアップし、2週間にわたって生活の様子を提供してもらうというハードルの高さでしたが、大きなトラブルは発生することなく終了しました。住人の皆さんには本当に感謝です。
なお<カギ>は会期終了後に返却してもらいましたが、その際に自分がいた部屋の番号と同じキーホルダーをおまけとしてお渡ししました。<カギ>を持って住んでいた居室に、会期後も繋がりを持つアイテムが残る仕掛けです。
このキーホルダーには、「準備編」で9号棟のいろんな要素をかたっぱしからデータにしていた際に作った、実際の居室扉のプレートの書体を使用しています。ありがたいことにこの後、展示図録の制作を率いた岡本太久斗(@TiME_SKiPPER_)と高木凛(@tkg_tkb)のおかげで、図録内見出しにもこの書体データが使われました。あてもなく作ったデータも案外役に立つものです。(3記事越しの伏線回収)
展示を終えて(まとめ)
3回にわたって延々と続いたメイキングもここで終わりです。こんな最後まで読んでいただきありがとうございました。
この作品は、自分の中で続けているコンセプトのひとつ「直接見えないもののモデル化と観察」の上にある取り組みです。ものすごく大変な作品でしたが、自分の取り組みのコンセプトを固めたり、また取り組みそのものを広く知ってもらうきっかけになったので、とても価値あるものだったと思います。ただ今後当分は、この規模のバカを再びやる予定はありません()。
最後に、がむしゃらに作品を作っていた自分の周りの人々のお言葉を紹介して締めたいと思います。
狂った作品計画書を受け取った平砂アートムーヴメント実行委員会 阿部(@EMC92501704)
「いなださんはJK。字がかわいいから」
稲田の搬入した機材の物量を見た平砂アートムーヴメント実行委員会 栄前田(@eimaeda_)
「暴力的な取り組みだ」
大学宿舎時代の部屋のお隣さんであり、今回企画の展示者でもあった加藤(@katoyu_maker)
「なんでお前の作品は毎回、なんというかこう、数が多いんだ?」
わざわざ大阪から乗り込んで不穏なフラグを立てる母
(実行委員:阿部に向かって)「こんなに散らかしてるということはおそらくだいぶんご迷惑をおかけすると思うので」
兄の作ったものを全否定する体育会系の妹
「私も走り回って電気つけ消しして回ったらこんなめんどいことせんでもカリヨンできる」
ありがとうございました。
活動に興味を持っていただいた方、よろしければご支援をお願いします!作品を作るにあたって応援していただける、不安なく作業が進められることほど嬉しいものはなく、本当に喜びます。作品のテクノロジーや裏側などを、不定期ではありますがnoteで公開します。