Intelligence and Applications
Goal:
The mission included refreshing the Assistive Jogger with a new element of Intelligence through a public offered free downloadable application for smart devices that gives user-friendly access to exercise data, navigation tools, and above all, safety features. Modern technology gives us access to several reasonably accurate sensors right in the palm of our hands via most smartphones, some mp3 players, and most tablets. These common sensors are: accelerometers/gyroscopes, ambient light sensors, GPS, and the in-board microphone. These sensors are available to be analyzed and used for specific purposes via applications. The goal for this project was to make a phone application that interfaces via Bluetooth with a user-worn accelerometer in order to offer an additional safety feature for the user.
The Beginning:
The development of the application system began by assessing the top risks/problems of exercising outside for elderly, disabled, or rehabilitating individuals. The largest risks/problems associated with our target consumer market are trips/falls/loss of consciousness. Others are needing a constant escort, getting disorientated/lost, and needing to monitor heart rate/blood pressure/etc.
The risks of a Trip/fall/loss of consciousness are both realistic and necessary considerations for our elder target consumer base because an injury at this age is devastating to their quality of life due to the length of the recovery period. The risk of injury causes lack of exercise to be common among America’s Elderly. The Assisted Jogger will mitigate most of this fear by offering a dynamic support frame to stabilize with; however, the application further mitigates this risk by the monitoring of the user worn accelerometer sensor. A safety feature can be generated by the having the phone application monitor the user worn accelerometer. The safety feature can then command the phone to automatically contact emergency service providers if a dangerous level of acceleration is experienced by the user. This safety feature offers a sense of assurance that help will come even if the user injures themself or is unable to call for help.
Lilypad Arduino Board:
In order to monitor the user acceleration, an accelerometer and gyroscope sensor will be worn by the user. An accelerometer measures the force and direction applied to the device at a moment in time and a gyroscope is a device that uses gravity to orient the device to which direction is downward. These sensors transmit their readings to a wearable e-textile computer module. The computer modules primary purpose is to provide an easy means to incorporate feedback from the user worn sensors to the phone application. The data will be transmitted to the phone application via Bluetooth.
The Lilypad Atmel 8-bit microcontroller has been chosen as our prototype computer module. This computer module is an extremely light weight wearable e-textile technology operated by arduino programming software. The connections are made by conductive threads instead of wires which is necessary if we are to keep the intelligent features practical in athletic scenarios. A photo of the computer module is shown in the figure below.
The mission included refreshing the Assistive Jogger with a new element of Intelligence through a public offered free downloadable application for smart devices that gives user-friendly access to exercise data, navigation tools, and above all, safety features. Modern technology gives us access to several reasonably accurate sensors right in the palm of our hands via most smartphones, some mp3 players, and most tablets. These common sensors are: accelerometers/gyroscopes, ambient light sensors, GPS, and the in-board microphone. These sensors are available to be analyzed and used for specific purposes via applications. The goal for this project was to make a phone application that interfaces via Bluetooth with a user-worn accelerometer in order to offer an additional safety feature for the user.
The Beginning:
The development of the application system began by assessing the top risks/problems of exercising outside for elderly, disabled, or rehabilitating individuals. The largest risks/problems associated with our target consumer market are trips/falls/loss of consciousness. Others are needing a constant escort, getting disorientated/lost, and needing to monitor heart rate/blood pressure/etc.
The risks of a Trip/fall/loss of consciousness are both realistic and necessary considerations for our elder target consumer base because an injury at this age is devastating to their quality of life due to the length of the recovery period. The risk of injury causes lack of exercise to be common among America’s Elderly. The Assisted Jogger will mitigate most of this fear by offering a dynamic support frame to stabilize with; however, the application further mitigates this risk by the monitoring of the user worn accelerometer sensor. A safety feature can be generated by the having the phone application monitor the user worn accelerometer. The safety feature can then command the phone to automatically contact emergency service providers if a dangerous level of acceleration is experienced by the user. This safety feature offers a sense of assurance that help will come even if the user injures themself or is unable to call for help.
Lilypad Arduino Board:
In order to monitor the user acceleration, an accelerometer and gyroscope sensor will be worn by the user. An accelerometer measures the force and direction applied to the device at a moment in time and a gyroscope is a device that uses gravity to orient the device to which direction is downward. These sensors transmit their readings to a wearable e-textile computer module. The computer modules primary purpose is to provide an easy means to incorporate feedback from the user worn sensors to the phone application. The data will be transmitted to the phone application via Bluetooth.
The Lilypad Atmel 8-bit microcontroller has been chosen as our prototype computer module. This computer module is an extremely light weight wearable e-textile technology operated by arduino programming software. The connections are made by conductive threads instead of wires which is necessary if we are to keep the intelligent features practical in athletic scenarios. A photo of the computer module is shown in the figure below.
Accelerometer & Gyroscope:
The accelerometer is an ADXL330 and has an integrated gyroscope. This specific model is ideal because it is a wearable e-textile technology. E-textile technologies use current carrying thread allowing for no wires that the user would have to be burdened with. The ADXL330 is a small, low power, three axis accelerometer with a minimal range of ±3 g. It measures the static acceleration of gravity in tilt sensing applications, as well as the dynamic acceleration resulting from motion, shocks, or vibrations. These dynamic accelerations give us the user’s accelerations. For instance, if the user undergoes a large acceleration, it is more than likely that the user has fallen.
The accelerometer is connected to the lilypad arduino board. The arduino board also has a battery terminal connected and a Bluetooth module. The functional diagram for the computer module system is shown in the figure below.
The accelerometer is an ADXL330 and has an integrated gyroscope. This specific model is ideal because it is a wearable e-textile technology. E-textile technologies use current carrying thread allowing for no wires that the user would have to be burdened with. The ADXL330 is a small, low power, three axis accelerometer with a minimal range of ±3 g. It measures the static acceleration of gravity in tilt sensing applications, as well as the dynamic acceleration resulting from motion, shocks, or vibrations. These dynamic accelerations give us the user’s accelerations. For instance, if the user undergoes a large acceleration, it is more than likely that the user has fallen.
The accelerometer is connected to the lilypad arduino board. The arduino board also has a battery terminal connected and a Bluetooth module. The functional diagram for the computer module system is shown in the figure below.
Writing Code using Arduino:
Once the arduino board and accelerometer sensor were chosen, the development of the arduino script begins. This process is initially very slow due to the lack of knowledge of arduino programing. Eventually, after much research and trial and error a working script has been generated. The script reads the x, y, and z axis accelerations and transmits values every tenth of a second.
The arduino script begins by defining the analog inputs to the microcontroller. Once defined, the minimum and maximum values that came from the accelerometer while it was under no acceleration are defined. The next step was to initialized serial communication. Once serial communication was initialized it was a matter of converting the raw analog reading from the accelerometer into a comprehendible acceleration number.
Application Development:
Developing Apps requires that one knows the interworking’s of the software development software. The platforms that the project would ideally like to cover are Windows through Microsoft’s Visual Studio Development sdk, Google’s Android through software development sdk, and Mac’s Iphone Platform through their IOS development sdk. The prototype app for the project is done in Windows Visual Studio.
Windows Visual Studio:
Using this software development kit, an application has been developed. The applications main purpose is to monitor the Bluetooth communicated accelerations that the user undergoes. In addition to this, the application is to monitor the phone’s built in accelerometer. This is in case the ADXL330 user worn accelerometer misses a user experienced acceleration for whatever reason. This is not an expected situation; however, it is a nice feature because it adds a second level of safety and comfort to users.
This process started with determining how to program the app to read the X, Y, & Z components of acceleration from the accelerometer using the orientation of -1g being applied on the Y-Axis when the device is face up and level. Once accomplished, it is then necessary to find a way for the accelerometer to be commanded to start interpreting this data. This is done by creating a green interaction block and assigning it with the name “Start.” So now when the start button is activated on the windows phone, the accelerometer is commanded to start the accelerometer. A similar process is done to command the accelerometer to stop the accelerometer by assigning a red interaction block with the name “Stop.” This command is to stop the accelerometer from transmitting to the app.
Once the basic start and stop functions are created, it is then necessary to specify to the accelerometer how often data should be transmitted from the accelerometer & gyroscope. For initial testing, this will be set at 20 Milliseconds.
During initial testing, it is discovered that sometimes the accelerometer may not start due to internal sensor errors, ( i.e. too much movement preventing it from reading the -1g force of gravity). To prepare for this, a designer can use what is called “try and catch blocks” to allow the user to know the error and give directions of what to do to correct it.
Once accelerometer readings are transmitting to the app, it is necessary to update the User Interface (also known as UI) to constantly update the readings to the phone display. This is done using the “UpdateUI” command. For testing purposes, it simply has the accelerometer displaying the data graphically on the X, Y, & Z axis. An screenshot of the application is shown in the figure below.
Once the arduino board and accelerometer sensor were chosen, the development of the arduino script begins. This process is initially very slow due to the lack of knowledge of arduino programing. Eventually, after much research and trial and error a working script has been generated. The script reads the x, y, and z axis accelerations and transmits values every tenth of a second.
The arduino script begins by defining the analog inputs to the microcontroller. Once defined, the minimum and maximum values that came from the accelerometer while it was under no acceleration are defined. The next step was to initialized serial communication. Once serial communication was initialized it was a matter of converting the raw analog reading from the accelerometer into a comprehendible acceleration number.
Application Development:
Developing Apps requires that one knows the interworking’s of the software development software. The platforms that the project would ideally like to cover are Windows through Microsoft’s Visual Studio Development sdk, Google’s Android through software development sdk, and Mac’s Iphone Platform through their IOS development sdk. The prototype app for the project is done in Windows Visual Studio.
Windows Visual Studio:
Using this software development kit, an application has been developed. The applications main purpose is to monitor the Bluetooth communicated accelerations that the user undergoes. In addition to this, the application is to monitor the phone’s built in accelerometer. This is in case the ADXL330 user worn accelerometer misses a user experienced acceleration for whatever reason. This is not an expected situation; however, it is a nice feature because it adds a second level of safety and comfort to users.
This process started with determining how to program the app to read the X, Y, & Z components of acceleration from the accelerometer using the orientation of -1g being applied on the Y-Axis when the device is face up and level. Once accomplished, it is then necessary to find a way for the accelerometer to be commanded to start interpreting this data. This is done by creating a green interaction block and assigning it with the name “Start.” So now when the start button is activated on the windows phone, the accelerometer is commanded to start the accelerometer. A similar process is done to command the accelerometer to stop the accelerometer by assigning a red interaction block with the name “Stop.” This command is to stop the accelerometer from transmitting to the app.
Once the basic start and stop functions are created, it is then necessary to specify to the accelerometer how often data should be transmitted from the accelerometer & gyroscope. For initial testing, this will be set at 20 Milliseconds.
During initial testing, it is discovered that sometimes the accelerometer may not start due to internal sensor errors, ( i.e. too much movement preventing it from reading the -1g force of gravity). To prepare for this, a designer can use what is called “try and catch blocks” to allow the user to know the error and give directions of what to do to correct it.
Once accelerometer readings are transmitting to the app, it is necessary to update the User Interface (also known as UI) to constantly update the readings to the phone display. This is done using the “UpdateUI” command. For testing purposes, it simply has the accelerometer displaying the data graphically on the X, Y, & Z axis. An screenshot of the application is shown in the figure below.