セカンドライフとリアルをIoTで繋げる

セカンドライフ制作
スポンサーリンク

はじめに

こんにちはー!

なたでです!

これまで、セカンドライフとIoTを駆使して、色々チャレンジしてきました。

セカンドライフとIoTを組み合わせて仮想ドアベルを作る
はじめに こんにちはー!なたでです! セカンドライフ技術系 Advent Calendar 2018の10日目の記事です。 今日は趣向を変えて、IoTにチャレンジします。具体的には、セカンドライフの中にインターホンのようなものを設...
セカンドライフとIoTを組み合わせてリアルに温もり感じてみる
はじめに こんにちはー!なたでです! セカンドライフ技術系 Advent Calendar 2018の22日目の記事です。 今回も引き続きIoT関係の記事となります。 皆さん、IoTといえば電源制御をしてみたいですよね。というわ...

 

これまでは、基本的にセカンドライフから、家のネットワーク機器へアクセスして音を鳴らす、あるいはスイッチを付けて、電気毛布をオンにするなど、リアルの世界からは受動的なものしか行っていませんでした。

今回のチャレンジとしては、リアルの世界で何かをしたらセカンドライフの世界の何かが変わる。あるいはセカンドライフの世界で何かしたらリアルの世界が変わるという、相互に影響を与えるような物を作っていこうと思います。

今回説明したソースコードは全てGitHubで公開しています。

基本方針

何を制御するか

今回は、自室の部屋の電気を制御したいと思います。

簡単な図はこんな感じです。セカンドライフで電気のオン/オフが連動するわけです。

具体的なシステム設計図

より具体的なシステムとしては以下のような形とします。

サーバーの構築の話とかは、「セカンドライフとIoTを組み合わせて仮想ドアベルを作る」を確認してみて下さい。

ポイントは以下の通りです。

  • 私の部屋の電気の明るさが消えたら、照度計がオフを検知 → セカンドライフ上の電気を消す
  • セカンドライフ上の電気を押したら → 発光ダイオードで赤外線を送信し部屋の電気を消す

部屋の電気を消す制御

発光ダイオードをつけたが失敗

赤外線の送信機の動作を真似れば消せるかと思い、以下を購入しました。

ESPr Developer 32を利用して事前に動作を確認。

なんと、部屋の電気を消すためのLEDはかなり強くないと消えないよう。やり方を変えないといけません。

既存のリモコンを改造へ

私の部屋で利用している赤外線送信機は、IRT01KB2というリモコン。

ボタンが1つだけあり、ボタンを押す度に、点灯→50%→10%→消灯→点灯といった、単純なタイプです。そのため、既存のリモコンのメーク設定部分にリレーを組み合わせることとしました。

リモコンはメルカリで購入。ただ、購入したものは破損しており、中身を調査することにしてみました。中身を分解して基板を取り出します。

結果的にタクトスイッチと呼ばれる部品が破損しており、スイッチを押してもメークされないことが原因でした。

とりあえず、半田付けして外部から操作できるようにします。

電子回路の設計

部品の準備

今回使用する部品は以下の通りです。電気を付ける以外にも色々できるように、色々つけてみました。

リレーは、制御に必要な電流が少なくて済むMOS FETリレーを利用してみました。他のモジュールは、I2Cでデータを取得できるものを選びました。アナログ値と取得する方法もありますが、ラズベリーパイにはA/D変換用のポートがないため外部ICを使わないといけず面倒です。そのため、I2Cで一気にデータがとれるものを選ぶことにしたわけです。

ブレッドボードへの取り付け

大それたものではないですが、こんな感じに取り付けました。(あとで、照度計の位置は移動させています。)

抵抗はもう少し大きくてもいけるかもしれません。試していないですが。

ラズベリーパイとはこんな感じに付けています。I2Cを利用しています。あとはGPIOと3.3Vの電源です。

完成

最終的にコネクタをごちゃごちゃまとめて、ボックスに入れて完成したものがこちらです。結局照度センサなどの都合上で、配線を少しやり直しています。

ソフトウェアの設計

ソースコード全体は、GitHubで公開しています。詳しい説明をしても難しいので少しピックアップしてソースコードを紹介する形とします。

各ICからの情報取得用のスクリプト

シェルスクリプトを用いて、各ICから情報を取得するスクリプトを作りました。

いくつかピックアップして紹介します。

現実世界のスクリプト

すごいはしょっていますが、サーバー(メインサーバー)とクライアント(部屋用サーバー)のメイン部分の紹介です。Node.jsを用いてWebサーバーを作っています。お互いの通信は、curlを利用しています。

メインサーバーは、外部からの通信も受け付けるため、ローカルからの情報取得と分けられるようにIPアドレスを見てフィルタリングするようにしてみました。

値は、URLに載せて送受信するようにしています。

仮想空間のスクリプト

セカンドライフ上に設置した電球のスクリプトです。タッチするとリアルのサーバーへ電源をオン/オフしにいきます。また、リアルのサーバーから情報を受け取って、現在の自分のプリムの電気をオン/オフします。

完成

おわりに

最後まで読んでいただきありがとうございます。

リアルと繋がると、セカンドライフの中がよりリアルに感じて新たな発見があります。

今回私が説明した内容は1つの手段であり、方法はいくらでもあります。皆様もIoTで是非セカンドライフと繋げてみましょう!

コメント

タイトルとURLをコピーしました