For all the convenience that comes with the ability to control IoT devices from just about anywhere, we realized that most often, it's the devices right around us that we're interested in controlling. In these cases, scrolling through a long list of different devices in various locations in search of the lamp sitting five feet away isn't an ideal user experience. We figured there should be an easier, more intuitive way to control devices that are in close physical proximity. To address this deficiency, we created OnPoint.
What it does
OnPoint allows users to control a variety of IoT devices by simply pointing their phone toward the device they wish to control. By combining positioning information derived from nearby Bluetooth Low Energy beacons with data from the phone's compass, the phone is able to automatically identify the device, show the appropriate controls, and send the correct control commands. We designed our hack to be compatible with existing IoT devices, so it can be added to any existing connected home without requiring additional manufacturer support.
How we built it
We built an Android IoT control app capable of identifying the device that the phone is pointing towards using compass and bluetooth data. Once the device is identified, the app presents relevant controls and sends commands over the local WiFi network.
To test our hack, we used two Wifi-connected Arduinos controlling programmable LED lighting strips to simulate IoT lights. We also used a Dragonboard 401c connected to a USB monitor to simulate an IoT thermostat.
Challenges we ran into
Geolocating a device based on bluetooth beacon data to the accuracy we needed turned out to be orders of magnitude more difficult than we expected. Despite many hours spent calibrating, we were unable to get reliable location readings via bluetooth due to large fluctuations in signal strength, forcing us to leave a substantial part of our project out of the demos. However, we expect that the issues we ran into could be solved if we didn't have the tight time constraints of a hackathon.
We also ran into issues with the reliability of the WiFi chip on the dragonboard, which required us to frequently turn the wireless networking off and on.
Accomplishments that we're proud of
-Well functioning compass-based tracking -We made our own IoT devices!
What we learned
-Android dev and specifically how to use its bluetooth/ibeacon libraries -Python Tkinter libraries -How to use Arduinos and dragonboards -Positioning via signal strength is a lot harder than it sounds
What's next for OnPoint
-More research into bluetooth positioning techniques -Support for commercial IoT devices