I would like to start with thanking element14 for giving me this opportunity to be a sponsored challenger in a great challenge like this. I'm really excited to be a part of this and is looking forward to learn some new things, build some cool stuff and ultimately have some real fun. In this blog post, I would like to give a glimpse to what I'm planning to do over the course of next 12 weeks.
I believe that internet of things is not just about connecting just things together. It should be about connecting people to their things in a meaningful and easy to access way. Although 'things' play an important role, ultimately IoT should make people's life better. It should not be just about monitoring things around you, but about making a symphony between the user and his/her things to enrich their daily life. My project proposal for this challenge aims at putting things and users together - exploring new ways how personal IoT can help us.
Internet Of You
For this challenge, I want to look into three different aspects of an user - environment around him/her. things attached to him/her and finally his/her health itself.
By environment, I mean the personal space around us, the ambiance and the nature. One of the best use case will monitoring the temperature, humidity, air quality etc., around you. By using the Pi Sense Hat, I will be able to measure the temperature, pressure and humidity of the environment. And in my city, we have public access to the AQI data. Together with the weather reports fetched through Yahoo Weather API, this will give the user a comprehensive way to plan his daily activity. All these data will displayed in the screen provided for the challenge. I'll be using freeboard with nodejs to collect and data and update it to the dash board.
This includes the things around the user. For this challenge, I will be connecting a light bulb and a fan directly to raspberry pi. Since my television and music system has a remote control, rather than connecting them directly to raspberry pi, I'll be using LIRC library on raspberry pi to train the remotes and control them using rPi.
A personal IoT solution should put it's user at it's center. With this view, I want this project to include the monitoring of health and fitness aspects of the user. I owns a Pebble Time(and I'm proud of it ). It has a descent activity tracking feature including sleep data, number of steps walked etc., Although the watch does display these data, I want it to be analyzed in a better way. By using Pebble Health API, I'll be able to forward these data to my raspberry pi. This data will also be displayed using the widgets in freeboard.
By covering these three aspects of a user, I believe this project will show a fresh view of approaching personal IoT.
Beyond Touch Interface:
The touch screen provide with the kit will be definitely a great way to interact to Pi but I believe in a personal space, Natural User Interfaces will be more appealing to an end user. With this view, I'm planning to integrate vision and speech to my project.
Speech - Jasper:
Jasper project is developed to provide speech based interface specifically for Raspberry Pi. By using an USB Microphone, I will be able to make Raspberry Pi listen to the users and act accordingly. With 10 times the power of original Pi, Pi3 will be able to provide a faster interface to users. I also believe that this will be a good example to show off the computational capacity of mighty Pi3. As part of the project, simple commands like "Turn ON/OFF light/fan" will be trained to the system. Custom python scripts can be written to Jasper to process these commands and switch relays in PiFace to switch appropriate devices. Also commands like "Show me the weather updates" will update the screen with current environment information.
Vision - openCV:
By giving vision to raspberry pi, we will be able to leverage gesture user interfaces. My already completed project for openCV based gesture recognition is available in github. I will just have to port it to use the Pi Camera/NoIR Camera in the kit. This project also includes a face detector to allow only the authorized user to control the Pi.
Re Imagining Personal IoT
Next I would like to cover three uses cases I'm planning to show as part if this challenge:
Presence Detection based activation of things: Internet of things should be also about intelligent things. IoT should enable your devices to make smart intelligent decisions. This usecase show cases how we can use the inbuilt BLE of Pi and user's smart phone to make the environment aware of the presence and take smart decision. It works as the following - Inbuilt BLE in Pi will always be in scanning mode. When the user enters the room, Pi will be able to detect his smartphone based on the MAC address of the BLE in phone. These MAC addresses can be stored in Pi and Pi only choses to act if it sees a familiar MAC ID. Once the user presence is detected, Pi can take one of the preprogrammed actions - if its night time, then switch in the light and if it's day time may be switch on the fan. Moreover as Pi can detect multiple users, it can be programmed to act differently to different users. Also Pi stores all these information and will be displayed in dash as a chart showing which users where there in the room as what times. This can also be helpful in monitoring the user presence from a remote place as Pi can stream these data over internet.
Intelligent Wake Up Alarm: One of the thinks I struggle almost every morning is to get up on time. Sometimes I completely missed my alarm, other times alarm wakes me up when I'm not ready to get out of bed, ie, when I was in deep sleep. It is widely known than the best time for alarm to go off is when you are in light sleep. With my Pebble Time able to detect the sleep patterns and depth of the sleep, I will be able to use this data to sound the alarm. The end usage will be like this - say you chose a window of 30 minute and you set the alarm at 6.00AM. Now between 5.30 AM and 6.15AM, once pebble detects you are in one of those lightest sleep phase, it send command to raspberry pi via my smartphone to sound the alarm. Speakers connected to raspberry pi will play your preset alarm sound to wake you up. In this way you will get a fresh start for the day. Also after a minute of sounding your alarm, Pi will switch in the light in your room to make sure that you don't go back to sleep again. For the implementation part, I will use Pebble Health API to forward the sleep data to raspberry pi over WiFi. Raspberry Pi with this sleep data will take decision of when to play your alarm. More over this sleep data will be stored in Pi and displayed in dash with Daily, Weekly and Monthly averages to understand your sleep easily. Relay in PiFace hat connected to Pi will be used to switch the light ON/OFF.