Design of a Fall Detection and Prevention System for the Elderly
|
|
|
- Douglas Manning
- 10 years ago
- Views:
Transcription
1 Design of a Fall Detection and Prevention System for the Elderly by Jonathan Tomkun & Binh Nguyen Electrical and Biomedical Engineering Design Project (4BI6) Department of Electrical and Computer Engineering McMaster University Hamilton, Ontario, Canada
2 Design of a Fall Detection and Prevention System for the Elderly by Jonathan Tomkun & Binh Nguyen Electrical and Biomedical Engineering Faculty Advisor: Prof. Doyle Electrical and Biomedical Engineering Project Report submitted in partial fulfillment of the degree of Bachelor of Engineering McMaster University Hamilton, Ontario, Canada April 23, 2010 Copyright April 2010 by Jonathan Tomkun
3 ABSTRACT Falling is a serious health issue among the elderly population; it can result in critical injuries like hip fractures. Immobilization caused by injury or unconsciousness means that the victim cannot summon help themselves. With elderly who live alone, not being found for hours after a fall is quite common and drastically increases the significance of fall-induced injuries. With an aging Baby Boomer population, the incidence of falls will only rise in the next few decades. The objective of this project was to design and create a fall detection and prevention system for the elderly. The system consists of a wearable monitoring device that links wirelessly with a laptop. The device is able to accurately distinguish between fall and non-fall. Upon detecting a fall, the device emits a significant warning from the device and through the laptop, alerting others to the user s fall. The device is also able to recognize dangerous tilt indicative of a fall, at which time the device emits a warning to the user to correct their orientation to minimize the risk of falling. The focus of this project was developing the most successful algorithm for detecting falls and distinguishing them from non-falls. Multiple algorithms based on both accelerometer and gyroscope platforms were examined then combined into hybrid algorithms concentrating on acceleration magnitude and angle change. The process of establishing the most successful algorithm involved rigorous testing and data collection. Keywords: fall detection, acceleration magnitude, angle change, angular velocity, algorithm, threshold, fall prevention, elderly, automatic, wireless, Bluetooth, SVM ii
4 ACKNOWLEDGEMENTS The group would like to thank course-coordinator and faculty advisor Dr. Doyle for meeting with the group on multiple occasions to keep project progress on track, provide applicable suggestions, and give instrumental advice on SVM development. Thanks also goes to Dr. Casey Chan for technical advice and providing the use of a rapid prototyping machine, and Mike Willand for hardware suggestion and guidance. Finally, the group is grateful to On Nie (Annie) Cheong and Thilakshan (TK) Kanesalingam for putting their bodies on the line and providing test fall data. iii
5 TABLE OF CONTENTS ABSTRACT ii ACKNOWLEDGMENTS iii TABLE OF CONTENTS iv LIST OF TABLES vi LIST OF FIGURES vii NOMENCLATURE viii 1 Introduction Background Objectives Methodology Scope Literature Review Existing Commercial Devices Existing Research & Development Statement of Problem and Methodology of Solution 9 4 Experimental or Design Procedures Hardware Microcontroller Sensors Bluetooth Peripherals Housing Software Testing/Data Collection Fall Algorithms Fall Algorithm Fall Algorithm Fall Algorithm Post-Fall Process iv
6 5 Results and Discussion 25 6 Conclusions and Recommendations 29 Appendix A: Accelerometer and Gyroscope Calibration Formulas & Tables 30 Appendix B: Testing/Data Collection Arduino Program 32 Appendix C: Testing/Data Collection PC-side Processing Program 34 Appendix D: Testing/Data Collection Matlab Data Graphing Program 35 Appendix E: Algorithm 1 Arduino Program 36 Appendix F: Algorithm 3 Arduino Program 39 Appendix G: Final Prototype Arduino Program 42 Appendix H: Final Prototype PC-side Processing Program 48 References 53 Vitae 55 v
7 LIST OF TABLES 4.1 Arduino Duemilanove Microcontroller Board Specs Experimental Results, Sensitivity and Specificity A.1 Accelerometer Calibration Values A.2 Gyroscope Calibration Values vi
8 LIST OF FIGURES 2.1 Flow chart for an example fall detection algorithm Full device outside of housing; close up of sensors and buttons Housing Mk. II, SolidWorks design top view; bottom view Housing Mk. III, SolidWorks design top view; bottom view Housing Mk. III, with device components Flowchart for Fall Detection Algorithm Flowchart for Fall Detection Algorithm Flowchart for Fall Detection Algorithm Flowchart for Post-Fall Process Binh falling forward; acceleration magnitude; angular velocity Annie falling forward; acceleration magnitude; angular velocity TK walking; acceleration magnitude; angular velocity TK sitting down hard; acceleration magnitude; angular velocity Binh lying down; acceleration magnitude; angular velocity vii
9 NOMENCLATURE ADC Analog to Digital Converter. An ADC converts continuous analog signals (typically voltages) to discrete digital bit numbers. Baud rate The data rate in bits per second (bps) for serial data transmission. Common values include: 9600, 14400, Flash memory Program space. In the case of microcontrollers, this is where the actual program to be executed is stored. I2C/I 2 C Inter-Integrated Circuit. I2C is a type of serial bus and the associated protocols for communicating between I2C electronic devices. g One equivalent of Earth s gravity. 1g = 9.8m/s 2. SRAM Static Random Access Memory. In the case of microcontrollers, this is where a program creates and manipulates variables when it runs. SVM Support Vector Machine. SVM s are a set of learning methods used for classifying data into different categories. Typically they work by projecting data into a high or infinite dimensional space where a hyperplane can separate the data in such a way not possible in regular dimensional space. viii
10 1 1 INTRODUCTION 1.1 Background Every year, one-third to one-half of the population aged 65 and over experience falls [1]. Of these elderly who do fall, half of them do so repeatedly [1]. Falls are the leading cause of injury in older adults and the leading cause of accidental death in those 75 years of age and older, accounting for 70% of accidental deaths [2]. More than 90% of hip fractures occur as a result of falls, with most of these fractures occurring in persons over 70 years of age [3]. Treatment of the injuries and complications associated with falls costs the U.S. over 20 billion dollars annually [4]. Many elderly live alone either in an apartment or a smaller house after their children have grown up and left home. It is not uncommon after a fall that an elderly person is unable to get up by themselves or summon help. There is therefore a need for an automatic fall detection system in which a patient can summon help even if they are unconscious or unable to get up after the fall. There are already several products on the market attempting to address this problem that have reached commercialization [5,6,7]. However, all of these products require the fall detection device to connect (via RF) to a stationary base station, which is often a separately purchased product. This base station, placed centrally in one s house and hardwired to a phone line, then phones a call centre for help. The disadvantage of these products is that they all require an intermediary call service which amounts to a hefty monthly fee. Also, they are all limited to the range of one s house because they depend on the central base station for outside contact. On the non-commercialized aspect of development, the majority of research in fall detection is centralized around designing new more successful algorithms for determining falls from non-falls. The work around fall detection is distinguished by the equipment used and by the features extracted from sensor data. The first approach is based on accelerometers. An accelerometer is a device that can detect the magnitude and direction
11 2 of acceleration along a certain axis; usually three-axis accelerometers are used. Accelerometers can also calculate one s angle in relation to the Earth by detecting the acceleration due to gravity of the Earth [8]. The second main approach uses gyroscopes, which measure orientation. A gyroscope consists of a spinning wheel whose axle is free to take any orientation [9]. Like an accelerometer it can measure the orientation along one or multiple axes. Using gyroscopes, it is possible to determine one s orientation and changes in orientation, which can be used to calculate angular velocity and acceleration [8]. 1.2 Objectives With an aging population of baby boomers, our device aims to satisfy the growing unmet need of fall detection and prevention. The objective of this project is to design and create a Fall Detection System for the elderly. The system is a wearable monitoring device that can link wirelessly with a pre-programmed laptop computer or Bluetooth-compatible mobile phone. Upon detecting a fall, the device communicates wirelessly with the laptop/cell phone to call 911 and/or emergency contacts. The device also detects abnormal tilt and warns the user to correct their posture to minimize the risk of falling. Our system is unique from existing commercial devices for several reasons. Our aim was to eliminate the middle man call centre service and therefore the extra monthly fee. We accomplished this by incorporating the system with the user s existing cell phone/computer, which also minimizes additional setup costs and hardware. This is dependent on the fact that the next generation of elderly (baby boomers) are relatively comfortable with technology and most likely already own a cell phone and/or computer. Our device is also unique in that it offers a manual cancellation button in the event of a false alarm or minor fall that the user was able to recover from. Another advantage our system has is that it allows mobility beyond the range of the house. Wireless linking with a cell phone allows for protection anywhere there is cell service. For more lengthy stays away from home, say when visiting a relatives home, wireless linking with one s own laptop provides mobile protection a fixed base station would not allow. Our device also offers a wide range of selectable alert methods should the user be hearing-impaired,
12 3 seeing-impaired or otherwise. In the event of a fall or abnormal tilt, the device is able to emit visual, auditory, and tactile feedback in the form of flashing LED s, siren, and vibrating buzzer, respectively. Looking at the underlying detection process, our Fall Detection System should improve on previous systems and designs. The incorporation of hybrid fall detection algorithms derived from existing algorithms would allows us to find the one with the highest sensitivity and specificity. In addition, we should be able to use our extensive test data set to design, train, and implement a simple SVM able to examine data from sensors and determine if a fall has occurred on a yes/no basis. 1.3 Methodology Using accelerometers, the most common and simple methodology for fall detection is using a tri-axial accelerometer and applying thresholds [9,10]. This means that any motion that exceeds some threshold value of acceleration will be considered a fall. More advanced detection involves taking the dot product or cross product of the axial accelerations to obtain the cross product magnitude and angle change [11]. With this information, new algorithms can be formulated like analyzing post-fall orientation in addition to acceleration threshold. This is important because often when a person falls, their orientation changes from vertically standing to horizontally lying on the floor. Researchers using accelerometers give a lot of attention to the optimal sensor placement on the body; researchers generally agree that optimal fall sensor placement is at the waist [10,12]. Using gyroscopes, a similarly-placed gyroscope measures pitch and roll angular velocities. Applying a threshold algorithm to angular change, velocity, and acceleration can be successful in fall and tilt detection [9]. This project involved testing and devising algorithms for maximum sensitivity and specificity. We tested existing algorithms while using our own ideas to come up with new hybrid algorithms. Different from existing fall detection systems, our device uses both accelerometers and gyroscopes. This opened doors to new algorithms that integrate both components and essentially allowed us to have two stages of detection whereas existing devices only have one.
13 4 Testing and data collection involved multiple persons simulating falls and non-falls or Activities of Daily Living (ADL) [10]. We let the device s algorithm distinguish between them, followed by algorithm evaluation. Since asking older people to intentionally fall is unreasonable, the simulated falls were completed by young adults (aged 20-25) in a monitored environment. 1.4 Scope This paper will focus on the development of fall detection algorithms and their implementation in the Arduino programming language for upload onto the Arduino Duemilanove board (ATmega238 microcontroller). It will also examine the programming used on the laptop computer end to successfully establish a connection and communicate with the device, written in the Processing programming language. In addition, hardware choice and decisions based on which sensor boards, modules, and peripherals to use in the device will be looked at.
14 5 2 LITERATURE REVIEW Multiple research journals were consulted to find relevant information regarding fall detection. From these journals, information on how to use the acceleration readings along multiple axes from an accelerometer to calculate acceleration magnitude, cross product magnitude, and angle change was found [11]. In addition, information on how to use the output from our gyroscopes to determine angular change, velocity, and acceleration was also found [9]. Several journals also included the approximate values of angle change and acceleration thresholds expected during falls, leading up to falls, and in ADL [11]. 2.1 Existing Commercial Devices As expected, there exist several commercial devices already on the market that attempt to address the issue of falling in the elderly. One such device is the ilife Fall Detection Sensor by AlertOne [5]. It is a self-contained, battery operated, wireless fall sensor worn on the body with a belt clip. It is designed to detect falls or abnormal body movements and automatically summon assistance without end-user intervention; it also has a manually activated button for summoning help. There are several differences between this device and ours. It uses only accelerometers and thus only accelerationbased algorithms (no gyroscope). It has only one LED for visual confirmation of activation; it has no audio or tactile alert for the seeing/hearing-impaired. It also does not facilitate a cancel feature; once an alert is set off there is no turning it off. Finally, it requires a base station that it communicates with by RF and a call centre subscription service (US $27.95/month), both of which are additional costs on top of the wearable device. Another fall detection device on the market is the myhalo by Halo Monitoring [6]. This is more of a full body monitoring system in that it is worn as a chest strap and detects falls, monitors heart rate, skin temperature, sleep/wake patterns, and activity levels. Data transfer requires a modem base station, which sends the information to a central server to be uploaded to a caregiver-accessible webpage. Following a fall or
15 6 emergency, the device again goes through a call centre (US $49-59/month) before alerting authorities/emergency contacts. Because this device offers so many features, it is quite complicated and hard to access (chest-mounted). It is a system less focused on fall detection and more on total health monitoring. One of the more well known commercial devices for fall and emergency detection is the Life Alert Classic by Life Alert Emergency Response, Inc. [7]. This device is recognizable from long-running TV commercials starring an elderly woman on the floor exclaiming, Help! I ve fallen and I can t get up!. Despite its popularity, this device is one of the simpler emergency response devices. It consists of a pendant or watch with a single push button. Pressing this button, it connects with a base station via RF, and contacts operators at a call centre. It has no automatic features, sensors, or feedback built into the device; it requires entirely on the user s ability to manually activate the alert and does not take into account the immobility or unconsciousness of the wearer, as is often the case in elderly post-fall. 2.2 Existing Research & Development With the prospect of commercialization that often surrounds health related issues, there is substantial research in the academic arena surrounding fall detection for the elderly. The majority of this research is focused on designing new more successful algorithms for distinguishing falls from non-falls. Researchers in this area typically use one of two sensors with which to extract data, develop, and test their algorithms. The first approach uses accelerometers to detect acceleration along a certain axis. When monitoring for a large acceleration from a tri-axis accelerometer, it is better to look at the magnitude vector: AM = a + a + a, rather than at each of the axes separately [13]. To measure 2 x 2 y 2 z angle change with accelerometer data, the dot product must be calculated: a b = a b cosθ, and rearranging for the angle yields: θ = cos 1 a b, where a b b=(b x,b y,b z ) is a reference acceleration vector that is set by the user when they stand vertically, and a=(a x,a y,a z ) is an instantaneous acceleration [13].
16 7 The second main approach to fall detection uses gyroscopes to detect angular velocity and angle change. A typical bi-axial gyroscope outputs pitch (ω p ) and roll (ω r ) angular velocities. From these the resultant angular velocity magnitude is calculated: computed:. From here the resultant angle change and angular acceleration can be [9]. Using these common calculations or calculations similar to these, researchers have developed many different algorithms for detecting a fall. One example algorithm is as follows: Figure 2.1: Flow chart for an example fall detection algorithm [13].
17 8 From this flowchart we can see one example of the steps and decisions that a microcontroller/processor might take in distinguishing everyday activities from a real fall: 1. Look for an acceleration that exceeds Large Acceleration Threshold 2. Wait until the acceleration dissipates and returns to relatively Normal Acceleration 3. Analyze the user s angle/orientation 4. If the user has an Orientation Parallel with the Ground, classify as a fall This is one of many algorithms that have been developed for fall detection. As the complexity increases, so often does the sensitivity and specificity. For further examples of fall-detection algorithms, see [9,13,11,15,16].
18 9 3 STATEMENT OF PROBLEM &METHODOLOGY OF SOLUTION The objective of this project was to design and create a Fall Detection System for the elderly. The system had to be wearable and capable of wireless communication with a laptop computer. The device had to be able to detect dangerous tilt and if a fall had occurred. In the event of a fall or dangerous tilt, the device had to be able to warn the user and others. To be able to detect falls, the device first has to be able to sense motion and the different measurable qualities involved with motion. Sensing in the device begins with a digital tri-axis accelerometer, which measures acceleration along the three coordinate axes. An analog bi-axial gyroscope measures the pitch and roll of the device in the form of angular velocities. To use these sensors to detect falls, the sensor readings have to be outputted to a microcontroller for processing and application to algorithms. For this to occur, first the sensor readings are converted from an analog voltage signal to a discretized bit value for the microcontroller to be able to use them. This is accomplished by passing the sensor outputs through an Analog to Digital Converter (ADC) before entering the microcontroller. The microcontroller has to take the discretized bit data from the ADC and apply different formulas and conversion factors to calculate the necessary factors (acceleration magnitude, angle change, angular velocity). Using these factors, the microcontroller feeds them into an algorithm, comparing the inputs with various threshold values, initiating triggers when certain thresholds are met or exceeded. Upon detecting dangerous tilt, the microcontroller has to initiate a brief audible, tactile, and visual warning to the user to correct their posture. The user is warned via sight, sound, and touch in case of impairment of one of the senses. Upon identifying a fall, the device initiates a continuous audible, tactile, and visual warning. The user is then given a window of time (20 seconds) in which to cancel the alert in the instance that the fall is not serious and the user is able to regain their composure on their own. If left uncancelled, the fall is considered serious and an alert is sent out.
19 10 Throughout the process of sensor readings, algorithm triggers, fall detection, etc. the device is continuously synched with a laptop computer. This is done using a Bluetooth module attached to the microcontroller for output. The synched laptop computer constantly monitors the status of the device; it receives and stores all sensor data onto its hard drive and is updated with any algorithm trigger changes or tilt/fall detections. The laptop is then able to send an alert to the authorities and/or emergency contacts.
20 11 4 EXPERIMENTAL OR DESIGN PROCEDURES 4.1 HARDWARE The following are the design procedures that were involved in determining the appropriate microcontroller board, sensor boards, peripherals, Bluetooth module, and the appropriate casing (or housing) to mount all the electronics in Microcontroller To perform all our necessary processing, we chose to use the ATmega328 microcontroller mounted on the Arduino Duemilanove board. Some of the pertinent specifications for this microcontroller board are seen below in Table 4.1. Table 4.1: Arduino Duemilanove Microcontroller Board Specs Component Arduino Duemilanove Microcontroller ATmega328 Operating Voltage 5V Input voltage (recommended) 7-12V Digital I/O Pins 14 (6 PWM output) Analog Input Pins 6 DC Current per I/O Pin 40mA DC Current for 3.3V Pin 50mA Flash Memory 32KB (2kb used by bootloader) SRAM 2KB EEPROM 1KB Clock Speed 16MHz The Arduino Duemilanove is a very popular board among hobbyists and is the microcontroller board of choice when building small model projects. Because of this, there are extensive tutorials and open source examples available to facilitate learning and familiarizing oneself with the board. In addition to this, we chose this board because of the following characteristics:
21 12 Operating voltage The operating voltage of 5V with a 3.3V option is appropriate because both our sensor boards and Bluetooth module operate under 5 or 3.3V power and output readings in the range of 0-5V. Input voltage The board has a built-in voltage regulator that allows an input voltage range of 7-12V, which is suitable because we plan to power the board with a 9V battery. Number of pins The large number of digital I/O pins (14) is fitting because we need to interface with several peripherals (2 LEDs, 2 buttons, a buzzer, and a siren). The number of analog input pins (6) is sufficient because we require multiple pins to receive input from our sensor boards. Memory The flash memory (32KB) is appropriate because our algorithm programs can be fairly long and require a decent amount of memory on the microcontroller to store them. The SRAM (2KB) is a little on the low side, but the algorithms can work around this by not storing too many variables, so as to not exhaust the SRAM capacity. Specialty pins The Arduino Duemilanove comes with RX/TX pins, which will be used for serial communication with our Bluetooth module. The board also comes with I2C compatible pins, which will be crucial to interface with our digital accelerometer. USB communication and programming environment The Arduino communicates and loads programs from a PC via a USB cable; it can also be powered by USB. This is advantageous and simpler than other microcontrollers that require serial port or parallel communication. The Arduino programming language and environment is very user friendly. It uses the Processing, which is an object-oriented programming language based off C Sensors For appropriate fall detection, our device required two different types of sensors: Accelerometer We selected the ADXL345 triple axis digital accelerometer to use in our device. It has a wide settable g range (up to ±16g), which is appropriate because falls can reach up to 8 g s. Because it is digital, its resolution
22 13 can also be set, there is less voltage noise, and there is less zeroing/calibration error: a 0 acceleration reading will actually give a 0, as opposed to analog accelerometers that will give a non-zero voltage even for 0 acceleration. Also, the ADXL345 requires 3.3V power and is I2C compatible, so our microcontroller board can interface with it correctly. Gyroscope We selected the LPR530AL dual axis gyroscope to use in our device. It has a high angular velocity range (±300 /s), which is appropriate for the conditions experienced when falling. This gyro board also has built-in filtering and amplification (4x), and requires 3.3V power and outputs in the 0-5V range, so our microcontroller board can interface with it correctly. See Appendix A for full Accelerometer and Gyroscope calibration tables and formulas Bluetooth For wireless communication, we chose to use Bluetooth as the modality. This is because many modern portable devices (laptop computers, mobile phones, GPS, etc.) are readily compatible with Bluetooth. The Bluetooth modem we chose is the BlueSMiRF gold with a RN41 Class 1 Bluetooth module and built-in antenna. We chose this modem namely because its pins and power are 5V compatible. It also supports RX/TX serial communication from 9600 to bps (bits per second, baud rate), which makes it fully compatible with our Arduino board Peripherals To provide interface with the user, our device has numerous peripherals: Two buttons (red and green) These two buttons provide input from the user and allow them to control the device. The chosen buttons were simple 4-pin pushbuttons compatible with 5V power. We used 10kΩ resistors as pull-down resistors to ground. Two LEDs (red and green) These two LEDs provide visual feedback to the user. They are low voltage LEDs, so required resistors to bring down the 5V power supply appropriately.
23 14 Siren & Buzzer These devices provide audible and tactile feedback to the user, respectively. The siren emits a high pitch tone and the buzzer vibrates. Both were chosen for their compatibility with 5V power Housing Seen below in Figure 4.1 is the full device laid out and wired on a breadboard. This layout was used for debugging purposes only to make sure all our sensors, Bluetooth, and peripherals were functioning correctly. To perform actual fall testing and data collection, a more robust housing solution was needed. Figure 4.1: Full device outside of housing (left); close up of sensors and buttons (right). To complete some preliminary fall testing and data collection, we proceeded to use an off-the-shelf housing box designed for the Arduino. This box was plastic and rectangular in shape with a metal lid. To house our sensors, we mounted them on a smaller breadboard and attached it to the metal lid of the box. With this apparatus, Housing Mk. I, we were able to gather a large amount of fall data. However, this setup was only for data collection; there was no room for our peripheral alert components and buttons, or a Bluetooth module. We decided that we needed to construct a custom housing for our working prototype. As discussed in Statement of Problem and Methodology of solution, the system had to be wearable device, capable of wireless communication with a laptop computer. This put
24 15 several design constraints on the housing of the device. The device and housing had to be small enough and light enough to be worn comfortably and not inhibit normal daily activities. Because we decided to mount the device around the hip and pelvis area, the device also had to be ergonomic (contoured to the body) and have belt holes. Due to the purpose of the device, the housing had to be shaped in such a way so as to minimize injury to the user should they fall on it. Also, the housing material and design had to be robust enough to absorb impact and endure the user s weight falling on it. To be completely wireless, the device also had to have its own power source that was strong enough to power all the electronic components for a long period of time. We chose to use a 9V battery because its voltage is compatible with our microcontroller board, it has a suitably long battery life under these conditions, and it is economic. Taking these points into consideration, we came up with our second housing, designed in SolidWorks seen below (Figure 4.2). In this housing, we see bottom is curved to contour and fit the body line, and a loop hole is aligned along the bottom to slide in a belt. There are slots so that our microcontroller board and sensor boards can slide in and be held securely; there are housing holes for the pushbuttons and LEDs positioned for optimal user accessibility and visibility. The roof slides off for easy access. We had this design manufactured by a 3-dimensional prototyping machine in a lightweight, strong material known as ABS (acrylonitrile butadiene styrene); the same material used in Lego bricks. Figure 4.2: Housing Mk. II, SolidWorks design top view (left); bottom view (right).
25 16 After Housing Mk. II was milled, we assembled the device components accordingly; it functioned fairly well. However, we noticed it was rather large and cumbersome in size; also, the top of the box was still rectangular and posed a threat should the wearer fall on it. From these observations we developed Housing Mk. III, seen below in Figure 4.3. With this housing, the sensor and Bluetooth mounts were positioned above the microcontroller to minimize unused space. In addition to filleting and chamfering (rounding) all edges, the top and bottom of the enclosure was curved to match the contour of the body to maximize comfort for the wearer and minimize injury should the wearer fall on it. Figure 4.3: Housing Mk. III, SolidWorks design top view (left); bottom view (right). Housing Mk. III was milled, and we again assembled the device components (Figure 4.4). This version was much smaller and lighter, and functioned well in fall testing. Figure 4.4: Housing Mk. III, with device components.
26 SOFTWARE All microcontroller programming was done in the Arduino programming language and environment. The computer based programs that communicate with the Arduino are written in the Processing language Testing/Data Collecting For testing and data collection purposes, the device and microcontroller board was tethered to a laptop computer using a USB cable to ensure consistent data transfer and avoid the possible complications of wireless communication. On the Arduino end, the microcontroller had to be programmed to read data from the two sensors and send that data through serial (USB) to the computer. Reading from the gyroscope was done using the analogread function, which takes the voltage at an analog input pin and converts it into a 10-bit number (0-1023). Reading from the digital accelerometer was a little more involved; it required using I2C communication protocols to writeto the device address and setting registers to put it in the right mode (±16g, 13 bit resolution) before you could readfrom the device. I2C protocol was used for communicating between the digital accelerometer and microcontroller instead of SPI because I2C is simpler to implement and the compatible pins on our microcontroller board are available. In total, there would be 3 readings from the accelerometer (one for each axis: ax, ay, az) and 2 readings from the bi-axis gyroscope (gx, gy). Once the data from both sensors was properly read in, they were converted to Strings, concatenated, then sent to the computer over the serial connection. A delay of 100ms was inserted to in order to not clog the port. This means we took readings from the sensors 10 times a second, which proved sufficient. Each set of readings was ended with a newline character to distinguish between them on the PC side. The full Arduino data collection program can be seen in Appendix B. As the Arduino end was running, the PC side had to run a program to receive the data. This program would open a serial communication port then read in the data as it was sent by the Arduino. The data Strings would have to be deconcatenated to extract the relevant data values back into integer form. These values were then written to a text file and stored. The full PC side data receiving program can be seen in Appendix C.
27 18 The values stored in text file format were then read into Matlab and so that they could be displayed visually. The Matlab program accesses the text files then computes the acceleration magnitude and angular velocity magnitude from the data, and graphs them vs. time. The full Matlab graphing program can be seen in Appendix D Fall Algorithms All of the fall algorithms that were developed conceptually had to be converted from a linear flowchart design to Arduino programming, which runs in a continuously looping architecture. Because of the limited memory (2KB SRAM) of the microcontroller, data readings can not be continuously stored in memory and earlier data beyond a certain extent can not be accessed. To ensure the program knows the previous state of the algorithm or if one of the thresholds has been broken in a previous loop execution, a trigger system was used. In other words, when some threshold was broken a boolean trigger variable would be set true; in the next loop execution this would lead to additional decision statements and possible trigger activation/deactivation until all triggers are set true and a fall is detected or all triggers are turned off Fall Algorithm 1 The first fall detection algorithm is based off the concept that during a fall, a person experiences a momentary freefall or reduction in acceleration, followed by a large spike in acceleration, then a change in orientation. The flowchart for Algorithm 1 is seen below in Figure 4.5. We see the algorithm checks to see if the acceleration magnitude (AM) breaks a set lower threshold. If this lower threshold is broken, the algorithm then checks to see if AM breaks a set upper threshold within 0.5s. If this upper threshold is broken, the algorithm then checks to see if the person s orientation has changed in a set range within 0.5s, which would indicate a person has fallen or toppled over. If the person s orientation has changed, the algorithm then examines to see if that orientation remains after 10s, which would indicate the person is immobilized in their fallen position on the ground. If this holds true, the algorithm recognizes this as a fall. A failure of any of the intermediate decision conditions would reset the triggers and send you back to the start. The strength of this algorithm is that it requires an activity to break two AM
28 19 thresholds and have an orientation change. Ideally this additional lower threshold would reduce the number of false positives. The weakness of this algorithm is that it requires the fall to involve an orientation change. Certain falls, like those dropping down on one s rear or against a wall, would not elicit the necessary orientation change. The full Arduino program for Algorithm 1 can be seen in Appendix E. Figure 4.5: Flowchart for Fall Detection Algorithm 1
29 Fall Algorithm 2 The second fall detection algorithm is focused on distinguishing and eliminating repetitive activities like walking and running from falls. The flowchart for Algorithm 2 is seen below in Figure 4.6. We see the algorithm checks to see if an impact has occurred (AM breaks a set upper threshold). If an impact occurred, the algorithm stores the orientation 1s before the first impact. The algorithm then checks if another impact occurs within 2s and continues to loop through until the chain of impacts stops. The algorithm then checks whether this chain of impacts exceeded 10s, which would indicate a repetitive activity like walking or running. If the chain of impacts is less than 10s, the algorithm stores the orientation 1s after the last impact and compares it to the orientation 1s before the first impact. If a change in orientation has occurred, the person has likely toppled over during the disturbance and a fall is detected. The strength of this algorithm is that it can recognize the successive impacts that would be characteristic of normal activities like walking; it can also recognize and detect complicated falls that would involve a struggle or stumble down stairs. The weakness of this algorithm is that it requires the fall to involve an orientation change.
30 Figure 4.6: Flowchart for Fall Detection Algorithm 2 21
31 Fall Algorithm 3 The third fall detection algorithm is based off the idea that during a fall, a person experiences a large spike in acceleration, then a period of time where they may struggle to regain composure. The flowchart for Algorithm 3 is seen below in Figure 4.7. We see the algorithm checks to see if the acceleration magnitude (AM) breaks a set upper threshold. If this upper threshold is broken, the algorithm then waits up to 20s for the AM to return to a relatively normal level. If the AM returns to a normal level, this would indicate the person has potentially stopped struggling and is immobilized. The algorithm then checks to see if the person s orientation has changed in a set range, which would indicate a person is motionless in a fallen position on the ground. If this holds true, the algorithm recognizes this as a fall. A failure of the intermediate decision conditions would reset the triggers and send you back to the start. The strength of this algorithm is that it takes into account post-fall struggle and return to normal acceleration to confirm the user is immobilized horizontally. The weakness of this algorithm is that it requires the fall to involve an orientation change. The full Arduino program for Algorithm 3 can be seen in Appendix F.
32 23 no yes Figure 4.7: Flowchart for Fall Detection Algorithm 3
33 Post-Fall Process Following the detection of a fall by one of the algorithms, the fall detection programs then go through what is called a post-fall process. The flowchart for the process can be seen in Figure 4.8. In this process, all falls detected by an algorithm are considered potential falls. The user is then alerted and given a 20s window to cancel the alert if it was a false detection or they were able to regain their composure. If the alert is not cancelled within 20s, the program goes into confirmed fall mode where the user and emergency contacts are alerted of a confirmed fall incident. See Appendix G for the final prototype Arduino program that fully implements the sensors, Algorithm 3, buttons, alert peripherals, and wireless Bluetooth communication with a laptop. See Appendix H for the final prototype PC-side Processing program that fully implements wireless Bluetooth data transfer from the device, data storage to text file, onscreen display messages synched with device modes, and a real time acceleration magnitude plot. Figure 4.8: Flowchart for Post-Fall Process
34 25 Acceleration (g`s) Acceleration (g`s) RESULTS AND DISCUSSION The following series of graphs represent a handful of the fall and non-fall data that we collected during our testing phases. They present a comparison between the fall characteristics of different test subjects and a contrast between the kind of thresholds we expect to see in a fall and those we expect to see in a non-fall. In Figure 5.1 and Figure 5.2 we see Binh and Annie, respectively, falling forward. We see in both cases their acceleration magnitude reaches a peak of around g s. This data helped us set the upper AM threshold value for our algorithms around 3g s to ensure that the acceleration from all falls will break it. Acceleration Magnitude over Time Time (s) Time (s) Y-Axis Angular Velocity Magnitude over Time 200 Figure 5.1: Binh falling forward; acceleration magnitude (left); angular velocity (right). Acceleration Magnitude over Time Time (s) Figure 5.2: Annie falling forward; acceleration magnitude (left); angular velocity (right). Angular Velocity (deg/s) Angular Velocity (deg/s) Angular Velocity (deg/s) Angular Velocity (deg/s) X-Axis Angular Velocity over Time Time (s) X-Axis Angular Velocity over Time Time (s) Y-Axis Angular Velocity Magnitude over Time Time (s)
35 26 In the following figures, we see examples of everyday activity that should not be detected as falls. Figure 5.3 shows TK walking; his acceleration magnitude does not exceed 1.7g s. Figure 5.4 shows TK sitting down in a chair hard; his acceleration magnitude in this case does not exceed 1.8g s. Figure 5.5 shows Binh moving from a standing position to a lying down position; his acceleration does not exceed 1.4g s. This data confirms our decision to make the upper AM threshold value for our algorithms around 3g s such that most non-falls do not exceed this value in acceleration. Acceleration (g`s) Acceleration (g`s) Acceleration Magnitude over Time Time (s) Time (s) Y-Axis Angular Velocity Magnitude over Time 200 Figure 5.3: TK walking; acceleration magnitude (left); angular velocity (right). Acceleration Magnitude over Time Time (s) Figure 5.4: TK sitting down hard; acceleration magnitude (left); angular velocity (right). Angular Velocity (deg/s) Angular Velocity (deg/s) Angular Velocity (deg/s) Angular Velocity (deg/s) X-Axis Angular Velocity over Time Time (s) X-Axis Angular Velocity over Time Time (s) Y-Axis Angular Velocity Magnitude over Time Time (s)
36 27 Acceleration (g`s) Acceleration Magnitude over Time Time (s) Figure 5.5: Binh lying down; acceleration magnitude (left); angular velocity (right). A similar process to the one involving acceleration magnitude described above was completed with the other fall-related parameters of angle change, angular velocity and angular acceleration. For example, using the same test data as above, we also looked at the orientation change involved before and after both falls and non-falls in order to determine our orientation change ranges/thresholds. Angular Velocity (deg/s) Angular Velocity (deg/s) X-Axis Angular Velocity over Time Time (s) Y-Axis Angular Velocity Magnitude over Time Time (s) Using the values we had determined from both research and our own fall/non-fall data collection and testing above, we established the different thresholds in our algorithms. After setting the threshold variables in our Arduino programs, we began to test the different algorithms. For accuracy and realism, the falls/non-falls were performed on bare ground instead of cushioned mats. Due to the physical demanding nature of the falls, we limited the number of tests to 20 per algorithm. To perform our testing we uploaded each algorithm program to the Arduino one at a time and performed 10 true falls and 10 non-falls and recorded the results. For consistency, only one tester was used for all algorithms and replicated the same style of fall/non-fall for each algorithm as close as possible. The experimental results are seen below in Table 5.1.
37 28 Table 5.1: Experimental Results, Sensitivity and Specificity Algorithm 1 Algorithm 2 Algorithm 3 SVM True Positives False Negatives True Negatives False Positives Total (20) 16/20 15/20 18/20 19/20 Examining these results, we see the SVM designed and trained from test fall data by partner Binh Nguyen performed the best out of the four algorithms. It was able to correctly recognize 10/10 of our real falls (true positives) and 9/10 of our non-falls (true negatives); its only fault was recognizing one non-fall as a fall (false positive). This performance was closely followed by Algorithm 3, which correctly identified 10/10 falls and 8/10 non-falls. Algorithm 1 competed respectfully, identifying 8/10 falls and 8/10 non-falls. Algorithm 2 was least effective of the four algorithms, distinguishing 7/10 falls and 8/10 non-falls. These results are reasonable and expected. The SVM outperformed the algorithms because it was trained on a wide range of falls and non-falls whereas the regular algorithms focused simply on recognizing falls. In addition, the SVM was trained on data that included specific data from the same person who performed the final testing; it was almost as if the device was customized to the tester s fall characteristics. Algorithm 3 performed very well as it was quite sensitive to all falls; this is because it calculated orientation change only after the person returned to normal acceleration: either standing up or immobilized on the ground. Algorithm 2 performed somewhat poorer than the others as its primary focus was on repetitive impacts and motions. Algorithm 1 relied too much on the negative acceleration before a fall: several types of fall produced minimal freefall effects before impact. Without this initial drop in acceleration, the algorithm did not pass the first decision statement.
38 29 6 CONCLUSIONS AND RECOMMENDATIONS The objective of this project was to design and create a wearable Fall Detection System for the elderly that can link wirelessly with a pre-programmed laptop computer or Bluetooth-compatible mobile phone. By the conclusion of this project, we had achieved our primary goal of creating a working prototype able to recognize both dangerous posture and falls from non-falls, while wirelessly synched with a laptop. Looking at the underlying detection process, our Fall Detection System improves on previous systems and designs. We incorporated hybrid fall detection algorithms derived from existing algorithms to find the one with the highest sensitivity and specificity (Algorithm 3). In addition, we were able to use our extensive test data set to design, train, and implement a simple SVM able to examine data from sensors and determine if a fall has occurred on a yes/no basis that outperformed any of the regular algorithms. With this project, there are several areas for the future development. On the more commercial aspect of things, improvements would include: having pre-recorded voice instructions for the user, the addition of a microphone so the user can record their own personal voice messages to be sent to contacts during emergencies, establishing emergency contacts though the PC-side by sending text messages, s, or Voice over IP (telephoning through the internet), reducing the entire size of the device using custom fabrication/printed circuit boards and Lithium-ion batteries, and porting the PC-side programming onto an iphone/blackberry/google Android phone for completely mobile communication. On the theoretical development side of things, most apparent is the need for additional testing of our existing algorithms; further tweaking of threshold values and decision/trigger conditions could produce new, even better algorithms. In addition, more test subjects from a wider range of physical categories performing more types of fall/nonfall activities would give a much more complete data set to work from. This would significantly improve the training of the SVM, and with enough data one could even implement height/weight/gender-specific SVM lookup tables/algorithms to tailor the device to each user s individual needs.
39 30 APPENDIX A: ACCELEROMETER AND GYROSCOPE CALIBRATION FORMULAS & TABLES Accelerometer: signed 13-bit resolution, range ±16g, bit range to 4095, 1g=9.8m/s 2 Table A.1: Accelerometer Calibration Values Bit Number Equivalent # of g's
40 31 Gyroscope: max ±300 /sec angular velocity, steady state: 4xOUTX=4xOUTY=1.23V 4xOUTX=4xOUTY=1.23V + SoA /sec, SoA=3.33mV/deg/sec Table A.2: Gyroscope Calibration Values Bit Number Voltage deg/sec
41 32 APPENDIX B: TESTING/DATA COLLECTION ARDUINO PROGRAM #include <Wire.h> #define DEVICE (0x53) //ADXL345 device address #define TO_READ (6) //num of bytes we are going to read each time (two bytes for each axis) byte buff[to_read] ; //6 bytes buffer for saving data read from the device char str[512]; //string buffer to transform data before sending it to the serial port const int xpin = 0; // x-axis of the gyroscope const int ypin = 1; // y-axis of the gyroscope void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output //Turning on the ADXL345 writeto(device, 0x2D, 0); //reset power control register writeto(device, 0x2D, 16); //put in stanby mode writeto(device, 0x2D, 8); //put in measure mode writeto(device, 0x31, 0); //reset data format register writeto(device, 0x31, 11); //put in +=16g mode -->13bit resolution - -> 1 sign bit + 12 bit = max void loop() { int regaddress = 0x32; the ADXL345 int x, y, z, gx, gy; //first axis-acceleration-data register on readfrom(device, regaddress, TO_READ, buff); //read the acceleration data from the ADXL345 //each axis reading comes in 13 bit resolution, ie 2 bytes. Least Significat Byte first //thus we are converting both bytes in to one int x = (((int)buff[1]) << 8) buff[0]; y = (((int)buff[3])<< 8) buff[2]; z = (((int)buff[5]) << 8) buff[4]; //the gyro sensor values: gx=(int)(analogread(xpin)); gy=(int)(analogread(ypin)); //we send the x y z accel values and x y gyro values as a string to the serial port sprintf(str, "%d %d %d %d %d", x, y, z, gx, gy); Serial.print(str);
42 33 Serial.print(10, BYTE); //It appears that delay is needed in order not to clog the port delay(100); // Functions //Writes val to address register on device void writeto(int device, byte address, byte val) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); // send register address Wire.send(val); // send value to write Wire.endTransmission(); //end transmission //reads num bytes starting from address register on device in to buff array void readfrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); //sends address to read from Wire.endTransmission(); //end transmission Wire.beginTransmission(device); //start transmission to device Wire.requestFrom(device, num); // request 6 bytes from device int i = 0; while(wire.available()) //device may send less than requested (abnormal) { buff[i] = Wire.receive(); // receive a byte i++; Wire.endTransmission(); //end transmission
43 34 APPENDIX C: TESTING/DATA COLLECTION PC-SIDE PROCESSING PROGRAM ///import processing.opengl.*; import processing.serial.*; Serial sp; byte[] buff; //buff input String read from serial com port float[] r; PrintWriter output; //to output to text file int OFFSET_X = 0, OFFSET_Y = 0, OFFSET_Z=0, OFFSET_GX=0, OFFSET_GY=0; //These offsets are chip specific, and vary. void setup() { sp = new Serial(this, "COM8", 9600); //creating new serial communication port buff = new byte[128]; r = new float[5]; // Create a new file in the sketch directory output = createwriter("elevatordown.txt"); void draw() { int bytes = sp.readbytesuntil((byte)10, buff); //receiving the input String from the serial port String mystr = (new String(buff, 0, bytes)).trim(); if(mystr.split(" ").length!= 5) { println(mystr); return; setvals(r, mystr); //splitting the String back into individual sensor readings and changing the Strings back to floats float x = r[0], y = r[1], z = r[2], gx=r[3], gy=r[4]; println(x+ "\t" + y + "\t" + z + "\t" + gx + "\t" + gy); //printing to screen output.println(x+ "\t" + y + "\t" + z + "\t" + gx + "\t" + gy); //printing to text file void setvals(float[] r, String s) { int i = 0; r[0] = (float)(integer.parseint(s.substring(0, i = s.indexof(" "))) +OFFSET_X); r[1] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_Y); r[2] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_Z); r[3] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_GX); r[4] = (float)(integer.parseint(s.substring(i+1))+offset_gy); void keypressed() { output.flush(); // Writes the remaining data to the file output.close(); // Finishes the file exit(); // Stops the program
44 35 APPENDIX D: TESTING/DATA COLLECTION MATLAB DATA GRAPHING PROGRAM clear; clc; clf; sensordata=dlmread('c:\documents and Settings\Jonathan\My Documents\Processing\accel_gyro_to_textfile\binhstumblefrontal1.txt','\ t'); %definining text file path samplingperiod=0.1; %sampling period is 0.1s accelx=sensordata(1:length(sensordata),1:1); %acceleration x is 1st column of text file accely=sensordata(1:length(sensordata),2:2); %acceleration y is 2nd column of text file accelz=sensordata(1:length(sensordata),3:3); %acceleration z is 3rd column of text file gyrox=sensordata(1:length(sensordata),4:4); %angular velocity x is 4th column of text file gyroy=sensordata(1:length(sensordata),5:5); %angular velocity y is 5th column of text file time=0:samplingperiod:length(sensordata)*samplingperiod-samplingperiod; accelmag=zeros(length(sensordata),1); gyromag=zeros(length(sensordata),1); bx=5; by=5; bz=256; BM=((bx^2+by^2+bz^2)^0.5); %base/reference vector for i=1:length(sensordata) accelmag(i)=((accelx(i)^2+accely(i)^2+accelz(i)^2)^0.5); %calculating acceleration magnitude gyromag(i)=((gyrox(i)^2+gyroy(i)^2)^0.5); %calculating angular velocity magnitude anglechange2(i)=acos((accelx(i)*bx+accely(i)*by+accelz(i)*bz)/accelmag( i)/bm)*180/pi; %calculating angle change end figure(1) subplot(2,1,1) plot(time,accelmag/256); %divide by 256 to put y scale in g's title('acceleration Magnitude over Time'); xlabel('time (s)') ylabel(' Acceleration (g`s)') subplot(2,1,2) plot(time,gyromag); title('angular Velocity Magnitude over Time') xlabel('time (s)'); ylabel(' Angular Velocity ') figure(2) subplot(2,1,1) plot(time,gyrox); title('gx'); subplot(2,1,2) plot(time,gyroy); title('gy'); figure(3) plot (time,anglechange2); title('accelerometer Angle Change over Time') xlabel('time (s)'); ylabel('angle Change (degrees)')
45 36 APPENDIX E: ALGORITHM 1 ARDUINO PROGRAM #include <Wire.h> #define DEVICE (0x53) //ADXL345 device address #define TO_READ (6) //num of bytes we are going to read each time (two bytes for each axis) //#define STORE_SIZE (100) //num of past readings we are going to store (10 readings/sec * 10 sec = 100 readings) byte buff[to_read]; //6 bytes buffer for saving data read from the device char str[512]; //string buffer to transform data before sending it to the serial port const int bx=0; const int by=0; const int bz=256; //store reference upright acceleration int BM=pow(pow(bx,2)+pow(by,2)+pow(bz,2),0.5); const byte xpin = 0; // x-axis of the gyroscope const byte ypin = 1; // y-axis of the gyroscope //int data[store_size][5]; //array for saving past data //byte currentindex=0; //stores current data array index (0-255) boolean fall = false; //stores if a fall has occurred boolean trigger1=false; //stores if first trigger (lower threshold) has occurred boolean trigger2=false; //stores if second trigger (upper threshold) has occurred boolean trigger3=false; //stores if third trigger (orientation change) has occurred byte trigger1count=0; //stores the counts past since trigger 1 was set true byte trigger2count=0; //stores the counts past since trigger 2 was set true byte trigger3count=0; //stores the counts past since trigger 3 was set true void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output //Turning on the ADXL345 writeto(device, 0x2D, 0); //reset power control register writeto(device, 0x2D, 16); //put in stanby mode writeto(device, 0x2D, 8); //put in measure mode writeto(device, 0x31, 0); //reset data format register writeto(device, 0x31, 11); //put in +=16g mode -->13bit resolution - -> 1 sign bit + 12 bit = max void loop() { int regaddress = 0x32; //first axis-acceleration-data register on the ADXL345 int x, y, z, gx, gy; int AM; double anglechange=0;
46 37 readfrom(device, regaddress, TO_READ, buff); //read the acceleration data from the ADXL345 //each axis reading comes in 13 bit resolution, ie 2 bytes. Least Significat Byte first //thus we are converting both bytes in to one int x = (((int)buff[1]) << 8) buff[0]; y = (((int)buff[3])<< 8) buff[2]; z = (((int)buff[5]) << 8) buff[4]; //the gyro sensor values: gx=(int)(analogread(xpin)); //could be bytes? analogread returns an int (0-1023) gy=(int)(analogread(ypin)); //could be bytes? // data[currentindex][0]=x; // data[currentindex][1]=y; // data[currentindex][2]=z; // data[currentindex][3]=gx; // data[currentindex][4]=gy; //we send the x y z accel values and x y gyro values as a string to the serial port sprintf(str, "%d %d %d %d %d", x, y, z, gx, gy); Serial.print(str); Serial.print(10, BYTE); AM=pow(pow(x,2)+pow(y,2)+pow(z,2),0.5); if (trigger3==true){ trigger3count++; if (trigger3count>=10){ //*****100******//allow 10 s for user to regain normal orientation anglechange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*( double)bz)/(double)am/(double)bm); if (anglechange>=1.396 && anglechange<=1.745){ //if orientation changes remains between degrees fall=true; trigger3=false; trigger3count=0; Serial.println(angleChange); else{ //user regained normal orientation trigger3=false; trigger3count=0; Serial.println("TRIGGER 3 DEACTIVATED"); if (fall==true){ //in event of a fall detection Serial.println("FALL DETECTED"); fall=false; exit(1); if (trigger2count>=6){ //allow 0.5s for orientation change trigger2=false; trigger2count=0; Serial.println("TRIGGER 2 DECACTIVATED"); if (trigger1count>=6){ //allow 0.5s for AM to break upper threshold trigger1=false; trigger1count=0; Serial.println("TRIGGER 1 DECACTIVATED");
47 38 if (trigger2==true){ trigger2count++; anglechange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*( double)bz)/(double)am/(double)bm); if (anglechange>=1.396 && anglechange<=1.745){ //if orientation changes by between degrees trigger3=true; trigger2=false; trigger2count=0; Serial.println(angleChange); Serial.println("TRIGGER 3 ACTIVATED"); if (trigger1==true){ trigger1count++; if (AM>=768){ //if AM breaks upper threshold (3g) trigger2=true; Serial.println("TRIGGER 2 ACTIVATED"); trigger1=false; trigger1count=0; if (AM<=103){ //if AM breaks lower threshold (0.4g) trigger1=true; Serial.println("TRIGGER 1 ACTIVATED"); //currentindex++; // if (currentindex>=store_size){ // currentindex=0; //cycle back to start of data array (begin overwriting old data) // //It appears that delay is needed in order not to clog the port delay(100); // Functions //Writes val to address register on device void writeto(int device, byte address, byte val) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); // send register address Wire.send(val); // send value to write Wire.endTransmission(); //end transmission //reads num bytes starting from address register on device in to buff array void readfrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); //sends address to read from Wire.endTransmission(); //end transmission Wire.beginTransmission(device); //start transmission to device Wire.requestFrom(device, num); // request 6 bytes from device int i = 0; while(wire.available()){ //device may send less than requested (abnormal) buff[i] = Wire.receive(); // receive a byte i++; Wire.endTransmission(); //end transmission
48 39 APPENDIX F: ALGORITHM 3 ARDUINO PROGRAM #include <Wire.h> #define DEVICE (0x53) //ADXL345 device address #define TO_READ (6) //num of bytes we are going to read each time (two bytes for each axis) byte buff[to_read] ; //6 bytes buffer for saving data read from the device char str[512]; //string buffer to transform data before sending it to the serial port const int bx=0; const int by=0; const int bz=256; //store reference upright acceleration int BM=pow(pow(bx,2)+pow(by,2)+pow(bz,2),0.5); const byte xpin = 0; // x-axis of the gyroscope const byte ypin = 1; // y-axis of the gyroscope boolean fall = false; //stores if a fall has occurred boolean trigger1=false; //stores if first trigger (lower threshold) has occurred boolean trigger2=false; //stores if second trigger (upper threshold) has occurred byte trigger1count=0; //stores the counts past since trigger 1 was set true void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output //Turning on the ADXL345 writeto(device, 0x2D, 0); //reset power control register writeto(device, 0x2D, 16); //put in stanby mode writeto(device, 0x2D, 8); //put in measure mode writeto(device, 0x31, 0); //reset data format register writeto(device, 0x31, 11); //put in +=16g mode -->13bit resolution - -> 1 sign bit + 12 bit = max void loop() { int regaddress = 0x32; //first axis-acceleration-data register on the ADXL345 int x, y, z, gx, gy; int AM; double anglechange=0; readfrom(device, regaddress, TO_READ, buff); //read the acceleration data from the ADXL345 //each axis reading comes in 13 bit resolution, ie 2 bytes. Least Significat Byte first //thus we are converting both bytes in to one int x = (((int)buff[1]) << 8) buff[0]; y = (((int)buff[3])<< 8) buff[2]; z = (((int)buff[5]) << 8) buff[4];
49 40 //the gyro sensor values: gx=(int)(analogread(xpin)); //could be bytes? analogread returns an int (0-1023) gy=(int)(analogread(ypin)); //could be bytes? //we send the x y z accel values and x y gyro values as a string to the serial port sprintf(str, "%d %d %d %d %d", x, y, z, gx, gy); Serial.print(str); Serial.print(10, BYTE); AM=pow(pow(x,2)+pow(y,2)+pow(z,2),0.5); if (trigger2==true){ anglechange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*( double)bz)/(double)am/(double)bm); if (anglechange>=1.396 && anglechange<=1.745){ //if orientation change is between degrees fall=true; trigger2=false; Serial.println(angleChange); else{ //user regained normal orientation trigger2=false; Serial.println("TRIGGER 2 DEACTIVATED"); if (fall==true){ //in event of a fall detection Serial.println("FALL DETECTED"); fall=false; exit(1); if (trigger1count>=201){ //allow 20s for AM to return to relatively normal range trigger1=false; trigger1count=0; Serial.println("TRIGGER 1 DECACTIVATED"); if (trigger1==true){ trigger1count++; if (AM>=250 && AM<=260){ //if AM has returned to a relatively normal range (0.9768g g) trigger2=true; trigger1=false; trigger1count=0; Serial.println("TRIGGER 2 ACTIVATED"); if (AM>=768){ //if AM breaks upper threshold (3g) trigger1=true; Serial.println("TRIGGER 1 ACTIVATED"); //It appears that delay is needed in order not to clog the port delay(100); // Functions
50 41 //Writes val to address register on device void writeto(int device, byte address, byte val) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); // send register address Wire.send(val); // send value to write Wire.endTransmission(); //end transmission //reads num bytes starting from address register on device in to buff array void readfrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); //sends address to read from Wire.endTransmission(); //end transmission Wire.beginTransmission(device); //start transmission to device Wire.requestFrom(device, num); // request 6 bytes from device int i = 0; while(wire.available()){ //device may send less than requested (abnormal) buff[i] = Wire.receive(); // receive a byte i++; Wire.endTransmission(); //end transmission
51 42 APPENDIX G: FINAL PROTOTYPE ARDUINO PROGRAM #include <Wire.h> #define DEVICE (0x53) //ADXL345 device address #define TO_READ (6) //num of bytes we are going to read each time (two bytes for each axis) byte buff[to_read] ; //6 bytes buffer for saving data read from the device char str[512]; //string buffer to transform data before sending it to the serial port int bx=0; //default reference upright x acceleration int by=256; //default reference upright y acceleration int bz=0; //default reference upright z acceleration int BM=pow(pow(bx,2)+pow(by,2)+pow(bz,2),0.5); const byte xpin = 0; // x-axis of the gyroscope const byte ypin = 1; // y-axis of the gyroscope boolean fallconfirmed = false; //stores if a fall has occurred and user not responding boolean trigger1=false; //stores if first trigger (lower threshold) has occurred boolean trigger2=false; //stores if second trigger (upper threshold) has occurred boolean refset=false; //stores if the reference vector has been set boolean potentialfall=false; //stores if a potential fall has occurred boolean cancel=false; //stores whether a potential fall has been cancelled boolean abnormaltilt=false; //stores whether abnormal tilt was detected int potentialfallcount=0; //stores the counts past a potential fall byte trigger1count=0; //stores the counts past since trigger 1 was set true const int redbutton = 12; // the pin that the red pushbutton is attached to const int greenbutton = 13; // the pin that the green pushbutton is attached to const int redled = 2; // the pin that the red LED is attached to const int greenled = 3; // the pin that the green LED is attached to const int siren=11; // the pin that the siren is attached to const int buzzer=10; // the pin that the buzzer is attached to //int buttonpushcounter = 0; // counter for the number of button presses int redbuttonstate = 0; // current state of the red button int lastredbuttonstate = 0; // previous state of the red button int greenbuttonstate = 0; // current state of the green button int lastgreenbuttonstate = 0; // previous state of the green button int lastalertstate=0; //previous state of alert peripherals (LEDs, siren, buzzer) // the following variables are long's because the time, measured in miliseconds, // will quickly become a bigger number than can be stored in an int. long lastreddebouncetime = 0; // the last time the red button was toggled
52 43 long lastgreendebouncetime = 0; // the last time the green button was toggled long debouncedelay = 50; // the debounce time; increase if the output flickers void setup() { // initialize the button pins as inputs: pinmode(redbutton, INPUT); pinmode(greenbutton, INPUT); // initialize the LEDs, buzzer, and siren as outputs: pinmode(redled, OUTPUT); pinmode(greenled, OUTPUT); pinmode(buzzer, OUTPUT); pinmode(siren, OUTPUT); // initialize serial communication: Wire.begin(); // join i2c bus (address optional for master) Serial.begin(115200); // start serial for output //Turning on the ADXL345 writeto(device, 0x2D, 0); //reset power control register writeto(device, 0x2D, 16); //put in stanby mode writeto(device, 0x2D, 8); //put in measure mode writeto(device, 0x31, 0); //reset data format register writeto(device, 0x31, 11); //put in +=16g mode -->13bit resolution - -> 1 sign bit + 12 bit = max void loop() { int regaddress = 0x32; //first axis-acceleration-data register on the ADXL345 int x=0, y=0, z=0, gx=0, gy=0; int AM; double anglechange=0; readfrom(device, regaddress, TO_READ, buff); //read the acceleration data from the ADXL345 //each axis reading comes in 13 bit resolution, ie 2 bytes. Least Significat Byte first //thus we are converting both bytes in to one int x = (((int)buff[1]) << 8) buff[0]; y = (((int)buff[3])<< 8) buff[2]; z = (((int)buff[5]) << 8) buff[4]; //the gyro sensor values: gx=(int)(analogread(xpin)); //could be bytes? analogread returns an int (0-1023) gy=(int)(analogread(ypin)); //could be bytes? // read the state of the buttons into a local variable: int redreading = digitalread(redbutton); int greenreading = digitalread(greenbutton); // check to see if you just pressed either button
53 44 // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (redreading!= lastredbuttonstate) { // reset the debouncing timer lastreddebouncetime = millis(); if (greenreading!= lastgreenbuttonstate) { // reset the debouncing timer lastgreendebouncetime = millis(); if ((millis() - lastreddebouncetime) >= debouncedelay) { // whatever the redreading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: redbuttonstate = redreading; Serial.print('R'); Serial.print(10, BYTE); potentialfall=true; if ((millis() - lastgreendebouncetime) >= debouncedelay) { // whatever the redreading is at, it's been there for longer // than the debounce delay, so take it as the actual current state: greenbuttonstate = greenreading; Serial.print('G'); Serial.print(10, BYTE); if (refset==false){ bx=x; by=y; bz=z; refset=true; Serial.print('S'); Serial.print(10, BYTE); if (potentialfall==true fallconfirmed==true) { //if green button pushed during a fall alert, alert is cancelled cancel=true; // save the Reading. Next time through the loop, // it'll be the lastbuttonstate: lastredbuttonstate = redreading; lastgreenbuttonstate = greenreading; if(cancel==true) //if user cancels alert, turn off alert peripherals { Serial.print('C'); Serial.print(10, BYTE); potentialfall=false; fallconfirmed=false; lastalertstate=0; potentialfallcount=0; digitalwrite(redled, LOW); digitalwrite(greenled, LOW); digitalwrite(buzzer, LOW); digitalwrite(siren, LOW); cancel=false;
54 45 if (fallconfirmed==true){ //fall is confirmed digitalwrite(greenled, LOW); //turn off greenled to save power digitalwrite(buzzer, LOW); //turn off buzzer to save power digitalwrite(redled, HIGH); //redled blinks by itself if (potentialfallcount % 5 == 0){ //every 0.5 second, cycle alert peripherals if (lastalertstate==0){ digitalwrite(siren, HIGH); lastalertstate=1; else{ digitalwrite(siren, LOW); lastalertstate=0; potentialfallcount++; if (potentialfall==true){ //in event of a fall detection, allow 20s for user to cancel fall alert if (potentialfallcount>=201){ //user has not responded after 20s fallconfirmed=true; Serial.print('F'); Serial.print(10, BYTE); potentialfall=false; potentialfallcount=0; else if (potentialfallcount % 10 == 0){ //user has not responded yet digitalwrite(redled, HIGH); //redled blinks itself digitalwrite(greenled, HIGH);//greenLed blinks itself if (lastalertstate==0){ //every 1 second, cycle alert peripherals digitalwrite(buzzer, HIGH); digitalwrite(siren, HIGH); lastalertstate=1; else{ digitalwrite(buzzer, LOW); digitalwrite(siren, LOW); lastalertstate=0; potentialfallcount++; //we send the x y z accel values and x y gyro values as a string to the serial port sprintf(str, "%d %d %d %d %d", x, y, z, gx, gy); Serial.print(str); Serial.print(10, BYTE); AM=pow(pow(x,2)+pow(y,2)+pow(z,2),0.5); if (AM>=250 && AM<=260 && potentialfall==false){ //if AM is in a relatively normal range (0.9768g g) ****CHANGE THIS? x2*****
55 46 anglechange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*( double)bz)/(double)am/(double)bm); //check for abnormal posture/tilt if (anglechange>=0.524 && anglechange<=1.05){ //if orientation change is between degrees abnormaltilt=true; Serial.print('T'); Serial.print(10, BYTE); else{ //user has normal orientation if(abnormaltilt==true){ abnormaltilt=false; Serial.print('N'); Serial.print(10, BYTE); if (trigger2==true){ anglechange=acos(((double)x*(double)bx+(double)y*(double)by+(double)z*( double)bz)/(double)am/(double)bm); if (anglechange>=1.396 && anglechange<=1.745){ //if orientation change is between degrees potentialfall=true; Serial.print('P'); Serial.print(10, BYTE); trigger2=false; else{ //user regained normal orientation trigger2=false; Serial.print("E"); //trigger 2 deactivated Serial.print(10, BYTE); if (trigger1count>=201){ //allow 20s for AM to return to relatively normal range trigger1=false; trigger1count=0; Serial.print("B"); //trigger 1 deactivated Serial.print(10, BYTE); if (trigger1==true){ trigger1count++; if (AM>=250 && AM<=260){ //if AM has returned to a relatively normal range (0.9768g g) ****CHANGE THIS? x2***** trigger2=true; trigger1=false; trigger1count=0; Serial.print("D"); //trigger 2 activated Serial.print(10, BYTE); if (AM>=640){ //if AM breaks upper threshold (2.5g /16*4095=640) trigger1=true; Serial.print("A"); //trigger 1 activated Serial.print(10, BYTE);
56 47 //It appears that delay is needed in order not to clog the port delay(100); // Functions //Writes val to address register on device void writeto(int device, byte address, byte val) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); // send register address Wire.send(val); // send value to write Wire.endTransmission(); //end transmission //reads num bytes starting from address register on device in to buff array void readfrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); //start transmission to device Wire.send(address); //sends address to read from Wire.endTransmission(); //end transmission Wire.beginTransmission(device); //start transmission to device Wire.requestFrom(device, num); // request 6 bytes from device int i = 0; while(wire.available()){ //device may send less than requested (abnormal) buff[i] = Wire.receive(); // receive a byte i++; Wire.endTransmission(); //end transmission
57 48 APPENDIX H: FINAL PROTOTYPE PC-SIDE PROCESSING PROGRAM import processing.serial.*; Serial sp; char val=0; color currentcolor; color basecolor; byte[] buff; //buff to hold serial input float[] r; //holds individual sensor readings PrintWriter output; //output file int OFFSET_X = 0, OFFSET_Y = 0, OFFSET_Z=0, OFFSET_GX=0, OFFSET_GY=0; //These offsets are chip specific, and vary. Play with them PFont font; boolean gbutton=false; //holds whether green button pressed boolean rbutton=false;//holds whether red button pressed boolean setref=false;//holds whether reference vectors are set boolean potentialfall=false; //holds whether potential fall detected boolean fallconfirmed=false; //holds whether a fall is confirmed boolean cancel=false; //holds whether potential/confirmed fall is cancelled boolean abtilt=false; //holds whether abnormal tilt was detected boolean normtilt=false; //holds whether normal tilt was regained after abnormal tilt boolean trig1act=false; //holds whether trigger 1 was activated boolean trig1deact=false; //holds whether trigger 1 was deactivated after it was activated boolean trig2act=false; //holds whether trigger 2 was activated boolean trig2deact=false; //holds whether trigger 2 was deactivated after it was activated float x = 0, y = 0, z = 0, gx=0, gy=0; //holds sensor values int xpos = 1; //holds plot x position void setup() { //set up window size(1400, 800); basecolor = color(255, 255, 255);//white currentcolor = basecolor; buff = new byte[128]; r = new float[5]; // Set the font and its size (in units of pixels) font = loadfont("timesnewromanps-boldmt-48.vlw"); textfont(font, 50); textalign(center); output = createwriter("test.txt"); sp = new Serial(this, "COM9", ); //COM10 bluetooth command mode, COM9 bluetooth send/receive void draw() { int bytes = sp.readbytesuntil((byte)10, buff); String mystr = (new String(buff, 0, bytes)).trim();
58 if(setref==false){ //device just turned on, reference vector not set yet showrefnotset(); float AM=pow(pow(x,2)+pow(y,2)+pow(z,2),0.5); AM = map(am, 0, 700, 0, height/2); stroke(127,34,255); line(xpos, height, xpos, height - AM); if (xpos >= width) { xpos = 0; background(basecolor); if(xpos<width) { // increment the horizontal position: xpos++; if(mystr.split(" ").length == 5) { //receiving sensor data setvals(r, mystr); x = r[0]; y = r[1]; z = r[2]; gx=r[3]; gy=r[4]; println(x+ "\t" + y + "\t" + z + "\t" + gx + "\t" + gy); output.println(x+ "\t" + y + "\t" + z + "\t" + gx + "\t" + gy); else{ //receiving one of 12 single letter commands (G,R,S,P,F,C,T,N,A,B,D,E) println(mystr); if (mystr.equals("g")) { //green button pressed else if (mystr.equals("r")) {//red button pressed potentialfall=true; showpotentialfall(); else if (mystr.equals("s")) {//reference vectors set setref=true; showsetref(); else if (mystr.equals("p")) {//potential fall detected potentialfall=true; showpotentialfall(); else if (mystr.equals("f")) {//fall confirmed potentialfall=false; fallconfirmed=true; showconfirmedfall(); else if (mystr.equals("c")) {//potential/confirmed fall cancelled if(potentialfall=true){//cancel potential fall potentialfall=false; showpotentialfallcancel(); if(fallconfirmed=true){//cancel confirmed fall fallconfirmed=false; showconfirmedfallcancel(); 49
59 50 else if (mystr.equals("a")) {//trigger 1 activated trig1act=true; trig1deact=false; showtrig1act(); else if (mystr.equals("b")) {//trigger 1 deactivated trig1act=false; trig1deact=true; showtrig1deact(); else if (mystr.equals("d")) {//trigger 2 activated trig2act=true; trig2deact=false; showtrig2act(); else if (mystr.equals("e")) {//trigger 2 deactivated trig2act=false; trig2deact=true; showtrig2deact(); else if (mystr.equals("n")) {//normal tilt regained abtilt=false; normtilt=true; shownormtilt(); else if (mystr.equals("n")) {//normal tilt regained abtilt=false; normtilt=true; shownormtilt(); mystr=""; void setvals(float[] r, String s) { int i = 0; r[0] = (float)(integer.parseint(s.substring(0, i = s.indexof(" "))) +OFFSET_X); r[1] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_Y); r[2] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_Z); r[3] = (float)(integer.parseint(s.substring(i+1, i = s.indexof(" ", i+1))) + OFFSET_GX); r[4] = (float)(integer.parseint(s.substring(i+1))+offset_gy); void showrefnotset(){ background(basecolor); // Use fill() to change the value or color of the text fill(0,0,0);//black String s = "Device Uncalibrated."; text(s, 700, 350); String s2 = "Please attach device and press the GREEN button."; text(s2, 700, 450); void showsetref(){ background(currentcolor);
60 51 // Use fill() to change the value or color of the text fill(0,0,0);//black String s = "Device Calibrated. Thank you."; text(s, 700, 400); void showpotentialfallcancel(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,255,0);//green String s = "Potential Fall Cancelled."; text(s, 700, 400); void showpotentialfall(){ background(currentcolor); // Use fill() to change the value or color of the text fill(255,0,0);//red String s = "POTENTIAL FALL DETECTED."; text(s, 700, 400); void showconfirmedfallcancel(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,255,0);//green String s = "Confirmed Fall Cancelled."; text(s, 700, 400); void showconfirmedfall(){ background(255,0,0);//red // Use fill() to change the value or color of the text fill(255,255,255);//white String s = "FALL CONFIRMED. ALERT EMERGENCY CONTACTS."; text(s, 700, 400); void showabtilt(){ background(currentcolor); // Use fill() to change the value or color of the text fill(255,0,0);//red String s = "Abnormal Tilt Detected. Please correct posture."; text(s, 700, 400); void shownormtilt(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,255,0);//green String s = "Normal Tilt Restored."; text(s, 700, 400); void showtrig1act(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,0,0);//black String s = "Trigger 1 Activated."; text(s, 700, 400); void showtrig1deact(){ background(currentcolor); // Use fill() to change the value or color of the text
61 52 fill(0,255,0);//black String s = "Trigger 1 Deactivated."; text(s, 700, 400); void showtrig2act(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,0,0);//black String s = "Trigger 2 Activated."; text(s, 700, 400); void showtrig2deact(){ background(currentcolor); // Use fill() to change the value or color of the text fill(0,0,0);//black String s = "Trigger 2 Deactivated."; text(s, 700, 400); void keypressed() { output.flush(); // Writes the remaining data to the file output.close(); // Finishes the file exit(); // Stops the program
62 53 REFERENCES [1] M. Tinetti and M. Speechley, Prevention of falls among the elderly, N Engl J Med, vol. 320, no. 16, pp , [2] C. E. Coogler, Falls and imbalance, Rehab Management, pp. 53, April/May [3] K. M. Pocinki, Studies aim at reducing risk of falls, P. T. Bulletin, pp. 13, Feb [4] American Academy of Orthopaedic Surgeons, Don t let a fall be your last trip: Who is at risk?, Your Orthopaedic Connection, AAOS, July [Online]. Available: [Accessed: Sept. 20, 2009]. [5] ilife TM fall detection sensor, AlertOne Services, Inc., [Online]. Available: [Accessed: Sept. 19, 2009]. [6] myhalo TM, Halo Monitoring, Inc., [Online]. Available: [Accessed: Sept. 19, 2009]. [7] Life Alert Classic, Life Alert Emergency Response, Inc., [Online]. Available: [Accessed: Sept. 20, 2009]. [8] M. Luštrek and V. Kaluža, Fall detection and activity recognition with machine learning, Informatica, vol. 33, pp , [9] A. K. Bourke and G. M. Lyons, A threshold-based fall-detection algorithm using a bi-axial gyroscope sensor, Medical Engineering and Physics, vol. 30, no. 1, pp , [10] M. Kangas, A. Konttila, P. Lindgren, I. Winblad and T. Jämsä, Comparison of low-complexity fall detection algorithms for body attached accelerometers, Gait Posture, vol. 28, no. 2, pp , Aug [11] P. Chao, H. Chan, F. Tang, Y. Chen and M. Wong, A comparison of automatic fall detection by the cross-product and magnitude of tri-axial acceleration, Physiol. Meas., vol. 30, no. 10, pp , [12] A. K. Bourke, C. N. Scanaill, K. M. Culhane, J. V. O'Brien and G. M. Lyons, An optimum accelerometer configuration and simple algorithm for accurately detecting falls, Presented at 24th IASTED International Conference on Biomedical Engineering, 2006.
63 54 [13] G. Brown, An accelerometer based fall detector: development, experimentation, and analysis, University of California, Berkeley, [14] T. Zhang, J. Wang, P. Liu and J. Hou, Fall detection by embedding an accelerometer in cellphone and using KFD algorithm, IJCSNS, vol. 6, pp , Oct [15] F. Sposaro, G. Tyson, ifall: An Android Application for Fall Monitoring and Response, Presented at 31st Annual International Conference of the IEEE EMBS, [16] J. Chen, K. Kwong, D. Chang, J. Luk, and R. Bajcsy, Wearable Sensors for Reliable Fall Detection, Presented at 27th IEEE Engineering in Medicine and Biology Annual Conference, 2005.
64 55 VITAE NAME: Jonathan Tomkun PLACE OF BIRTH: Waterloo, Ontario YEAR OF BIRTH: 1989 SECONDARY EDUCATION: St. John s Kilmarnock School HONOURS and AWARDS: Honour Roll/Ontario Scholar Canada Wide Science Fair Bronze Medal 2006 Canadian Association of Physicists Senior Physics Prize 2006 McMaster Honour Award, Level Dean s Honour List University Senate Scholarship Electrical Engineering 4BI6 Biomedical Capstone Design Project Second Place 2010
Design and Implementation of an Accidental Fall Detection System for Elderly
Design and Implementation of an Accidental Fall Detection System for Elderly Enku Yosef Kefyalew 1, Abubakr Rahmtalla Abdalla Mohamed 2 Department of Electronic Engineering, Tianjin University of Technology
Surveillance System Using Wireless Sensor Networks
Surveillance System Using Wireless Sensor Networks Dan Nguyen, Leo Chang Computer Engineering, Santa Clara University Santa Clara, California, USA [email protected] [email protected] Abstract The
Application Note IMU Visualization Software
ECE 480 Spring 2013 Team 8 Application Note IMU Visualization Software Name: Alex Mazzoni Date: 04/04/2013 Facilitator: Dr. Aviyente Abstract This application note covers how to use open source software
Firmware version: 1.10 Issue: 7 AUTODIALER GD30.2. Instruction Manual
Firmware version: 1.10 Issue: 7 AUTODIALER GD30.2 Instruction Manual Firmware version: 2.0.1 Issue: 0.6 Version of the GPRS transmitters configurator: 1.3.6.3 Date of issue: 07.03.2012 TABLE OF CONTENTS
Hand Gestures Remote Controlled Robotic Arm
Advance in Electronic and Electric Engineering. ISSN 2231-1297, Volume 3, Number 5 (2013), pp. 601-606 Research India Publications http://www.ripublication.com/aeee.htm Hand Gestures Remote Controlled
Android based Alcohol detection system using Bluetooth technology
For more Project details visit: http://www.projectsof8051.com/android-based-alcohol-detection-system-usingbluetooth-technology/ Code 1435 Project Title Android based Alcohol detection system using Bluetooth
Frequently Asked Questions (FAQs)
Frequently Asked Questions (FAQs) OS5000 & OS4000 Family of Compasses FAQ Document Rev. 2.0 Important Notes: Please also reference the OS5000 family user guide & OS4000 user guide on our download page.
User Guide Reflow Toaster Oven Controller
User Guide Reflow Toaster Oven Controller Version 1.5-01/10/12 DROTEK Web shop: www.drotek.fr SOMMAIRE 1. Introduction... 3 2. Preparation of THE REFLOW CONTROLLER... 4 2.1. Power supply... 4 2.2. USB
Monitoring Software using Sun Spots. Corey Andalora February 19, 2008
Monitoring Software using Sun Spots Corey Andalora February 19, 2008 Abstract Sun has developed small devices named Spots designed to provide developers familiar with the Java programming language a platform
FRC WPI Robotics Library Overview
FRC WPI Robotics Library Overview Contents 1.1 Introduction 1.2 RobotDrive 1.3 Sensors 1.4 Actuators 1.5 I/O 1.6 Driver Station 1.7 Compressor 1.8 Camera 1.9 Utilities 1.10 Conclusion Introduction In this
Intelligent Home Automation and Security System
Intelligent Home Automation and Security System Ms. Radhamani N Department of Electronics and communication, VVIET, Mysore, India ABSTRACT: In todays scenario safer home security is required, As the technology
An internal gyroscope minimizes the influence of dynamic linear acceleration on slope sensor readings.
TECHNICAL DATASHEET #TDAX06070X Triaxial Inclinometer with Gyro ±180⁰ Pitch/Roll Angle Pitch Angle Rate Acceleration SAE J1939, Analog Output or RS-232 Options 2 M12 Connectors, IP67 with Electronic Assistant
ER-1 Emergency Response System INSTALLATION & PROGRAMMING GUIDE
Emergency Response System INSTALLATION & PROGRAMMING GUIDE Copyright micron 2005 Contents Product Description 3 Console Operation Overview 4 Console Wiring Diagram 5 User Manual 6 Transmitter Assembly
T-SERIES INDUSTRIAL INCLINOMETER ANALOG INTERFACE
T-SERIES INDUSTRIAL INCLINOMETER ANALOG INTERFACE T-Series industrial inclinometers are compact high performance sensors used to determine inclination in roll and pitch axes with excellent precision and
EEL 4924 Electrical Engineering Design (Senior Design) Final Report. 19 April 2011. Name: Brandon Kalarovich
EEL 4924 Electrical Engineering Design (Senior Design) Final Report 19 April 2011 Project Name: Digital Dashboard Team Name: Uncensored Sensors Team Members: Name: Matthew Greenberg Email: [email protected]
Overview. 1. GPS data tracking via GSM SMS / GPRS. 2. GPS data logging in internal memory. 3. Alarm alert via GSM SMS / Dialing / GPRS
Vehicle or Personal Position Tracking Vehicle Status and Speed Tracking Auto Accident Report Global Position System (GPS) Navigation System Anti theft Alarm System Overview 1. GPS data tracking via GSM
Sensors & Transducers 2015 by IFSA Publishing, S. L. http://www.sensorsportal.com
Sensors & Transducers 2015 by IFSA Publishing, S. L. http://www.sensorsportal.com Affordable Remote Health Monitoring System for the Elderly Using Smart Mobile Device Matthew CLARK, Jongil LIM, Girma TEWOLDE,
Detecting Human Falls with a 3-Axis Digital Accelerometer
Detecting Human Falls with a 3-Axis Digital Accelerometer By Ning Jia Foreword For a human, experiencing a fall unobserved can be doubly dangerous. The obvious possibility of initial injury may be further
Automatic Telephone Dialer TD-101(W)
Automatic Telephone Dialer TD-101(W) The TD-101 is an automatic dialing device which can transmit prerecorded information via the telephone line. The dialer can send two different 10 second voice messages
Embedded Systems Design Course Applying the mbed microcontroller
Embedded Systems Design Course Applying the mbed microcontroller Serial communications with SPI These course notes are written by R.Toulson (Anglia Ruskin University) and T.Wilmshurst (University of Derby).
A 5 Degree Feedback Control Robotic Arm (Haptic Arm)
A 5 Degree Feedback Control Robotic Arm (Haptic Arm) 1 Prof. Sheetal Nirve, 2 Mr.Abhilash Patil, 3 Mr.Shailesh Patil, 4 Mr.Vishal Raut Abstract: Haptics is the science of applying touch sensation and control
2.0 Command and Data Handling Subsystem
2.0 Command and Data Handling Subsystem The Command and Data Handling Subsystem is the brain of the whole autonomous CubeSat. The C&DH system consists of an Onboard Computer, OBC, which controls the operation
DESIGN OF SMS ENABLED CAR SECURITY SYSTEM
DESIGN OF SMS ENABLED CAR SECURITY SYSTEM K. A. Amusa Federal University of Agriculture, Abeokuta, O. O. Nuga Federal University of Agriculture, Abeokuta, A. A. Adetomi Federal University of Agriculture,
A smartphone based real-time daily activity monitoring system. Shumei Zhang Paul McCullagh Jing Zhang Tiezhong Yu
A smartphone based real-time daily activity monitoring system Shumei Zhang Paul McCullagh Jing Zhang Tiezhong Yu Outline Contribution Background Methodology Experiments Contribution This paper proposes
Servo Info and Centering
Info and Centering A servo is a mechanical motorized device that can be instructed to move the output shaft attached to a servo wheel or arm to a specified position. Inside the servo box is a DC motor
SE05: Getting Started with Cognex DataMan Bar Code Readers - Hands On Lab Werner Solution Expo April 8 & 9
SE05: Getting Started with Cognex DataMan Bar Code Readers - Hands On Lab Werner Solution Expo April 8 & 9 Learning Goals: At the end of this lab, the student should have basic familiarity with the DataMan
Flight Controller. Mini Fun Fly
Flight Controller Mini Fun Fly Create by AbuseMarK 0 Mini FunFly Flight Controller Naze ( Introduction 6x6mm. 6 grams (no headers, 8 grams with). 000 degrees/second -axis MEMS gyro. auto-level capable
USER MANUAL V5.0 ST100
GPS Vehicle Tracker USER MANUAL V5.0 ST100 Updated on 15 September 2009-1 - Contents 1 Product Overview 3 2 For Your Safety 3 3 ST100 Parameters 3 4 Getting Started 4 4.1 Hardware and Accessories 4 4.2
Android Controlled Based Interface
Android Controlled Based Interface Objective Fix Foba Build Rofi (Fifth Generation Robot) Develop, Build, and Implement a Dynamic Balanced Biped Robot Table of Contents Objective... 1 Android Controlled
Open Architecture Design for GPS Applications Yves Théroux, BAE Systems Canada
Open Architecture Design for GPS Applications Yves Théroux, BAE Systems Canada BIOGRAPHY Yves Théroux, a Project Engineer with BAE Systems Canada (BSC) has eight years of experience in the design, qualification,
Design And Implementation Of Bank Locker Security System Based On Fingerprint Sensing Circuit And RFID Reader
Design And Implementation Of Bank Locker Security System Based On Sensing Circuit And RFID Reader Khaing Mar Htwe, Zaw Min Min Htun, Hla Myo Tun Abstract: The main goal of this system is to design a locker
DKWF121 WF121-A 802.11 B/G/N MODULE EVALUATION BOARD
DKWF121 WF121-A 802.11 B/G/N MODULE EVALUATION BOARD PRELIMINARY DATA SHEET Wednesday, 16 May 2012 Version 0.5 Copyright 2000-2012 Bluegiga Technologies All rights reserved. Bluegiga Technologies assumes
TI ARM Lab 7 Accelerometers
TI ARM Lab 7 Accelerometers National Science Foundation Funded in part, by a grant from the National Science Foundation DUE 1068182 Acknowledgements Developed by Craig Kief, Brian Zufelt, and Jacy Bitsoie
Implementation of Knock Based Security System
Implementation of Knock Based Security System Gunjan Jewani Student, Department of Computer science & Engineering, Nagpur Institute of Technology, Nagpur, India ABSTRACT: Security is one of the most critical
Final Design Report 19 April 2011. Project Name: utouch
EEL 4924 Electrical Engineering Design (Senior Design) Final Design Report 19 April 2011 Project Name: utouch Team Members: Name: Issam Bouter Name: Constantine Metropulos Email: [email protected] Email:
ENGINEERING SPECIFICATIONS SENSAPHONE IMS-4000
ENGINEERING SPECIFICATIONS SENSAPHONE IMS-4000 I. General A. Summary The monitoring system shall be an expandable, self-contained microprocessor-controlled IMS-4000 Host unit (hereafter referred to as
IDD-213T User Manual. (Rev. 1.0) China Aerospace Telecommunications Limited
(Rev. 1.0) China Aerospace Telecommunications Limited Contents 1. Introduction......3 2. Specifications...4 2.1 External Interface... 4 2.2 Status Indicator...... 5 2.3 Technical Parameters... 6 3. Device
Report of Research Results
Report of Research Results Scaling and Deployment of e-guardian to Eldercare Centers and Single Elderly Homes Primary Researcher: Prof. Tan Kok Kiong, Department of Electrical and Computer Engineering
MODELS 7007 Gorilla Cycle Alarm 7017 Gorilla Cycle Alarm with 2-way pager system 1017 2-way pager system
MODELS 7007 Gorilla Cycle Alarm 7017 Gorilla Cycle Alarm with 2-way pager system 1017 2-way pager system Remote Control Motorcycle Alarm System Installation & Operation Instructions Sistema de Alarma de
TX GSM SMS Auto-dial Alarm System. Installation and User Manual
TX GSM SMS Auto-dial Alarm System Installation and User Manual Product Features: 1. 16 wireless zones, 3 wired zones alarm system, suitable for small to medium size offices and homes. 2. The system uses
The SA601: The First System-On-Chip for Guitar Effects By Thomas Irrgang, Analog Devices, Inc. & Roger K. Smith, Source Audio LLC
The SA601: The First System-On-Chip for Guitar Effects By Thomas Irrgang, Analog Devices, Inc. & Roger K. Smith, Source Audio LLC Introduction The SA601 is a mixed signal device fabricated in 0.18u CMOS.
Controlling a Dot Matrix LED Display with a Microcontroller
Controlling a Dot Matrix LED Display with a Microcontroller By Matt Stabile and programming will be explained in general terms as well to allow for adaptation to any comparable microcontroller or LED matrix.
Hardware and Logic Implementation of Multiple Alarm System for GSM BTS Rooms
Hardware and Logic Implementation of Multiple Alarm System for GSM BTS Rooms Arifa Ferdousi 1 and Sadeque Reza Khan 2 1 Dept. of Computer Science and Engineering, Varendra University, Rajshahi, Bangladesh
A MOTION ACTIVITY MONITOR MONITOR POHYBOVÉ AKTIVITY
A MOTION ACTIVITY MONITOR MONITOR POHYBOVÉ AKTIVITY Josef Marek, Ladislav Štěpánek 1 Summary: The paper deals with motion and vital activity monitoring of person in the case of dangerous environment (rescue
WIFI OBD GPS Tracker T356 User Manual
WIFI OBD GPS Tracker T356 User Manual Version:1.000 http://www.ulbotech.com [email protected] Document Title T356 User Manual Version 1.000 Date 2015-04-02 Status Release General Notes Ulbotech offers this
User Manual GSM Alarm System. www.deltasecurity.cn. All rights reserved by Delta Security Co., Ltd
User Manual GSM Alarm System All rights reserved by Delta Security Co., Ltd Dear Clients, Thank you for using our GSM Alarm System. We are committed to giving you the best home security available today
5-Axis Test-Piece Influence of Machining Position
5-Axis Test-Piece Influence of Machining Position Michael Gebhardt, Wolfgang Knapp, Konrad Wegener Institute of Machine Tools and Manufacturing (IWF), Swiss Federal Institute of Technology (ETH), Zurich,
An Introduction to MPLAB Integrated Development Environment
An Introduction to MPLAB Integrated Development Environment 2004 Microchip Technology Incorporated An introduction to MPLAB Integrated Development Environment Slide 1 This seminar is an introduction to
Keys to understanding your alarm system
Keys to understanding your alarm system This section is designed to allow you to familiarize yourself with most of the security system devices that may be installed or proposed to be installed in your
Tutorial for MPLAB Starter Kit for PIC18F
Tutorial for MPLAB Starter Kit for PIC18F 2006 Microchip Technology Incorporated. All Rights Reserved. WebSeminar Title Slide 1 Welcome to the tutorial for the MPLAB Starter Kit for PIC18F. My name is
Current Monitoring Kit
Current Monitoring Kit QUICK START GUIDE DO090-6 CONTENTS Issues: 1) 2.10.02 WP A4 format 2) 2.10.02 Added safety warning 3) 17.3.06 Word A5 format. S1: Removed relay modules. S2: Added MI010. S4.1: added
PHYS 2P32 Project: MIDI for Arduino/ 8 Note Keyboard
PHYS 2P32 Project: MIDI for Arduino/ 8 Note Keyboard University April 13, 2016 About Arduino: The Board Variety of models of Arduino Board (I am using Arduino Uno) Microcontroller constructd similarly
FT-1000/GPS-N. System of remote monitoring and control of physical
FT-1000/GPS-N System of remote monitoring and control of physical Localization of vehicles during transport by sending the values of temperature, RH%, etc.. with relative alarm threshold is exceeded. Send
WIRELESS BLACK BOX USING MEMS ACCELEROMETER AND GPS TRACKING FOR ACCIDENTAL MONITORING OF VEHICLES
WIRELESS BLACK BOX USING MEMS ACCELEROMETER AND GPS TRACKING FOR ACCIDENTAL MONITORING OF VEHICLES PROJECT REFERENCE NO. : 37S0430 COLLEGE BRANCH GUIDE : S.G.BALEKUNDRI INSTITUTE OF TECHNOLOGY,BELGAUM
Design of Strong-motion Monitoring System for Dam-reservoir D s e i s gn of Stro r ng-mo m tion Monito t ri r ng Syst s em
Design of Strong-motion Monitoring System for Dam-reservo eservoir Li Caihua Li Xiaojun Institute of Engineering Mechanics, China Earthquake Administration China Harbin 150080 Abstract: One strong-motion
Vibration Measurement of Wireless Sensor Nodes for Structural Health Monitoring
, pp.18-22 http://dx.doi.org/10.14257/astl.2015.98.05 Vibration Measurement of Wireless Sensor Nodes for Structural Health Monitoring Surgwon Sohn, Seong-Rak Rim, In Jung Lee Div. of Computer and Information
Fall Detection System Using Tri-Accelerometer for Wireless Body Area Network
IOSR Journal of Electronics and Communication Engineering (IOSR-JECE) e-issn: 2278-2834,p- ISSN: 2278-8735.Volume 10, Issue 2, Ver. II (Mar - Apr.2015), PP 25-29 www.iosrjournals.org Fall Detection System
How to read this guide
How to read this guide The following shows the symbols used in this Quick start guide with descriptions and examples. Symbol Description Example P oint Reference Caution [ ] This symbol explains information
Multi-Touch Control Wheel Software Development Kit User s Guide
Multi-Touch Control Wheel Software Development Kit User s Guide V3.0 Bulletin #1204 561 Hillgrove Avenue LaGrange, IL 60525 Phone: (708) 354-1040 Fax: (708) 354-2820 E-mail: [email protected] www.grayhill.com/instinct
Department of Electrical and Computer Engineering Ben-Gurion University of the Negev. LAB 1 - Introduction to USRP
Department of Electrical and Computer Engineering Ben-Gurion University of the Negev LAB 1 - Introduction to USRP - 1-1 Introduction In this lab you will use software reconfigurable RF hardware from National
Sensors and Cellphones
Sensors and Cellphones What is a sensor? A converter that measures a physical quantity and converts it into a signal which can be read by an observer or by an instrument What are some sensors we use every
* DISCLAIMER: Contents. How to Use This Guide: COMMERCIAL INSTALL GUIDE 2
COMMERCIAL INSTALL GUIDE 2 Contents How to Use This Guide: The first section of this guide is designed to assist you with the installation of your DECK Monitoring hardware. The revenue grade meter and
Current Monitoring Kit QUICK START GUIDE
Current Monitoring Kit QUICK START GUIDE Pico Technology EL040 Current Monitoring Kit Quick Start Guide CONTENTS 1 Introduction... 1 2 Kit contents... 3 3 Installation... 3 3.1 Connecting the system together...
ANDROID APPLICATION DEVELOPMENT FOR ENVIRONMENT MONITORING USING SMART PHONES
ANDROID APPLICATION DEVELOPMENT FOR ENVIRONMENT MONITORING USING SMART PHONES ABSTRACT K. Krishnakanth 1 and P. Kavipriya 2 1 M.E Embedded Systems, Sathyabama University, Chennai, India. [email protected]
AC-115 Compact Networked Single Door Controller. Installation and User Manual
AC-115 Compact Networked Single Controller Installation and User Manual December 2007 Table of Contents Table of Contents 1. Introduction...5 1.1 Key Features... 6 1.2 Technical Specifications... 7 2.
GTR-128/GTR-129 Motorcycle/ Vehicle Tracker Quick Start Guide
GTR-128/GTR-129 Motorcycle/ Vehicle Tracker Quick Start Guide GlobalSat WorldCom Corporation 16F., No. 186, Jian 1 st Rd, Zhonghe Dist., New Taipei City 23553, Taiwan Tel: 886.2.8226.3799/ Fax: 886.2.8226.3899
ERS-2400B. PERS-2400B Personal Emergency Reporting System
PERS-2400B Personal Emergency Reporting System ERS-2400B Durability and Versatility for Emergency Reporting Solutions Create a customized and comprehensive Personal Emergency Reporting System with the
1 Serial RS232 to Ethernet Adapter Installation Guide
Installation Guide 10/100 Mbps LED (amber color ) Link/Activity LED (green color ) 1. Introduction Thank you for purchasing this 1-port RS232 to Ethernet Adapter (hereinafter referred to as Adapter ).
Shadow TX(A) Shadow RX
Shadow TX(A) Shadow RX Asset Management and RFID Transmitter Tags Asset Management Receiver The Shadow TX(A) and Shadow RX wireless asset management system is a standalone wireless asset tracking system
GSM HOME SECURITY SYSTEM
Cell /Mobile phone home security system GSM HOME SECURITY SYSTEM Model : GSM-120 TABLE OF CONTENTS 1. FEATURES... 1 2. APPLICATION... 2 3. SPECIFICATIONS... 3 4. FRONT PANEL & LAYOUT DESCRIPTION...6 5.
Quick Start Guide ActiGraph GT9X Link + ActiLife
Quick Start Guide ActiGraph GT9X Link + ActiLife Activity Monitor: ActiGraph GT9X Link Revision: A Released: 11/24/2014 Quick Start Guide ActiGraph GT9X Link + ActiLife Activity Monitor: ActiGraph GT9X
MODELS 8007 Gorilla Cycle Alarm 8017 Gorilla Cycle Alarm with 2-way pager system 1018 2-way pager system
MODELS 8007 Gorilla Cycle Alarm 8017 Gorilla Cycle Alarm with 2-way pager system 1018 2-way pager system Remote Control Motorcycle Alarm System Installation & Operation Instructions Sistema de Alarma de
INTRODUCTION TO SERIAL ARM
INTRODUCTION TO SERIAL ARM A robot manipulator consists of links connected by joints. The links of the manipulator can be considered to form a kinematic chain. The business end of the kinematic chain of
Hands On ECG. Sean Hubber and Crystal Lu
Hands On ECG Sean Hubber and Crystal Lu The device. The black box contains the circuit and microcontroller, the mini tv is set on top, the bars on the sides are for holding it and reading hand voltage,
PS 29M DUAL CHANNEL BELTPACK IN METAL CASE
PS 29M DUAL CHANNEL BELTPACK IN METAL CASE USER MANUAL October 2013 This product is designed and manufactured by: ASL Intercom BV Zonnebaan 42 3542 EG Utrecht The Netherlands Phone: +31 (0)30 2411901 Fax:
Lab 2 Sensor Modeling Introduction to the Wiimote and the Wiimote LABVIEW Interface
Lab 2 Sensor Modeling Introduction to the Wiimote and the Wiimote LABVIEW Interface 1. Objective In this lab, you will: i. Become familiar with the Wiimote ii. Understand the LABVIEW Bluetooth interface
Fall Detection System based on Kinect Sensor using Novel Detection and Posture Recognition Algorithm
Fall Detection System based on Kinect Sensor using Novel Detection and Posture Recognition Algorithm Choon Kiat Lee 1, Vwen Yen Lee 2 1 Hwa Chong Institution, Singapore [email protected] 2 Institute
The Design of a Low-Cost and Robust Linkage Position Sensor
The Design of a Low-Cost and Robust Linkage Position Sensor Project Proposal By: Leann Vernon and Phillip Latka Advisor: Dr. Jose Sanchez December 16th, 2013 Table of Contents Introduction 2 Project Description..
Robotics & Automation
Robotics & Automation Levels: Grades 10-12 Units of Credit: 1.0 CIP Code: 21.0117 Core Code: 38-01-00-00-130 Prerequisite: None Skill Test: 612 COURSE DESCRIPTION Robotics & Automation is a lab-based,
Network Enabled Battery Health Monitoring System
Network Enabled Battery Health Monitoring System Research Team: Fan Yang Zhengyang Liu Supervisor: Advisor: Hanlei Zhang (PhD Student) Wencong Su (PhD Student) Dr. Mo-Yuen Chow Presentation Outline Project
Total Protection Alarm System
www.skylinkhome.com Total Protection Alarm System MODEL: SC-10 101A073-001 AUG, 2005. CUSTOMER SERVICE 17 Sheard Avenue, Brampton, Ontario, Canada L6Y 1J3 Tel : (800) 304-1187 Fax : (800) 286-1320 Email
Alarm Security Kit - NVR
Alarm Security Kit - NVR EN The alarm configuration menu (see above right screenshot) allows you to configure and change settings for the PIR movement sensors, window/door sensors, remote controls (key
Module 1: Sensor Data Acquisition and Processing in Android
Module 1: Sensor Data Acquisition and Processing in Android 1 Summary This module s goal is to familiarize students with acquiring data from sensors in Android, and processing it to filter noise and to
Computer Aided Design of Home Medical Alert System
Computer Aided Design of Home Medical Alert System Submitted to The Engineering Honors Committee 119 Hitchcock Hall College of Engineering The Ohio State University Columbus, Ohio 43210 By Pei Chen Kan
Effective Use of Android Sensors Based on Visualization of Sensor Information
, pp.299-308 http://dx.doi.org/10.14257/ijmue.2015.10.9.31 Effective Use of Android Sensors Based on Visualization of Sensor Information Young Jae Lee Faculty of Smartmedia, Jeonju University, 303 Cheonjam-ro,
Wireless Multimedia Technologies for Assisted Living
Second LACCEI International Latin American and Caribbean Conference for Engineering and Technology (LACCEI 2004) Challenges and Opportunities for Engineering Education, Research and Development 2-4 June
FLOOR INDICATORS CATALOGUE 2007
FLOOR CATALOGUE 2007 All Your Needs For Elevators INDEX 1. LCD Indicators... 3 2. Dot Matrix Indicators... 9 3. Accessories... 17 ALBEN İnşaat Makine Elektrik Elektronik San. ve Tic. Ltd. Şti 2/21 LCD
product. Please read this instruction before setup your VenomXTM.
Tuact Corp. Ltd. TM Venom X mouse controller combo Setup Software Instruction Thank you for purchasing our VenomXTM product. Please read this instruction before setup your VenomXTM. Introduction Venom
Analog Sound From A Digital Delay
Analog Sound From A Digital Delay The PT-80 Digital Delay By Scott Swartz Copyright 2002, All Rights Reserved Introduction This article will describe a digital delay pedal that is designed to capture the
REAL TIME MONITORING AND TRACKING SYSTEM FOR AN ITEM USING THE RFID TECHNOLOGY
Review of the Air Force Academy No 3 (30) 2015 REAL TIME MONITORING AND TRACKING SYSTEM FOR AN ITEM USING THE RFID TECHNOLOGY For the past few years, location systems have become a major studying field,
An inertial haptic interface for robotic applications
An inertial haptic interface for robotic applications Students: Andrea Cirillo Pasquale Cirillo Advisor: Ing. Salvatore Pirozzi Altera Innovate Italy Design Contest 2012 Objective Build a Low Cost Interface
SMART SENSOR COLLECTION
TEMPERATURE SENSOR This sensor measures temperature in degrees Celsius or Fahrenheit. It works with all SensorHawk base units (SensorHawk-2, SensorHawk-8 and SensorHawk8/20) as well as the SecurityHawk-8
Design and implementation of modular home security system with short messaging system
EPJ Web of Conferences 68, 00025 (2014) DOI: 10.1051/ epjconf/ 20146800025 C Owned by the authors, published by EDP Sciences, 2014 Design and implementation of modular home security system with short messaging
Business/ Home GSM Alarm System
Business/ Home GSM Alarm System BUSINESS/HOME GSM ALARM SYSTEM POWER STATUS RECORD SIGNAL User Manual Profile For a better understanding of this product, please read this user manual thoroughly before
INSTRUCTION MANUAL All-In-One GSM Home Alarm System SB-SP7200-GSM
INSTRUCTION MANUAL All-In-One GSM Home Alarm System SB-SP7200-GSM Revised: August 28, 2014 PRODUCT REFERENCE MOUNTING ACCESSORIES PIR / MOTION DETECTION UNIT MAIN UNIT POWER ADAPTER MOUNTING ACCESSORIES
Understanding Alarm Systems
Understanding Alarm Systems A false alarm occurs when an alarm signal designed to elicit an immediate emergency Law Enforcement, Fire, or Medical response is activated, when in fact no emergency exists.
STMicroelectronics is pleased to present the. SENSational. Attend a FREE One-Day Technical Seminar Near YOU!
SENSational STMicroelectronics is pleased to present the SENSational Seminar Attend a FREE One-Day Technical Seminar Near YOU! Seminar Sensors and the Internet of Things are changing the way we interact
FLOOR INDICATORS CATALOGUE 2007
FLOOR CATALOGUE 2007 All Your Needs For Elevators INDEX 1. LCD Indicators... 3 2. Dot Matrix Indicators... 9 3. Accessories... 17 ALBEN İnşaat Makine Elektrik Elektronik San. ve Tic. Ltd. Şti 2/21 LCD
MICROCONTROLLER BASED SMART HOME WITH SECURITY USING GSM TECHNOLOGY
MICROCONTROLLER BASED SMART HOME WITH SECURITY USING GSM TECHNOLOGY F. Shawki 1,2, M. El-Shahat. Dessouki 1,3, A. I. Elbasiouny 4, A.N. Almazroui 5, F. M. R. Albeladi 5 1 Assistant Professor, Electrical
PC Tab INSTALLATION MANUAL SECURE-IT, INC. EAST LONGMEADOW, MA 01028. 800-451-7592 / 413-525-7039 (fax) 413-525-8807 http://www.secure-it.
PC Tab INSTALLATION MANUAL SECURE-IT, INC. EAST LONGMEADOW, MA 01028 800-451-7592 / 413-525-7039 (fax) 413-525-8807 http://www.secure-it.com IMPORTANT READ ENTIRE MANUAL BEFORE STARTING!!! System Overview
