Alarm Condition: Low RSSI
RSSI based prediction
Waiting for sound sensor data
Inspiration : It is my first hackathon and passion of learning some thing I never worked on inspired me to work for 24 hours without sleep. Wow, it has been a great experience implementing something from hardware based BLE, interfacing of sensors, study of Intel Edison architecture, to using Wi Fi and bluetooth to connect to IDE and mobile App.
After a weekend of work, I really feel I can mature this App and product and help working parents in monitoring their babies at home.
What it does : It is baby care application where parents can monitor babies from their app in case they have to leave them home in emergency. The App can be used to monitor pets as well. A Intel Edison IOT based device would monitor and send sensor reading to the cloud.
I would divide functionality into three parts:
Location monitoring : We monitored location of baby in the home with the help of RSSI (Received Signal Strength Indicator) of built in BLE module in Edison Chip. If it is below a threshold, the system will send a Alarm on the app and baby may be going out of house premises. We use a sample of data to arrive on a decision.
Activity Monitoring: With the help of sound sensor, we could decide if the baby is crying (used a threshold of 900 based on noise variance of the system) or baby is sleeping or baby is playing. This helps parent to know if baby needs their immediate attention or not.
Temperature Sensor: It measures baby's surrounding temperature and divides into three parts : Cold, pleasant and hot. According to signal value, the Android App tells the parent if the temperature is not suitable for baby. We can further use a thermostat to control the temperature.
How we built it :
We took whole grove kit (LCD, sound, temperature Sensors), Intel Edison SOC (build in BLE) with Arduino break out board, one Android phone, Arduino and Intel IOT XDK IDE. We interfaced various sensors with the help of Grove base shield. After studying for a while about all the pins on the board, Base shield made it really easy to interface various sensors.
We flashed the firmware into Edison and connected it via Wi Fi. To achieve RSSI based monitoring, we configured Bluetooth Stack of Intel Edison by ssh into the device and added our mobile bluetooth to simulate the exact condition.
We used SCP connection to send the sensor data continuously to a cloud server. We used glue.umd.edu to store sensors data and Android App reads the data from glue server. In this way, all the requests and response from CareApp are connected via Internet and anybody from anyplace can control with log in credentials.
At last, we designed Android App (first time in life) to help provide a simple but very informative UI to the parents or end user. We used ANT and jsch to achieve SCP functionality on the Android APP.
Challenges we ran into: Major issue I ran into was RSSI value read through BLE. RSSI is receive signal strength indicator and if it is giving a low value that means baby is not in his room or house. As no API was there, it was difficult for us and we almost decided not to use RSSI after studying documents for a long time. Bu, then we decided to read the value of RSSI through command line interface of Edison board. We ran commands through system API from Arduino code and used popen to point to the return value.
Second, accessing files on the Linux OS was an issue but after reading about process and pthreads, we were able to figure out the communication between Linux based file system and our code.
Third issue was LCD interface, which we came to know that we are using a different version of code and LCD. After changing pin numbers, we were able to debug it.
Last issue which we faced this morning was SCP connectivity on Android APP side. We figured out that Java ANT module Project and typedefs create problems when used together. Android Studio in built grove build tools provides alternative method which we used.