VR is a very fast growing industry with tons of amazing applications. We set out to solve a problem that comes to existence due to the very nature of VR; the lack of presence and connection to the real world. In the not too distant future, people may neglect their real lives due to over immersion and may miss out on basic things that need to be done to live a healthy life. We believe home automation is a very important step to help improve quality of life in such a world. Home Automation is becoming increasingly ubiquitous across homes in the US due to how it helps keep people safe, saves energy and helps make life more efficient. Our hack, VRIoT is a solution to how people can control their home automation from the VR world.

What it does

VRIoT is a system that allows users to control physical smart home devices by utilizing interactions done on a scale model of the home in VR. Our system allows users to control the lights of each room individually. We are able to receive notifications in our VR environment upon each press of the doorbell. We implemented an alarm system that allows users to arm or disarm the system, while the system is armed if motion is detected the user will receive notification on a physical alarm as well as on their headset. We added functionality for the users to also open and close the door all within the comfort of their VR headset. With our system it does not matter where you are with your headset, it will always allow you to have access to your devices in the home.

How we built it

The VR was built using Unity and primarily the XR Interaction Toolkit. We used models from the unity asset store and blender to design and modify our assets. We implemented Event Source communication in both C# and micropython. Instead of making use of the Singularity SDK provided, which provides the ability for a headset to communicate with some device via bluetooth, we decided to roll our own system that would operate over the internet, across many networks. This decision was made as it fit much better in an IoT application, where many devices (who may not necessarily be within bluetooth range) The central rust server acts as a proxy between the VR clients and each of the IoT devices, and provides bidirectional communication between them. Each IoT device is powered by the ESP32 board running micropython. This allows us to easily interact and script behaviors for our large variety of devices such as 5-roomed light system, automatic door, intruder alarm system and more.

Challenges we ran into

We initially decided to try AR headsets and got the Ultraleap headsets. Due to difficulties with setup and lack of availability of other AR headsets, we decided to switch to VR. Another huge hurdle we had was wrangling the network on campus. In our original design, we required that the server, clients and all devices to be on the same network, however eduroam, as well as MIT’s own network system made it difficult for the ESP32 boards to connect to. We spent the better part of a day running out to grab our own router and setting it up. In the end, we opted to redesign our project architecture to make it work for a multi-networked system.

What we learned

As our team is more software oriented, this was a great chance for us to step outside of our comfort zone and tie back what we have built in the hardware realm with the much more familiar VR software that we write. Being in the hardware track really opened our eyes to how we could extend and hack on many familiar devices/software to build something really cool.

Built With

Share this project: