A Spherical LED display that consists of 180 triangular boards with one NeoPixel on each.
概要
システム構成としては、球体ディスプレイ本体とオプション部の制御ソフトとの構成となっています。 本体部は LEDの数が多いだけで原理としては単純です。 ただ、動作原理より数が多いことの方が難易度を上げています。
制御ソフトにはオプションとしていますが、本体自体は単独でプリセットデモの光らせ方はプログラムで埋め込んでいます。新しいプリセットデモを作成する際の表示補助や、スクリプトを PC から流し込むために制御ソフトを別途開発しました。
以下に準備説明していきますが、長いので興味のあるところをご参照いただければと思います。
The system consists of the spherical display itself and the control software for the optional part. The mechanism is simple, but the combination of a large number of boards and three-dimensional elements makes it more challenging.
The control software was created for the purpose of making it easier to understand the coordinate position and to check the color visualization on the display in real time.
I apologize for the long post, but I hope that you will pick up the reading parts that you need or are interested in.
多面体で球体を構成
今回の多面系は、三角形の基板を180枚一直線に接続した、180面体となります。 球体になるような形に三角形の辺の長さを調整することで、球体が構成されています。 サッカーボールと同様の構成で、五角形と六角形が交じり合って球体を構成しています。
For the Neopixel's charactaristic, 180 triangles are serially connected to form a sphere. To make it more like a sphere, I needed to adjust the length of each side of the triangle. I briefly thought it would be work to make it something like a soccer ball.
以前球体を作ろうとしたときに、サッカーボールのこの構成で、五角形、六角形部分を三角形で構成してさらに中央部分を球に接するように浮き上がらせると、より球体に近くなるという事を知りネタ帳に保存していました。
A soccer ball is inflated by air pressure, and the center bulges into a sphere. In order to make them with triangles, I found out that I should raise the central part of the each pentagon or hexagon and adjust them so that they touch the inside of the sphere.
今回その方法で球体を実現しようと前調べをしていたら、素晴らしいサイトを見つけました。
I found an excellent site when I was looking for the method to calculate the length of each side of the triangle.
球体を数種類の長さの棒で構成する為の、 棒の長さ計算サイト です。
The site is "Desert Domes"
元々ドーム型のテントの様な物を建てる際に、棒の長さを計算する目的でよく使われているみたいです。
The site shows how to build your own geodesic dome, calculating each strut length that makes up the dome.
こんな感じで半径を入力すると、構成される数種類の棒の長さを求める事が出来ます。
Just one thing you have to do is to input the radius of the sphere, and this site calculate and show the length of the struts.
これで出来上がりの図をプレビュー出来るのですが、
よく見ると、青色の線で五角形と六角形が構成されていることが判ります。 さらにそれを三角形に分割している線の長さが五角形と六角形で違うだけとなっています。
つまりは、底辺が同じ長さの二等辺三角形2種類で構成されていることが判ります。 Sphere と書いてある列が球体の場合の棒の数です。
必要な棒の数から必要な二等辺三角形の数を割り出します。
When I looked at the preview image for the site carefully, I could find there's pentagons and hexagons with blue lines. And yellow lines with the length (A) divide the pentagon triangles, red lines with length (C) divide the hexagon into triangles. That's mean there are two different sizes of triangles with length (A) and with the length (C).
All I have to do is just replace the length of the struts by the length of the side of the triangles. I had to calculate how meny each triangles I needed. I had to calculate how many triangles of each kind I needed, like below.
青色の (B) の棒の数 = 三角形の合計数×2
黄色の (A) の棒の数÷2 = 五角形を構成する二等辺三角形の数
赤色の (C) の棒の数÷2 = 六角形を構成する二等辺三角形の数
ですので、
等辺が (A) の五角形を構成する二等辺三角形が60枚
等辺が (C) の六角形を構成する二等辺三角形が120枚
必要となります。
I needed 60 triangular panels with yellow (A) lines on sides to consist pentagon, And 120 triangular panels with red(C) line of sides to consist hexagon.
早速、計算した長さで紙で作ってみました。
I just tried with printed paper drawn by the CAD software just same sizes as calculated triangles, and it came out fine!
普通紙で作っているので少し凹んでいますが、ちゃんと球体になることが確認できました。
It's just too soft to make with paper that it crashed before a photo taken
数珠繋ぎが以外に複雑
NeoPixel はシリアル式の LED で RGB値をシリアルで送信してやると、その色を保持します。 また、IN / OUT の端子を数珠つなぎに繋いでいく必要があります。
NeoPixel is a type of serial LED that inherits data from the previous one and passes it to the next, so it is necessary to connect the IN terminal and the OUT terminal continuously.
しかし、球体を三角形で構成している構造は意外と複雑で、数珠繋ぎにするにはかなり工夫が必要という事が判明しました。
そこで、基板の各辺を左右対称且つピッチを同じにすることでどんな方向からでも結合することが出来る様にし、 さらに IN/OUT ははんだジャンパーを各辺に設けて、組立後にいずれかをショートすることで、自由に設定できる仕組みにしました。
A little trick was needed to do this using triangle. This is because every side of the triangles could be an IN terminal or his OUT terminal for running path.
Therefore, by making each side of the board symmetrical and having the same pitch, I made it possible to connect from any direction. Furthermore, IN/OUT can be set freely by installing solder jumpers on each side and shorting either one after assembly.
この仕組みにより、各三角形の出入り口を自由に決めることが出来るので、経路を自由に決めることが出来ます。実際これが無かったら、経路決めるのが複雑すぎて多分完成しなかったかと思います。
当然回路図も全然複雑ではありません。
With this mechanism, you can freely decide the entrance and exit of each triangle, so you can freely decide the route. Of course, the circuit diagram is not complicated at all.
制御ソフトを別途開発
実は球体のうちの各基板の座標を表すのは複雑で座標を指示するのもかなり困難でした。それに加え、どの位置の LED を何色にするという指示や、試しにこの位置の LED をこの色にしたらどんな感じになるかといったものも、プログラムで埋め込むしかなかったので、時間が掛かって開発が滞りました。 そこで、座標を簡単に把握でき、かつ指示した色をディスプレイに即反映できるような制御ソフトを開発することにしました。
また制御ソフトとディスプレイの間の通信は、はじめはシリアル通信(UART) でやっていましたが、PCからディスプレイが遠く(近いと眩しすぎる)離れていたので、延長ケーブルを何本も繋いでいたのでワイヤレス化してしました。(有線・無線どちらでも操作できます。)
どうせワイヤレス化するならネット経由でやってしまえば、後々遠隔地でも操作できるのでという事で、MQTT 通信を無駄に使ってしまいました。
座標の指定方法は、作るものによって善し悪しがあるので、直行図による指定と展開図による指定の2通りを用意しました。(今の所。もっと色々欲しいけど…)
左クリックしたときと、右クリックしたときの色をあらかじめ設定しておき、クリックした地点の色をボタンの左右で指定します。クリックするとアプリの画面上に反映されるとともに、ディスプレイ側にも転送されて LEDが点灯するといった制御ソフトとなります。
It is quite difficult to visualize the coordinates and image how the lighting pattern looks like on the surface of a sphere in my head. In order to create the preset demo software, it took a lot of time for me to think about how making it lighting. It steals a large amount of my time to think and write software and programs into flash and try. I decided to develop a control software that can easily determine the location and color of LED lights, and test it in real-time.
With this software, you can set the left-click color and right-click color in advance, and you can easily set the color of the clicked LED with the left and right mouse buttons.
Originally, it was controlled by sending and receiving commands by wire via UART, but it was unstable near the PC, and I wanted to fix the place to put it in a place a little far away, so I decided to use MQTT to make it wireless. I made it. It can also be controlled via the internet.
直行図による座標で特定色を指示
縦方向だけ等間隔に配置して、横方向のマス数を変化させた図で表現したもので色を指定します。縦方向、横方向に直線は引きやすいのですが、実際は完全な直線にならないので、少し違和感は有ります。文字や直線を構成するような用途には使いやすいものです。 また、横方向全部や縦方向全部を直線として同じ色で塗りつぶすこともできます。
Coordinate system with orthogonal diagram.
This mode is used when you want to design with both vertical and horizontal directions in mind. You can also decide the color for both horizontal and vertical lines at the same time.
展開図による座標で特定色を指示
五角形や六角形の形を意識して色を指定できるようにしたもの、隣り合うマスがわかりやすいのと最終的なイメージも直感的でわかりやすい特徴があります。 五角形や六角形の中心でクリックするとその五角形または六角形全色が指定した色となります。
Coordinate system by exploded view
A mode in which the sphere is expanded in units of pentagons and hexagons. You can intuitively specify LED coordinates in a shape similar to a sphere.
プリセットデモも操作可能に
この画面を開くと、ディスプレイ側にプリセットとして実装されているデモのタイトル一覧を取得します。 デモのタイトルが取得出来たら、チェックボックス付きのリストが画面に反映されます。
チェックを ON/OFF することで、チェックされたデモだけが実行できるようになります。 またダブルクリックすることで、そのデモを次に実行できるようになります。
Preset-demo selecting mode
I can select the next demo to run by double-clicking, or turn ON/OFF the demos to be displayed sequentially using the checkboxes.
スクリプトを流してアニメーション
スクリプト機能で、複数のコマンドを登録して再生することで、アニメーションのプレビューを行う事もできます。
By registering multiple commands and playing them using the script function, I can also preview the animation.
Techseekerで近くでミニ百葉箱を展示しておりました。
球体LEDディスプレイすごいですね。
ライフゲームのグライダーを飛ばしてみたくなりました。
コメントありがとうございます。
「ミニ百葉箱」噂には聞いていて気にはなっていましたが、Techseekerは展示で4作品にハッカソン参加と欲張りすぎの多忙で殆どブースを回れずでした…近くだったんですね。
「ライフゲームのグライダー」知らなかったんですが、なるほど面白いです。
マウザーコンテストの発表を聞いていました.180という数の多さをのりきるためのなみなみならぬ努力が素晴らしかったです.
<最終審査員が選出>池澤さん:基盤の発注からフルカラーLEDの実現までの熱量がすごい。球体設計の工夫と苦労の話が興味深く、お話しがとても面白かったです。(講評を事務局が代筆)