Your elderly mum is living alone. For some reason, she felt light headed and fell down. Given the intense pain she was in, she could hardly move or stand up. The consequences is very dire as she lives alone.
Luckily, her elderly care wearable detected the fall and launch the virtual healthcare assistant to gather some information from her (How painful is she feeling? Any thing she would like to highlight? etc)
The virtual healthcare assistant triggered an alert to Caregiver Network so that nearby volunteers and real healthcare assistant nearby as well as you(the caregiver) are notified about your mum's condition. At the same time, the wearable will detect vital status of your mum and transmit them so that the volunteers/healthcare assistant that is rushing to her will get real time critical information about your mum so that they can prepare assistance on the way to your mum.
Once the healthcare assistant reached, he identified himself as loudly as he can. Your mum remotely opened her gate for him via the wearable. He quickly came in and attend to her.
Another elderly is saved for the day due to timely response and assistance!
Today, many senior citizen are staying alone. They crave for independence and This poses a health risk to a lot of them as they are no longer as fit as they used to be.
Many of them had tendency to fall down and hurt themselves badly. Many of them will not be able to make calls to emergency services of their town immediately after falling. As these senior citizens have more brittle bones and weaker body, they need immediate medical attention once they fell.
Indeed, the scenario above is the best case scenario for these elderly and we believe it can all be achieved in the near future with wearable, mobiles and an established caregiver network.
Overview
However, for this challenge, it would be almost impossible to come out with all the components for the scenario above within such a short timespan by a single person. Instead, we would like to focus on something more immediate and something that can be overcome quite easily with the MKR1000 and Windows 10 UWP in general - a caregiver app that connects to a wearable (MKR1000 based) via WIFI that will alert the caretaker once a fall is detected.
We intend to user MKR1000 + accelerometer mainly to detect the well-being of these senior citizen. We can incorporate the device into wearable pendulum that is easy for the senior citizen to wear around their neck. Thanks to MKR1000's in built Lipo charger, we can easily add a battery to the wearable. Thanks to MKR1000 low voltage, it provides us with a low-powered wearable solution.
There are two mechanism on the wearable to trigger alert:
- Button pushed - when panic button is activated.
- Automated alert via sensor reading
Also a Windows 10 UWP app is created as a Caregiver Dashboard. The dashboard gives the users real time data of what the wearable is sensing and also to provide them with a button to buzz the wearable to find it
Caregiver can be alerted via 2 means:
Please see above image for proposed solution. There are 3 images explaining the above
Definition of a fallWe define a fall as a sudden increase/decrease in accelerometer value in at least one of the axis. As elderly do not move in a rapid fashion as young people do, this sudden increase/decrease would be can be siginficed as a sudden jerk which indicate an impact . After calibration and rounds of testing, we found that an acceleration of 1.85 is approximately suitable to be used as the max threshold for detecting a fall.
LimitationsDue to time constraints, we only managed to create a prototype hardware that uses a breadboard. While it is currently quite big, we believe we can shrink the actual hardware to a fraction of its current size. As for the Windows 10 UWP app, we only uses a PC to test it. However, we believe we can deploy it to any of the supported platform (Windows 10 Iot Core, Windows 10 Mobile etc) without much changes.
Breakdown of the components in the solution:Hardware Component:
The hardware consists of the following components:
1) MKR1000- the "brain" of the hardware which contains the logic and the WIFI and inbuilt battery charger
2) ADXL335 accelerometer- the sensor that is used to detect movements in 3 axis x,y,z. It ranges from -3 to +3 G.
3) Piezo buzzer - used to alert anyone nearby that the elderly requires assistance by creating a buzz non-stop
4) WIFI LED - to indicate that wifi is connect to predefined network
5) Panic button - to provide the elderly with a way to seek assistance from nearby people (if WIFI is not connected) and caregiver dashboard system (if WIFI is connected)
6) Reset button - to provide the elderly with a way to reset the alert send out and to turn off the buzzer.
7) Panic LED - to provide visual alert to anyone nearby the elderly that required assistance.
Software components:
The software component is a Windows 10 UWP app called the Caregiver Dashboard. The user will need to key in the IP address of the device and the port to connect to the device. From there, he is able to read the status of the elderly (whether he/she fell down) as well as to sound an alert (to pinpoint the elderly exact location)
Services components:
We used services like PushingBox and PushBullet to push notifications to caregiver's mobile phone.
Communication platform:
Communication between the hardware and software will be done using WIFI as MKR1000 support B/G/N 2.4 GHz network natively.
The good thing about using WIFI is that you can always use dynamic DNS services and configuring the elderly's home router to allow the outside world to access the hardware via any PC in the world.
We are using the Firmata protocol between the MKR1000 and UWP to communicate.
We also used HTTP request to communicate with PushingBox to send push notification to caregiver's mobile phone.
For more details on how to setup MKR1000 for communicating to UWP via firmata. Please refer to Mohan Palanisamy's great guide on that here!
Step 1: Connect the components
Connecting the components to the breadboard and MKR1000 is probably the thing that will take the longest period of time here.
Connect VCC and GND
Connect the VCC to the "+" strip on the right and the GND to the "-" strip on the right. This will provide the power required by all the sensors. The sensor will draw power from them later.
Connect ADXL335 to MKR1000
Connect ADXL335 in the following order:
- x axis pin to A0 of MKR1000
- y axis pin to A1 of MKR1000
- z axis pin to A2 of MKR1000
- GND to "-" strip of breadboard
- VCC to "+" strip of breadboard
Connect buzzer to MKR1000
- Connect one pin to pin 8 of MKR1000
- Connect one pin to "-" strip of breadboard.
Connect warning LED to MKR1000
The LED has a long pin and a short pin
- Connect one pin of a 220-ohm resistor to "-" strip of breadboard
- Connect the other pin of the resistor to the short pin of the LED
- Connect the long pin to Pin 7 of MKR1000
The purpose of the resistor is to prevent the LED from burning out.
Connect WIFI LED to MKR1000
- Connect one pin of a 220-ohm resistor to "-" strip of breadboard
- Connect the other pin of the resistor to the short pin of the LED
- Connect the long pin to Pin 7 of MKR1000
The purpose of the resistor is to prevent the LED from burning out.
Connect help button to MKR1000
- Connect one pin of a 220-ohm resistor to "-" strip of breadboard
- Connect the other pin of the resistor to the button
- Connect one end of a wire to the same pin of the button
- Connect the other end of the wire to pin 4 of the MKR1000
- Connect one pin of the button to the "+" strip of the breadboard
Connect reset button to MKR1000
- Connect one pin of a 220-ohm resistor to "-" strip of breadboard
- Connect the other pin of the resistor to the button
- Connect one end of a wire to the same pin of the button
- Connect the other end of the wire to pin 5 of the MKR1000
- Connect one pin of the button to the "+" strip of the breadboard
Step 2: Calibrate ADXL335 acceleratometer
Calibration is require for the ADXL335 accelerometer. We can do it via the following:
- With the ADXL335 breakout board facing up, upload ADXL335_calibration.ino using the arduino IDE
- Click the magnifying glass on the top right corner of the IDE to open the serial monitor
- Get note of the reading from the serial monitor. This is the max value at 1G
- Turn the ADXL335 with the breakout board in the opposite direction.
- Take note of the reading from the serial monitor. This is the min value at -1G.
Step 3: Setup Notification using Pushingbox and Pushbullet
It is important to be notify instantly when the elderly fall. We decided to use Pushingbox as it provides a way to do it.
Setup 3.1: Setup Pushbullet
- Sign in using your Google/Facebook Account
- Click "Setting" ->"Account"->"Access Token" -> "Create Access Token" and note down the access token (or access link here after you sign up)
- Click "Setup" -> "Setup your phone" -> Select your phone's OS to download the app. (or access link here after you sign up)
- Login to the PushBullet app via phone and accept that it will send notification
Setup 3.2: Setup Pushingbox
- Sign up using Google Account
- Click "My Service" ->"Add a service" -> Select the notification service you wish. In this case, we will use Pushbullet by clicking "Select this service" (or access link here after you sign up)
- Enter a name (We name ours -"Help Grandma") and access token
- Click submit
- Click "My Scenarios" -> Enter new name for scenario in the textbook and click "Add"
- Click "Add an action" to bring up your services". Select the one you by clicking on the "Add an action to this service"
- Input a notification title and message respectively and click Submit to add service
- Click "Test Scenario" button to see if push notification is received (Can take up to 2 minutes)
- Click "My Scenarios" and take note of the device ID which you need to pass into your arduino sketch to tell Pushingbox to use the scenario to send the message
Step 4: Upload the arduino sketch
With that, we are going to upload the arduino sketch fall_detection_MKR1000_wifi.ini and wifiConfig.h after we make the following changes.
- Following the instruction on the wifiConfig.h, setup the MKR1000 to your WIFI accordingly.
- Inside fall_detection_MKR1000_wifi.ini, change int minAxisValue = 426; to int minAxisValue = <insert min value from calibration>;
- Inside fall_detection_MKR1000_wifi.ini, change int maxAxisValue = 627; to int maxAxisValue = <insert min value from calibration>;
- Inside fall_detection_MKR1000_wifi.ini, change int DEVID1 =""; to int int DEVID1 ="<Your deviceID from Pushingbox>";
- Upload sketch
- Open the serial monitor. You should see something similar to this:
"IP will be requested from DHCP ...
Attempting to connect to WPA SSID: TeoFamily24H
WiFi setup done
SSID: TeoFamily24H
IP Address: 192.168.0.106
signal strength (RSSI): -75 dBm"
- The WIFI LED should light up
- Hardware setup is done!
Step 5: Setup Windows 10 UWP app.
- Ensure the PC is a Windows 10 machine
- Ensure the PC has Visual Studio 2015 installed
- Use Nuget package manager to add Windows Remote Arduino to your project by running the following command:
install-package 'windows-remote-arduino'
- Download the code from the repo.
- Locate and launch the .sln file
- Click Debug Solution to start app
- Type in the IP/hostname/DNS of the hardware
- Type in the port
- Click Connect button to connect
- If the connection is successful, you should see the red box to the right of the button turns green
- The label A0, A1, A2 will change to the accelerometer's value
- The label D2 will show the status of the elderly - whether a fall has been detect or everything is normal
- You can click on the Alert On button to make the hardware buzz to pinpoint the elderly
- install-package 'windows-remote-arduino'
- <br/>
- 3. Ensure Internet client server capability is enabled by editing the Package.appxmanifest file.
- <Capability Name="internetClientServer" />
Demo Time!
Now, for a short demo on the product so far...
https://www.youtube.com/watch?v=I9ELmff_C2M&feature=youtu.be
https://www.youtube.com/watch?v=I9ELmff_C2M&feature=youtu.be
Whats Next?While the submission is for the current challenge, it can also be expanded to more comprehensive monitoring.
Data Collection Unit (Raspberry Pi)
We can use a low-cost computer (such as a raspberry pi) to collect data via a Windows 10 Iot front and analyse the data.
Analysis of data collected
Smart Data analytical also can be used to analyse the data overtime and can be for activity charting and statistic over a 24 hr period. It can be used in pattern profiling and alert notifications
Extension of system
Extension of current system to detect more scenarios that can help in making the :
- Empty home alert - The elderly has left home
- Arrived home alert - the elderly has arrived home
- Prolonged Dwelling Alerts
- Prolonged empty home alert - the elderly has not arrived home until a configurable timing
- No activity alert - The elderly has not moved for a configurable period of time.
Emergency Service escalation
Beside that, we can also use the device to detect falls via the reading from the device. We can either send a distress signal/call to the server to dispatch to the emergency service and caretakers and/or try to assess the well-being of the fallen senior citizen to the services for them as well. If the home is connected , we can also take a few photos to indicate where area is the senior citizen at and send them to the respective parties for quick response.
ConclusionWe hope that via our submission, the elderly is always safe and within reach. This allows for independent living and gives great peace of mind to caregivers and next of kin. Hopefully through leverage of modern technologies, we can help to allow the elderly to live a meaningful and dignified life.
Comments