#author("2021-11-16T18:01:20+09:00","default:Real2Virtual202111","Real2Virtual202111") * Real -> Virtual 変換システムの開発その1 [#x976940c] &ref(Real2Virtual202111/r2v-01.jpg); - Realな世界でサイコロを使って組み立てられたRealな物が、ちょっとおまじないをして待つと、パソコンの中の、Virtualな世界に現れます。 - Protopedia -- https://protopedia.net/prototype/2730 - Youtube -- https://www.youtube.com/watch?v=tm9E9IY1K_g&t=3s * 仕組み [#q45ad5e1] - サイコロのそれぞれは、下の回路図で示すような回路を内部に持っています。 -- この中で、M5Stack Atom は1つだけ入っています。 - パソコン側は、TCP/IPストリームでM5Stack経由で受け取ったサイコロの中のMbed LPC1768のUARTから出力されたメッセージに従って、VirtualなサイコロをVirtual空間上で組み立てるプログラムを動かします。 - M5Stack Atom でWiFiのサーバを動かすと同時に、TCP/IPストリーム(リモートのPC側)とUART(ローカルの mbed 1768)の中継サーバを起動します。 - PCのWiFiは、このM5StackのWiFiサーバに接続します。 - PCから srs. コマンドが送信され、そのコマンドがM5Stackを持ったサイコロの、M5Stack ->UART経由でMbed LPC1768に届くと、LPC1768上でそのコマンドが解釈実行されます。 srs は start recursive structure searchの略で、 srsコマンドを実行すると、そのコマンドを受け取った以外の(M5Stackからコマンドを受け取った場合は全ての)サイコロの全ての面の、4つの発光ダイオードから、順番に、"cq face <送信元の面の番号> dir <送信元の発光ダイオードの番号>."の信号を送信します。発光ダイオードの番号は面と面が重なった時の向きを表します。 - "cq face <送信元の面の番号> <送信元の発光ダイオードの番号>."を受け取ったサイコロがあれば、そのサイコロは、それを受け取った面から、それを送信したサイコロに対して、"ack1 face <受け取った面の番号> dir <受け取った発光ダイオードの番号> udir <送信元の発光ダイオードの番号>."を返信します。 - その次に、このサイコロの、受け取った面以外の面に対して、同様に、cq face <送信元の面の番号> dir <送信元の発光ダイオードの番号>."の信号を送信します。 * サイコロの構造と回路 [#b41ff053] ** サイコロの面の部品と配置 [#r96fc196] &ref(Real2Virtual202111/dice_face_parts_01.png,30%); ** サイコロ同士の面と面の結合機構 [#n1bb7144] &ref(Real2Virtual202111/dice_face_connection_01.png,30%); ** サイコロ間の全2重通信と、面の向きの検知機構 [#cf0fd549] &ref(Real2Virtual202111/dice_face_communication_01.png,50%); ** サイコロの回路 [#tafcaa9b] &ref(Real2Virtual202111/dice_circuit_01.png,50%); * 参考資料 [#pb2da12d] - TESLA計画 -- http://www.yama-lab.org/~yamanoue/wiki/index.php?ProjectTesla - テレポーテーションとコンパイラ -- https://www.slideshare.net/takashiyamanoue/ss-16159139 ---- #counter