tinh - fall monitoring.pdf
TRANSCRIPT
-
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Nguyen Van Tinh
DETECTING HUMAN FALLS WITH A 3-DOF
ACCELEROMETER
Major: Electronics and Communication
HA NOI - 2014
-
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Nguyen Van Tinh
DETECTING HUMAN FALLS WITH A 3-DOF
ACCELEROMETER
Major: Electronic and Communication
Supervisor: Assoc. Prof. Dr Tran Duc Tan
HA NOI - 2014
-
i
AUTHORSHIP
I hereby declare that the work contained in this thesis is of my own and has not been
previously submitted for a degree or diploma at this or any other higher education
institution. To the best of my knowledge and belief, the thesis contains no materials
previously published or written by another person except where due reference or
acknowledgement is made.
Signature:
-
ii
SUPERVISORS APPROVAL
I hereby approve that the thesis in its current form is ready for committee examination
as a requirement for the Bachelor of Engineering and Technology degree at the
University of Engineering and Technology.
Signature:
-
iii
ACKNOWLEDGEMENT
First of all, I would like to express special thanks to Assoc. Prof. Tran Duc-Tan
who always guides me, points out the mistakes, and gives me the instructions and
comments during the time to realize this work. Without his supervising, I would
have many difficulties to finish this thesis.
Secondly, I want to give my sincerely thanks to the faculty members and staffs of
the Faculty of Electronics and Telecommunication, VNU-UET for their
enthusiasm to guide me to for the background of knowledge
I also greatly appreciate all members of the MEMS Lab who always facilitate me
to do this thesis, answer my questions in a familiar way and share their experience
for me as well as make me feel comfortable and better in studying
Finally, I want to give the best thank to my parents, my relatives and my friends
who always encourage, take care me during the studying and researching period.
Sincerely
Nguyen Van Tinh
-
iv
ABSTRACT
A simple fall can have devastating consequences for the elderly. If it happens, they
can become disoriented, immobilized, or knocked unconscious and unable to call
for help. This thesis aims to create a portable device to monitor the falls in older
adults by using a micro controller PIC18f4520, a 3-DOF acceleration sensor
ADXL345, a GSM/GPRS modem SIM900 and an embedded fall detection
algorithm. The human activities can be sensed by the 3-DOF accelerometer. The
acceleration signals are brought to the micro controller to monitor and alert the
fall. If the people fall, an alert message would be sent to their relative through the
GSM/GPRS modem. The experiment device has been tested carefully and it can
be applied to real application after the carefully evaluation and analyses.
Keywords: Fall, accelerometers, monitoring.
-
v
Table of Contents
ACKNOWLEDGEMENT ........................................................................................... iii
ABSTRACT ..................................................................................................................iv
Table of Contents........................................................................................................... v
List of Figures ............................................................................................................. vii
List of Tables ................................................................................................................ix
ABBREVATIONS ......................................................................................................... x
INTRODUCTION ......................................................................................................... 1
1.1 Motivation ............................................................................................................ 1
1.2 Relate Works ....................................................................................................... 2
1.3 Contribution and thesis overview ........................................................................ 4
MATERIAL AND THE METHOD .............................................................................. 5
2.1 Hardware .............................................................................................................. 7
2.1.1 MCU pic18f4520 ............................................................................................. 7
2.1.2 ADXL345 accelerometers sensor ..................................................................... 9
2.1.3 SIM900 module ............................................................................................. 11
2.2 Integrated System ............................................................................................... 13
2.2.1 Power module ................................................................................................ 14
2.2.2 MCU module ................................................................................................. 14
2.2.3 SIM900 module ............................................................................................. 14
2.2.4 Sensor ADXL345 .......................................................................................... 15
2.3 Software .............................................................................................................. 15
2.3.1 I2C interface .................................................................................................. 15
-
vi
2.3.2 UART communication ................................................................................... 19
2.3.3 Timer ............................................................................................................. 20
2.4 Algorithms .......................................................................................................... 23
2.4.1 System architecture ........................................................................................ 23
2.4.2 Signal process ................................................................................................ 24
2.4.3 Posture recognition module ............................................................................ 26
2.4.4 Fall detection ................................................................................................. 27
2.4.5 Final decision ................................................................................................. 28
2.4.6 Embedded program ........................................................................................ 37
RESULTS AND DISCUSSIONS ................................................................................ 40
Conclusions .................................................................................................................. 44
References .................................................................................................................... 45
Appendix A .................................................................................................................. 46
-
vii
List of Figures
Figure 1-1: Fall in elderly at home ...................................................................................2
Figure 2-1: Position of accelerometer in waist body .........................................................6
Figure 2-2: Module System..............................................................................................7
Figure 2-3: Pic 18f4520 microcontroller [13] ...................................................................7
Figure 2-4: Structure of pic18f4520 [13] . ........................................................................8
Figure 2-5: Sensor accelermeteter ADXL345...................................................................9
Figure 2-6: Block diagram of sensor ADXL345 [12] ..................................................... 10
Figure 2-7: Axes of Acceleration Sensitivity [12] . ........................................................ 10
Figure 2-8: Output response and orientation to gravity [12] . ......................................... 11
Figure 2-9: SIM900 module ........................................................................................... 11
Figure 2-10: Module proposed system ........................................................................... 13
Figure 2-11: System hardware of automatic falls detect ................................................. 13
Figure 2-12: I2C protocol between sensor ADXL345 and MCU [12] . ........................... 15
Figure 2-13: UART communication between MCU and SIM900 moudule .................... 19
Figure 2-14: Basic UART packet form: 1 start bit, 8 bits data, 1 parity and 1 stop bit [10]
...................................................................................................................................... 20
Figure 2-15: Interfacing microcontroller to PC via USB to UART Converter [10] ......... 20
Figure 2-16: System architecture [7] .............................................................................. 23
Figure 2-17: Walking before low-pass filter and average ............................................... 25
Figure 2-18: Walking after low-pass filter and average .................................................. 25
-
viii
Figure 2-19: Posture recognition module [7] . ............................................................... 26
Figure 2-20: Fall detection module [7] . ........................................................................ 27
Figure 2-21: Acceleration pattern during a fall [7] ........................................................ 28
Figure 2-22: Final decision of fall ................................................................................. 29
Figure 2-23: Ay component of Acceleration vector ........................................................ 31
Figure 2-24: Zero crossing rate ...................................................................................... 31
Figure 2-25: Standing .................................................................................................... 32
Figure 2-26: Walking ..................................................................................................... 33
Figure 2-27: Standing- Lying ......................................................................................... 33
Figure 2-28: Fall experiment 1 ....................................................................................... 34
Figure 2-29: Fall experiment 1 after time 7s................................................................... 35
Figure 2-30: Zoom out fall experiment 1........................................................................ 35
Figure 2-31: Fall experiment 2 ....................................................................................... 36
Figure 2-32: Fall experiment 2 after time 7s................................................................... 36
Figure 2-33: Zoom out fall experiment 2........................................................................ 37
Figure 2-34: Fall detect flowchar program ..................................................................... 38
Figure 3-1: Schematic of fall detection system ............................................................... 40
Figure 3-2: Automatic fall detect system ........................................................................ 41
Figure 3-3: The backface of SIM900 module ................................................................. 41
Figure 3-4: The frontface of SIM900 module ................................................................. 42
Figure 3-5: Integrated fall detection system ................................................................... 42
Figure 3-6: Automatic falls detect system in human ....................................................... 43
-
ix
List of Tables
Table 1: Final decision of fall ........................................................................................ 29
Table 2: Logic table ....................................................................................................... 30
Table 3: Values for difference states .............................................................................. 32
-
x
ABBREVATIONS
DOF Degree Of Freedom
ZCR Zero Cross Rate
MCU Microcontroller Unit
SMS Short Message Service
GPRS General Packet Radio Service
LCD Liquid Crystal Display
I2C Inter Integrated Circuit
UART Universal Asynchronous Receiver/Transmitter
SPI Serial Peripheral Interface
CCS Cascading Style Sheet
-
1
Chapter 1
INTRODUCTION
1.1 Motivation
Every year in the world, approximately 28-35% of people aged of 65 and over
experience falls. The frequencies of falls are different between aged and appear to
vary in among countries as well. For example, every year by the research of in
South- East Asia Region found that in China 6-13%, another found that in Japan
20% of elderly fell. Meanwhile in Europe region 30% of people over 65 and 50%
of those over 80 years fell each year, the same research found that in Region of
American the proportion of older adults who fell each year ranging from 21.6% in
Barbados to 34% in Chile [1] [2] .
Experiencing a fall unobserved can be dangerous, highly probability of get serious
injury consequence or due to death if treatment is not providence in time. By the
research, the falls mortality rates account for 40% all of injury and the cost of fall
injury in older person reached for hundreds of millions of dollars [1] [3] .
-
2
Figure 1-1-1: Fall in elderly at home
Many elderly living alone either department, nursing home or a smaller house
after their children grown up and left home or go out to work, in case of older
people who taking a long - term to treatment in hospital without nurse around.
Usually, an elderly person unable to get up by himself or herself after falls.
Therefore we have built an automatic fall detect system device to send help to
other people like relative or nurse to help them in time [2] .
1.2 Relate Works
In modern society, health care for elderly has been concerned by many
organization and development countries, so there are many products have been
built in market to serve medical and health care services for elderly too.
There are many method used distinguish technical equipment to design a system
to detect falls system such as analysis human body posture recognition and
detection falls use image processing, location sensors or accelerometers.
However, each of these methods has certain problems [4] .
-
3
Firstly, in the image processing approach, the disadvantage is how to installation
the camera in the room must work well, another insulation is limited functioning
in the outdoor environment and limited of resolution in camera, target occlusion.
One more the biggest issue is concern to user privacy. It is obvious that people
will not comfortable when camera recording them with activities in living at
home.
Secondly, in the location sensors approach, the problem is that there are so much
varies location sensors precision (not constant rate of distance error) in the market
with different kind of prices. For reasonable results, high precision is required in
our application; high precision means high in prices. The price is high many times
than accelerometer and similar with image processing location sensors is limited
in outdoor environment.
In the common way of formulating posture recognition and fall detection many
researcher use accelerometer with lower cost and it far more commercially
available in the market but still keep high result precision to detect fall in elderly.
With posture recognition module and fall detection module by applying threshold
to acceleration derived from 3-axis accelerometer sensor worn on the waist (
particular ADXL345, a 3-axis accelerometer from Analog Devices) they detected
a potential fall and the activity/posture after the fall, resulting in 100% accurate
posture recognition and detect falls with of 85% of accuracy [4] .
-
4
1.3 Contribution and thesis overview
The purpose of this thesis design completely automatic falls detects system for
elderly. Our system must operation in two functions: The first is automatic detect
truly fall in elderly when they live home alone or in the nurse house. Etc. The
second function is auto send SMS to relative contact to need help in time like their
child or the nurse...etc. to avoid the bad case happening. Our main of contribution
is analysis, simulation and improving an algorithm to posture recognition and
detect falls in elderly with build a database source in falls of Vietnamese people
and completely success design the falls detect system by applying this algorithm
working well in the real life.
The rest of this thesis is organized as follows:
Chapter 2 provides theoretical and algorithm background. At first is overview
about hardware components and these features, description our integrated system
how configuration from other components. Then we will going to detail the
software, about interface, protocols between MCU and other devices has used,
going deeply about our system architecture, signal processing, algorithm of
posture recognition and fall detection module and final decision to send SMS to
relative contracts of automatic falls detect system in elderly.
In chapter 3, we will show about products of our work and guide how to use our
system too. Also, show some the results from experiments of our algorithms were
simulated in MATLAB with explaining and evaluating respectively. The
conclusions and directions for future work are addressed in the final section.
-
5
Chapter 2
MATERIAL AND THE METHOD
In this section, we will describe brief about our method and schedule of function
working in our system.
The sensor used in this project was one 3-axis accelerometer, particular was
ADXL345 accelerometers manufacturing by Analog Devices Company. Our
accelerometer was positioned in the waist body so that y-axis must parallel with
Earths gravity. A 3-axis ADXL345 sensor is return in a real-valued estimate of
the acceleration along the x, y and z-axes from which velocity and orientation
angle can be estimated. Reading data from sensor with sample rate was 10Hz and
processing within buffer 10 data. By applying the threshold, posture recognition
module will show us whenever we standing, walking, lying or in null state. The
function of fall detection module is detecting the fall events base on threshold. . If
the system detects the falling event, by combination with posture period time
after event of fall, it automatically sends an SMS message through GSM/GPRS
modem SIM900 to the responsive contact.[7] .
-
6
Figure 2-1: Position of accelerometer in waist body
Here is our proposed system of automatic falls detect system in elderly, in which
accelerometer ADXL345 returns the value of acceleration in 3-axis. MCU is
center of processing and control within system, LCD 16x2 is display the values of
acceleration 3 axis x, y, z or signal control and function of SIM900 module is send
SMS message to relative contacts.
-
7
Figure 2-2: Module System
2.1 Hardware
2.1.1 MCU PIC18f4520
Figure 2-3: Pic 18f4520 microcontroller [13]
Pic 18f4520 is 8-bit microcontroller was developed by Microchip with some
features bellow
C Compiler Optimized Architecture: - Optional extended instruction set designed to optimize re-entrant code
100,000 Erase/Write Cycle Enhanced Flash
-
8
Program Memory Typical
1,000,000 Erase/Write Cycle Data EEPROM Memory Typical
Flash/Data EEPROM Retention: 100 Years Typical
Self-Programmable under Software Control
Priority Levels for Interrupts
8 x 8 Single-Cycle Hardware Multiplier
Extended Watchdog Timer (WDT): - Programmable period from 4 ms to 131s
Single-Supply 5V In-Circuit Serial Programming (ICSP) via Two Pins
In-Circuit Debug (ICD) via Two Pins
Wide Operating Voltage Range: 2.0V to 5.5V
Programmable Brown-out Reset (BOR) with Software Enable Option
Bellowing is structure and schematic of Pic 18f4520
Figure 2-4: Structure of pic18f4520 [13] .
-
9
2.1.2 ADXL345 accelerometers sensor
Figure 2-5: Sensor accelermeteter ADXL345
The ADXL345 is a small, thin, low power, 3-axis accelerometer with high-
resolution (13-bit) measurement at up to 16 g. Digital output data is formatted as
16-bit twos complement and is accessible through either a SPI (3- or 4-wire) or
I2C digital interface
Highlight features:
- Ultralow power: as low as 40 A in measurement mode and 0.1 A in standby mode at VS= 2.5 V (typical)
- Power consumption scales automatically with bandwidth - User-selectable resolution. Fixed 10-bit resolution. Full resolution, where
resolution increases with grange, up to 13-bit resolution at 16 g
(maintaining 4 mg/LSB scale factor in all granges)
- Tap/double tap detection - Activity/inactivity monitoring - Free-fall detection - Supply voltage range: 2.0 V to 3.6 V - SPI (3- and 4-wire) and I2C digital interfaces - Measurement ranges selectable via serial command - Wide temperature range (40C to +85C)
-
10
Function block diagram of sensor ADXL345
Figure 2-6: Block diagram of sensor ADXL345 [12]
Gravitational acceleration at a point is constant. Here is output of accelerometers
in some position.
Figure 2-7: Axes of Acceleration Sensitivity [12] .
-
11
Figure 2-8: Output response and orientation to gravity [12] .
Application:
- Detect sock, falls, movement - Measure the angle
2.1.3 SIM900 module
Figure 2-9: SIM900 module
-
12
The SIM900 GSM/GPRS Shield provides you a way to use the GSM cell phone
network to receive data from a remote location. The shield allows you to achieve
this via any of the three methods:
- Short Message Service
- Audio
- GPRS Service
The GPRS Shield is compatible with all boards which have the same form factor
(and pin out) as a standard Adriano Board. The GPRS Shield is configured and
controlled via its UART using simple AT commands. Based on the SIM900
module from SIMCOM, the GPRS Shield is like a cell phone. Besides the
communications features, the GPRS Shield has 12 GPIOs, 2 PWMs and an ADC.
Highlight feature:
- Quad-Band 850 / 900/ 1800 / 1900 MHz - would work on GSM networks
in all countries across the world.
- Control via AT commands - Standard Commands: GSM 07.07 & 07.05 |
Enhanced Commands: SIMCOM AT Commands.
- Short Message Service - so that you can send small amounts of data over
the network (ASCII or raw hexadecimal).
- SIM Card holder and GSM Antenna - present onboard.
- Low power consumption - 1.5mA(sleep mode)
- Industrial Temperature Range - -40C to +85 C
-
13
2.2 Integrated System
Figure 2-10: Module proposed system
Here is schematic of our proposed system has been designed in Altium software:
Figure 2-11: System hardware of automatic falls detect
-
14
2.2.1 Power module
In automatic fall detect system. There are two level power sources, one for MCU
and sensor accelerometer ADXL345 and other for module SIM900. With module
SIM900, it only works when the current is larger than 2A. Consequently, we have
been using an adapter 12V, 3A with LM2576 to get +5V, 2A. Power for MCU and
sensor is +5V voltage, so one branch from the adapter with LM7805 voltage
regulator we will receive it.
2.2.2 MCU module
The Microcontroller 18f4520 has been being used and clock source frequency
(Crystal) is 20 MHz, which fast enough to execute fall, detect program.
2.2.3 SIM900 module
In SIM900 module, these pins here has been using:
Power on or down: PWRKEY should be pulled down at least 1 second and then
released power on/down the module
Status: STATUS Power on the status
NETLIGHT Network status
SIM interface: SIM_VDD Voltage supply for SIM card +3V
SIM_DATA SIM_DAT input/output
SIM_CLK SIM clock
SIM_RST SIM reset
Serial port: RXD and TXD for UART communication between MCU and
SIM900 module
-
15
2.2.4 Sensor ADXL345
By using interface I2C between MCU and sensor. There are 4 pins has used: Vcc,
ground, SCL and SDA, Vcc for +5 voltages, SCL is the clock line, SDA is the data
line.
2.3 Software
2.3.1 I2C interface
Figure 2-12: I2C protocol between sensor ADXL345 and MCU [12] .
The physical I2C bus
This is just two wires, called SCL and SDA. SCL is the clock line. It is used to
synchronize all data transfers over the I2C bus. SDA is the data line. The SCL &
SDA lines are connected to all devices on the I2C bus. There needs to be a third
wire, which is just the ground or 0 volts. There may also be a 5volt wire is power
is being distributed to the devices. Both SCL and SDA lines are "open drain"
drivers. What this means is that the chip can drive its output low, but it cannot
drive it high. For the line to be able to go high, you must provide pull-up resistors
to the 5v supply. There should be a resistor from the SCL line to the 5v line and
another from the SDA line to the 5v line. You only need one set of pull-up
resistors for the whole I2C bus, not for each device, as illustrated below [11] :
-
16
Masters and Slaves
The devices on the I2C bus are either masters or slaves. The master is always the
device that drives the SCL clock line. The slaves are the devices that respond to
the master. A slave cannot initiate a transfer over the I2C bus, only a master can
do that. There can be, and usually are, multiple slaves on the I2C bus, however
there is normally only one master. It is possible to have multiple masters, but it is
unusual and not covered here. On our application, the master will be pic 18f4520
micro controller and the slaves will be three-axis accelerometer ADXL345 sensor.
Slaves will never initiate a transfer. Both master and slave can transfer data over
the I2C bus, but that transfer is always controlled by the master [11] .
The I2C Physical Protocol
When the master pic 18f4520 micro controller wishes to talk to a slave (our
ADXL345 sensor for example), it begins by issuing a start sequence on the I2C
bus [1]. A start sequence is one of two special sequences defined for the I2C bus,
the other being the stop sequence. The start sequence and stop sequence are
special in that these are the only places where the SDA (data line) is allowed to
change while the SCL (clock line) is high. When data is being transferred, SDA
must remain stable and not change whilst SCL is high. The start and stop
sequences mark the beginning and end of a transaction with the slave device [11] .
-
17
Data is transferred in sequences of 8 bits. The bits are placed on the SDA line
starting with the MSB (Most Significant Bit). The SCL line is then pulsed high,
then low. Remember that the chip cannot really drive the line high, it simply "lets
go" of it and the resistor actually pulls it high. For every 8 bits transferred, the
device receiving the data sends back an acknowledge bit, so there are actually 9
SCL clock pulses to transfer each 8 bit byte of data. If the receiving device sends
back a low ACK bit, then it has received the data and is ready to accept another
byte. If it sends back a high then it is indicating it cannot accept any further data
and the master should terminate the transfer by sending a stop sequence [11] .
Clock
The standard clock (SCL) speed for I2C up to 100KHz. Philips do define faster
speeds: Fast mode, which is up to 400KHz and High Speed mode which is up to
3.4MHz [11] .
I2C Device Addressing
All I2C addresses are either 7 bits or 10 bits. All of our modules and the common
chips you will use will have 7-bit addresses. This means that you can have up to
128 devices on the I2C bus, since a 7-bit number can be from 0 to 127. When
sending out the 7-bit address, we still always send 8 bits. The extra bit is used to
inform the slave if the master is writing to it or reading from it. If the bit is zero
the master is writing to the slave. If the bit is 1 the master is reading from the
slave. The 7-bit address is placed in the upper 7 bits of the byte and the
-
18
Read/Write (R/W) bit is in the LSB (Least Significant Bit). The address of slave
ADXL345 is 0x53 [11] .
The I2C Software Protocol
The first thing that will happen is that the master will send out a start sequence.
This will alert all the slave devices on the bus that a transaction is starting and they
should listen in incase it is for them. Next, the master will send out the device
address. The slave that matches this address will continue with the transaction, any
others will ignore the rest of this transaction and wait for the next. Having
addressed the slave device the master must now send out the internal location or
register number inside the slave that it wishes to write to or read from [11] .
Writing to the Slave
- Send a start sequence
- Send the I2C address of the slave with the R/W bit low (even address)
- Send the internal register number you want to write to
- Send the data byte
- [Optionally, send any further data bytes]
- Send the stop sequence.
Reading from the Slave
Before reading data from the slave device, you must tell it which of its internal
addresses you want to read. So a read of the slave actually starts off by writing to
it. This is the same as when you want to write to it: You send the start sequence,
-
19
the I2C address of the slave with the R/W bit low (even address) and the internal
register number you want to write to. Now you send another start sequence
(sometimes called a restart) and the I2C address again - this time with the read bit
set. You then read as many data bytes as you wish and terminate the transaction
with a stop sequence [11] .
- Send a start sequence
- Send 0x53 (I2C address of the ADXL345)
- Send address (Internal address of the bearing register)
- Send a start sequence again (repeated start)
- Send 0xC1 (I2C address of the ADXL345 with the R/W bit high (odd
address)
- Read data byte from ADXL345
- Send the stop sequence.
2.3.2 UART communication
The Universal Asynchronous Receiver/Transmitter (UART) controller is the key
component of the serial communications subsystem of a computer. UART is also a
common integrated feature in most microcontrollers. 3 pins we must care are Tx
(transmitter), Rx (Receiver) and Ground [12] .
Figure 2-13: UART communication between MCU and SIM900 moudule
The Asynchronous Receiving and Transmitting Protocol
The asynchronous communication it mean that both transmitter and receiving
works in different clocks but must not exceed 10%. Start and stop bits are also sent
with each data byte to identify the data.
-
20
In this case, the sender and receiver must agree on timing parameters (Baud Rate)
prior transmission and special bits are added to each word to synchronize the
sending and receiving units [10] .
Figure 2-14: Basic UART packet form: 1 start bit, 8 bits data, 1 parity and 1
stop bit [10]
Every operation of the UART hardware is controlled by a clock signal, which runs
at much faster rate than the baud rate. Transmitting and receiving UARTs must be
set at the same baud rate, character length, parity, and stop bits for proper
operation. The typical format for serial ports used with PC connected to modems
is 1 Start bit, 8 data bits, no Parity and 1 Stop bit.
UART is the simplest form of communication between microcontroller and PC.
However, due to the mushrooming growth of technology, serial port is slowly
being replaced by other means of communication port such as USB to RS-232
[10] .
Figure 2-15: Interfacing microcontroller to PC via USB to UART Converter
[10]
2.3.3 Timer
Timer as the name suggests pertain to time-related operations. They are mostly
used for exact delay generation. Timers are also used in various other operations
like PWM signal generation, auto-triggering of several other peripherals. In our
project, we used timer0 for calculating data sample rate and timer1 for calculating
exactly time to detect falls.
-
21
Each of the four timers of Pic f84520 has certain special features some of which
are explained below. The detailed list of these features can be obtained from
PIC18f4520 datasheet.
Timer0
- Timer0 can work as Timer/Counter in both 8-bit and 16-bit modes - Dedicated 8-bit, software programmable prescaler - Selectable clock source (internal or external) - Interrupt on overflow
Timer1
- Timer1 can work as 16-bit timer or counter - Readable and writable 8-bit registers (TMR1H and TMR1L) - Selectable clock source (internal or external) - Alternate clock source can be provided at Timer1 oscillator pins (T1OSO
& T1OSI)
- Interrupt on overflow - Timer1 can be multiplexed with other peripherals like ADC etc. and
generates special event triggering for CCP (Capture, Compare and PWM)
events.
Timer2
- 8-bit Timer and Period registers (TMR2 and PR2, respectively) - Software programmable prescaler (1:1, 1:4 and 1:16) - Software programmable postscaler (1:1 - 1:16) - Interrupt on TMR2 to PR2 match - Optional use as the shift clock for the MSSP (Master Synchronous Serial
Port) module
Timer3
- Timer3 can work as 16-bit timer or counter - Readable and writable 8-bit registers (TMR3H and TMR3L) - Selectable clock source (internal or external) - Alternate clock source can be provided at Timer1 oscillator pins (T1OSO
& T1OSI)
-
22
- Interrupt on overflow - Timer3 can be multiplexed with other peripherals like ADC etc. and
generates special event triggering for CCP (Capture, Compare and PWM)
events.
Here is some formula how to calculate timer in MCU
/ (4*Pr )timer OSCF F escaler
1/timer timerT F Where
OSCF is Clock source frequency (Crystal). Prescaler is integer number takes
the basic timer clock frequency (power of 2 from 0 - 2nbit
)
This means that when Timer runs, it will take timerT sec to increment its value at
every count.
-
23
2.4 Algorithms
2.4.1 System architecture
The posture recognition and fall detection process describe in this project is
divided to several phases such as show in Figure 17.
The first is in the real world in which sensor accelerometers ADXL345 is
positioned in waist body region. The next phase is sensory part, after sampled rate
with 10Hz; the data received from the accelerometer was in the form of a three-
valued vector of floating point numbers that represented the individual
accelerations of sensor ADXL345 in the x, y, z-axes subtracted by the gravity
vector G. The acceleration values was recorded in meters per second squared ( 2m
s
).Thus, lay flat on a level surface, the expected reading of the accelerometer would
be approximately [0.0, 9.81]. In this phase we has signal process step before data
get into attribute extraction module to formulated mean, orientation, standard
deviation. The last final phase is data mining body posture recognition and fall
detection. Each of these modules gives an output: the real time posture of body
and fall or not fall events [4] [7] [9] .
Figure 2-16: System architecture [7]
-
24
2.4.2 Signal process
- Converting The process of obtaining and converting the accelerometer reading depends on the
accelerometer you are using, in our case, the ADXl345 in its basic configuration,
provides 10-bit resolution for 2g , but has several other ranges (
2 , 4 , 8 , 16g g g g ) and the resolutions (from 10bit to 13bit depending on the
range). The formula used to calculate the acceleration from the accelerometer
reading is:
_ ( _ * ) /1000g resolution resolutionData out Data out Scale
From ADXL345 datasheet 10-bit, 2g we has scale is 3.9 respectively.
- Filter After that, we used the Low - Pass filter to removing short-term fluctuation. This
type of filter attenuates the higher frequencies of the signal, thus providing a
smoother reading. The Low-Pass filter is easily implemented by using the
following equation.
1. (1 ).t t ty x y
Wherety is our filtered signal, 1ty is the previous filtered signal, tx the
accelerometer reading and the smoothing factor.
- Average
Next process step, we accumulated the output data, and then took average over
buffer 10 for making data more accuracy.
- Offset Finally, we took offset of output average data. Consequently gravitational
acceleration response in some position satisfied with real life.
_ _g g offsetData out Data out V
-
25
The comparison of walking state is show before and after low-pass filter and
average.
Figure 2-17: Walking before low-pass filter and average
Figure 2-18: Walking after low-pass filter and average
0 10 20 30 40 50 600
2
4
6
8
10
12
14
16
18
Thoi gian - s
L2
gia
to
c
Standing
Walking
Lying
Null
An
0 10 20 30 40 50 600
2
4
6
8
10
12
14
16
18
Thoi gian - s
L2
gia
to
c
Standing
Walking
Lying
Null
An
-
26
2.4.3 Posture recognition module
Here is algorithm for detect posture recognition [7] .
Figure 2-19: Posture recognition module [7] .
In which th1, th2 are the thresholds, to detected th1, th2 we has did many
experiments with data got from our sensor ADXL345 to obtained these values
such that posture simulation in MATLAB satisfying with posture in the
experiment real life. After completely processing in this module, we will get four
states of posture: lying, standing, walking, and null.
-
27
2.4.4 Fall detection
Here is algorithm for fall detection [7] . The same with posture recognition, th4 is
the threshold, to detected th4 we also has did many experiments with falls
respectively, with requirement result simulation in MATLAB has the same with
the experiments.
Figure 2-20: Fall detection module [7] .
The fall detection module searches for particular pattern in the signal. Figure 20
represents a pattern An (compute from ax, ay, az) norm during fall event.
-
28
Figure 2-21: Acceleration pattern during a fall [7] .
If the difference between consecutive minima and maxima is greater than the Th4,
The output decided it as a fall.
2.4.5 Final decision
The final decision on event of a fall is based on both output of posture recognition,
fall detects, and requirement with the time after fall. When a fall is detected,
decision from posture recognition module in this time and after period (here we
choose period of time 7 second) tells us whether it is a fall alarm. Why we
consider posture recognition after time 7 second because some people can stand up
by themselves after fall so we must check it to confirm truly fall or not. Table 1
summarizes the final decision [7].
-
29
Flowchart of algorithm:
Figure 2-22: Final decision of fall
Fall detection Posture recognition Posture after 7s of
Fall
Final
decision
Fall Standing Dont care False
Fall Walking Dont care False
Fall Lying Dont care False
Fall
Lying
Standing or Walking False
Lying or Null True
Fall
Null
Standing or Walking False
Lying or Null True
Table 1: Final decision of fall
-
30
Here is locgic table was standardized.
State
Posture
reocognition
Fall detection Posture after
7s of fall Final decision
A
B C A*B*C
Standing
0 1 x 0
Walking
0 1 x 0
Lying
1 1 1 1
Null
1 1 1 1
Table 2: Logic table
x: dont care
Looking at the table, if fall detection event occur, if state of posture recognition in
this time is still walking, standing the fall decision final will be discarded. In the
same with another case if posture in the time of fall is lying or null, but after 7
second, the posture is standing or walking, final decision is false too.
Analysis of the algorithms
The data from accelerometer ADXL345 is stored in buffer of suitable length,
mention again, in our case it is fixed as 10 samples, as the sampling rate is fixed as
10 Hz, then we will take average over the buffer length, the purpose of this to get
data that are more accurate. Lowering or high the window size, will affect the
decision of posture recognition. The reason behind that the, the zero crossing rate
requires a constant oscillation for particular the amount of time to figure out the
between states of walking and momentary jitter (no state) [7].
-
31
Figure 2-23: Ay component of Acceleration vector
The transitions and slight variations are regarded as null state. To characterize a
state between null and walking, lying and standing to thresholds are used on the
zero crossing rate.
Figure 2-24: Zero crossing rate
The trend has greater than Th1 to be confirming as walking. Any else the
variations are discarded. Th2 marks the lower threshold based on which slight
variations are removed in the start of the algorithm. The necessary of lower Th2
threshold is the transition state lower than Th2 will be confirm null state [7].
-
32
Table 2 gives what the values of Posture recognition module means.
State Value
Walking 2
Standing 4
Lying 10
Null 15
Table 3: Values for difference states
By doing many experiments, analysis and simulation in MATLAB, finally we
have choose the suitable value of these thresholds and window size to work in our
hardware.
Window Size = 10
Th1= 0.7
Th2 = 4.0
Th4: 1.3 (m/s^2)
Here is some imagine of experiment of our works was simulated in MATLAB
Figure 2-25: Standing
-
33
Figure 2-26: Walking
Figure 2-27: Standing- Lying
-
34
State transition of people in experiments:
Standing ->Walking-> Standing->Lying->Standing->Walking->Fall->Standing
Figure 2-28: Fall experiment 1
From the above figure, we can see that in the 13 and 120 second there is event of
falls. In the 13 second, posture recognition module detect null state (respective
with 15 value) and fall detection module show us one event of shock (over the
threshold mark by red color ) and in 120 second the state is lying and one event of
shock, so it must has two alarm for falls. However, it not true because our
experiment has only one falls in 120 second, while in 13 second we were walking.
Therefore, by checking the state after 7 second of falls we can discard it. The final
decision was showing in Figure 2-26 and zoom - out in Figure 2-27.
-
35
Figure 2-29: Fall experiment 1 after time 7s
Figure 2-30: Zoom out fall experiment 1
-
36
By do one more experiment in Figure 2-28, we got the correct detect of fall in
final decision in nearly 60 second.
Figure 2-31: Fall experiment 2
Figure 2-32: Fall experiment 2 after time 7s
-
37
Figure 2-33: Zoom out fall experiment 2
2.4.6 Embedded program
In this section, we will describe how to implement our program in hardware of
automatic fall detection system.
Here is flowchart of fall detection program.
-
38
Figure 2-34: Fall detect flowchar program
Firstly, we want to explain why choose the sample rate data is 10Hz, frequency
10Hz it mean 1 second we will take 10 data, by the way i can calculate amount of
time to take 1 data is approximately 100ms. While our code running time of fall
detection program around 53.3ms by using timer. Therefore, data will be not
missing and our program will execute stability as well.
So the important note to let our program working well.
1data sample rate
code running time
FT
-
39
Where data sample rateF is data sampling rate. code running timeT is code running
time of fall detection program .
Fall detection program executed gradually in bellow:
In the first is initialize step. Sensor ADXL345, LCD 16x2, interrupt like Timer0,
Timer1, UART would be setup. Timer0 was set to determine the data sampling
rate frequency, timer1 was set to count the time 7s after fall had detected. Interrupt
UART was set in highest priority to temporary stopping main program and went to
interrupt service to send SMS message when truly fall occurred.
In the rest part is where posture recognition and fall detection module. Posture
recognition will tell us the posture of elderly in this time: Standing, walking, lying
or null state and fall detection will point out fall event occurred, If fall detection
module has an event of fall. Final decision is sending SMS message to relative
contact if after period of 7 second the posture of people is lying or null.
-
40
Chapter 3
RESULTS AND DISCUSSIONS
Imagine of system
Figure 3-1: Schematic of fall detection system
-
41
Figure 3-2: Automatic fall detect system
Figure 3-3: The backface of SIM900 module
-
42
Figure 3-4: The frontface of SIM900 module
Integrated system in waist body region:
Figure 3-5: Integrated fall detection system
-
43
Figure 3-6: Automatic falls detect system in human
Result and discussion
After done with this thesis, we have gotten many nice things:
- Completely one version of automatic falls detect system: Hardware, software with low cost (about 40$) and consuming fewer resources but we
were able to achieve detection of 85% accuracy in detecting of falls.
- Simple fall detect algorithms, improved base one already algorithms - Designed with response of hardware capabilities: Memories, performance. - We have been building a database of falling in Vietnamese people. - Our system can be expanded with others heath care systems such as
pressure monitoring, oxygen monitor.
-
44
Conclusions
The fall monitoring system is still a new application in Vietnam and it has good
potential to develop and commercialize. During the period I follow this research
direction, I have study some posture recognition and fall detection algorithms.
After that, I have proposed an improvement in algorithms in order to enhance the
device's performance. Firstly, the algorithms have been simulated in MATLAB
environment. After that, it can be re-programmed in C language which is suitable
with the micro controller. I have also learned how to design and develop a real
device and how to program it. For the hardware part, I has learned how to work
with the accelerometer ADXL345, process the data and filter noise from it; I also
study about: 1) I2C to communicate between sensor and the microcontroller, 2)
UART to communicate between the microcontroller with the GSM/GPRS modem
SIM900 in order to send message to relative, 3) timers in the micro controller. I
also have built a database of postures and falls. The experiment device has been
tested carefully. In lab experiment, the device can offer to an accuracy of 85%. It
can be applied to real application after further evaluation and analyses.
-
45
References
[1] Marilyn Langfeld, Adina Murch,Ann Feild. WHo Global report on falls
Prevention in older Age. France: World Health Organization, 2007.
[2] Fact sheet: Prevention of Falls among Elderly. Athens-GREECE: Center for
Research and Prevention of Injuries-CEREPRI Department of Hygiene &
Epidemiology, 2012.
[3] Report of Cost of Falls Injury in Older Persons in United States. Atlanta:
Center for Disease Control and Prevention National Center for for Injury
Prevention and Control (NCIPC), http://www.cdc.gov, 2013.
[4] Hristijan Gjoreski, Mitja Lutrek, Matja Gams. "Accelerometer Placement for Posture Recognition and Fall Detection." Intelligent Environments (IE),
2011 7th International Conference on. Nottingham: IEEE, 25-28 July 2011.
[5] Petar Mostarac, Roman Malari, Marko Jurevi, Hrvoje Hegedu, Aim Lay-Ekuakille, Patrizia Vergallo. "System for monitoring and fall detection of
patients using mobile 3-axis accelerometers sensors." Medical
Measurements and Applications Proceedings (MeMeA). Bari: IEEE, 30-31
May 2011.
[6] NingJia. "Detecting Human Falls with a 3-Axis Digital Accelerometer." July
2009. http://www.analog.com/.
[7] BharadwajS. Fall Detection with Posture recognition on Android Smart
phone. December 2012. https://github.com.
[8] Jonathan Tomkun, Binh Nguyen. "Design of a F all Detection and Prevention
System for the Elderly." Electrical and Biomedical Engineering Design
Project, Ontario, Canada, 2010.
[9] Sauvik Das, LaToya Green, Beatrice Perez, Michael Murphy. "Detecting User
Activities using the Accelerometer on Android Smartphones." 30 July ,
2010. https://www.truststc.org.
[10] WWKong. UART Universal Asynchronous Receiver and Transmitter. December 2010. http://tutorial.cytron.com.
[11] Gerry. Using the I2C Bus. n.d. http://www.robot-electronics.co.uk/.
[12] Analog Devices. "3-Axis, 2 g/4 g/8 g/16 g Digital Accelerometer." n.d.
http://www.analog.com/.
[13] Microchip Technology Incorporated. "PIC18F2420/2520/4420/4520 Data
Sheet." 2004. http://www.microchip.com/.
-
46
Appendix A
/* Name : Nguyen van Tinh K55D Title: Fall_detection of elderly people
- Reading and data process from adxl345
- use timer0 to determine time sampling data
- use timer1 to determine time is real fall occur(>=7s)
- use period interupt uart to send SMS
- Apply algorithm fall include:
- Posture recognition
- falldetection
- Final decision
- send SMS through GSM Sim900
*/ #include // MCU
#device HIGH_INTS = TRUE // To use priority interrupt of Timer1
#include
//============================== Initialize system step ============================//
#use delay (clock=20000000) // Clock Crystal 20 Mhz
#use rs232 (baud=9600, xmit=PIN_C6, rcv=PIN_C7) // UART communication
#use i2c (Master,sda=PIN_C0, scl=PIN_C1) // I2C interface
#fuses HS, NOPROTECT, BROWNOUT, PUT, NOLVP // Setup the complier
#include // LCD 16x2 library
#define DEVICE1 (0x53) // Address of ADXL345 sensor
#include
#include //========================== Define ADXL345 register address =======================//
#define BW_RATE 44
#define POWER_CTL 45
#define DATA_FORMAT 49
#define DATAX0 50
#define DATAX1 51
#define DATAY0 52
#define DATAY1 53
#define DATAZ0 54
#define DATAZ1 55
#define FIFO_CTL 56 //======================== Define variable and Threshold value =======================//
const int FiFo = 10 ; // window size
const float th = 10 ; // to remove dc Th
const float th1 = 0.7; // threshold to check walking or null
const int th2 = 4.0 ; // threshold to check lying or standing
const float sigma = 0.15 ; // remove jiter
const float value = 1.3; // threshold compare to detect fall Th4
int id, power;
signed int16 aXout[FiFo] ; // FiFo buffer array
signed int16 aYout[FiFo] ;
signed int16 aZout[FiFo] ;
signed int16 Acce_OutputX = 0 ; // Output 3-axis ADXL345 variable signed int16 Acce_OutputY = 0 ;
signed int16 Acce_OutputZ = 0 ;
-
47
float aXoutAverage = 0 ; // Averages variable float aYoutAverage = 0 ;
float aZoutAverage = 0 ;
float gx = 0 ; // Aceleration sensor variable in m/s^2
float gy = 0 ; float gz = 0 ;
float g = 0 ; // An norm aceleration
/* Timer0 variable to sample data */
int flag0 = 0,dem0 =0; // Timer0 variable-> Data sample rate
int flag1 = 0,dem1 = 0 ; // Timer1 variable-> Counter time after fall
/* variable to data processing */
float a_vec[FiFo]; // store a_vec
float sig[FiFo]; // array store norm acceleration
int decision_signal[FiFo] = {0,0,0,0,0,0,0,0,0,0}; int zrc[FiFo] = {0,0,0,0,0,0,0,0,0,0}; // array for algorithm process
int fall_decisionsignal[FiFo] = {0,0,0,0,0,0,0,0,0,0};
void write(int device, byte address, byte val); // function for write in I2C interface
byte read(int device, byte address) ; // function for read in I2C interface
void timer0_ini(void); // function for initialize Timer0
void interrupt_timer0_isr(void); // function interrupt service Timer0
void timer1_ini(void); // function for initialize Timer1
void interrupt_timer1_isr(void); // function interrupt service Timer1
// ---------------------------------------------variable and function for sim 900-------------- -----------------------//
char c=0x00,c1=0x00,c2=0x00,c3=0x00,c4=0x00,c5 =0x00,c6=0x00; // variable to check interrupt UART int8 new_sms = 0;
void ngat(); // function interrupt UART
void reset(); // reset SIM900
void at_command(); // function check AT-COMMAND
void send_sms(); // function send SMS
//---------------------------------=----------------- initialize ADXL345-------------------------------------------------//
void ini_adxl345(void)
{
write(DEVICE1,FIFO_CTL,0x9f);
write(DEVICE1,DATA_FORMAT,0x00); // 0x00001001 +-2g 10 bit
write(DEVICE1,BW_RATE,0x0d); // baud rate 400hz I2C interface delay_us(10);
write(DEVICE1,POWER_CTL,0x2D);
delay_us(10);
write(DEVICE1,POWER_CTL,0x08);
}
//============================== Main Program =================================//
void main()
{
int i,w,count = 0,vitringa; // variable to algorithm process
float diff[FiFo],minmax_attr ;
int tmin , tmax; int flag = 0;
set_tris_d(0x00); // intialize MCU pin
set_tris_a(0xff);
SET_TRIS_B(0x00);
-
48
enable_interrupts(GLOBAL); // enable interrupt in GLOBAL
enable_interrupts(INT_RDA); // enable interrupt UART
timer0_ini(); // initialize Timer0
ini_adxl345(); // initialize ADXL345 reset();
at_command(); // initialize SIM900
reset();
for (i=0 ;i
-
49
g = sqrt(gx*gx + gy*gy + gz*gz); // calculate the norm value
//------------------------------------------- Queue of data afer signal process---------------------------------- //
for(i= 0 ; i
-
50
{ diff[i+1]= a_vec[i+1] - a_vec[i];
}
i = 2; while((i 0 && flag ==1)
{
tmin = i ;
flag = flag + 1;
}
else if (diff[i] > 0 && diff[i+1] < 0&& flag ==0)
{
tmax = i; flag = flag +1;
}
i++;
}
minmax_attr = a_vec[tmax]-a_vec[tmin];
if(minmax_attr < value || tmax < tmin)
{
tmin = 0;
tmax = 0;
}
if(tmin != tmax)
{ for(i = tmin ;i < tmax;i++)
{
fall_decisionsignal[i] = 1 ;
}
}
tmin = 1;
tmax = 1;
flag = 0;
//============================ Final Fall decision =============================//
for(i = 0;i 7s -> Send SMS
{ dem1 = 0;
flag1 =0;
DISABLE_INTERRUPTS(INT_TIMER1);
if( decision_signal[vitringa] == 10 ||decision_signal[vitringa] == 15 )
-
51
{ dem1 = 0;
output_high(PIN_B1);
delay_ms(1000);
send_sms(); output_low(PIN_B1);
DISABLE_INTERRUPTS(INT_TIMER1);
}
}
//====================== Detele variable, array for next process ==================== //
aXoutAverage = 0 ;
aYoutAverage = 0 ;
aZoutAverage = 0 ;
for(i = 0 ; i
-
52
}
// ================================= Timer1 initialize ============================//
void timer1_ini(void)
{ setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 );
set_timer1(0);
dem1 =0;
}
// ================================ Timer0 interrupt service ========================//
#INT_TIMER0
void interrupt_timer0_isr(void)
{
clear_interrupt(int_timer0);
set_timer0(0); // counter from 0
dem0++; if(dem0 == 10 ) // f = 8hz
{
flag0 = 1;
dem0 = 0;
}
}
// ================================= Timer1 interrupt service =====================//
#INT_TIMER1
void interrupt_timer1_isr(void)
{
clear_interrupt(int_timer1); set_timer1(0);
dem1++;
if(dem1 ==80)
{
flag1 = 1;
dem1 =0 ;
}
}
// ========================== Function check interrupt in UART ======================//
#INT_RDA FAST // period interrupt void ngat()
{
c=getc();
if(c=='\r') c1=c;
if(c=='\n') c2=c;
if(c=='O') c3=c;
if(c=='K') c4=c;
if(c=='\r') c5=c;
if(c =='\n')c6=c;
if(c1=='\r' && c2=='\n' && c3=='O' && c4=='K'&& c5 =='\r'&& c6=='\n') new_sms=1;
}
// =========================== Function to reset SIM900 ===========================// void reset(void)
{
int i ;
new_sms =0;
-
53
c1 = 0x00; c2 = 0x00;
c3 = 0x00;
c4 = 0x00;
c5 = 0x00; c6 = 0x00;
}
// ========================= Function check AT- Command =========================//
void at_command(void)
{
int8 j = 0;
j=0;
while(j++)
{
printf("AT\n\r"); // wait for interrupt
if(new_sms ==1) {
new_sms = 0;
printf("AT-OK");
delay_ms(100);
break;
}
}
}
// ============================ Function to send SMS ============================//
void send_sms(void)
{
int i ; printf("AT+CMGS=\"01667646812\"\r\n"); // Contact relative'number to send SMS
i = 0;
delay_ms(2000);
printf(" PHAT HIEN NGA !"); // contain of SMS
putc(26); // ending message 26
printf("\"\r\n");
delay_ms(1000);
printf("Gui tin nhan...");
delay_ms(100);
printf("Da gui tin..");
delay_ms(100);
}
Link video demo of fall detect system:
https://www.youtube.com/watch?v=X3lng3HEqm8