|Year : 2019 | Volume
| Issue : 2 | Page : 49-56
Patient health monitoring system based on zigbee communication protocol
Mohanad Abdulhamid1, Kiprono Victor2
1 Department of Electrical Engineering, Al-Hikma University, Baghdad, Iraq
2 Department of Electrical Engineering, University of Nairobi, Nairobi, Kenya
|Date of Submission||08-May-2019|
|Date of Acceptance||30-May-2019|
|Date of Web Publication||30-Jul-2019|
Dr. Mohanad Abdulhamid
Al-Hikma University, Baghdad
Source of Support: None, Conflict of Interest: None
This study presents a review of ZigBee communication protocol and a wireless sensor network (WSN) for monitoring patients' physiological conditions continuously using ZigBee communication protocol. The physiological conditions monitored are body temperature and pulse rate. The body temperature and pulse rate are monitored by ZigBee sensor nodes for each patient, and the output is transmitted via ZigBee communication protocol to a ZigBee base node. A peer-to-peer network topology is implemented with three ZigBee sensor nodes and a ZigBee base node. The observed physiological signals are then sent from the ZigBee base node to a remote wireless monitor hosted in a personal computer via a universal serial bus. The remote wireless monitor is made of a web server and web interface. The medical attendant can then simultaneously monitor remotely multiple patients from one patient monitoring station.
Keywords: Patient health monitoring, wireless sensor network, ZigBee communication protocol
|How to cite this article:|
Abdulhamid M, Victor K. Patient health monitoring system based on zigbee communication protocol. Imam J Appl Sci 2019;4:49-56
| Introduction|| |
A wireless sensor network (WSN) consists of a number of wireless sensor devices working together to achieve a common objective. This technology has the capability of providing enhanced mobility and increased reliability.
Advances in WSN have given rise to numerous applications under health care. WSNs designed for medical applications are often referred to as wireless medical sensor networks (WMSNs). Wireless medical sensors are arranged on a patient's body and can be used to closely monitor the physiological conditions of patients. These medical sensors monitor the patient's vital body signs such as temperature, heart rate, blood pressure, and oxygen saturation and then transmit the data to a remote location.
WMSNs differ from traditional WSNs, in that they involve direct human involvement such as patients, doctor, and nurse; are utilized in small scale; and must support mobility for patient to be able to carry the device. Applications of WSNs in health-care systems can be divided into three categories: patient monitoring in clinical settings such as newborn units and critical care units, remote health-care monitoring for chronic and elderly patients, and collection of long-term databases of clinical data.
WMSNs have several advantages over traditional wired systems such as ease of use, reduced risk of infections, reduced risk of failures, reduced user discomfort, enhanced mobility, increased efficiency of treatment at hospital, and lower cost of delivery. They also carry a promise of quality care across most health-care applications as they can be wearable, implantable, and can be integrated with many types of wireless communication.
Present patient monitoring systems in hospitals require that sensors be hardwired to bedside patient monitors for continuous measurement of patient's physiological parameters. These patient monitoring systems confine patients to hospital beds and also necessitate frequent checks by health-care professionals to monitor and collect data on the patient's physiological parameters.
The main objective of this study is to study and design a WSN for monitoring patient's physiological conditions continuously using ZigBee. The physiological conditions of the patients are monitored by sensors, and the output of these sensors is transmitted via ZigBee, and the same has to be sent to the remote wireless monitor for acquiring the observed patient's physiological signal.
| Design Methodology|| |
Patient health monitoring system
The patient health monitoring system consists of patient sensor nodes attached to different patients, a base station node, and a web server and interface for acquiring the observed patient physiological signals. The system block diagram is shown in [Figure 1].
Design of wireless sensor network
The network topology adopted is a peer-to-peer topology. The patient health monitoring is a multipatient system, which monitors many patients at a time, resembling a hospital setting. To cover a wide range of network where many patients can be covered, a peer-to-peer network topology is best suited.
A peer-to-peer topology allows multiple hops to route messages from any device to another device in the network. It is also self-healing; if a path fails, the node will find an alternate path to the destination node. The peer-to-peer topology adopted consists of three router nodes and a personal area network (PAN) coordinator. [Figure 2] shows the peer-to-peer network topology adopted.
Design of ZigBee sensor node
The patient sensor nodes consist of LM35 DZ temperature sensor, pulse sensor, power supply unit, Atmega 328P-PU microcontroller, and XBee series 2 module which does communication based on ZigBee communication protocol. These components are described in the following sections.
Lm35 Dz Temperature Sensor
The LM35 DZ temperature sensor is a precision integrated-circuit temperature device whose output voltage is linearly proportional to the centigrade temperature. For a full temperature range of −55°C–150°C, no external calibration is required to achieve an accuracy of +0.75°C. It has a linear scale factor of 10 mV/°C, operates at 4–30 V, draws only 60 μA current from supply, has a low output impedance of 0.1 Ω for 1 mA load, and is suitable for remote applications.
The pulse sensor is essentially a photoplethysmograph, a medical device used for noninvasive heart rate monitoring. The heart pulse signal that comes out of photoplethysmograph is an analog fluctuation in voltage. The pulse wave is called a photoplethysmogram (PPG).
The pulse sensor amplifies the raw signal of the pulse signal and normalizes the pulse wave around midpoint in voltage. The pulse sensor responds to relative changes in light intensity. If the amount of light incident on the sensor remains constant, the signal value remains at midpoint of analog-to-digital converter range. When more light is added, the signal goes up and vice versa. Light from the green light-emitting diode that is reflected back to the sensor changes during each pulse.
Atmega328P-PU is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. It has 32 kb flash memory, 1 kb electrically erasable programmable read-only memory (EEPROM), and 2 kb static random-access memory (SRAM). It consists of 14 digital I/O pins, of which 6 support pulse width modulation (PWM) and 6 analog pins. Two pins are connected to a 16-MHz crystal oscillator to provide a clock pulse for the Atmega chip for synchronization with devices connected to it. The chip operates on a voltage range of 1.8–5.5 V. It also has a reset pin allowing a program to be rerun over. It has a 10-bit analog to digital signals for interpreting analog signals and supports universal asynchronous receiver/transmitter (UART) serial communication.
Design of Power Supply
The XBee series 2 module requires a minimum of 2.1 V and a maximum of 3.6 V for proper functioning. Atmega328P-PU operates from 1.8 V to a maximum of 5.5 V. LM35 DZ temperature sensor operates from 4 V level to a maximum of 30 V. Pulse sensor operates on a 5 V supply level. For the ZigBee sensor node, the power supply chosen is a 9 V battery to power the XBee series 2 module, Atmega328P-PU, and the temperature and pulse sensors. To provide a 5 V fixed constant supply to the LM35 DZ temperature sensor and pulse sensor, L7805 voltage regulator is employed.
L7805 voltage regulator is a three-terminal positive fixed voltage regulator; it accepts a minimum of 7 V to a maximum of 25 V as input voltage and provides a constant 5 V as output voltage. The operation of the voltage regulator requires a 0.33 μF and 0.1 μF input and output capacitors, respectively. The 0.33 μF input capacitor is used to filter out any noise coming from the voltage source; it acts as a bypass capacitor by shorting the AC signal of the voltage source signal to ground. The 0.1 μF capacitor is also used to filter out high-frequency signals on the DC output of the voltage regulator.
L78 L33 voltage regulator is also employed to provide a 3.3 V supply level to power the XBee series 2 module. The 0.33 μF and 0.1 μF input and output capacitors, respectively, are used to reduce ripple effect from AC signals at the input and output.
Xbee Series 2 Module
XBee is the name given to the physical radio module by Digi International. XBee series 2 radiofrequency (RF) module has been designed to operate within the ZigBee communication protocol and supports the unique needs of low-cost, low-data rate, low-power WSNs. It consists of ZigBee firmware loaded onto it and operates within the Industrial Scientific Medical, 2.4 GHz frequency band. [Figure 3] shows XBee series 2 module.
Serial Communication and Interface
The XBee series 2 module interfaces to a host device through a logic-level asynchronous serial port. It can communicate with any logic and voltage compatible UART through its serial port or through a level translator to any serial device. Devices that have a UART interface can connect directly to the pins of the module. Serial communication depends on the two UARTs being configured with compatible settings; the settings are baud rate, parity, start bits, stop bits, and data bits.
XBee series 2 module supports transparent/command mode (AT) and application programming interface (API) mode. In AT mode, the module acts as a serial line replacement; it simply passes information exactly as it receives it. Transparent mode is used to send data through the XBee series 2 module to a remote destination module. Command mode is used when communicating directly with the module such as when reading configuration or altering it.
API mode operation requires that communication with the module be done through a structured interface; data are communicated in frames in a defined order. The API specifies how commands, command responses, and module status messages are sent and received from the module using a UART data frame.
The general API frame format consists of a start delimiter, length, frame data, and checksum. The start delimiter is a unique number that indicates the beginning of the data frame. XBee API employs 7E for the start delimiter. The length indicates the number of bytes between the length and checksum. The frame data are specific to each message received from the XBee radio; it is made up of frame type, 64-bit source address, 16-bit source network address, and the unique data specific to the frame type. The checksum is the 8-bit sum of bytes from offset three to this byte.
The XBee series 2 module used in the ZigBee sensor node is a router with ZIGBEE ROUTER API firmware. X-CTU application is used to configure XBee series 2 module. X-CTU is an application designed by Digi International to enable users to interact with Digi RF modules. It has a graphical user interface and tools necessary to set up, configure, and test XBee RF modules. The parameters set are PAN ID – FAFA and API mode 2 enabled.
Xbee Series 2 and Atmega328p Communication
To connect the XBee module to Atmega328P, the DOUT and DIN pins of the module must be connected to a serial port on the Atmega328P. There are two kinds of serial ports available on Atmega328P: hardware and software serial ports.
The hardware serial port is basically a UART. The XBee series 2 has a hardware serial port and can easily interface with the Atmega328P. The software serial port is a serial port implemented in software using digital input/output pins on the Atmega328P, which monitors the state of the input/output pins for each bit separately.
| Zigbee Sensor Node Circuit|| |
Combining the design of the power supply unit, Atmega328P-PU, LM35 DZ temperature sensor, pulse sensor, and XBee series 2 module, the complete sensor node circuit is shown in [Figure 4]. Three circuits are then implemented for three ZigBee sensor nodes.
ZigBee sensor node operation
Monitoring of Physiological Conditions
Physiological conditions monitored are body temperature and pulse rate. For the measurement of body temperature, LMDZ temperature sensor is used; it is calibrated directly in degree Celsius. The output of this sensor is analog signal and is connected to the analog input pin of the Atmega328P microcontroller.
For the measurement of pulse rate, when the heart pumps blood through the body, with every beat, there is a pulse wave that travels along all arteries to the very extremities of capillary tissues. Actual blood circulates in the body much slower than the speed of the pulse wave. A rapid upward rise in signal value occurs as the pulse wave passes under the pulse sensor and then the signal falls back down toward the normal point.
By finding successive moments of instantaneous heart beat and measuring the time between, called interbeat interval (IBI), the beats per minute (BPM) can be computed. For accuracy, the BPM is derived after every beat from an average of the previous 10 IBI times. The IBI can be measured by timing between moments when the signal crosses 50% of the wave amplitude during the upward rise.
A regular sample rate with high enough resolution is required to get reliable measurement of the timing between each beat. An 8-bit hardware timer on the Atmega328P, Timer2, is setup to throw an interrupt every other millisecond. That gives a sample rate of 500 Hz and a beat-to-beat timing resolution of 2 ms. Next is to determine the pulse rate in BPM from the following procedure.
The function interrupt service routine is called every 2 ms. It takes an analog reading of the pulse sensor and increments the counter variable. The next procedure is keeping track of the highest and lowest values of the pulse wave (PPG).
Building and Sending Packet
When the body temperature and pulse rate have been acquired, their values are to be transmitted to the base station node. The sender, Atmega328P, sends a ZigBee transmit request API frame containing the destination address and payload to the XBee series 2 module for transmission, and then it receives a ZigBee transmit status API frame which indicates whether the transmission is successful or not.
A ZigBee transmit request packet is used to send data to other ZigBee nodes; it contains the following fields:
- 64-bit destination address – This field is a must and indicates where the packet should be sent. The value 0 × 0000000000000000 is used to send to the coordinator while 0 × 000000000000FFFF is used to send a message to all the other nodes
- 16-bit destination address – This field is optional and is used if the 16-bit network address is known
- The payload – The payload contains the actual content for the message; it is specified in two parts: a pointer to the data to be sent and the length of the data.
The library “binary.h” is used in constructing the packet. It uses “AllocBuffer” which allocates a region of memory where the packet is constructed. The append method is then used to add data to the buffer. A packet structure is designed to hold the body temperature and BPM value. This is necessary, so that there is an agreement between the sender and receiver about the meaning of all bytes in the payload. Six bytes of memory are required to hold body temperature (4 bytes float) and BPM (2 bytes volatile integer).
Design of ZigBee base node
The ZigBee base node acts as the data collector for data transmitted by the ZigBee sensor nodes. It is the destination device for data sent from the ZigBee sensor nodes. The ZigBee base node consists of XBee series 2 module, Arduino UNO, and a personal computer. Arduino UNO is described in the following section.
Arduino UNO is a microcontroller board based on Atmega328P-PU. It has 6 analog input pins; 14 digital input/output pins, 6 of which support PWM; 16 MHz quartz crystal; universal serial bus (USB) connection; power jack; an in-circuit serial programming header; and a reset button.
It features the Atmega8U2 programmed as a USB-to-serial converter. The operating voltage is 5 V, recommended input voltage is 7–12 V, DC current per input/output pins is 40 mA, and DC current for 3.3 V is 50 mA. The Atmega328 has 32 kb of flash memory for storing code, of which 0.5 kb is used for the boot loader, and it also has 2 kb of SRAM and 1 kb of EEPROM.
Digital pins 0 and 1 are used for UART TTL (5 V) serial communication, for receiving and transmitting TTL serial data. These pins are connected to the corresponding pins of the Atmega8U2 USB-to-TTL serial chip; it also supports service access point communication.
The microcontroller on the board is programmed using the Arduino programming language and Arduino integrated development environment. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board.
Xbee Series 2 Module
The XBee series 2 module used in ZigBee base node is a coordinator with ZigBee COORDINATOR API firmware. The parameters set are PAN ID – FAFA and API mode 2 enabled. The base node circuit is shown in [Figure 5].
ZigBee base node operation
Receiving and Parsing Packet
Whenever a packet is received, it is sent out the UART as ZigBee receive packet API frame which contains the sender's address and the payload. The receiver ZigBee module sends an acknowledgment back to the sender to report the status of transmission. The PAN coordinator receives data from the remote ZigBee nodes.
Parsing a packet means deconstructing the raw received bytes into the original separate values. A buffer is created to hold the packet, and the remove method is used to remove values from the buffer one by one in the order in which they are stored. The buffer class from the library binary.h is used.
The source 64-bit address, body temperature, and pulse rate values are sent through a USB serial port to the personal computer.
Design of remote wireless monitor
The wireless monitor is set up using a WampServer. WampServer is a software stack for windows operating system and consists of an Apache web server, MySQL database, and PHP scripting language. It provides a platform for web development.
Setting up MYSQL database and reading from serial port
A MYSQL database is setup with a patient data table of five columns. The columns hold index of each data received, current timestamp, 64-bit source address of the ZigBee sensor nodes, pulse rate, and body temperature values. The 64-bit address of the remote nodes, body temperature, and pulse rate values parsed by the base node are sent to the personal computer's serial port. A script based on processing is used to read each line of the serial port, slice each line elements, and send the values to the MYSQL database setup.
A simple website is developed using PHP programming language, Hypertext Markup Language (HTML), and Bootstrap. The PHP script is used to connect to the MYSQL database and query the database for the latest values stored for each ZigBee sensor node address. The HTML script is used to display the queried data onto a web page, which is made to refresh every 3 s to display the latest values acquired. Bootstrap is used to improve the visual appearance of the web page.
| Results|| |
ZigBee sensor node
[Figure 6] shows the assembled ZigBee sensor node circuit.
When the ZigBee sensor nodes are within close range, the peer-to-peer network topology of [Figure 7] is obtained, the coordinator is identified by 16-bit network address 0000, and for the three sensor nodes, they are 9667, 4921, and 0A06. The 16-bit network addresses are randomly generated and issued to the sensor nodes by the PAN coordinator.
The 64-bit unique physical address identifies the ZigBee devices; the link quality indication (255/255) shows the strength of the signal transmission between the nodes. The green color denotes a strong signal quality between the nodes within range.
ZigBee base node
Base node circuit
The base node circuit is shown in [Figure 8].
X-CTU terminal output
The ZigBee base node receives the packet sent from the ZigBee sensor nodes as ZigBee receive packet API frame as shown in [Figure 9]. The ZigBee receive packet is identified by frame type 0 × 90.
The packet shown in [Figure 9] is deconstructed to the respective bytes at the base node. Each ZigBee sensor node is identified with the unique 64-bit media access control address.
Serial port output
After deconstruction of the packet to bytes, the 64-bit node address, body temperature, and pulse rate are sent to the serial port via USB.
Web interface output
An instance of the web page is shown in [Figure 10].
| Performance Analysis|| |
The range test is carried by approximately measuring the physical distance up to the point where the coordinator cannot discover a remote node within range. X-CTU application is used.
When the ZigBee sensor nodes are deployed outdoors, the greatest range where the coordinator could still scan and find a remote node is found to be approximately 40 m. Placing one node, 0013A20040F2A926, approximately 40 m from the coordinator and nodes 0013A20040F2A724 and 0013A20040F2A8FA approximately 20 and 30 m further from the other node, respectively, the topology of [Figure 11] is obtained. It is established that there is an active link between the routers, but a very weak link with the coordinator based on link quality indication. The range test verified the capability of peer-to-peer networking.
Range test is carried out taking advantage of the X-CTU application, data throughput function. The data throughput can only be carried between the coordinator and a router. XBee series 2 radio can have a maximum of up to 35 Kbps throughput.
For the ZigBee sensor nodes within close range as shown in [Figure 7], the coordinator-to-router average data transfer ratio is tested for transmission of 100 bytes. The values obtained are tabulated in [Table 1].
For the ZigBee sensor nodes deployed outdoor as shown in [Figure 11], the coordinator-to-router average data transfer ratio is tested for transmission of 100 bytes. The values obtained are tabulated in [Table 2].
| Conclusion|| |
This study has presented a review of the ZigBee communication protocol based on the ZigBee specification by ZigBee alliance and IEEE 802.15.4 standard for low-rate wireless networks. A design of a WSN for monitoring patients' pulse rate and body temperature continuously using the ZigBee communication protocol has been implemented. Body temperature and pulse rate were monitored using sensors, and output of the sensors was transmitted via ZigBee to the base station node. The design covered three ZigBee sensor nodes and implemented a peer-to-peer network topology. It is a modular approach in that more nodes can be added to monitor more patients at a time. A remote wireless monitor was implemented using web server and web interface for acquiring the observed patients' physiological signals. The web interface was made to refresh after every 3 s, for real-time monitoring of the patient physiological conditions.
Financial support and sponsorship
Conflicts of interest
There are no conflicts of interest.
| References|| |
AlSharqi K, Abdelbari A, Abou-Elnour A, Tarique M. ZigBee based wearable remote healthcare monitoring system for elderly patients. Int J Wirel Mob Netw 2014;6:53-67.
Dinesh B, Shivaji T. Zigbee based wireless patient monitoring. Int J Innov Res Electr Electron Instrum Control Eng 2016;4:265-7.
Dhanya S, Janaki A, Jayanthi K, Ramya V. Wireless health monitoring using sensors and modules. Int J Innov Res Sci Eng Technol 2018;7:394-8.
Venkateswara N, Puviarasi R. Simulation of zigbee based health monitoring system for patients using proteus. Fourth International Conference on Advances in Electrical, Electronics, Information, Communication and Bio-Informatics. India: IEEE; 2018.
[Figure 1], [Figure 2], [Figure 3], [Figure 4], [Figure 5], [Figure 6], [Figure 7], [Figure 8], [Figure 9], [Figure 10], [Figure 11]
[Table 1], [Table 2]