CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES ULISSES JOSE MASSAFERA SOUZA APLICAÇÃO DA TECNOLOGIA ZIGBEE NO CUIDADO DE SAÚDE PERVASIVO LINS/SP 2º SEMESTRE/2013 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES ULISSES JOSE MASSAFERA SOUZA APLICAÇÃO DA TECNOLOGIA ZIGBEE NO CUIDADO DE SAÚDE PERVASIVO Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para Obtenção do Título de Tecnólogo em Redes de Computadores. Orientador: Prof. Me. Anderson Pazin LINS/SP 2º SEMESTRE/2013 Dedico este trabalho aos meus pais, por toda a força e amor que ofereceram durante a minha trajetória de vida, por formarem não só meu carácter pessoal como também profissional. A vocês, expresso o meu maior agradecimento e serei eternamente grato. ULISSES JOSE MASSAFERA SOUZA AGRADECIMENTOS Em mais uma etapa alcançada, quero expressar os meus sinceros agradecimento a todos que fizeram parte deste desafio. Agradeço em primeiro lugar, a Deus que iluminou o meu caminho durante esta caminhada, ao Profº Anderson Pazin, por dedicar seu tempo e conhecimento para a realização deste trabalho e ao Profº João Luis C. Moraes, por iniciar e indicar o tema proposto neste trabalho e aos conselhos atribuídos para a realização deste. A todos os professores que me acompanharam durante a graduação Adriano Marquez, Alexandre Ponce, Fábio Lucio Meira, Júlio Lieira, Mario Pardo, Renato Barros; Aos amigos e colegas de curso, pelo incentivo, apoio e amizades criadas. Um obrigado em especial a Daniel Targino, Felipe Maciel, Guilherme Manfrim, Gustavo Gusmão, Henrique Brites, Igor Oliveira, Jefferson Mello, Luis Antônio e Marcelo Carnevali. ULISSES JOSE MASSAFERA SOUZA RESUMO Um novo padrão denominado como ZigBee 802.15.4, vem sendo testado no mercado de sensoriamento remoto. Este padrão define um conjunto de regras e especificações para comunicação sem-fio entre dispositivos eletrônicos, dando prioridade e ênfase a equipamentos com baixo consumo de energia. Seu conceito segue premissas que tendem a convergir junto com novas tecnologias e aplicações do futuro. O presente trabalho visa explanar as características e funcionalidades desse novo padrão em uma rede de sensoriamento médico. Para isto, esta tese apresenta inovações na mensuração de dados vitais de um paciente que está internado em uma clínica ou hospital. Com o desenvolvimento de um oxímetro de pulso de baixo custo é possível analisar os batimentos cardíacos e a oxigenação sanguínea de modo autônomo. Seria de maior facilidade ao médico poder acessar as informações de todos seus pacientes através de um leve toque em seu celular ou até mesmo ser alertado via SMS, que um paciente está sofrendo alguma enfermidade. A construção de um dispositivo, capaz de realizar a coleta dessas informações de maneira eficaz e com qualidade, aliado a um sistema autônomo para o controle dessas informações, este trabalho apresenta seu desenvolvimento teórico e sua aplicação prática, analisando os recursos disponibilizados como também sua qualidade de serviço em operação Palavras-chave: Zigbee, 802.15.4, Oximetria, Pervasivo. ABSTRACT A new standard called ZigBee 802.15.4, has been testing in the remote sensing market. This standard defines a common set of rules and specifications for wireless communication between electronic devices. That is indeed the reason to give priority and emphasis on devices with low power consumption. The concept about it follows assumptions tend converging with new technologies and applications of the future. This work suggest to explain the features and functionality of this new standard on a network of medical sensing. In fact, this thesis submits innovations in measuring vital signs of a patient who is hospitalized in a clinic or hospital. Starting with the birth of a pulse oximeter it became possible to decrease the cost to analyze heartbeat and blood oxygenation in a autonomous manner. It would be easier to doctor can access the information about all their patients through a soft touch on your mobile phone or even he can be alerted via SMS. He can know when a patient is suffering from an illness. The development of a device is capable of grouping of this information. It is using efficiency and quality match with an autonomous system for the control of such information. This work suggest the theoretical development and pratical application, analyzing the resources available as well as their quality service functioning. Keyworkds: ZigBee, 802.15.4, Oximetry, Pervasive. LISTA DE ILUSTRAÇÕES Figura 1.1 - Topologia em Estrela ............................................................................. 22 Figura 1.2 - Topologia em Árvore de Agrupamentos................................................. 23 Figura 1.3 - Topologia em Malha............................................................................... 24 Figura 1.4 - Pilha de Protocolos Padrão Zigbee ........................................................ 25 Figura 1.5 - Modulação BPSK ................................................................................... 27 Figura 1.6 - Modulação O-QPSK............................................................................... 28 Figura 1.7 - Quadro de Dados PHY .......................................................................... 28 Figura 1.8 - Estrutura do quadro superframe ............................................................ 30 Figura 1.9 - Quadro de Dados ................................................................................... 31 Figura 1.10 - Quadro de Reconhecimento ................................................................ 32 Figura 1.11 - Quadro NWK ........................................................................................ 34 Figura 1.12 - Frame de Dados e Comandos ............................................................. 34 Figura 1.13 - Quadro Geral APS ............................................................................... 36 Figura 1.14 - Campo de Controle do quadro APDU .................................................. 37 Figura 1.15 - Uso de endpoints em uma aplicação de interruptores e lâmpadas ...... 39 Figura 2.1 – Gráfico da absorção de luz da hemoglobina ......................................... 44 Figura 2.2 – Sensor de transmitância e refletância ................................................... 44 Figura 2.3 – Sinal típico da oximetria de pulso .......................................................... 45 Figura 2.4 - Diagrama de absorção de luz ................................................................ 45 Figura 2.5 - Diagrama do circuito interno OPT101 .................................................... 47 Figura 2.6 - Gráfico de resposta espectral ................................................................ 48 Figura 2.7 - Implementação básica de operação (+2ºC até +150ºC) ........................ 49 Figura 2.8 - Amplificador Operacional Comum.......................................................... 50 Figura 2.9 - AOP seguidor unitário ............................................................................ 51 Figura 2.10 - AOP integrador .................................................................................... 51 Figura 2.11- Módulo XBee Pro Series 2 .................................................................... 52 Figura 2.12 - Arduino UNO R3 .................................................................................. 57 Figura 3.1 – Visão geral dos módulos do sistema ..................................................... 61 Figura 3.2 - Circuito do sensor e condicionador de sinal ........................................... 63 Figura 3.3 - Teste laboratorial para captura do sinal ................................................. 64 Figura 3.4 - Fluxo de atividades do oxímetro ............................................................ 66 Figura 3.5 - Fluxograma principal do dispositivo ....................................................... 67 Figura 3.6 - Display LCD do dispositivo .................................................................... 68 Figura 3.7 - Xbee acoplado ao Shield e Arduino ....................................................... 69 Figura 3.8 - Interação entre Xbee, servidor e banco de dados ................................. 72 Figura 3.9 - Pacote Inicializador em Hexadecimal .................................................... 73 Figura 3.10 - Xbee Explorer conectado ao notebook ................................................ 73 Figura 3.11 - Tela principal da aplicação ................................................................... 74 Figura 3.12 - Informações do Xbee e Modem HSDPA .............................................. 75 Figura 3.13 - Fluxo de atividades do servidor............................................................ 76 Figura 3.14 - Pacote de Dados em Hexadecimal ...................................................... 77 Figura 3.15 - Log do servidor .................................................................................... 79 Figura 3.16 - Monitoramento em tempo real ............................................................. 80 Figura 3.17 - Detalhes do monitoramento do paciente .............................................. 81 LISTA DE TABELAS Tabela 1.1 - Faixas de Frequência do padrão IEEE 802.15.4 ................................... 27 Tabela 3.1 - Configuração módulo coordenador ....................................................... 71 Tabela 3.2 - Configuração módulo roteador .............................................................. 72 LISTA DE QUADROS Quadro 2.1 - Pacote Zigbee padrão .......................................................................... 54 Quadro 2.2 - Pacote de recepção ............................................................................. 55 Quadro 2.3 - Pacote de Identificação de Nó ............................................................. 55 Quadro 3.1 - Dados Vitais ......................................................................................... 70 Quadro 3.2 - Fim de Conexão ................................................................................... 70 LISTA DE ABREVIATURAS E SIGLAS 16ER – 16 Bits Endereço de Rede 64ER – 64 Bits Endereço de Rede ACK – Acknowledgment ADC – Analog-to-Digital Converter AF – Application Framework AIB – APS Information Base AO – Application Objects AOP – Amplificador Operacional APDU – Application Protocol Data Units APS – Application Suport Sublayer APSC – APS Counter APSDE – SAP (APS Data Entity APSME – APS Management Entity ASCII – American Standard Code for Information Interchange ASDU – Application Service Data Units BPSK – Binary Phase-Shift Keying BR – Broadcast Radius BSN – Broadcast Sequence Number CAP – Contention Access Period CFP – Contention Free Period CI – Cluster Identifier CO2 – Dióxido de Carbono CSMA-CA – Carrier Sense Multiple Access with Collision Avoidance DA – Destination Address DE – Destination Endpoint ED – Energy Detection EH – Extended Header EO – Endereço de Origem ER – Endereço da Rede EvO – Evento de Origem FC – Frame Control FCS – Frame Check Sequence FFD – Full Function Device FL – Frame Lenght FP – Frame Payload GA – Group Andress GTS – Guaranteed Time Slot HbCO – Monóxido de Carbono HbO2 – Oxi-Hemoglobina IDD – Identificação da Digi IEEE – Institute of Electrical and Eletronics Engineers IFS – Interframe Spacing IN – Identificação do Nó ISM – Industrial, Scientific and Medical ISR – Interrupt Service Routine LED – Light-Emmiting Diode LQI – Link Quality Indication LR-WPAN – Low Rate – Wireless Personal Area Network MFR – MAC Footer MHR – MAC Header MISO – Master In Slave Out MOSI – Master Out Slave In MPDU – MAC Protocol Data Unit MSDU – MAC Service Data Unit NIB – Network Information Base NLDE – Network Layer Data Entity NLME – Network Layer Management Entity NPDU – Network Protocol Data Unit NS – Número de Sequência NTC – Negative Temperature Coeficiente OPA – Oximetria de Pulso Arterial O-QPSK – Offset-Quadrature Phase-Shift Keying OR – Opção de Recepção OSI – Open System Interconnection PAN – Personal Area Network PE – Endereço de Parentesco PHR – PHY Header PI – Profile Identifier PPDU – PHY Protocol Data Unit PS – Preamble Sequence PSDU – PHY Service Data Unit PSK – Phase-Shift Keying PTC – Positive Temperature Coeficiente PWM – Pulse-Width modulation QPSK – Quadrature Phase - Shift Keying RFD – Reduced Function Device RHb – Desoxi-Hemoglobina RISC – Reduced Instruction Set Computer SA – Source Address SAP – Service Access Point SCK – Serial Clock SE – Source Endpoint SFD – Start of Frame Delimiter SHR – Synchronization Header SPI – Serial Periphel Interface SpO2 – Saturação do Oxigênio SS – Slave Select SSP – Security Service Provider TD – Tipo de Dispositivo TDQ – Tipo de Quadro UART – Universal Asynchronous Receiver Transmitter UTI – Unidade de Tratamento Intensivo WLAN – Wireless Local Area Network WMAN – Wireless Metropolitan Area Network ZDO – ZigBee Device Object SUMÁRIO INTRODUÇÃO .......................................................................................................... 17 1. FUNDAMENTOS DA TECNOLOGIA ZIGBEE ................................................ 19 1.1. HISTÓRIA DO ZIGBEE ....................................................................................... 19 1.2. DISPOSITIVOS ZIGBEE ..................................................................................... 20 1.3. TOPOLOGIAS DE REDE .................................................................................... 22 1.3.1. TOPOLOGIA EM ESTRELA (STAR) ........................................................................ 22 1.3.2. TOPOLOGIA EM ÁRVORE DE AGRUPAMENTOS (CLUSTER TREE)............................. 23 1.3.3. TOPOLOGIA EM MALHA (MESH) .......................................................................... 24 1.4. PILHA DE PROTOCOLO .................................................................................... 25 1.4.1. CAMADA FÍSICA (IEEE 802.15.4 PHY)............................................................... 26 1.4.2. CAMADA DE CONTROLE (IEEE 802.15.4 MAC)................................................... 29 1.4.3. CAMADA DE REDE (ZIGBEE NWK)...................................................................... 32 1.4.4. SUPORTE À APLICAÇÃO (ZIGBEE APS) ............................................................... 35 1.4.5. CAMADA DE APLICAÇÃO (ZIGBEE APL) ............................................................... 39 1.4.5.1. APPLICATION FRAMEWORK (ZIGBEE AF) ....................................................... 39 1.4.5.2. ZIGBEE DEVICE OBJECT (ZIGBEE ZDO) ........................................................ 40 2. FUNDAMENTAÇÂO TEORIA DOS COMPONENTES .................................... 42 2.1. OXIMETRIA ........................................................................................................ 42 2.1.1. PRINCÍPIOS DA OXIMETRIA ................................................................................. 42 2.2. SENSORES ........................................................................................................ 46 2.2.1. SENSOR FOTODETECTOR................................................................................... 47 2.2.2. SENSOR DE TEMPERATURA ................................................................................ 49 2.3. AMPLIFICADORES OPERACIONAIS ................................................................ 50 2.4. MÓDULO XBEE (XBP24-B) ................................................................................ 52 2.5. ARDUINO ........................................................................................................... 56 3. IMPLEMENTAÇÃO DO SISTEMA .................................................................. 60 3.1. DESCRIÇÃO DO PROBLEMA ............................................................................ 60 3.2. VISÃO GERAL DO SISTEMA ............................................................................. 61 3.3. CAPTURA DOS SINAIS ...................................................................................... 63 3.4. DISPOSITIVO LEITOR ....................................................................................... 64 3.4.1. ANÁLISE DOS DADOS DA TEMPERATURA .............................................................. 65 3.4.2. ANÁLISE DOS DADOS DO OXÍMETRO DE PULSO E BATIMENTO CARDÍACO ............... 65 3.4.3. FLUXO DE OPERAÇÃO DO DISPOSITIVO ............................................................... 67 3.4.4. EXIBIÇÃO DOS DADOS NO DISPLAY ..................................................................... 68 3.4.5. TRANSMISSÃO DOS DADOS ................................................................................ 69 3.5. REDE PAN ZIGBEE ............................................................................................ 71 3.6. APLICAÇÃO SERVIDOR .................................................................................... 72 3.7. APLICAÇÃO WEB .............................................................................................. 80 CONCLUSÃO............................................................................................................ 82 REFERÊNCIA BIBLIOGRÁFICA ............................................................................... 84 APÊNDICE A – EXPLICAÇÃO E MATERIAL DIGITAL DO PROJETO .................... 87 17 INTRODUÇÃO Os avanços tecnológicos na área da comunicação possibilitaram a mobilidade e a portabilidade de diversos equipamentos eletrônicos. Com a expansão acelerada, a busca por equipamentos utilizando topologias sem fio, cativou uma grande fatia do mercado de eletrônicos, sendo esta voltada para usuários finais e empresas de diversos segmentos e tamanhos. As tecnologias de redes sem fio em maior expansão e mais utilizadas atualmente como as redes Wi-Fi (802.11) ou bluetooth, buscam a transferência de grandes volumes de dados, segurança e qualidade das informações transmitidas, apesar de serem características essenciais e extremamente importantes é necessário prezar o consumo de energia na operação desses equipamentos, nos quais quanto maior a velocidade e quantidade de informações trafegadas, maior será o gasto de energia. Existe uma parcela do mercado voltada a aplicação pervasiva, como empresas de equipamentos médicos, sensoriamento remoto e segurança, que necessitam de equipamentos com baixo consumo de energia, sendo estes destinados a controle e monitoramento de dispositivos. São poucas as redes wireless destinadas exclusivamente a esse público, normalmente existem soluções proprietárias, onde estas não permitem a comunicação e integração para troca de dados. De acordo com a ZigBee Alliance (2008), analisando essas dificuldades a ZigBee Aliance em parceria com a IEEE (Institute of Electrical and Eletronics Engineers) trabalharam em conjunto para desenvolver um novo protocolo chamado de ZigBee IEEE 802.15.4. Essa nova tecnologia visa suprir as necessidades, proporcionando um padrão de baixo consumo, confiabilidade e segurança, baseado em uma norma aberta global, possibilitando a integração entre redes. Com toda essa tecnologia disponível, hospitais e centro médicos buscam aderir equipamentos com características pervasivas, para facilitar e melhorar a qualidade de seus serviços prestados. O ambiente hospitalar proporciona a seus funcionários um cenário muito dinâmico, que muitas vezes é necessário tempo para a sincronização de informações e esse tempo é extremamente valioso para o atendimento de um paciente ou emergência. Para isso diversos desenvolvimentos 18 atuais buscam a integração das informações, tentando fornecer, em tempo real, dados sobre paciente e interligar sistemas proprietários com tecnologias diferentes. Com tantos recursos disponíveis atualmente é um contrassenso a necessidade de ligar para um funcionário ou trocar fichas passando informações sobre o paradeiro de um determinado paciente, sem contar que a comunicação, às vezes, pode ser ineficaz entre os membros da equipe médica. Também existem situações que necessitam de cuidados urgentes, como um ataque cardíaco por exemplo, em que há a necessidade de localizar e informar o médico sobre o ocorrido. Tendo em vista esses detalhes, a aplicação da tecnologia ZigBee no cuidado médico tem como meta facilitar as trocas de mensagens e aumentar o potencial de atendimento no sentido de auxiliar os profissionais da saúde com informações automatizadas. Fazendo um estudo aprofundado do novo protocolo criado, este trabalho tem como proposta, criar um sistema médico integrado, contendo um sensor cardíaco de baixo custo, capaz de analisar os batimentos cardíacos e a oximetria de pulso arterial, um dispositivo integrado ao sensor que será capaz de enviar as informações para um servidor através da rede Zigbee e um servidor, sendo responsável por analisar as informações e traçar o desempenho de cada paciente, bem como realizar notificações em tempo real através de SMS ao médico. O desenvolvimento deste sistema possibilita analisar as vantagens e desvantagens da aplicação desta tecnologia sem fio em um ambiente hospitalar, determinando quais são suas aplicações reais para auxiliar na rotina diária de médicos e funcionários e suas possíveis implementações para a integrações entre dispositivos e sistemas. 19 1. FUNDAMENTOS DA TECNOLOGIA ZIGBEE O protocolo ZigBee é uma tecnologia que vem para facilitar as redes PAN’s (Personal Area Network), que são redes utilizadas para que dispositivos se comuniquem dentro de uma distância bastante limitada. Sua proposta é criar redes com baixo consumo de energia, que possam interagir com outros dispositivos sem a necessidade de cabos e com a possibilidade de múltiplos caminhos, tornando a entrega dos dados segura, caso algum equipamento não esteja operacional. Com características como caminhos redundantes, longo alcance, confirmação de dados e segurança, torna-se viável o seu uso neste projeto, pois os dispositivos de medição médica podem ser implementados sem a necessidade de cabeamento de dados. Outra vantagem possibilitada por essa tecnologia, é a expansão geográfica sem a necessidade de utilizar diversos dispositivos concentradores, fazendo com que um dispositivo possa interagir com outros para realizar o caminho até o dispositivo concentrador, utilizando uma rede em malha. 1.1. HISTÓRIA DO ZIGBEE A comunicação sem fio (wireless) já está presente no mercado há anos, como exemplo as redes WLAN’s (Wireless Local Area Network) e WMAN’s (Wireless Metropolitan Area Network). Com a grande expansão do mercado de dispositivos de controle e monitoramento via rádio, havia uma falta de regulamentação para a criação desses equipamentos. Sendo assim, diversos fabricantes adotaram soluções proprietárias, desenvolvidas especialmente para atender redes específicas, como as redes de automação industrial, predial, entre outras. O grande problema é que estas eram proprietárias e não seguiam uma norma ou protocolo, logo, a interligação desses equipamentos era um grande problema, visto que cada empresa adotava seus métodos e regras. (GISLASON, 2008) Grandes empresas do ramo tecnológico, como Agere System, Ember Corporation, Microchip Technology, Motorola, Philips Semiconductors, entre outras, perceberam a grande dificuldade de comunicação. Para solucionar este problema formaram uma parceria com mais de 45 corporações e criaram a ZigBee Alliance, uma organização que trabalha em conjunto para desenvolver um padrão global 20 aberto, capaz de possibilitar um controle seguro, com baixo custo e de baixa potência em redes sem fios. (GISLASON, 2008) A ZigBee Alliance desenvolveu o padrão ZigBee com base na norma IEEE (Institute of Eletrical and Eletronics Engineers) 802.15.4, que visa à regulamentação para conexão de dispositivos de rádio com baixas taxas de transferência em PAN’s. De acordo com o IEEE (2006), essa norma foi homologada em março de 2003, buscando unificar métodos de comunicação de dados para diversos tipos de equipamentos com baixa capacidade de processamento. De acordo com a ZigBee Alliance (2008), o nome ZigBee teve origem a partir de uma analogia feita entre o funcionamento de uma rede em malha e o modo de como as abelhas trabalham em seu habitat natural. Diversos estudos realizados comprovaram que as abelhas de uma colmeia, ao trabalharem em conjunto para buscar o néctar em flores, trocam informações umas com as outras sobre direção, distância e a localização de onde encontrar os alimentos. Do mesmo modo, as redes ZigBee dispõem de vários caminhos possíveis entre cada nó, além disso cada nó tem informações e capacidade suficiente para reestruturar a rede, procurando o melhor caminho para entregar as informações e reconhecer novos dispositivos. 1.2. DISPOSITIVOS ZIGBEE Em uma rede física, cada nó em uma rede, representado por um dispositivo, pode possuir dois padrões de configuração. O padrão IEEE 802.15.4 define dois tipos de dispositivos: o primeiro com funções reduzidas, RFD (Reduced Function Device) e um segundo com funções totais, FFD (Full Function Device). Os dispositivos RFD são componentes que têm a utilização destinada a aplicações simplificadas. Esses dispositivos são utilizados como componentes finais, isto é, são ligados sempre na borda da rede. Eles não são capazes de coordenar a junção de nós, realizar roteamento de informações ou descoberta de rede, por isso são considerados como elementos de função passiva. Para realizar troca de dados sempre irão se comunicar com um dispositivo de função completa. Por possuírem baixa complexidade eletrônica, podem ser facilmente implementados juntos com microcontroladores, onde recursos computacionais são reduzidos. A economia de energia é um fator essencial, por isso uma das suas características principais é poder permanecer no estado “sleep” por longos períodos. (ERGEM, 2004). 21 Os dispositivos FFD são uma classe que tem a função de coordenar a rede. Essa classe possui a finalidade de realizar a manutenção e organização da rede, para isso armazena informações de gestão interna relevantes para o funcionamento. Esses dispositivos podem se comunicar com qualquer componente da rede e transmitir informações a qualquer nó; podem servir também de ponte para outras redes ZigBee. Apesar da sua complexidade, eles também podem funcionar como dispositivos finais e exercer as funções de coordenadores ou roteadores. (ERGEM, 2004). De acordo com a ZigBee Alliance (2010), cada dispositivo pode assumir um papel lógico dentro da rede. Tais papéis podem ser de três tipos: ZigBee Coordinator, ZigBee Router e ZigBee End Device. O ZigBee Coordinator é um dispositivo do tipo FFD e tem como função formar a rede e atribuir endereços a todos os dispositivos. Ele é o dispositivo central, logo, há somente um por rede, não importando a topologia utilizada. Por ser um coordenador, tem a responsabilidade de concentrar as informações de interesse da aplicação. Sua implementação pode ser feita junto a um microcontrolador ou computador. Como possui a função essencial de manter a rede ativa, necessita estar operante a todo momento, sendo recomendado a sua utilização junto a uma fonte alimentada por energia elétrica. (FALUDI, 2011) O ZigBee Router é um elemento também associado à classe FFD. Além de ser um nó normal sendo capaz de realizar mensurações, possui a funcionalidade extra de atuar como um roteador, realizando a transmissão entre os dados dos ZigBee End Devices e ZigBee Coordinator. Por possuir essa funcionalidade extra, ele pode se comunicar com outros dispositivos do mesmo tipo, redirecionando pacotes entre os nós da rede que não conseguem se comunicar diretamente, permitindo a comunicação entre nós sem a intervenção do coordenador. (FALUDI, 2011) O ZigBee End Device é um dispositivo que desempenha as funções da aplicação; é um dispositivo do tipo RFD. É utilizado para realizar o controle e monitoramento, através dos equipamentos junto a ele construídos. Como são dispositivos finais, podem realizar comunicação somente com dispositivos do tipo Router ou Coordinator. Uma das características principais é poder operar no modo “sleep”. Esses dispositivos são projetados de tal modo que sua operação fique a 22 maior parte de tempo nesse modo, possibilitando a otimização da bateria por um grande período de tempo. (FALUDI, 2011) 1.3. TOPOLOGIAS DE REDE De acordo com o autor Ergem (2004), a tecnologia foi moldada de modo a dar suporte a dois tipos de topologias: Estrela (Star) e Par-a-Par (Peer-to-Peer), sendo que esta segunda pode ser derivada em duas aplicações complexas, como Árvore de Agrupamentos (Cluster Tree) ou Malha (Mesh). Apesar de a tecnologia ter sido moldada de modo que seja capaz de ser independente, dá a possibilidade de utilizar topologias mais simples como estrela, para aplicações básicas. 1.3.1. Topologia em Estrela (Star) Segundo o mesmo autor, a topologia em estrela foi desenvolvida para aplicações extremamente simples. Nela há apenas um ZigBee Cordinator, que tem a função de inicializar a rede e reconhecer os dispositivos finais. Figura 1.1 - Topologia em Estrela Fonte: Adaptação Ergem (2004) 23 Utilizando essa topologia, a comunicação é estabelecida apenas entre os dispositivos periféricos e o coordenador. Nesse caso é recomendado que o coordenador trabalhe apenas para gerenciar a rede, apesar de também ser implementado para efetuar leituras ou outras ações, utilizando ou não um microcontrolador. Conforme ilustra a Figura 1.1. 1.3.2. Topologia em Árvore de Agrupamentos (Cluster Tree) Pode-se considerar essa topologia como uma evolução da estrela. Nessa arquitetura é possível ver que o ZigBee Router assumiu a função de um coordenador de cada rede menor; esse dispositivo consegue apenas se comunicar com seus dispositivos finais e com o coordenador. (ERGEM, 2004) Figura 1.2 - Topologia em Árvore de Agrupamentos Fonte: Adaptação Ergem (2004) 24 Apesar de a rede conseguir se comunicar em qualquer ponto, é necessário que o ZigBee Coordinator realize essa comunicação. Os dispositivos ZigBee End Device agora passam a assumir a configuração de um nó-folha e, como são dispositivos finais, respondem seu nível hierárquico mais alto. (ERGEM, 2004). 1.3.3. Topologia em Malha (Mesh) A topologia em malha é o objetivo principal da tecnologia ZigBee; nela os ZigBee Routers possuem a capacidade de realizar a comunicação entre si, sem a necessidade de haver o controle pelo ZigBee Coordinator. Isso possibilita que a rede possa ser expandida geograficamente apenas adicionando mais dispositivos roteadores. Com essa configuração é possível ter redundância de caminho e caso aconteça de um dispositivo sair de operação, a rede é capaz de organizar outra rota para que as informações trafeguem. Figura 1.3 - Topologia em Malha Fonte: Adaptação Ergem (2004) 25 Segundo a ZigBee Alliance (2010), a característica principal dessa configuração é a possibilidade de diversas rotas para a troca de dados e implementação de algoritmos que monitoram e mantêm a rede de tal forma que sempre estará estabilizada e estruturada. A partir do momento que um dispositivo previamente configurado é inicializado, automaticamente ele é reconhecido e é definido um papel de tal modo que este contribua para as necessidades da rede. 1.4. PILHA DE PROTOCOLO Para realizar a troca de dados em uma rede de comunicação, é necessário um método que contenha especificações e características de tal maneira que o transmissor e o receptor consigam interpretar os dados enviados. Esse método é definido como protocolo e carrega todas as informações necessárias para que um determinado componente consiga realizar uma transação de informações. Com o crescimento das redes PAN’s, cada fabricante de dispositivos implementava protocolos proprietários na construção dos componentes. Apesar dos equipamentos funcionarem perfeitamente, não havia a possibilidade de realizar comunicação entre duas empresas diferentes, pois suas tecnologias só eram suportadas pelo fabricante, sendo necessária a utilização de um conversor ou integrador de dados. (GISLASON, 2008) Camada de Aplicação (APL) Suporte de Aplicações (APS) Serviço de Segurança Camara de Rede (NWK) Camada de Controle (MAC) Camada Física (PHY) Figura 1.4 - Pilha de Protocolos Padrão Zigbee Fonte: Adaptação Zigbee (2008) Essa dificuldade compromete os usuários que necessitam interligar equipamentos de tecnologias diferentes. Em cima desse problema, a ZigBee 26 Alliance formulou um conjunto de protocolos abertos, formando assim a pilha de protocolos ZigBee que foi baseada no modelo de referência OSI (Open System Interconnection), tendo a finalidade de complementar os serviços do protocolo IEEE 802.15.4, formando um padrão único e aberto. (ERGEM, 2004). Segundo Zigbee Alliance (2013), a modelagem desta pilha dá-se a uma junção de esforços e parcerias; suas camadas inferiores (Física e Controle) são mantidas pelo IEEE, que tem a responsabilidade de preservar suas características, seguindo o padrão IEEE 802.15.4. Sua camada intermediária (Rede) e superiores (Aplicações, ZigBee Device Object) são mantidas e desenvolvidas pela ZigBee Alliance e existe ainda a possibilidade da camada superior (Objeto de Aplicação) ser determinada pelo usuário, conforme ilustrado na Figura 1.4. 1.4.1. Camada Física (IEEE 802.15.4 PHY) A camada PHY foi moldada para atender todas as necessidades dos dispositivos LR-WPAN (Low Rate – Wireless Personal Area Network), sendo a camada mais baixa da hierarquia de protocolos. Possui a função de controlar a transmissão e recepção dos dados, nela é definido como os dispositivos ZigBee devem realizar a comunicação através de radiofrequência. A camada física é responsável por operações básicas de funcionamento como realizar a ativação ou desativação do transceptor, selecionar o canal de frequência para operar, transmitir e receber os dados. Possui também operações de controle para mensurar a intensidade e a qualidade do pacote recebido, chamado de LQI (Link Quality Indication) além de estimar a potência do sinal recebido dentro da largura de banda proporcionada pela modulação ED (Energy Detection). (MALAFAYA) Com o intuito de ser um dispositivo de livre e fácil implementação, essa camada foi projetada de tal modo que possa oferecer três frequências de operações, sendo elas todas bandas ISM (Industrial, Scientific and Medical). As bandas ISM são faixas de operação que, dependendo da região, não necessitam de autorização do órgão fiscalizador local para operar. Conforme a Tabela 1.1, é possível notar que a frequência de 2,4 GHz pode ser utilizada em qualquer parte do planeta e possui a maior velocidade de transmissão de dados, utilizando a modulação O-QPSK (Offset – Quadrature Phase-Shift Keying). (ERGEM, 2004) 27 Essa frequência está sujeita a menores interferências. As frequências de 868 e 915 MHz podem ser utilizadas somente na Europa e na América do Norte, respectivamente, e oferecem a vantagem técnica de consumir um pouco menos de energia em seu funcionamento, porém proporciona baixas taxas de transferências utilizando a modulação BPSK (Binary Phase-Shift Keying). (ERGEM, 2004) Tabela 1.1 - Faixas de Frequência do padrão IEEE 802.15.4 PHY Largura de Banda (MHz) Canais 868 868 – 868.6 1 915 902 – 928 1 – 10 2400 2400 – 2483 11 - 26 Fonte: Adaptação (IEEE apud ERGEM) Taxa de Transferência Modulação Convergência 20 40 250 BPSK BPSK O-QPSK Europa América Global Para realizar a transmissão de dados, é necessário inserir informações úteis dentro de uma onda senoidal transmitida por rádio frequência. Essa técnica é conhecida como modulação. A modulação por BPSK é uma forma particular da modulação PSK (Phase-Shift Keying), que consiste em realizar uma alteração de fase a cada transição de bit. O BPSK opera sobre uma transição de 180° no círculo trigonométrico para cada transição de bit, sendo eles de 0 para 1 ou de 1 para 0. Caso não haja nenhuma alteração de dados a sua onda portadora continua a ser transmitida com a mesma fase, conforme ilustrado na Figura 1.5. (PIMENTEL, 2007) A vantagem dessa transmissão é o fato de ser pouco suscetível a ruídos, logo, qualquer alteração é facilmente identificada, porém é um método robusto de transmissão, tendo como desvantagem o uso ineficiente da banda do canal, sendo possível carregar apenas 1 bit em sua transmissão. (PIMENTEL, 2007) Figura 1.5 - Modulação BPSK Fonte: Al-Khawarizmi Institute of Computer Science (2012) 28 Na modulação QPSK (Quadrature Phase - Shift Keying) são utilizados parâmetros de fase e quadratura da onda portadora, isso permite que sejam transmitidos dois bits por período de onda, sendo eles I e Q, com um atraso de meio período. Agora a portadora da onda pode assumir quatro valores diferentes de fase. O O-QPSK não permite que ocorra transições de 180º, sendo possível realizar apenas transições de 90º no círculo trigonométrico, isso diminui o espectro do sinal, aumentando o efeito de filtragem de dados. Essa técnica de modulação multinível eleva a eficiência ao dobro da BPSK conforme representado na Figura 1.6. Figura 1.6 - Modulação O-QPSK Fonte: Elaborada pelo autor A estrutura do quadro de dados da camada PHY, denominado de PPDU (PHY Protocol Data Unit), representa o quadro final antes da transmissão de dados. Possui uma divisão de três partes, sendo elas: SHR (Synchronization Header), que permite ao receptor sincronizar com o feixe de bits, e que contém os campos PS (Preamble Sequence) de 4 Bytes e o SFD (Start of Frame Delimiter), de apenas 1 Byte, que indica o limite do cabeçalho de dados. (BURATTI, 2011) Figura 1.7 - Quadro de Dados PHY Fonte: Adptação Buratti (2011) 29 O quadro PHR (PHY Header) possui um campo de 1 Byte, chamado FL (Frame Lenght), cujo conteúdo informa o comprimento em Bytes do quadro PSDU (PHY Service Data Unit). O quadro PSDU é variável sendo fornecido pela camada MAC. (BURATTI, 2011) 1.4.2. Camada de Controle (IEEE 802.15.4 MAC) A camada de controle, também conhecida como MAC, tem a responsabilidade de controlar todo acesso ao canal físico de rádio. Possui algumas funcionalidades, tais como realizar a associação e desassociação de cada dispositivo na rede, oferecer segurança no transporte das informações, realizar sincronização de beacons, verificar a integridade dos dados transportados, reconhecer o dispositivo de origem e gerenciar o canal através de CSMA-CA (Carrier Sense Multiple Access with Collision Avoidance). (ESCHNER, 2011). Os beacons são pacotes com função de controle; sua finalidade é delimitar os quadros utilizados por um módulo coordenador para realizar a sincronização com os dispositivos restantes na rede. Para realizar acesso aos canais, uma rede ZigBee pode operar utilizando dois modos: beaconned ou non-beaconned. Quando a rede está ativada no modo non-beaconned, os dispositivos começam a transmitir ao verificar que o meio de transmissão está livre; nessa configuração, o mecanismo CSMA-CA é utilizado para efetuar o controle, sendo possível também incluir um tempo de contenção para efetuar a transmissão de dados. A desvantagem desse modo é a impossibilidade de utilizar o método sleep, pois os dispositivos necessitam estar ativos, não sendo possível poupar energia. O mecanismo CSMA-CA foi desenvolvido para evitar colisões em redes wireless ou cabeadas. Quando um dispositivo deseja transmitir um dado pela rede, ele verifica se o canal está livre e, caso esteja, ele transmite as informações avisando o tempo necessário para realizar essa operação. Se ela estiver ocupada, será preciso esperar um período randômico para tentar enviar os dados novamente. Essa espera aleatória é uma forma de administrar e ordenar o tráfego de pacotes na rede, fazendo com que a colisão de pacotes na rede diminua significativamente. (HARGREAVES) Em uma rede operando em modo beaconned, o coordenador da rede é responsável por transmitir um beacon em intervalos de tempo regulares, que será 30 utilizado para sincronizar e determinar quando os outros dispositivos da rede PAN poderão transmitir dados. Esse beacon transmitido é utilizado para definir uma estrutura conhecida como superframe. (FARAHANI, 2008) Segundo Farahani (2008), enquanto nenhum superframe estiver ativo na rede, os outros dispositivos permanecem em modo de economia de energia (sleep); essa configuração possibilita o racionamento de energia, prolongando a vida útil das baterias e fontes de alimentação. Nesse caso não é necessário utilizar o mecanismo CSMA-CA, pois cada dispositivo possui um tempo determinado para realizar sua transmissão, chamado de slot, mas para que isto funcione é necessário que todos os dispositivos estejam sincronizados pelo coordenador da PAN. Figura 1.8 - Estrutura do quadro superframe Fonte: Santos (2007) O dispositivo coordenador é responsável por gerar o formato do superframe e é transmitido no primeiro intervalo de tempo, sendo limitado pelo beacon. Existe a possibilidade de não usar essa estrutura, desligando-se a transmissão de beacons. Essa estrutura apresenta um período ativo e um período inativo opcional. O período ativo é divido em até 16 partes de tempos iguais, sendo necessário ter, no mínimo, oito períodos. Nesse caso é utilizado o acesso de contenção CAP (Contention Access Period), onde se deve obrigatoriamente utilizar o método sloted CSMA-MA. Logo a seguir existe o período opcional livre de contenção CFP (Contention Free Period), podendo ter até sete períodos ativos GTS (Guaranteed Time Slot). Durante esse 31 intervalo de tempo, o coordenador da rede PAN pode reservar períodos para algum dispositivo; ao reservar esse tempo, um dispositivo tem acesso exclusivo ao canal, podendo transmitir ou receber dados do seu coordenador, sendo desabilitada a tecnologia CSMA-MA. Esses quadros são sempre reservados no final de cada superframe, sendo possível desabilitar seu transceptor durante essa execução. (SANTOS, 2007) De acordo com a IEEE (2010), as redes que estão no padrão LR-WPAN possuem um quadro de dados MAC, denominado de MPDU (MAC Protocol Data Unit), conforme representado na Figura 1.9. Figura 1.9 - Quadro de Dados Fonte: Adaptação Ergem (2004) O MHR (MAC Header) pode conter de 5 a 23 Bytes; ele contém um campo de controle de 2 Bytes denominado FC (Frame Control), 1 Byte para o NS (Número de Sequência) e um espaço para endereçamento de 4 à 20 Bytes. (ERGEM, 2004) O espaço de endereçamento pode variar de acordo com a situação e a topologia utilizada, porém possui a separação de 2 Bytes para identificar o PAN de destino, 8 Bytes para identificar o endereço a ser enviado, 2 Bytes para fornecer o PAN de origem e 8 Bytes do endereço transmissor. O MSDU (MAC Service Data Unit) consiste nos dados passados pelas camadas superiores; ele pode conter um tamanho variável de acordo com a aplicação requisitada. 32 O MFR (MAC Footer) é um quadro composto de 2 Bytes para verificação de paridade, denominado de FCS (Frame Check Sequence). As junções desses três quadros formam o MPDU. A recepção com sucesso fica sob a responsabilidade dessa camada; se o dispositivo transmissor não receber um reconhecimento após um determinado período de tempo, é considerado que a transmissão foi realizada sem sucesso, sendo repetida a transmissão do quadro. Existe também a possibilidade da formação de outro quadro, utilizado para reconhecimento. Consiste em realizar a junção dos campos MHR e MFR, possuindo apenas 5 Bytes, como representado na Figura 1.10. (ERGEM, 2004) Figura 1.10 - Quadro de Reconhecimento Fonte: Adaptação Ergem (2004) Para definir o intervalo de tempo entre as transmissões de quadros consecutivos, existe um período denominado IFS (Interframe Spacing). Esse período é necessário, pois a camada necessita de um tempo para processar os dados recebidos da camada inferior e, caso necessário, realizar uma confirmação dos dados transmitidos. A duração de um IFS varia de acordo com o tamanho do quadro transmitido. (ERGEM, 2004) 1.4.3. Camada de Rede (ZigBee NWK) A camada de rede é a primeira a ser regulamentada pela ZigBee Alliance. Nessa camada ocorrem as principais funcionalidades, como iniciar uma rede 33 ZigBee, rotear pacotes, realizar descoberta de novos nós, atribuir endereços aos dispositivos membros da rede, entre outras funcionalidades. Todos os dispositivos que fizerem parte da rede serão configurados e reconhecidos através dessa camada. (FALUDI, 2011) Além dessas funções, essa camada se faz importante por fornecer e garantir a interligação entre as camadas MAC e a aplicação, possibilitando o crescimento da rede sem a necessidade de equipamentos com potência elevada de transmissão. Para realizar a comunicação com a camada de aplicação foram criadas duas entidades que provêm funcionalidades necessárias para realizar a interligação. Essas entidades são classificadas como serviços de gerência, chamada de NLME (Network Layer Management Entity) e serviço de dados NLDE (Network Layer Data Entity). (IEEE 802.15.4, 2008) O serviço de dados NLDE oferece a transmissão de dados através do seu SAP (Service Access Point), que opera como um serviço confirmado. Isso permite que uma aplicação possa transportar um APDU (Application Protocol Data Units), fornecido pela camada de aplicação entre dois ou mais dispositivos que façam parte de uma mesma rede. Essa comunicação possui primitivas que formam o quadro NPDU (Network Protocol Data Unit), que contém informações sobre o tipo de endereçamento, endereço (de 2 Bytes) da origem e do final, tempo de envio, se deve ou não utilizar o descobrimento de rotas e o raio da ação do quadro. Além dessas funções, ele também é responsável por realizar o roteamento específico da topologia e garantir a segurança no transporte das informações. (NOVA, 2009) O serviço de gerência NLME oferece diversos métodos para manter e coordenar a rede ZigBee, administrando, ainda, uma Base de Dados de Objetos gerenciados, denominada NIB (Network Information Base). O gerenciamento especifica diversas funções, entre elas estão: iniciar uma rede, descoberta de vizinhos, descoberta de rota, configuração de um novo dispositivo, associação. Essas funções já possuem primitivas oferecidas pelo serviço, podendo ser utilizadas com métodos NLME-NETWORK, NLME-GET, NLME-SET, NLME-ROUTE, entre outros. (NOVA, 2009) O quadro de dados da camada de rede, representada na Figura 1.11, define o quadro de dados gerado por essa camada, denominado NPDU. 34 Figura 1.11 - Quadro NWK Fonte: Adaptação IEEE 802.15.4 (2003) Esse quadro é composto pela sessão NWK Header, cujo objetivo é identificar todas as informações geradas na camada de rede. O campo FC (Frame Control), composto de 2 Bytes, carrega informações como a versão do protocolo utilizada, segurança, tipo de frame e o algoritmo de roteamento. (IEEE, 802.15.4, 2008) Já os campos DA (Destination Address) e SA (Source Address) identificam o dispositivo, através do seu PAN-ID com 16 Bytes. Esse endereço, ao contrário do endereçamento de MAC, que é fornecido pelo fabricante, pode ser controlado e modificado de acordo com as preferências e necessidades da rede. Figura 1.12 - Frame de Dados e Comandos Fonte: Adaptação IEEE 802.15.4 (2003) Os campos BR (Broadcast Radius) e BSN (Broadcast Sequence Number) são opcionais e representam características de roteamento, sendo possível definir por 35 quantos dispositivos a informação pode ser trafegada por um único dispositivo através da descoberta de rede ou por quantas unidades ela pode percorrer. (IEEE 802.15.4, 2008) O campo FP (Frame Payload) varia de tamanho, de acordo com o tipo de pacote que irá trafegar por dele. Esses pacotes podem possuir duas formas diferentes, sendo pacote de dados ou comandos, conforme ilustrado na Figura 1.12. 1.4.4. Suporte à Aplicação (ZigBee APS) A camada APS (Application Suport Sublayer) proporciona a interconexão entre a Camada de Rede e a Camada de Aplicação; nela estão contidos diversos conjuntos de serviços para o Framework de Aplicação e para o ZDO (ZigBee Device Object). Suas responsabilidades são atividades como: Realizar a filtragem de endereços para dispositivos endpoints não autenticados ou com perfis inválidos; Confirmar recebimentos (ACKs) com tentativas de retransmissão; Manter as tabelas locais de Vinculação e de Grupos; Gerenciar o mapeamento de endereços de 2 Bytes (NWK) com os de 16 Bytes (MAC); Filtrar pacotes duplicados. A camada APS permite a fragmentação de dados, porém alguns deles não podem ser fragmentados, como os clusters do ZDO. Para controlar o funcionamento, essa camada possui duas primitivas, assim como a camada de rede (NWK) para realizar o controle dos dados e gerência da camada, chamadas respectivamente de APSDE-SAP (APS Data Entity) e APSME (APS Management Entity), que realizam todas as tarefas e serviços através dos SAPs nelas contidos. (FARAHANI, 2008) Para realizar a gerência interna, a camada utiliza a primitiva APSME, que tem como objetivo realizar a vinculação de um dispositivo, através de uma base de informações chamada AIB (APS Information Base). O AIB consiste em atributos fundamentais para realizar a própria gerência, mantendo os endereços IEEE, de 8 Bytes e os NWK, de 2 Bytes. Ele contém a tabela de vinculação, tabela de grupos, o tipo do dispositivo, personalização de um endereço PAN, métricas de segurança, entre outras funções. (NOVA, 2009). 36 Através da primitiva APSDE, é possível a transmissão de dados para o transporte de PDU de aplicação entre dois ou mais dispositivos contidos na mesma rede, além disso, possui a função de realizar filtragem de mensagens, diminuindo o tráfego de informações e evitando o domínio de colisão no grupo. Ainda suporta a fragmentação e reconstrução de pacotes maiores que o payload suportado pela ASDU (Application Service Data Units), garantindo e assegurando a qualidade da transmissão de dados. (FARAHANI, 2008) A APS possui um quadro de dados bem específico, que é utilizado pela sua entidade de dados, este chamado de APDU, que será trocado apenas entre camadas de entidades pares, isto é, camadas iguais em dispositivos diferentes. Nele estão referenciados os endereços e controle dos dispositivos. Seu tamanho pode ser variável, dependendo do tipo de quadro que será utilizado, que pode ser de controle, dados ou reconhecimento (ACK – Acknowledgment), conforme ilustrado na Figura 1.13. (ZIGBEE, 2008) Figura 1.13 - Quadro Geral APS Fonte: Adaptação Zigbee (2008) Os campos DE (Destination Endpoint), GA (Group Andress), CI (Cluster Identifier), PI (Profile Identifier), SE (Source Endpoint) e EH (Extended Header) são opcionais e fazem parte dos dados de endereçamento dessa camada, podendo ser usados em qualquer tipo de quadro, dependendo dos dados utilizados no campo FC (Frame Control). (ZIGBEE, 2008) Para reduzir o número de quadros transmitidos pela rede, o campo APSC (APS Counter) tem a função de rastrear todos os pacotes que são transmitidos, com 37 o intuito de não permitir a recepção de um pacote mais de uma vez, caso haja confirmação. (ZIGBEE, 2008) Figura 1.14 - Campo de Controle do quadro APDU Fonte Adaptação Zigbee (2008) Nessa camada o quadro de controle (FC) é quem vai indicar quais parâmetros serão utilizados para o envio de dados e confirmação. Nele estão contidos, respectivamente, o tipo de quadro utilizado, o método de entrega e endereçamento, o formato da confirmação (ACK), se há necessidade de utilizar segurança, o formato da confirmação e se há um EH (Extended Header) presente no quadro APDU conforme representado na Figura 1.14. É importante frisar que os bits 2 e 3 correspondem ao método de entrega. Suas variações binárias representam: 0b00 – Método de entrega normal unicast; 0b01 – Método de entrega direta: o quadro não distingue o endereçamento de destino, tendo que consultar a Tabela de Vinculos; 0b10 – Método de entrega broadcast; 0b11 – Método de entrega para o endereço de grupo, sendo localizado pelo campo GA no quadro APDU; Como já mencionado anteriormente, é função dessa camada manter associados os endereços de MAC com os endereços da camada NWK, para facilitar e reconhecer os endpoints, tais dispositivos são associados em grupos e armazenados na Tabela de Grupo. Com isso é possível endereçar seletivamente os quadros e entregá-los ao endpoint correspondente a um único grupo. Esse método é chamado de endereçamento Multicast. (ZIGBEE, 2008) A Tabela de Grupo é endereçada por 2 Bytes, tendo como atributos uma lista de dispositivos membro do grupo, sendo constantemente atualizada; contém os identificadores do grupo em um atributo de gerência denominado nwkGroupIDTable. 38 A transmissão dos dados ocorre através da primitiva APSDE-DATA e esta, por sua vez, formula os APDUs. Esses dados serão repassados para a camada de rede pela primitiva NLDE-SAP, que por sua vez transmitirá para a camada MAC, que fará o mesmo, transmitindo para a camada PHY, na qual serão codificados e emitidos através de uma forma de onda eletromagnética. (ZIGBEE, 2008) As transmissões que forem endereçadas a grupos, possuindo o valor 0b11, no campo de método de entrega, devem conter apenas o campo de origem e o endereço do grupo solicitado. Isso porque todos os dispositivos pertencentes àquele grupo podem ser possíveis membros destinatários para os quadros endereçados a eles. (ZIGBEE, 2008) Algumas trocas de informações podem necessitar de uma confirmação (ACK). No caso de sua utilização a primitiva APSDE-DATA.request deverá utilizar o campo ACK Request, contido no quadro de controle com o valor igual a 1. Essa camada possui um atributo ajustável para controlar o tempo máximo que um dispositivo pode aguardar uma resposta, este denominado de apscAckWaitDuration. Caso o tempo especificado por este for ultrapassado, haverá a retransmissão do quadro. Junto a essa primitiva há outro atributo que limita a quantidade de tentativas de envio, o apscMaxFrameRetries, que delimita o número de tentativas para reenviar o quadro. Caso seja ultrapassado o número de tentativas especificado nesse atributo, a camada reconhece como erro de conexão e é sinalizada uma falha de conexão. A identificação é feita pela verificação do campo Cluster ID, que deve possuir os mesmos valores em ambos os quadros. (NOVA, 2009) Segundo Nova (2009, p. 50), “O Protocolo ZigBee, especificamente a camada APS, utiliza um algoritmo de Janela Deslizante como Retorno Seletivo para Transmissão dos Dados Fragmentados”. A Janela de Transmissão será utilizada para ordenar a transação. O tamanho da Janela é ajustado pelo perfil de pilha. O Protocolo arruma todos os blocos em uma Janela de Transmissão, que será enviada, e o ACK deverá ser recebido antes dessa Janela mover-se. Quando os dados chegam, um contador é incrementado até certo número, quando é esperado o retorno de um ACK para confirmar os blocos enviados previamente, ou seja, haverá o envio de n blocos sem confirmação, onde n é o tamanho do ASDU. No caso de sucesso, a cada t transmissões haverá um ACK de retorno, onde t é o tamanho da janela. (NOVA, 2009, p.51) 39 1.4.5. Camada de Aplicação (ZigBee APL) Esta camada corresponde ao topo da pilha do protocolo ZigBee, logo, está voltada para comunicações fim-a-fim das aplicações executadas. Em princípio essa camada está subdivida em duas subcamadas, sendo elas a ZDO e a AF (Application Framework). 1.4.5.1. Application Framework (ZigBee AF) A subcamada Application Framework é um ambiente no qual se encontram os objetos de aplicações, conhecidos como AO (Application Objects). Esses objetos representam uma base de funcionalidade que são responsáveis por atuar com primitivas definidas pelos fabricantes e algumas primitivas de serviço de dados, isto é, cada AO irá atuar com um propósito específico, podendo gerenciar a energia de um apartamento, monitorar o estado de um paciente num hospital ou controlar processos em uma indústria. Um único dispositivo ZigBee pode controlar até 240 objetos de aplicações diferentes, sendo possível, com um único módulo, ter controle de 240 dispositivos distintos I/O controlados por ele. Cada AO possui um endereço local próprio, chamado endpoint, sendo enumerado de 1 até 240. (GISLASON, 2008) Figura 1.15 - Uso de endpoints em uma aplicação de interruptores e lâmpadas Fonte: Nova apud Gislason (2008) 40 De acordo com Nova (2009, p. 43) os endpoints possuem 3 propósitos: Permitir que diferentes Perfis de Aplicação existam no mesmo nodo; Permitir que pontos de controle separados existam no mesmo nodo; Permitir que dispositivos separados existam no mesmo nodo. Uma analogia com os propósitos sobre os endpoints é o exemplo representado na Figura 1.15, onde um único dispositivo pode ligar 3 lâmpadas diferentes, assim como 3 dispositivos distintos podem controlar 3 lâmpadas diferentes. Em teoria é possível representar 256 endereços diferentes utilizando 8 bits, porém o endereço 0 é utilizado para referenciar o ZDO e os endereços 241 a 254 são inutilizados para alguma aplicação futura. Já o endereço 255, que é o último endereço, é conhecido como endereço de broadcast, o qual é utilizado para enviar informações a todos os endereços contidos naquele ZDO. Cada endpoint pode realizar uma comunicação utilizando a primitiva da camada APS, denominada APSDE-SAP, isso permite que essa subcamada faça uma comunicação pública através daquele. (NOVA, 2009). A criação dessa subcamada teve como princípio a ideia de que, independentemente dos fabricantes desenvolverem seus objetos de aplicações proprietários, pode haver comunicação entre eles sem nenhum problema, visto, claro, que essa funcionalidade acontecerá caso os mesmos possuam a certificação de funcionamento da Alliance ZigBee. Para isso, a camada APL também provê de uma característica visando essa facilidade, chamada de Perfil de Aplicação. Esses perfis visam concentrar determinadas primitivas e rotinas para aplicações específicas, por exemplo, automação residencial, onde é possível obter primitivas pré-selecionadas para esse ambiente, como ligar uma lâmpada, controlar um arcondicionado, entre outras funções. (GISLASON, 2008) 1.4.5.2. ZigBee Device Object (Zigbee ZDO) O ZDO é um objeto de aplicação especial, na realidade ele não pertence somente à camada APL, mas se aplica a todas as camadas pertencentes à ZigBee Alliance, sendo respectivamente ativo no topo da camada de rede (NWK) e na camada de suporte da aplicação (APS). Ele é responsável por definir o profile do dispositivo, proporcionando as funcionalidades básicas que interagem entre a 41 comunicação da APS e os Objetos de Aplicações. Como ele estabelece o perfil para o dispositivo, sempre vai ser reconhecido como endpoint zero, sendo responsável pela gerência desse dispositivo, suas chaves e segurança local. Com isso é possível juntar todas as informações de configurações das aplicações finais e realizar o controle de todo o fluxo da informação, sendo responsável por inicializar as camadas e o provedor de serviço de segurança, chamado de SSP (Security Service Provider). (NOVA, 2009) 42 2. FUNDAMENTAÇÂO TEÓRICA DOS COMPONENTES Neste capítulo serão abordadas as especificações dos componentes de hardware utilizados para a elaboração do projeto, bem como as tecnologias utilizadas para a implementação do software controlador. 2.1. OXIMETRIA Durante a internação de um paciente é extremamente necessário o monitoramento de diversos itens sobre seu estado de saúde atual. Estes diagnósticos determinam quais procedimentos deverão ser adotados para seu tratamento. Em casos como o leito de uma Unidade de Tratamento Intensivo (UTI), se faz necessário o contínuo monitoramento cardíaco, pressão arterial, temperatura, oxigenação entre outras avaliações. Estes determinam a situação do enfermo, como também resposta a um determinado medicamento e até uma necessária intervenção cirúrgica. (PAZ, 1996) De acordo com o Conselho Regional de Enfermagem (2009), entre os monitoramentos mais importantes de um paciente, está a Oximetria de Pulso Arterial (OPA), sendo uma técnica para medir a quantidade de oxigênio no sangue verificando as hemoglobinas através da incisão de luzes nas extremidades corporais. Este método é importante, pois permite a captação de dados constantes da saturação de oxigênio (SpO2), bem como a frequência cardíaca de maneira não invasiva. Sua medição pode ser feita através de mãos, pés, lóbulo das orelhas, ou qualquer membro do corpo, que apresente características físicas de translucidez óptica possibilitando a utilização de sensores. 2.1.1. Princípios da Oximetria Uma das principais formas do corpo humano adquirir energia útil é por meio da respiração, este processo de oxigenação é realizado pelo pulmão. Quando o sangue em seu estado desoxigenado entra no coração, é diretamente bombeado para os pulmões, nesta etapa as células sanguíneas passam através dos alvéolos pulmonares, que realizam a troca gasosa conhecida como difusão. O dióxido de carbono (CO2) é quebrado e logo então o sangue é oxigenado, sendo bombeado 43 novamente para o coração, que possui a função de distribuir o oxigênio a todos tecidos do corpo humano através da circulação. (LOPEZ, 2012) Lopez (2012) define ainda que o sangue possui duas formas em sua circulação, o venoso e arterial. O sangue venoso possui uma coloração mais escura e é transportado pelas veias até o pulmão contendo CO 2. Já o arterial possui uma cor mais clara e viva, sua circulação ocorre pelas artérias e possui a função de irrigar os tecidos com o oxigênio adquirido pelo pulmão. Segundo Mosby (2008) as hemácias (também conhecida como glóbulos vermelhos) possuem uma proteína denominada hemoglobina. Esta é responsável por transportar a maior parte do oxigênio, em média 97% do total, sendo o restante, conduzido através do plasma sanguíneo. A hemoglobina pode possuir três estados, o primeiro quando associada a uma molécula de oxigênio denominada de oxihemoglobina (HbO2). No segundo caso é intitulado de carboxi-hemoglobina quando integrada a uma molécula de monóxido de carbono (HbCO). E por último é representada pela ausência de moléculas conhecida por hemoglobina reduzida ou desoxi-hemoglobina (RHb). Cada um desses estados possui uma absorção de luz diferente, dado o comprimento da onda do espectro de luz emitido. O princípio da técnica é baseado na absorção de dois comprimentos de ondas distintos, a primeira onda é emitida pela luz vermelha com comprimento de onda em torno de 660 nanômetros e a segunda, é utilizando a luz infravermelha com comprimento de onda de 940 nm. Para a incisão dessas luzes são utilizados dois LED’s (Light-Emmiting Diode), que são pequenos diodos que quando energizado emitem um brilho próximos ao comprimento de onda necessário para a mensuração. Essas luzes são emitidas alternadamente em pequenos períodos na ordem de milissegundos, fazendo com que a oxi-hemoglobina (HbO2) absorva mais a luz infravermelha e permite que a luz vermelha passe por meio dela. Já a desoxi-hemoglobina (RHb) absorve mais a luz vermelha e permite que a luz infravermelha transluza por ela. Com isto é possível medir a diferença real entre os espectros de absorção. (LOPEZ, 2012) Conforme ilustra a Figura 2.1, é possível observar que a oxi-hemoglobina possui uma resposta inferior a desoxi-hemoglobina na aplicação de uma luz vermelha, logo, sendo possível obter uma faixa de mensuração válida, visto que com a luz infravermelha, é possível obter uma curva de absorção similar porém com a desoxi-hemoglobina. 44 Figura 2.1 – Gráfico da absorção de luz da hemoglobina Fonte: Adaptação Lopez (2012) Para realizar a medição é possível utilizar dois tipos de sensores, um sendo de transmitância e outro de refletância conforme ilustra a Figura 2.2. No sensor de transmitância os LED’s ficam de um lado e opostamente a eles está localizado o fotorreceptor. É considerado o melhor método, de modo que este está sujeito a possuir uma menor relação sinal-ruído, onde a luz captada pelo sensor passa por todo o tecido. Já o sensor de refletância o LED e o fotorreceptor estão localizados no mesmo lado, fazendo com que a luz se mova através da pele, músculo e osso. Chegando ao osso ela é refletida e passa por todos os tecidos novamente, proporcionando uma amostragem com maior ruído. (TIRELO, 2006) Figura 2.2 – Sensor de transmitância e refletância Fonte: Adaptação Japan (2013) 45 Um sinal típico da uma mensuração realiza através dos fototransistores é representado na Figura 2.3, onde para obter-se este sinal é necessário a utilização de um condicionador de sinal. Figura 2.3 – Sinal típico da oximetria de pulso Fonte: Lopez (2012) O condicionamento de sinal é indispensável para tornar a medição eficaz, uma vez que os dados obtidos possuem baixa amplitude e muito ruído, assim se faz necessário utilizar técnicas como amplificação e filtragem. (LOPEZ, 2012) Como o sinal obtido é de baixa magnitude, a amplificação se faz necessária para o aumento do nível de tensão, fazendo com que o conversor analógico digital (ADC) possua uma boa resolução para a interpretação da onda. A filtragem é muito importante, já que todos equipamentos de instrumentação são propícios as diversas interferência externas, prejudicando consideravelmente o sinal captado. Figura 2.4 - Diagrama de absorção de luz Fonte: Adaptação Lopez (2012) 46 Rosseto (2009) explica que o sinal pode ser obtido, através da variação do sangue arterial pulsado gerado no batimento cardíaco, este possui variação, ao contrário do nível DC (sinal constante e linear) proporcionado pelos tecidos, veias e sangue arterial não pulsado. Conforme representado na Figura 2.4. Segundo Lopez (2012), o cálculo da oxigenação arterial (SpO 2) pode ser realizado utilizando o volume de sangue arterial oxigenado, calculando a razão de absorção, para isto é necessário uma tabela armazenada, que contenha formulas empíricas de experimentações baseadas em mensurações de uma triagem de paciente saudáveis. A equação 1 é utiliza o AC como o nível variável do sangue arterial e DC como a absorção contínua. 𝐴𝐶660 ⁄𝐷𝐶 ) 660 𝐴𝐶 ( 940⁄𝐷𝐶 ) 940 ( (1) Um segundo método utilizando apenas a componente variante do sangue, é representado na equação 2. Sua variável Iac representa a intensidade de luz vermelha ou infravermelha captada naquele momento. λ1 e λ2 representam os coeficientes de absorção da oxi-hemoglobina e desoxi-hemoglobina. 𝑆𝑝𝑂2 = 𝑙𝑜𝑔10 (𝐼𝑎𝑐 )𝜆1 (2) 𝑙𝑜𝑔10 (𝐼𝑎𝑐 )𝜆2 2.2. SENSORES De acordo com Ulaby (2007) um sensor pode ser definido como um componente ou dispositivo que possui a propriedade de gerar em sua saída um sinal elétrico através de um estímulo em sua entrada. Sua estimulação é dada por uma extensa gama de grandezas que está diretamente relacionada a uma ou mais propriedades da composição do sensor. A mensuração varia em função da intensidade do estímulo gerado, estes podendo ser físicos, biológicos ou químicos. Os sensores podem ser classificados através da grandeza aplicada como, por exemplo, fototransistores (conversão elétrica/luminosa), piroelétricos (conversão elétrica/massa) entre outras variações, sendo capazes de mensurar, temperatura, velocidade, fluxo sanguíneo, concentração de líquidos, entre outros. 47 Neste trabalho, o foco será dado nos fototransistores que serão utilizados para mensurar a oximetria do paciente e os termistores (conversão elétrica/temperatura) para a temperatura corporal. 2.2.1. Sensor Fotodetector Os fototransistores são componentes de funcionamento similar aos detectores fotocondutivos, que por sua vez tem características sobre operação de junções p-n que oferecem maior sensibilidade em comparação aos outros. Quando não estão sendo iluminados sua operação satisfaz a de diodos semicondutores comuns. Turner (2004) explica que a ligação base é um circuito aberto operando a dois terminais. Assim que um componente é exposto à iluminação, é gerada uma fotocorrente de portadores que alimenta a junção coletora-base inversamente polarizada. Como na maioria dos casos a fotocorrente está na ordem de microampère, esta é amplificada na alimentação negativa de um amplificador operacional. Para seu funcionamento não é necessário dependência de uma fonte externa, que facilmente pode ser observada na teoria fotovoltaica. Figura 2.5 - Diagrama do circuito interno OPT101 Fonte: Texas Instruments (2003) Observando que neste projeto é necessário realizar a captura de dados fisiológicos, é indispensável escolher um componente de alta sensibilidade, visto que a recepção de dados humanos é na ordem de micro ou mili amperes. 48 Para isto o circuito integrado OPT101 produzido pela Burr-Brown da Texas Instruments foi uma escolha apropriada. Conforme ilustra a Figura 2.5 é possível verificar que ele é formado de um fotodiodo monolítico seguido de um amplificador de transimpedância, que possui a função de converter corrente liberada pelo fotodiodo em voltagem. Segundo o datasheet da Texas Instruments (2003) como característica de fabricação, a tensão de saída deste dispositivo responde linearmente com a intensidade de luz incidida. Seu amplificador foi projetado para operações de alimentação simples ou dupla, sendo altamente recomendado a aplicações que utilizem bateria. Uma vantagem de utilizar todo esse equipamento em um único circuito é a eliminação de diversos problemas como erros de fuga de corrente e ruídos pick-up. Sua alimentação opera entre +2,7V até +36V tendo como corrente de repouso apenas 120µA. Figura 2.6 - Gráfico de resposta espectral Fonte: Texas Instruments (2003) Para trabalhar com a oximetria são utilizados dois comprimentos de ondas estes variando em torno de 660nm (luz vermelha) e 940nm (infravermelho). Na Figura 2.6 é possível analisar que este fotodetector possui uma resposta considerável para a aplicação utilizada, apesar de seu custo-benefício ser alto, ainda assim torna-o viável na implementação do projeto. 49 2.2.2. Sensor de Temperatura Um termômetro é definido como um analisador das variações influenciadas pela temperatura em um dado corpo. As alterações podem possuir características de mudança na resistência elétrica, expansão ou contração do objeto, alteração de intensidade ou cor. Bolton (2005) define que a resistência de um objeto constituído por fio metálico depende diretamente da temperatura, sendo possível então utilizar a resistência de um objeto como medida de temperatura. Esta resistência pode variar de forma proporcional ou inversa, sendo classificadas respectivamente como PTC (Positive Temperature Coeficiente) ou NTC (Negative Temperature Coeficiente). Neste projeto será utilizado o sensor de precisão LM35 fabricado pela Texas Instruments com encapsulamento TO-92. Este sensor apresenta uma saída de tensão linear diretamente proporcional à temperatura sobre o componente. De acordo com o datasheet da Texas Instruments (2013) é necessário a alimentação de +4V até +20V para utilizar este dispositivo. Este possui uma saída de baixa impedância e calibração inerente, obtendo assim uma resposta de 10 mV por ºC, podendo mensurar variações de 0,25ºC até 0,75ºC dependendo da faixa de operação, que está entre -55ºC até 150ºC. Seu circuito básico é representado na Figura 2.7. Figura 2.7 - Implementação básica de operação (+2ºC até +150ºC) Fonte: Texas Instruments (2013) Notoriamente este sensor não possui uma aplicação real, pois sua precisão é insatisfatória para a mensuração da temperatura corporal. Para isto é necessário um sensor com variação rigorosa de 0,1ºC, onde seu custo é inviável para a implementação deste trabalho, relevando o fato deste ser apenas um protótipo. 50 2.3. AMPLIFICADORES OPERACIONAIS O amplificador operacional é um fantástico componente da eletrônica, extremamente versátil e com inúmeras aplicações. Conhecido também como ampop ou AOP, este dispositivo é feito a partir de um circuito de transistores e resistores que variam de cada fabricante e modelo de acordo com sua finalidade e ganho. O componente pode ser descrito como uma fonte de tensão controlada, onde sua saída é proporcional à diferença de tensão entre suas entradas. A construção deste circuito é implementada de modo a realizar diversas operações matemáticas como adição, subtração, amplificação, integração, diferenciação, entre outras operações aplicadas a um sinal analógico ou digital. Possui um vasto emprego em diversas áreas como instrumentação médica, controle industrial, equipamentos de telecomunicações, entre outras serventias. Sua representação gráfica mais comum está na Figura 2.8. (Alexander, 2003) Figura 2.8 - Amplificador Operacional Comum Fonte: Elabora pelo autor Analisando as principais características de um amp-op, pode-se notar sua alta impedância de entrada, isto é, o amplificador praticamente não consome corrente em suas entradas, possui baixa impedância de saída, que significa quase que uma ausência de queda de tensão na saída, resposta de frequência e relação de rejeição em modo comum. (Floyd, 2007) Neste projeto serão utilizadas algumas configurações comuns, como o seguidor unitário e integrador na implementação do condicionador de sinal. Para isto será detalhada algumas características individuais a seguir. 51 O amp-op em configuração de seguidor unitário possui a finalidade de gerar um ganho um sem que haja a inversão de polaridade, normalmente é utilizado atuando como um isolador de estágios conhecido como buffer. Isto permite que suas impedâncias se acoplem gerando um ganho estável ao próximo estágio. Sua representação está na Figura 2.9. Figura 2.9 - AOP seguidor unitário Fonte: Elaborado pelo autor O amplificador integrador é semelhante a uma soma, dado que constitui uma soma da área sobre uma forma de onda ou curva em um período de tempo. Sendo representado pela Figura 2.10. Neste projeto, será utilizado como um filtro operacional com característica de realimentação, conhecido também como filtro ativo. Porém sua teoria base vem em cima da equação 3 que determina a saída dada uma entrada variando no tempo aplicado a este circuito. Figura 2.10 - AOP integrador Fonte: Elaborado pelo autor 𝑡 1 𝑉𝑂 = − ∫ 𝑉𝑖 (𝑡)𝑑𝑡 (3) 𝑅𝐶 0 52 2.4. MÓDULO XBEE (XBP24-B) De acordo com a DIGI (2009) estes módulos foram projetados para seguir o padrão IEEE 802.15.4, oferecendo baixo custo e consumo de energia nas redes sem fio. Sua implementação é focada na especificação ZigBee de modo a proporcionar uma topologia de rede em malha utilizando o mínimo de energia para suas transferências de dados de modo confiável e satisfatório. A Figura 2.11 ilustra os dispositivos utilizados no projeto. Figura 2.11- Módulo XBee Pro Series 2 Fonte: Elaborada pelo autor Também chamado de XBee2ZigBee, este hardware é enquadrado na série 2 que utiliza o protocolo ZigBee, possuindo maior potência que outros dispositivos da mesma série, logo consumindo mais energia, porém mesmo assim ainda é considerado um equipamento de baixo consumo. A frequência de operação é de 2,4 GHz possuindo 14 canais de trabalho. Cada canal de operação pode possuir mais de 65000 dispositivos operando na mesma rede. Possui a capacidade de atuar na rede como coordenador, roteador ou dispositivo final e pode utilizar as topologias ponto-a-ponto, ponto-a-multiponto, par-a-par e malha. (DIGI, 2010) Suas principais características podem ser descritas abaixo de acordo com o fabricante: DIGI(2010) Alcance em ambiente interno: até 90 m Alcance em ambiente externo: até 3200 m com visada livre 53 Energia de transmissão de saída: 50mW (+17 dBm) Taxa de transmissão de dados 250.000 bps Taxas de dados da interface serial: 1200 bps – 1 Mbps Voltagem de alimentação: 3,0 - 3,4V Corrente de transmissão: 295mA Corrente de recepção: 45mA Corrente de desligamento: menor que 10 µA Opções de antena: conector Whip, Chip ou U.FL integrado, conector RPSMA O XBee possui dois modos de operação: o modo transparente e o modo API. Para modificar ou ler parâmetros do módulo RF, é necessário entrar no Modo de Comando (nesse modo os caracteres recebidos são lidos como comandos). Duas opções de modo de comando são suportadas: Modo de Comando AT e Modo de Comando API. Por padrão, os módulos vêm configurados no modo transparente: todos os dados UART recebidos através do pino DI são enfileirados para transmissão RF, e quando um dado RF é recebido, é enviado ao pino DO. A sintaxe para envio de parâmetros e comandos AT é definida por: “AT” (prefixo) + Comando ASCII + Espaço (opcional) + Parâmetro (opcional, hexadecimal) + Quebra de Linha. Exemplo: ATDL 1F<CR>. Após o envio, o sistema retorna uma mensagem de sucesso ou falha em relação ao envio do comando. Para sair do Modo de Comando AT é necessário enviar o comando ATCN, seguido de uma quebra de linha. (DIGI, 2009). Já o API opera em um modo estruturado e permite a configuração do módulo para que este interaja com uma rede. Todos os dados de entrada e saída estão contidos em quadros que definem operações ou eventos no módulo. O quadro de dados transmitido contém: quadro de dados RF transmitidos e quadro de comandos. O quadro de dados recebido contém: quadro de dados RF recebidos; resposta de comando; notificações de evento como reset, associação, dissociação, entre outros. Dois modos API são suportados, ambos podem ser habilitados usando o comando AP. De acordo com a configuração do parâmetro AP, o módulo será configurado com um modo de operação: AP = 0 (modo transparente), AP = 1 (Operação em API), AP = 2 (Operação em API com caracteres de escape). (DIGI, 2009). 54 Segundo Massafera e Zavan (2012) o modo API facilita muitas operações em um ambiente que possui diversos dispositivos operando, os pacotes pré-modelados contém dados importantes como endereçamento de origem e destino, paridade, status de operação e intensidade do sinal. Esta facilidade pode ser facilmente notada em transmissões de dados para mais de um destino, confirmação de respostas e verificação de disponibilidade de um dispositivo. Com este modo de operação aliada a uma biblioteca, é possível tornar a programação de hardware e software mais eficaz e prática. Para realizar a transmissão o ZigBee utiliza um pacote padrão como representado no Quadro 2.1. Todo pacote possui o delimitador indicando que um novo pacote está por começar representado pelo hexadecimal 0x7E seguido de 2 à 3 bytes informando o tamanho do pacote. Logo após vem a identificação do pacote API utilizado, que este pode variar de tamanho e informações de acordo com a função executada em rede. Por último, possui um checksum, para verificar a integridade do pacote na transmissão. Quadro 2.1 - Pacote Zigbee padrão Pacote ZigBee Delimitador Tamanho 1 Byte Fonte: Elaborado pelo autor 2 – 3 Bytes Pacote API 1 – 251 Bytes Checksum 1 Byte Neste projeto dois quadros em específicos serão analisados pelo servidor, sendo eles o Pacote de Recepção ZigBee (ZigBee Receive Packet) que possui a função de enviar os dados coletados pelo dispositivo para o servidor e o Indicador de Identificação do Nó (Node Identification Indicator) que detalha as informações quando um novo dispositivo se conecta na rede. O Quadro 2.2 detalha as informações que são transmitidas no Pacote de Recepção ZigBee, o primeira informação presente é a identificação do pacote está identificada pelo hexadecimal 0x90, logo em seguida possui o endereçamento de 64 bits do dispositivo de origem e o endereço da 16 bits da rede que está operando. A opção de recepção irá conter informações do tipo de transmissão realizada, está podendo ser uma confirmação, um pacote de broadcast, se as informações dos dados estão criptografadas entre outras. Os dados de recepção vêm por último no 55 pacote API podendo contar nenhum dado ou até 112 bytes de tamanho total. (DIGI, 2010) Quadro 2.2 - Pacote de recepção Pacote de Recepção ZigBee (0x90) Endereço da Tipo de Quadro Endereço 64 bits Opções Recepção Rede 16 bits 1 Byte 8 Bytes 2 Bytes 1 Byte Fonte: Adptação Digi (2010) Dados Recepção 112 Bytes Toda vez em que um dispositivo tentar entrar na rede, o coordenador irá receber informações sobre a identificação do mesmo. O pacote que transmite essas informações é Indicador de Identificação do Nó detalhado no Quadro 2.3. Quadro 2.3 - Pacote de Identificação de Nó Indicador de Identificação do Nó (0x95) 64 16 16 64 TQ OR IN 16 EP TDQ EO ER ER ER 1 8 2 1 2 8 1-28 2 1 Fonte: Adptação Digi (2010) EvO IDD IDM 1 2 2 A primeira informação é a TDQ (Tipo de Quadro) que contém a identificação do frame do pacote reconhecido pelo hexadecimal 0x95, que detalha como segue as informações seguinte. O EO (Endereço de Origem) contém as informações do MAC do novo dispositivo. ER (Endereço da Rede) fornece a identificação da rede PAN de 16 bits. Contem 1 byte o OR (Opção de Recepção) identifica se foi um pacote de resposta ou transmissão broadcast. 16ER (Endereço de Rede) atribui o qual será a identificação de 2 bytes deste módulo na rede. 64ER (Endereço de Rede) que transmitiu este pacote. O IN (Identificação do Nó) contém informações que podemos atribuir para o ZigBee na hora de sua configuração, como por exemplo um nome RoteadorUTI-01. 16 PE (Endereço de Parentesco) fornece informações do dispositivo PAI do dispositivo de origem, na verdade esta identificação é utilizada na arvore de cluster. TD (Tipo de Dispositivo) descreve qual a função do dispositivo na rede podendo ser coordenador, roteador ou dispositivo final. EvO (Evento de Origem) identifica em qual evento de estado este pacote foi enviado, como uma falha de energia, restruturação da rede ou apenas identificação inicial. IDD (Identificação da Digi) fornece as informações do perfil do fabricante, como modelo e serie do módulo. Por fim o IDM que fornece as informações do fabricante. (DIGI, 2010) 56 2.5. ARDUINO Criado em 2005 o Arduino é uma plataforma de computação física, ou seja, um sistema digital ligado a sensores e atuadores e que, assim, percebe e interage com o ambiente a que está exposto através de ações físicas. Originalmente criado para fins educacionais e, portanto, para usuários que não têm um conhecimento específico de eletrônica, foi projetado para ser de fácil entendimento, programação, aplicação e multiplataforma. (FONSECA; BEPPU. 2010) É destinado a qualquer pessoa que esteja aprendendo a utilizar microcontroladores para desenvolver objetos interativos. Baseado em uma placa de entrada/saída microcontrolada e desenvolvida com uma biblioteca simples de usar, baseada em C/C++, possui um grande diferencial por ser uma ferramenta opensource, ou seja, a comunidade pode desenvolver e aperfeiçoar projetos e códigos livremente, isto resulta em um constante incremento de funções e correções. (FONSECA; BEPPU. 2010) Por ser open-source, chamou a atenção de muitos tipos de usuários, inclusive de técnicos de eletrônica, os quais aperfeiçoaram sua utilização e criaram aplicações mais complexas. O Arduino admite diversas entradas de sensores ou chaves, para controlar vários fatores, tais como luzes e motores. Dependendo da habilidade e criatividade do usuário, o projeto criado pode ser independente ou realizar comunicação com um software que esteja em um computador, por exemplo. Os circuitos podem ser construídos manualmente desde o começo ou podem ser comprados separadamente, e o software de desenvolvimento pode ser adquirido de graça, acessando o site oficial. (ARDUINO, 2012). Existem diversas versões e modelos do Arduino, sendo que todos consistem em um microcontrolador Atmel AVR de oito bits, juntamente com componentes que facilitam a programação e incorporação com outros circuitos. Como padrão todas as placas já possuem um regulador linear de cinco volts e um oscilador de cristal de 16 MHz, não sendo necessário o interfaceamento externo para sua inicialização. Para auxiliar o carregamento de programas desenvolvidos, já possui um bootloader préprogramado de fábrica, simplificando a gravação no chip. (ARDUINO, 2012) O modelo utilizado neste projeto é o Uno R3 representado na Figura 2.12. Baseado no microcontrolador Atmega328p, este modelo possui 14 pinos de entrada e saída digitais, sendo que seis destas podem ser utilizadas para Modulação por 57 Largura de Pulso (Pulse-width modulation – PWM), 6 entradas analógicas digitais controlador USB, uma tomada de alimentação, um conector ICSP e um botão de reset. (ARDUINO, 2013). Figura 2.12 - Arduino UNO R3 Fonte: Elaborada pelo autor Todos os 14 pinos digitais desta placa operam com 5V, os quais podem trabalhar como entrada ou saída. Cada pino pode receber ou fornecer no máximo 40mA e possui um resistor de pull-up interno de 20-50 kΩ. Alguns destes pinos são multiplexados, isto é, podem exercer mais de uma função na mesma porta. Dentre eles as operações mais importantes são (FONSECA; BEPPU. 2010): Serial – Os pinos 0 e 1, podm trabalhar com dados seriais utilizando a interface UART (Universal Asynchronous Receiver/Transmitter) respetivamente como Recepção (RX) e Transmissão (TX). PWM – Os pinos 3, 5, 6, 9, 10 e 11 podem fornecer uma saída analógica de PWM utilizando um contador de 8-bits. SPI (Serial Periphel Interface) – Os pinos 10, 11, 12 e 13 suportam o tipo comunicação serial síncrona, trabalhando respectivamente com as funções de Slave Select (SS), Master Out Slave In (MOSI), Master In Slave Out (MISO) e Serial Clock (SCK). LED – Possui já um LED integrado para realizar testes sem a necessidade de interfaceamento externo. 58 Embora o Arduino possua uma linguagem muito interativa e fácil de utilizar, para realizar aplicações mais complexas há a necessidade de conhecer o microcontrolador utilizado na placa, uma vez que a interface do Arduino permite o acesso direto para configurações e procedimentos oferecidos pelo controlador AVR, que não é oferecido em suas bibliotecas. Basicamente um microcontrolador é um dispositivo que contém um microprocessador, memória e um conjunto de periféricos, em outras palavras, é um computador em um chip só. Estes dispositivos geralmente são direcionados a uma aplicação específica, podendo ser chamados genericamente de Sistemas Embarcados. O Atmega328p é um microcontrolador de 8-bits produzido pela Atmel Corporation, fazendo parte da família AVR, este controlador de alto desempenho e baixo consumo é baseando na arquitetura RISC (Reduced Instruction Set Computer), com instruções muito poderosas, sendo capaz de realizar até um milhão de instruções por segundo. (Atmel, 2009). Um dos principais recursos que um microcontrolador oferece é um circuito temporizador, implementado em hardware. É basicamente um relógio e pode ser utilizado para medir eventos ao longo do tempo em diversas situações. Sua capacidade de contagem está relacionada diretamente a frequência do cristal oscilador utilizado no hardware, este que garante uma precisão da ordem de dezenas de microssegundos. O Atmega328p possui três módulos temporizadores, denominados de timer0, timer1 e timer 2. A diferença mais importante entre eles está na resolução do contador, onde o timer0 e o timer2 possui 8 bits podendo realizar a contagem de até 256 valores, já o timer1 possui a resolução de 16 bits podendo realizar uma contagem de 65356 valores. (Atmel, 2009) A vantagem de utilizar o temporizador é a possibilidade de gerar uma interrupção denominada de ISR (Interrupt Service Routine). Quando um programa está em execução, seu fluxo por padrão ocorre continuamente. Uma interrupção é um evento externo que ocorre e pausa a execução normal do programa e guarda seu último procedimento, após isto, vai executar uma atividade previamente determinada, ao encerrar a atividade, ele retorna para a última instrução executada e da continuidade no fluxo normal do programa. 59 Faz de suma importância a utilização da ISR na mensuração dos dados tanto quanto na oscilação das luzes que será abordada no próximo capítulo, no qual será explanada a implementação e aquisição dos dados na prática. 60 3. IMPLEMENTAÇÃO DO SISTEMA Neste capítulo serão explanados os diferentes componentes do sistema, visando mostrar como suas aplicações individuais que em conjunto realizam o objetivo proposto. 3.1. DESCRIÇÃO DO PROBLEMA Em um ambiente de cuidados médicos, todo minuto é precioso porém hospitais e clínicas expõem seus funcionários e pacientes a um local movimentado e dinâmico. Pelo fato de ser um ambiente agitado, a prioridade das atenções e atendimentos, às vezes, podem ser em focos diferentes, assim dificultando a comunicação entre suas partes. Isso ocasiona uma demora na sincronização de informações entre médicos, enfermeiros, assistentes e outras partes. O cenário atual apresenta uma demora nas notificações de problemas ocorridos com o paciente, na localização do médico e também na leitura do prontuário. Nos melhores casos um enfermeiro central possui um sistema interligado apenas com os equipamentos da UTI e quando ocorre uma anomalia há a necessidade de chamar o médico via interfone. Somente ao chegar no atendimento é que o médico recebe informações de um enfermeiro, entretanto sem ter o conhecimento exato e uma prévia análise do que ocorreu. O desenvolvimento de abordagens inovadoras para a instrumentação e prevenção tanto nos diagnósticos como tratamento de doenças, fornecem uma melhoria geral, garantindo a qualidade do atendimento e resultado positivos nas decisões tomadas pelos médicos. É de maior facilidade para o médico acessar as informações vitais de todos seus pacientes por meio de um leve toque em seu celular ou até mesmo ser alertado através de um SMS, acerca de um paciente que não está com os sinais vitais em ordem. A obtenção das informações de maneira eficaz, rápida e com qualidade, possibilita a análise do histórico de internação durante o trajeto à sala de atendimento, possibilitando a tomada de decisões seguras. Isto permite ao médico realizar um trabalho com maior excelência do que a atual, através de uma plataforma com a qual está acostumado a lidar. A automatização do processo fará 61 com que o médico consiga agir de maneira mais rápida, evitando que algo de maior gravidade possa ocorrer. 3.2. VISÃO GERAL DO SISTEMA A proposta da implementação de um sistema autônomo capaz de realizar notificações e comunicações entre o paciente e o médico, visa melhorar a qualidade e segurança aos indivíduos envolvidos no processo. Outra vantagem é a coleta informatizada dos dados, que passa a prover uma base de dados funcional à empresa. Um modo de trazer essa teoria à prática é sugerido neste projeto, com a utilização de um oxímetro de pulso e um sensor de temperatura em cima do protocolo Zigbee, deste modo é possível realizar testes para prover sua viabilidade operacional e eficácia na prática. Para a realização deste trabalho houve a subdivisão de cinco módulos, sendo cada um responsável por uma atuação. Conforme ilustra a Figura 3.1, estes módulos são separados por funções, de modo que cada uma possa ser alterada independentemente, sendo necessário apenas manter o padrão de comunicação entre elas. Figura 3.1 – Visão geral dos módulos do sistema Fonte: Elaborada pelo autor 62 O primeiro módulo é responsável por coletar os dados do paciente. Nesta primeira etapa, os sinais são gerados por meio de um termômetro e um oxímetro. A próxima etapa é fazer com que os sinais gerados sejam coletados e analisados para serem repassados ao servidor central. O segundo módulo é responsável por coletar e analisar os dados provenientes da geração de sinais. Este segundo estágio consiste na utilização de um microcontrolador Atmega328p associado a um dispositivo ZigBee Xbee Series 2 Pro. Nesta etapa, os dados são analisados e apresentados em um display LCD que possui informações como porcentagem de oxigenação sanguínea (SpO2), temperatura e batimentos cardíacos do paciente. Após a análise, estas informações são enviadas ao módulo de comunicação sem fio, que por sua vez, transmite os dados para o servidor utilizando a rede PAN. O módulo de comunicação sem fio representa a terceira etapa do processo, sendo implementado utilizando a tecnologia ZigBee. Denotado pela rede PAN e utilizando a topologia em malha, este é constituído de diversos dispositivos que fazem o roteamento das informações até o concentrador da rede onde outro dispositivo Zigbee faz o papel de dispositivo coordenador. O modo de implementação desse perfil torna possível a expansão geográfica da rede, sem a necessidade de suas locações estarem dispostas em torno do dispositivo coordenador. A quarta etapa é responsável por receber as informações através do ZigBee, coordenador da rede e passar para o servidor. Por meio das informações coletadas, o servidor possui a capacidade de realizar a análise das informações recebidas com as já armazenadas, além de acesso direto ao prontuário do paciente, sendo responsável por gerar notificações que são transmitidas via web ou SMS ao médico. Para as transmissões via SMS o servidor possui um módulo 3G conectado ao mesmo, sendo o agente o responsável pelas transmissões. A quinta e última etapa é a uma interface web que possibilita aos médicos, enfermeiros e assistentes analisar as informações em tempo real do paciente que está internado em um hospital ou clínica. Utilizando uma interface online, este módulo disponibiliza aos usuários o monitoramento real, histórico de informações, notificações geradas e gráficos das mensurações realizadas. 63 3.3. CAPTURA DOS SINAIS Este módulo é responsável por gerar todos os sinais que serão captados pelo Dispositivo Leitor. Sua aplicação é baseada totalmente em conceitos de sensoriamento e condicionamento de sinal através de hardware, aplicado a teoria da oximetria imposta no capítulo 2. Como já descrito anteriormente, os sinais médicos são suscetíveis a todo tipo de interferências e ruídos justificando a utilização de um condicionador de sinal e, para isso, foram utilizados dois amplificadores operacionais, sendo utilizado como filtros passa-faixa, de modo a filtrar qualquer frequência que não esteja dentro do padrão de reconhecimento cardíaco, que conforme a teoria de captura analógica de dados fisiológicos cardíacos está em média de 0,4Hz à 15,9Hz. Na Figura 3.2 é representado o circuito utilizado na montagem do oxímetro de pulso. Nela é possível observar que o sinal gerado pelo fototransistor é aplicado na entrada do circuito condicionador através de um filtro passa-faixa, para eliminar as componentes indesejadas como a DC. Este filtro possui um ganho de 150 vezes e permite a passagem de frequências dentro da faixa de 0.7Hz à 15.4Hz. O sinal ainda é aplicado em uma segunda etapa, por meio de outro um filtro passa-alta passivo, este com a intenção de eliminar os ruídos provenientes da rede elétrica e iluminação florescente. Por fim, outro filtro passa-faixa ativo, com um ganho de 10 vezes, faz outra filtragem e ampliação do sinal, resultando em uma saída 1500 vezes maior que a entrada gerada pelo fototransistor. Sua saída é captada pelo conversor analógico digital do microcontrolador representado pela sigla ADC na ilustração. Figura 3.2 - Circuito do sensor e condicionador de sinal Fonte: Elaborado pelo autor 64 O hardware experimental foi alterado diversas vezes a fim de se obter uma instrumental válida do sinal, apesar de ser implementando utilizando uma protoboard e componentes comuns, sua eficiência não foi prejudicada pelos mesmos. Na Figura 3.3 é ilustrado testes laboratoriais realizados onde é possível observar no osciloscópio a onda gerada pela instrumentação. Esta onda apesar de parecer uma dado válido, possui muito ruído e interferência causada por fatores externos. Figura 3.3 - Teste laboratorial para captura do sinal Fonte: Elaborada pelo autor 3.4. DISPOSITIVO LEITOR O dispositivo leitor é o componente responsável por controlar e exibir as informações vitais de um paciente. As principais funções deste dispositivo são receber e analisar os sinais gerados pelo sensor, transmitir as informações para o servidor através do módulo Xbee, confirmar a transmissão de cada pacote e exibir os dados do paciente (oxigenação, temperatura e batimento cardíaco) através de um display LCD. Para que todas estas funções sejam realizadas os dispositivo possui 65 uma junção de elementos sendo eles um Arduino, Xbee Shield e um módulo Xbee XBP24-B além dos sensores. 3.4.1. Análise dos Dados da Temperatura Os sensores geram apenas voltagens, estas precisam ser convertidas em um valor reconhecido pelo sistema para que possam ser analisadas como informações úteis. O Arduino possui um Conversor Analógico Digital com precisão de 10 bits, isto possibilita o valor de conversão variar entre 0 e 1023, assumindo 1024 valores diferentes. Este valor gerado é referenciado de acordo com a voltagem mínima e máxima emitida pelos sensores. Como o sensor de temperatura é alimentado pelo Arduino, sua variação de voltagem é de 5V. O sensor possuí uma resolução de 10mV para cada 1ºC conforme especificado pelo fabricante. Com isto é possível deduzir uma expressão para a temperatura em função do valor lido. Sabendo que a variação de voltagem é de 5V e as entradas analógicas variam 1024 valores. Logo, é possível analisar a equação 4 que representa a temperatura em função do valor. 5 𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 = (𝑉𝑎𝑙𝑜𝑟 𝐿𝑖𝑑𝑜 ∗ (1024)) ∗ 100 (4) Esta expressão pode ser representada também como um valor constante que corresponde à 0,48828125°C, assim de acordo com o valor obtido no conversor e multiplicado pela constante é possível obter a temperatura atual. 3.4.2. Análise dos Dados do Oxímetro de Pulso e Batimento Cardíaco Para realizar a leitura dos sinais gerados pelo fototransistor e obter os valores da oxigenação sanguínea e o batimento cardíaco é necessário seguir um fluxo de atividades constantes, conforme ilustrado na Figura 3.4. Como esta atividade necessita de uma precisão de tempo, foi utilizado o temporizador interno do microcontrolador denominado de TIM0 de modo que seja gerada uma interrupção a cada 4 milissegundos. 66 A primeira operação a ser realizada é ligar o LED Infravermelho e, após sua ativação, é necessário aguardar alguns microssegundos, em média 50, para que o fototransistor possa responder adequadamente ao novo sinal incidido. Calcular SpO2 e BPM Desligar LED Vermelho Ligar LED IR Capturar e Converter o Sinal Capturar e Converter o Sinal Desligar LED IR Ligar LED Vermelho Figura 3.4 - Fluxo de atividades do oxímetro Fonte: Elaborada pelo autor Ao aguardar o tempo é ativada a conversão analógica digital do microcontrolador que irá capturar e converter este valor na entrada ADC0. Feita a conversão e armazenada o valor, o microcontrolador desliga o LED encerra a interrupção continuando seu fluxo de atividades normais. Ao se passar novamente 4 milissegundos o microcontrolador irá realizar o mesmo processo para o LED vermelho. Quando uma leitura de cada LED for realizada, o microcontrolador verifica se essa é a maior ou menor leitura obtida no ciclo para realizar o cálculo da oxigenação sanguínea. Caso seja positivo, é realizado o cálculo da oxigenação sanguínea dado pela fórmula da absorção da luz representada na equação 5. Após realizar este valor é armazenado e logo então é iniciado um novo ciclo de operações. 𝐴𝑏𝑠𝑜𝑟çã𝑜 = ( 𝑉𝑚𝑎𝑥(𝐿𝐸𝐷) − 𝑉𝑚𝑖𝑛(𝐿𝐸𝐷) ) 𝑉𝑚𝑖𝑛(𝐿𝐸𝐷) (5) Para determinar a oxigenação sanguínea atual é só aplicar a absorção de luz de cada LED na equação 2, obtendo-se então o valor da SpO2. 67 O cálculo do batimento cardíaco é dado pelo intervalo de tempo entre a obtenção do maior e menor valor apresentado pelo LED Infravermelho, aplicando essa variação de tempo em um intervalo de 1 segundo é possível determinar índice de BPM. 3.4.3. Fluxo de Operação do Dispositivo Como o dispositivo é responsável por realizar diversas atividades, além do programa principal, foi necessária a utilização de alguns sub-rotinas responsáveis por realizar processos e ações. Figura 3.5 - Fluxograma principal do dispositivo Fonte: Elaborada pelo autor Logo que o dispositivo é iniciado é necessário seguir respectivamente algumas operações, como e possível observar na Figura 3.5. 68 Após sua inicialização a primeira sub-rotina chamada é a Configuração do Temporizador, esta é responsável por definir todas as atividades do temporizador interno do microcontrolador. Quando acionada, ela configura o TIM1 para realizar interrupções a cada 1 segundo, este que será utilizado para determinar a atualização do display e envio das informações ao servidor. É configurado também o TIM2 responsável por gerar interrupções para leitura do sensor do oxímetro e emissão dos LEDs, sua configuração é determinada para gerar uma ISR a cada 4 milissegundo. A segunda sub-rotina a ser chamada é a Configuração de Portas, esta é responsável por iniciar individualmente cada porta e determinar sua função bem como as configurações de operação. Feitas estas duas sub-rotinas, o dispositivo está inicializado e pronto para a operação, a partir deste momento ele entra em um loop contínuo de captura de dados até que haja uma requisição para desligar o dispositivo. 3.4.4. Exibição dos Dados no Display Para buscar a melhor performance do microcontrolador os dados são exibidos de acordo com a variação das informações e sua prioridade. Para realizar a gestão deste tempo, foi necessário criar uma variável contadora. Este contador implementado em software é controlado pelo TIM1, onde uma ISR com período de 1 segundo é gerada incrementando o contador. Figura 3.6 - Display LCD do dispositivo Fonte: Elaborada pelo autor 69 O dispositivo possui um LCD que exibe informações do batimento cardíaco, oxigenação, temperatura corporal, índice da bateria e qualidade do sinal da rede PAN conforme ilustrado na Figura 3.6. A exibição dos dados no display são atualizadas a cada 2 segundos, dando prioridade para a oxigenação e batimentos cardíacos. Sabe-se que a temperatura corporal não varia drasticamente em questões de segundos, sendo sua atualização realizada apenas quando ocorrer uma transmissão de informações no caso em 12 segundos. 3.4.5. Transmissão dos Dados Para realizar a transmissão dos dados é necessário que o Arduino envie as informações armazenadas para o dispositivo ZigBee. Essa troca de informações é realizada utilizando as portas UART (Universal Asynchronous Receiver/Transmitter) de ambos os módulos, porém existe um problema nessa troca de dados. Cada módulo opera em voltagens diferentes, o Arduino opera por padrão em 5v e o Xbee opera em 3.3v. O Xbee Shield é responsável por converter realizar essa conversão de voltagem de modo segura e eficaz através de um regulador de tensão lógica existente em seu circuito, conforme ilustra a Figura 3.7. Figura 3.7 - Xbee acoplado ao Shield e Arduino Fonte: Elaborada pelo autor 70 Para realizar a transmissão foi criado um protocolo próprio contendo dois tipos de pacotes. O primeiro pacote é utilizado para enviar os sinais vitais de um paciente. Este pacote contém respectivamente as mensurações de BPM, temperatura e oxigenação sem a utilização de caracteres que não sejam numéricos, evitando assim o aumento de dados na transmissão do pacote, de modo que este possa ser o menor possível. Este quadro possui um tamanho total de 11 bytes conforme ilustrado no Quadro 3.1. Quadro 3.1 - Dados Vitais Batimento por Minuto (BPM) 3 Bytes Fonte: Elaborado pelo autor Temperatura Oxigenação (SpO2) 3 Bytes 5 Bytes O segundo pacote indica o desligamento de um dispositivo conforme representado no Quadro 3.2. Este pacote é enviado somente ao se encerrar o monitoramento de um paciente, sua utilização se faz necessária pelo fato do servidor precisar reconhecer o fim de um monitoramento, para isto o pacote contém três caracteres ‘F’. Quadro 3.2 - Fim de Conexão Payload 3 Bytes Fonte: Elaborado pelo autor Assim que os pacotes são montados, eles são enviados através da serial para ao módulo Xbee, que fica encarregado de fazer a transmissão chegar ao servidor. Cada pacote que é enviado aguarda uma confirmação de recebimento que é gerado pelo Xbee coordenador. Caso um pacote não complete sua transmissão o dispositivo aguarda um período de 800 ms e reenvia o pacote novamente. Caso haja quatro falhas de transmissão é exibida uma notificação no display LCD notificando a falha de rede. A composição de muitos dispositivos em uma rede PAN pode diminuir a qualidade do serviço prestado, para evitar isto o pacote de dados é enviado em períodos de 12 segundos durante uma internação normal, isto é, caso o paciente esteja com sinais vitais estáveis. Caso haja alteração nos batimentos cardíacos ou na oxigenação sanguínea esses pacotes são enviados em períodos de 4 segundos, 71 fazendo com que a atualização no servidor seja mais próxima da real, possibilitando uma melhor análise remota. Esta operação permite o monitoramento de vários pacientes, com uma qualidade de transmissão segura e eficaz. 3.5. REDE PAN ZIGBEE A rede PAN é responsável por aplicar o protocolo ZigBee e garantir a troca de informações entre os dispositivos Xbee utilizados no projeto. Formada por um módulo coordenador ligado ao servidor e diversos módulos roteadores implantados nos dispositivos leitores, esta rede é responsável por gerenciar o tráfego das informações. Toda rede PAN possui apenas um dispositivo coordenador que necessita de configurações específicas no modo Zigbee Coordinator API, para isto neste projeto foram realizadas as configurações conforme a Tabela 3.1. Tabela 3.1 - Configuração módulo coordenador Função Canal de Operação (CH) PAN ID (ID) Parte Alta Endereço de Destino (DH) Parte Baixa Endereço de Destino (DL) Número Serial Alto (SH) Número Serial Baixo (SL) Endereço de Origem 16 Bits (MY) Nível de Potência (PL) Modo de Potência (PM) Taxa de Transmissão (BD) Habilitar API (AP) Configuração Utilizada 0x0F 0x1AAA 0x0013A200 0x402C69DA 0x0000 5 – Maior 1 – Modo de Reforço Habilitado 9600 2 – API Habilitada com PPP Fonte: Elaborada pelo autor É possível notar através da configuração que por ser um dispositivo coordenador ele não possui endereçamento de destino e seu PAN ID é o menor da rede, no caso o 0x0000. Seu nível e modo de potência, foram configurados para abranger a maior distância possível, acarretando no maior consumo de energia, porém como este dispositivo está ligado a USB e possui alimentação fixa, não é necessário a preocupação com a gestão de energia. Quando um módulo Xbee é instalado em um dispositivo leitor, ele é previamente configurado, conforme a necessidades da rede PAN. Na Tabela 3.2 é representada as configurações do módulo, onde este necessita apenas da 72 informação do Canal de Operação e do PAN ID, as demais configurações são provenientes do próprio hardware ou da coordenador da rede PAN. Seu endereço PAN é fornecido após o pedido de participação na rede, quando este pedido é lançado via broadcast, tem-se a opção de gerar uma notificação ao coordenador denominada de Notificação de Associação, esta gera um pacote inicializador que será transmitido para o coordenador e será encaminhado para a serial, fazendo assim a aplicação receber um pacote Indicador de Nó. Tabela 3.2 - Configuração módulo roteador Função Canal de Operação (CH) PAN ID (ID) Número Serial Alto (SH) Número Serial Baixo (SL) Endereço de Origem 16 Bits (MY) Notificação de Associação (JN) Taxa de Transmissão (BD) Habilitar API (AP) Configuração Utilizada 0x0F 0x1AAA 0x 0013A200 0x404BACF7 Gerado pelo Coordenador da PAN 1 – Enviar ao Coordenador 9600 2 – API Habilitada com PPP Fonte: Elaborada pelo autor 3.6. APLICAÇÃO SERVIDOR A aplicação servidor é responsável por atuar como um software concentrador de dados, conforme representado na Figura 3.8. Ela tem a responsabilidade de armazenar as informações coletadas, realizar e gerenciar as notificações, enviar SMS para o médico, coordenar o estado de um dispositivo e comparar as informações coletadas de acordo com o prontuário do paciente. Figura 3.8 - Interação entre Xbee, servidor e banco de dados Fonte: Elaborada pelo autor 73 A utilização da tecnologia Java para a construção do programa proporciona algumas facilidades, pois esta possui uma Application Programming Interface (API), ou Interface de Programação de Aplicativos, a qual é livre e aberta para utilização. A interface oferece um conjunto de rotinas, métodos e atributos capazes de realizar a comunicação com o hardware, visando a simplificação e a flexibilidade nas interações com os módulos Xbee. Isso minimiza a necessidade de utilizar linguagem de baixo nível para efetuar simples operações. Figura 3.9 - Pacote Inicializador em Hexadecimal Fonte: Elaborado pelo autor A Figura 3.9 demonstra um pacote inicializador sendo enviado de um dispositivo remoto em sua primeira conexão à rede. Um exemplo de praticidade é a conversão hexadecimal de acordo com o campo do quadro, para isto a utilização da Xbee API for Java justifica-se na facilidade de interpretação do mesmo. Figura 3.10 - Xbee Explorer conectado ao notebook Fonte: Elaborada pelo autor 74 O módulo Xbee foi desenvolvido utilizando o padrão RS-232, sendo esse uma troca serial de dados binários entre um terminal e um comunicador. Para realizar a conexão entre o módulo coordenador e o computador, foi necessária a utilização de um hardware que realiza a conversão entre a serial do coordenador e a porta USB do computador, conhecido como Xbee Explorer, conforme ilustra a Figura 3.10. A interface principal do programa representada na Figura 3.11, possibilita ao administrador da rede obter todas as informações importantes tanto dos módulos, log e configurações dos componentes externos. Figura 3.11 - Tela principal da aplicação Fonte: Elaborada pelo autor Quando o servidor é iniciado, a primeira operação a ser realizada é tentar abrir a porta de comunicação e realizar a conexão com o módulo Xbee Explorer. Esse passo é primordial para que o andamento do processo ocorra, porém diversos problemas podem surgir nesse procedimento, vários deles sendo ocasionados por utilização e conflito da porta serial. Com a abertura de porta realizada com sucesso, o próximo passo é estabelecer conexão com o Modem HSDPA (High-Speed Downlink Packet Access), também conhecido como Modem 3G, este sendo responsável por enviar SMS para os médicos informando uma notificação ocorrida 75 com um paciente. Para inicializa-lo é necessário configurar a porta e velocidade a ser utilizada, além da operadora do chip que está em operação. Com os dois módulo inicializado com sucesso é possível iniciar a operação do servidor. A Figura 3.12 representa as informações dos módulos externos disponibilizadas na tela principal da aplicação. Figura 3.12 - Informações do Xbee e Modem HSDPA Fonte: Elaborada pelo autor Como o módulo coordenador é o centro de todas as recepções, é necessário trabalhar com threads para que seu processamento não seja sobrecarregado, o que implica um gargalo de conexão. Devido a diversas conexões foi necessário utilizar dois componentes para coordenar e maximizar o desempenho de todas as threads da aplicação, sendo estes o ThreadPool e ExecutorService, que são componentes que interagem com o sistema operacional e a aplicação Java de modo a economizar e reutilizar os recursos de paralelismo imposto pela máquina virtual. Para reconhecer uma requisição de transmissão, um Listener, rodando em tempo integral no servidor, permite identificar os pedidos. Quando uma requisição é atendida, imediatamente é aberta uma thread, liberando, assim, o Listener, para atender novas requisições. Ao iniciar uma thread primária, ela recebe um pacote que 76 segue as normas padrão 802.15.4, sendo responsável então, por conduzir este pacote. Após as verificações de segurança e integridade, o conteúdo enviado pelo microcontrolador é verificado e pode ser de três tipos conforme ilustra a Figura 3.13, que representa o fluxo de atividades do servidor e como suas conexões são tratadas. Figura 3.13 - Fluxo de atividades do servidor Fonte: Elaborada pelo autor O primeiro pacote é responsável por iniciar um novo monitoramento, denominado como Pacote Inicializador, este é representado pela classe de pacotes ZNetNodeIdentificationResponse. Quando esse tipo de pacote é identificado, primeiramente inicia-se uma busca no banco de dados na tentativa de localizar uma internação válida e ativa, se encontrada, uma nova thread do tipo “ThreadDispositivo” é inicializada e nomeada com o endereço de origem do pacote, 77 após estes passos esta é colocada no pool de threads, que está localizado no evento principal e tem sua operação iniciada através do ExecutorService. Essa nova thread que pertence a classe ThreadDispositivo possui características únicas nesse sistema. Analisando seu conteúdo é possível notar que esta foi modelada para otimizar todo o processo de leitura e gravação de dados. Um dos seus atributos, é a respectiva internação, visando facilitar a armazenagem de dados a cada mensuração recebida. Outra característica importante a ser observada é seu tempo de vida. Em uma situação normal, nunca um monitoramento ativo ficará mais de 20 segundos sem receber nenhuma informação do microcontrolador. Caso se passe 20 segundos e ela não seja despertada manualmente, isto é, receba dados de um paciente, ela acorda do seu estado de espera e se destrói. Quando isto acontece, o estado do dispositivo muda o status de Em Operação para Sem Conexão, notificando o administrador e o enfermeiro que algo aconteceu com aquele dispositivo, ao mesmo tempo ela é removida do pool de threads, liberando espaço para o processamento de novos itens. O segundo e o terceiro tipo de pacote são representados pela classe de protocolo denominada ZNetRxResponse. Ao se receber este tipo de pacote, o servidor analisa o seu conteúdo verificando se é um pacote de Dados ou um Finalizador através do tamanho dos dados. Caso seja um pacote de Dados, o servidor realizará o processamento interno com os dados recebidos. A Figura 3.14 ilustra o conteúdo dos dados recebidos. Figura 3.14 - Pacote de Dados em Hexadecimal Fonte: Elaborada pelo autor Analisando este pacote é possível notar que o conteúdo da mensuração está no segmento de hexadecimais representados pelo 0x31 0x34 0x31 033 0x31 0x37 0x37 0x38 0x30 0x30. Convertendo esses valores de hexa para a tabela ASCII é possível observar os caracteres 1413177800, representando respectivamente 78 batimentos cardíacos com 141 bpm, temperatura de 31,7ºC e oxigenação sanguínea de 78.00%. Ao receber esses dados, a thread primária trata-os de modo que estes sejam separados e organizados em um conjunto de dados. Este conjunto de dados contém o endereço 64 bits do dispositivo de origem, temperatura, batimento cardíaco e oxigenação. Logo que realizado o tratamento, inicia-se a procura pela ThreadDispositivo no pool de threads, que tenha o respectivo endereço de origem. Ao localiza-la passa-se o conjunto de dados e realiza uma notificação para que a mesma saia do estado de espera e volte a ser processada. Esta notificação acontece sempre antes dos 20 segundos, logo ao invés de se destruir, ela executa o processo de Verificação de Dados. Este processo é realizado em etapas, primeiramente os dados são analisados de acordo com o prontuário do paciente, vendo se os valores atende a faixa padrão do paciente. Caso esse valor seja superior ou inferior a faixa determinada em seu prontuário, é imediatamente gerada uma notificação no software e também uma requisição de envio de SMS para o médico responsável da internação. Para gerar uma notificação SMS é modelada uma mensagem de acordo com a enfermidade que está acontecendo, sendo então disparada ao controlador do modem. Após a notificação ser gerada, esta primeira por ser prioridade, os dados recolhidos são gravados no banco de dados com o horário de recebimento, ficando assim disponíveis para serem consultadas a qualquer momento. Quando um SMS é enviado, uma flag no respectivo processo da internação é ativada, isto para evitar que o médico receba outro SMS avisando sobre a mesma ocorrência. A partir deste momento todos os novos dados são analisados buscando uma perfil de estável do paciente. Para atingir este perfil, é necessário que haja a ocorrência de oito dados consecutivos dentro dos limites imposto no prontuário. Deste modo case o médico receba uma nova notificação, provavelmente o paciente teve uma recaída aos procedimentos realizados. O terceiro pacote classificado como Finalizador, é gerado ao se desligar o Dispositivo Leitor. Este possui a finalidade principal de encerrar a conexão com o servidor e remover a ThreadDispositivo do pool. Quando este pacote é recebido o servidor muda o status do dispositivo de Em Operação para Desligado, esta operação permite que uma internação seja encerrada, evitando assim erros no monitoramento, além de liberar espaço para mais processamento no servidor. 79 Para manter um registro de todas as atividades realizadas no servidor, o programa principal oferece uma interface de log, onde todas as ações realizadas no servidor são apresentadas, desde um pacote que foi descartado até a confirmação de envio de um SMS. Na Figura 3.15 é demonstrado uma série de atividades realizadas no servidor. As mensagens de erro apresentadas pelo servidor podem ser classificadas como operacionais e avisos. A classe operacional possui a tarefa de realizar notificações sobre status de hardware e atividades realizadas pelo dispositivo, como por exemplo, uma associação, perca de sinal ou desligamento do dispositivo. Já a classe de avisos realizam notificações sobre o paciente, estas sendo de caráter urgente sobre alguma enfermidade ocorrida. Figura 3.15 - Log do servidor Fonte: Elaborada pelo autor A vantagem de manter um registro de todas atividades no servidor é que, em caso de alguma falha ou eventual problema, é possível realizar uma auditoria completa na busca do erro. O conteúdo deste registro informa todos os tipos de mensagens, desde a tentativa de recepção de dados até falha de envio do SMS possibilitando realizar revisões periódicas da qualidade do serviço e permitindo também a elaboração de estatísticas de recursos do sistema. 80 3.7. APLICAÇÃO WEB Essa aplicação tem como objetivo realizar a interação entre médicos, enfermeiros, pacientes e assistentes, possibilitando facilidade no acesso e manipulação das informações. A utilização de um sistema web, proporciona ao usuário a interação entre dispositivos de diversos segmentos, como PC, Tablets, Smartphones, entre outros. Desse modo é possível acessar a aplicação de qualquer lugar que possua uma conexão com a internet e de maneira segura, desde que esta seja modelada com restrições para acessos fora da rede privada. A utilização do Primefaces proporcionou um ambiente agradável e fácil de operação como ele utiliza a tecnologia JSF (JavaServer Faces), os dados que transitam entre as sessões tornam-se dinâmicos, permitindo facilidade e agilidade na visualização das telas. As atualizações ocorrem em tempo real sem a necessidade de carregar todos os dados novamente, pois o sistema já consegue detectar alterações de dados. Na Figura 3.16 é demonstrado a página de internação, esta é responsável por mostrar todos os monitoramentos ativos, bem como a última informação coletada do dispositivo. Figura 3.16 - Monitoramento em tempo real Fonte: Elaborada pelo autor Para melhor análise de uma internação é possível detalhar o monitoramento de tal forma que este passa a exibir as informações do prontuário, bem como as 81 notificações geradas pelo software estas podendo ser operacionais ou avisos médicos, conforme ilustrado na Figura 3.17. Figura 3.17 - Detalhes do monitoramento do paciente Fonte: Elaborada pelo autor 82 CONCLUSÃO Conclui-se a partir do desenvolvimento deste projeto, que o protocolo ZigBee é uma tecnologia com vasta aplicação, visto que sua aplicação é extremamente versátil. Neste trabalho, sua utilização ficou limitada a base operacional, utilizando apenas a comunicação. Outra vantagem muito grande é a localização de dispositivos a partir de uma triangulação, podendo assim ampliar sua gama de aplicações. A qualidade de serviço oferecida pelo protocolo na implementação médica foi aceitável, visto que o tráfego e a distância alcançada foram satisfatórias nos testes. A utilização de mais de 300 dispositivos em uma única rede pode resultar em pequenos atrasos, porém, a tecnologia permite a utilização de diversas pequenas redes trabalhando em canais diferentes, onde estas podem rotear seus pacotes para outros dispositivos coordenadores, permitindo então diminuir a colisão de pacotes bem como sua qualidade de transmissão. Foi necessário muito tempo para aprender sobre as tecnologias envolvidas, a fim de usá-las corretamente, mas certamente foi um tempo muito bem utilizado, pois esse trabalho proporcionou um desenvolvimento técnico muito grande, além de garantir ampla experiência prática com assuntos estudados dentro e fora da sala de aula. A construção do oxímetro de pulso de baixo custo não foi bem sucedida. Seu maior problema está no circuito de condicionamento de sinal, este que apesar de várias implementações e alterações não proporcionou uma onda válida. Diversos filtros foram utilizados, sendo eles, ativos, passivos, pré-modelados como o Butterworth de quarta ordem ou filtro Notch Duplo T. Apesar de todos os esforços foi constatado muita interferência no sinal. Com pesquisas mais avançadas e solicitação de ajuda com profissionais experientes da área, constatou-se que a mensuração médica é muito complexa e sensível, sendo considerada como uma das áreas mais crítica em relação a intromissões e perturbações. Apesar da elaboração do software utilizado no microcontrolador estar pronta, foi necessário simular os batimentos cardíacos e a oximetria de pulso para realizar os teste no sistema. A simulação de dados não foi considerada como um fator de risco para o projeto, onde esta, depende apenas da captura do dados, tendo todo o 83 restante do sistema em operação. Como o sistema foi segmentado em módulos, é necessário apenas a construção ou aquisição de um sensor de qualidade, sem que haja a necessidade de qualquer alteração no restante do sistema. A utilização do Arduino como um dispositivo leitor não é indicada para aplicações profissionais, onde este possui apenas um foco educacional, na prática diversas limitações são impostas utilizando este componente, apesar de seu controlador ser um chip poderoso, ele está aliado a uma interface open-source de aprendizado, o que inviabiliza uma abordagem mais teórica e avançada. A ideia inicial do projeto era construir um hardware para realizar essa verificação de sinal, porém, como foi gasto muito tempo em cima da elaboração do oxímetro de pulso, não houve tempo para migrar o leitor do Arduino para um hardware especializado, tendo assim que alterar o escopo e o cronograma do projeto. A Freescale (antiga Motorola) oferece diversos componentes eletrônicos de alto desempenho e aplicação real. A modelagem de um protótipo funcional, atendendo todas regras de saúde, necessita de um investimento elevado, mas pode retornar um produto de mercado. A continuidade deste projeto pode ser dada aproveitando os módulos já prontos. A implementação de novas ações e funcionalidades podem completar o sistema deixando mais robusto e funcional. Realizar troca de informações de prontuário através do módulo controlador Desenvolver um aplicativo mobile, com integração direta ao banco de dados Utilizar sensores e controladores médicos de alta qualidade oferecidos pela FreeScale Realizar a integração entre sistemas hospitalares e o módulo de monitoramento 84 REFERÊNCIA BIBLIOGRÁFICA ALEXANDER, C. K.; SADIKU, M. N. O. Fundamentos de Circuitos Elétricos. Porto Alegre: Bookman, 2003. ISBN 978-85-363-0249-2. Al-Khawarizmi Institute of Computer Science. Disponível em: <http://www.kics.edu.pk/wdsp/flextrainer/images/dspimages/BPSK_tx_image004.gif> . Acessado em 08 de abril de 2013. ARDUINO. Arduino. Disponível em: <http://www.arduino.cc>. Acesso em: 01 de Novembro de 2013. ATMEL. 8-Bit AVR Microcontroller. Datasheet 8161D-AVR. Atmel Corporation, San Jose, EUA, 2009. BOLTON, W. Instrumentação & Controle. 1. Ed. Curitiba: Hemus, 2005. BURATTI, C. et al Sensor Networks with IEEE 802.15.4 Systems. 1. Ed Berlin: Springer-Verlag, 2011. ISBN 978-3-642-17489-6 CONSELHO REGIONAL DE ENFERMAGEM. Oximetria de Pulso Arterial. 2009. São Paulo. DIGI, International Inc. XBee®/XBee-PRO® RF Modules. 90000982_B Datasheet, Minnetonka, USA, 2009. 69 p. ____, Internacional Inc. XBee®/XBee-PRO® ZB RF Modules. 90000976_G Datasheet, Minnetonka, USA, 2010. 155 p. ERGEM, S. C. ZigBee/IEEE 802.15.4 Summary. 2004. ESCHNER, R. H. Sistema de Automação Residencial Baseado em Sensores ZigBee. 2011. Tese (Graduação em Ciências da Computação) - Universidade Federal do Rio Grande do Sul, Porto Alegre. FALUDI, R. Building Wireless Sensor Networks. 3. Ed. Sebastopol: O’Reilly Media, 2011. ISBN 978-0-596-80773-3 FARAHANI, S. ZigBee Wireless Networks and Transceivers. 1. Ed. Burlington: Elsevier, 2008. FLOYD, T. L. Sistemas Digitais: Fundamentos e Aplicações. 9. Ed. Porto Alegre: Bookman, 2007. FONSECA, E. G. P.; BEPPU, M. M. Apostila Arduino. Niterói-RJ: Universidade Federal Fluminense, 2010. 85 GISLASON, D. ZigBee Wireless Networking. Oxford: Elsevier, 2008. ISBN 978-0750-68597-9. HARGREAVES, E. O protocolo CSMA-CA e o padrão IEEE 802.11. Rio de Janeiro: UFRJ. IEEE 802.15.4. Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (LRWPANs). The Institute of Electrical na Electronic Engineers, Inc. New York, EUA, 2003. ______. IEEE 802.15.4e Application: Healthcare. The Institute of Electrical na Electronic Engineers, Inc. New York, EUA, 2008. ______. IEEE 802.15.4 MAC PHY Controller Standards. The Institute of Electrical na Electronic Engineers, Inc. New York, EUA, 2010. JAPAN, H. New JRC Introduces a Reflective Optical Sensor the NJL5501R Well Suitable for Pulse Oximeter and Heart Rate Monitor. Disponível em: <http://www.houseofjapan.com/electronics/new-jrc-introduces-a-reflective-opticalsensor-the-njl5501r-well-suitable-for-pulse-oximeter-and-heart-rate-monitor>. Acesso em: 14 Julho 2013. LOPEZ, S. Pulse Oximeter Fundamentals and Design. Freescale Semiconductor, 2012. MALAFAYA, H.; TOMÁS, L.; SOUZA, J. P. Sensorização sem fios sobre ZigBee e IEEE 802.15.4. Porto, Portugal: Faculdade de Engenharia da Universidade do Porto. MASSAFERA, U. J. S.; ZAVAN, F. M. Estratégia Empresarial para Controle Físico de Acessos por Meios Dados Biométricos. 2012. Tese (Graduação em Engenharia da Computação) – Centro Universitário de Lins, Lins. MOSBY, C. V. Workbook: Egan’s Fundamentals of Respiratory Care. 9. Ed. St. Louis: Mosby Company, 2008. ISBN 978-0-323-05188-0 NOVA, F. S. V. REDES DE SENSORES EM MALHA SEM FIO: UM ESTUDO DE CASO DE AUTOMAÇÃO RESIDENCIAL USANDO A TECNOLOGIA ZIGBEE/IEEE 802.15.4. Belém: Universidade Federal do Pará, 2009. PAZ, M. A. S. Segurança em Equipamentos de Monitorização em Sala Cirúrgica e UTI Oxímetro de Pulso, Capnógrafo, Monitor Cardíaco e Monitor de Pressão Não Invasivo. 1996. Tese (Pós Graduação em Engenharia Elétrica) – Universidade Federal de Santa Catarina, Florianópolis. PIMENTEL, C. J. L. Comunicação Digital. Rio de Janeiro: Brasport, 2007. ISBN 978-85-7452-285-2 ROSSETO, L. T. Leitor Biométrico Wireless. 2009. Tese (Graduação em Engenharia Elétrica) – Escola de Engenharia – Universidade Federal do Rio Grande do Sul, Porto Alegre. 86 SANTOS, S. T. Redes de Sensores Sem Fio em Monitoramento e Controle. 2007. Tese (Mestrado em Engenharia Elétrica) – Universidade Federal do Rio de Janeiro, Rio de Janeiro. TEXAS INSTRUMENTS. Monolithic Photodiode and Single-Supply Transimpedance Amplifier. Datasheet SBBS002. Texas Instruments, Dallas, EUA, 2013. TIRELO, C. M. Oxímetro de Pulso. 2006. Tese (Graduação em Engenharia Elétrica) – Universidade Federal do Espírito Santo, Vitória. TURNER, L. W. Circuitos e Dispositivos Eletrônicos. 1. Ed. Curitiba: Hemus, 2004. ISBN 978-85-289-0011-8 ULABY, F. T. Eletromagnetismo para Engenheiros. Porto Alegre: Bookman, 2007. ISBN 978-85-600-3119-1 ZIGBEE Alliance. ZigBee Specification: ZigBee Document 053474R17. ZigBee Alliance, San Ramon – CA, 2008. ______. Telecom Applications Profile Specification: 075307R07. ZigBee Alliance, San Ramon, 2010. ZigBee Document ______. ZigBee IP Specification: ZigBee Document 13-002R00. ZigBee Alliance, San Ramon, 2013. 87 APÊNDICE A – EXPLICAÇÃO E MATERIAL DIGITAL DO PROJETO Todo o material digital gerado para a produção deste trabalho encontra-se no DVD abaixo. O conteúdo está separado de acordo com as seguintes pastas: Servidor Java: Encontra-se o projeto Java, utilizado para o desenvolvimento da aplicação servidor, inclusive seu código fonte. Servidor Web: Encontra-se o projeto Java, utilizado para o desenvolvimento da aplicação web, inclusive seu código fonte. Software do microcontrolador: É a pasta do projeto criada pelo compilador Arduino e contém o código-fonte do software do microcontrolador. Bibliotecas e DDL’s: Arquivos necessários para a reprodução do projeto, bem como a interação entre módulos externos com o sistema operacional. Diagramas e circuito do Hardware implementado. Banco de Dados: Script de criação e preenchimento. Segue o DVD com todo o conteúdo descrito acima.