With this project we've tried to address the issue of elderly people's health. Our vision is to create an open source health tracking device with an emergency call option. The need of such product has been addressed by the market but the high prices of available product seem to stay, unjustified given the current IoT possibilities.
It is our first attempt to design a device that could be assembled by merely following a instructable and using a widely accessible electronics and fabrication methods. We made a first step, but with the help help of the community we believe the whole journey can be completed.
Take a moment and watch the promotion video and a walk through of or project's setup so far. Enjoy;)
How it works
The setup we’re gonna build will have the following functionality: On demand heart rate meter with feedback LED. Haptic reminders about considering taking a measurement GPS location on demand and geofencing “Require assistance” switch Activity tracking with pedometer Wi-fi connectivity Data visualisation from the web browser
For heart rate we’re gonna use the pulse sensor and depending on how good the resting BPM is, we will provide an instant feedback with different colors. Green will represent “You’re doing great”, red - “Your pulse is not so good”, blue - “You’re doing OK”. The feedback will last for few seconds. The heart rate will be reported to the dashboard every 5 minutes (if there will be a new measurement).
Vibration motor will switch on for a set interval of time, as a prompt suggesting taking the measurement.
The “require assistance” switch will report its state change to the dashboard immediately after it is activated. GPS location will start updating.
Once we’re gonna leave the geofenced area we will assume that the person might be lost and the device will update the GPS coordinates.
Step 1: Data Flow
The general data flow is presented on the diagram above. We’re gonna connect all of the sensors along with the switch, feedback LED and vibration motor to the GPIO of the Edison’s Arduino breakout board, then we’ll be running a node.js script that’ll make sense of that data and will provide feedback through LED, give prompts with vibration motor and send the data to the online dashboard via dweet messages at right times.
The cool thing about dweeting is that you don’t have to configure anything or sign in anywhere. You just give a unique topic to the message, send it and be happy, which makes it lightning fast to prototyping. Security is an issue here, but for the sake of early prototyping is quite sufficient (you can secure dweets but that’ll cost ya ;) ). You can learn more about dweeting at https://dweet.io/.
To visualize our data we’ll use freeboard.io, a super easy to setup tool for IoT dashboard creation. Public dashboards are free. You’ll just need to sign up at https://freeboard.io/.
Step 2: BOM
We’re gonna need an access to a 3D printer, soldering iron and components listed below. If you don’t have an access to a 3D Printer, don’t worry, you can still finish this project. You’re just gonna have to improvise a case for it ;)
- Intel Edison with Arduino breakout board: https://www.sparkfun.com/products/13097
- An Arduino Protoshield: https://www.radioshack.com/collections/maker-part...
- Grove - 3-Axis Digital Accelerometer(±1.5g MMA7660FC): https://www.radioshack.com/collections/maker-part...
- Pulse sensor: https://www.radioshack.com/collections/maker-part...
- Vibration motor: https://www.radioshack.com/collections/maker-part...
- RGB LED (common anode) https://www.radioshack.com/collections/maker-part...
- GPS ublox module: https://www.radioshack.com/collections/maker-part...
- Five ~1KΩ Resistors One BiPolar NPN Transistor: https://www.radioshack.com/collections/maker-part...
- One 2N1004 Diode One tactile momentary button: https://www.adafruit.com/products/1119
- Some colorful wires An old printer cord like this one: https://www.radioshack.com/collections/maker-part... .Or a rather long different colored wires to improvise one.
- One two way switch: https://www.sparkfun.com/products/9609
- One tactile button: https://www.radioshack.com/collections/maker-part...
- One battery pack ( More than 5v and at least 1500 MAh ): https://www.radioshack.com/collections/maker-part...
Step 3: Setup Edison Software
Let’s start fresh and setup our Intel Edison board. Follow this tutorial and configure your wi-fi connection. By the end you should be able to SSH to it with the terminal client of your choice (what you use depends on the operating system).
We’re gonna use some additional modules (libraries) in our script, so we need to install them first. Fortunately, it is very easy thanks to npm ( https://www.npmjs.com/ ). This is how to do it: Open Putty and SSH to your Intel Edison
Install the following libraries by typing the line, confirm with [enter] and wait until the module is installed.
npm install mraa
npm install serialport
npm install in-n-out
npm install nmea-simple
Transferring the script
In order to put your scripts on the Intel Edison you can use Intel’s XDX package. You can follow this link for instruciton: https://software.intel.com/en-us/xdk/article/inte...
Once you have the XDX all configured and Edison connected, you have to open the project from the .rar file attached below.
We’re gonna have to come up with some new unique names for the dweets we’ll be sending out to the magic internet space. Use the find function and change the following lines to your own like so:
Here is the list of all the expressions you have to change. You can change the whole phrase inside the double quotes or just the end. It’s up to you but remember to chose the phrase you can easily recognize and assign with the right data.
Change it in this part of the code.
//------------------------------------------>> YOU HAVE TO CHANGE THIS TO YOUR OWN NAMES!!
var DWEET_Call = "Call-Edison-FablabMilano";
var DWEET_GPS = "GPS-Edison-FablabMilano" ;
var DWEET_BPM = "BPM-Edison-FablabMilano" ;
var DWEET_Name = "Name-Edison-FablabMilano";
var DWEET_STEPS= "Steps-Edison-FablabMilano";
Now upload it to your Edison.
Step 4: Wiring It All Up
Now we can put all the electronic components together. Disconnect your Edison from any power supply and USB ports.
Follow the wiring diagram above.
We’re gonna put a substantial part of the components on the protoshield. There's a picture of that above.
We want separate the computing unit and measuring unit. In order to do that we need to prepare a set of longer wires or a hacked cable from old printer. The components that go to the measuring unit are: the accelerometer, vibration motor, LED, the switch, and pulse sensor (mounted on a tactile button).
A quick note about the protoshield:
In this insructable, a Seeed Protoshield is used. It has some nice benefits ( extra components, nice large build area, power and data buses ) but also presented a complication later in the assembly. The location of the SCL and SDA pins on this shield do not match the position on the Edison’s Arduino breakout board. In order to access them on the Edison, a right angle pin header needed to be used to access the pins below the Shield’s PCB. If you don’t have a right angle header, you can simply try to bend a header with a nice pair of plyers.
Step 5: Getting Fancy
Now we need to put all that electronic guts into some kind of enclosure. You can 3D print the case we’ve prepared, using the files attached.
Step 6: Visualising the Data
OK, our hardware and software is setup now we need to access the data. We’re gonna use freeboard.io a free dashboard builder for Internet of things (free to an extend of course, but free enough for us;) ) Watch the video where we explain how to configure it ;)