I hate when sunlight through my windows shines on my bed and wakes me up before I need to, but I also hate waking up to a dark room when it is already 10am. I really wanted to improve my sleep cycle, but also never wake accidentally wake up before I needed to. The solution? Blindside.
What it does
Blindside syncs your phone's alarms to your blinds and opens them 5 mins before your alarm is about to go off, so you wake up at just the right time, with just the right amount of light in your room.
How we built it
iPhone App: The user controls this entire system through an iPhone app. The user can manually open/close the blinds through the app and also set preferences for which alarms should the blinds open for.
Node.js server: The server handles all communication between the iPhone App and the embedded controller for the blinds. The server uses MongoDB for user authentication as well as embedded device authentication.
Embedded: We use a dragonboard 410c connected to a servo motor and driver. The dragonboard receives commands from the server to open/close the blind and also receives user preferences and sets cronjobs to open/close blinds at the correct time.
Challenges we ran into
The dragonboard is relatively new and thus had very little support online so we had to experiment a lot to get the board working the way we wanted it to. Communication between multiple devices was also a difficult task since they all were programmed in different languages and had different networking capabilities.
Accomplishments that we're proud of
Being able to make an iPhone app, a backend server and an embedded device all within 36 hours. Each of these in themselves were huge tasks and each of them had to fall into place like a puzzle.
What we learned
We learned a lot about embedded devices and security on IoT devices.
What's next for Blindside
- Add support Google home, Amazon alexa and other assistants so this can be part of a larger IoT ecosystem.
- Use light and motion sensors to close blinds when no one is in the room to save energy spent on cooling the room.