Sei sulla pagina 1di 103

UNIVERSIDADE SALVADOR DEPARTAMENTO DE ENGENHARIA E ARQUITETURA ENGENHARIA ELTRICA

BRUNO CERQUEIRA SEIXAS

SISTEMA DE MONITORAMENTO ON-LINE DE AMBIENTES DE TRABALHO PERIGOSOS

SALVADOR/BA 2010

BRUNO CERQUEIRA SEIXAS ENGENHARIA ELTRICA

SISTEMA DE MONITORAMENTO ON-LINE DE AMBIENTES DE TRABALHO PERIGOSOS

Trabalho Final de Graduao como exigncia parcial para obteno do Diploma de Graduao em Engenharia Eletrnica, da Universidade Salvador.

Orientador: Professor Euclrio Ornellas Filho

SALVADOR/BA 2010

AGRADECIMENTOS
A meu pai e minha me, pelo apoio irrestrito, direto e indireto, em todos os momentos. A meu orientador Prof. Euclrio Ornellas, pela orientao acadmica e pela amizade durante todo o percurso. Ao Prof. Marcelo Cad, pelos conselhos e amizade durante o curso. A meus amigos, pela compreenso. A meus colegas, pela amizade, aprendizagem e apoio em todas as horas. A minha namorada, pela pacincia, carinho e compreenso em quase todos os momentos.

RESUMO
SEIXAS, B. Sistema De Monitoramento On-Line de Ambientes de Trabalho Perigosos. 2010. 102 f.Trabalho Final de Graduao (TFG) Curso de Engenharia Eltrica, Universidade Salvador, Bahia. Esse trabalho apresenta o estudo e desenvolvimento de um prottipo para monitoramento on-line de ambientes de trabalho perigosos. O prottipo possui a funo de analisar a temperatura ambiente de trabalho e as concentraes de monxido de carbono e gs liquefeito de petrleo atravs de uma unidade remota e um servidor de dados. O exemplo mais comum de ambientes perigosos so os industriais, no qual os processos de produo proporcionam valores excessivos das variveis mencionadas. O prottipo desse trabalho analisa essas variveis e mostra seus valores em uma janela de visualizao no servidor, gerando alarme visual caso alguma varivel passe do limite especificado. O servidor tambm armazena o valor, a data e o horrio de cada leitura do sensor em forma de arquivo Excel, para que possa ser futuramente analisado em forma grfica. O prottipo da unidade remota construdo de forma modular, tendo cada mdulo uma funo especfica no sistema. O objetivo desse trabalho provar o conceito do sistema e incentivar o desenvolvimento de um produto que possa ser comercializado. Os resultados obtidos nos testes de validao do prottipo atingiram as expectativas iniciais de desenvolvimento do sistema. Esse projeto busca ajudar as empresas a se manterem dentro dos limites especificados por lei e garantir a segurana dos seus funcionrios atravs de uma soluo de baixo custo. Palavras-Chave: Monitoramento; gs; baixo custo.

ABSTRACT
SEIXAS, B. On-Line Monitoring System for Dangerous Work Environment. 2010. 102 f. Graduation Final Work Electrical Engineering Course , Universidade Salvador, Bahia. This work presents the study and development of a prototype for an on-line monitoring device of dangerous work environment. The prototype has the function of analyzing environment temperature, carbon monoxide and liquefied petroleum gas concentrations, using a remote unit and a data server. The most common example of dangerous work environments are the industrial environments, in which the production processes provide excessive values of the mentioned variables. The prototype analyzes those variables and displays their values in a visualization window on the server, creating visual alarms if some variable go over the specified limit. The data server also stores the value, the date and the time of each sensor reading in an Excel file, so that it can be analyzed hereafter in graphic form. The prototype is built in a modular way, and each module has its specified function. The objective of this work is to prove the concept of the system and encourage the development of a commercial product. The results obtained from the validation testes achieved the initial system development expectations. The project aims to help companies to maintain their work environments compatible with the limits specified by law and, that way, guarantee their employees' safety by using a low cost solution.

Keywords: Monitoring; gas; low cost.

LISTA DE FIGURAS
Figura 1: Configuraes de redes Wi-Fi. Fonte: (LEE, SU, SHEN, 2007) [3]..18 Figura 2: Roteador Wi-Fi Linksys_WRT54G. Fonte: (WIKIPEDIA, 2010) [1]..19 Figura 3: Adaptador USB Bluetooth. Fonte: (WIKIPEDIA, 2010) [1]...............20 Figura 4: Topologias de rede Zigbee. Fonte: (ERGEN, 2004) [2]...................21 Figura 5: Kit de desenvolvimento com chip CC2430 da Texas Instruments. (Texas Instruments, 2010) [6]..........................................................................21 Figura 6: Circuito utilizando chip CC2430 da Texas Instruments. (Texas Instruments, 2010)...........................................................................................22 Figura 7: Camadas de protocolo da rede Zigbee. (FARAHANI, 2008) [4].....................................................................................................................23 Figura 8: Bandas de freqncia de operao. (ERGEN, 2004) [2].....................................................................................................................25 Figura 9: Formatos dos encapsulamentos das camadas MAC e PHY. (EADY, 2007) [5]...........................................................................................................27 Figura 10: Modelo de referncia da camada MAC. (FARAHANI, 2008) [4].....................................................................................................................28 Figura 11: Estrutura de um superframe. (FARAHANI, 2008) [4].....................29 Figura 12: O espao entre quadros em (a) uma transmisso com reconhecimento e (b) em uma transmisso sem reconhecimento. (FARAHANI, 2008) [4]...........................................................................................................31 Figura 13: O algoritmo do CSMA-CA. (FARAHANI, 2008) [4].........................32 Figura 14: Problema de Ns Escondidos. (FARAHANI, 2008) [4]...................34 Figura 15: (a) Formato do quadro MAC e (b) detalhes do campo Controle de Quadro. (FARAHANI, 2008) [4].......................................................................34 Figura 16: Sequncia de Associao. (FARAHANI, 2008) [4]........................38 Figura 17: Sequncia de Dissociao Iniciada pelo (a) Dispositivo pertencente a rede e (b) pelo coordenador da rede. (FARAHANI, 2008) [4]......................39 Figura 18: Configurao bsica para sensor de (+2C +150C). (NATIONAL SEMICONDUCTOR, 2000) [6]........................................................................41 Figura 19: Configurao do Sensor e Circuito de Operao. (HANWEI, 2010) [7].....................................................................................................................42 Figura 20: Princpio de Operao do MQ-7. (HANWEI, 2010) [7]...................46

Figura 21: Circuito bsico de operao do MQ-7. (HANWEI, 2010) [7]..........47 Figura 22: Estrutura do PIC 16F877A. (VERLE, 2010) [9]..............................49 Figura 23: Diagrama de blocos do Timer 2. (MICROCHIP, 2003) [10]...................................................................................................................52 Figura 24: Algoritmos de operao do transmissor e do receptor...................56 Figura 25: Algoritmo de operao do conversor A/D.......................................59 Figura 26: Diagrama de pinos do PIC16F877A. (MICROCHIP, 2003) [10].....60 Figura 27: Mapa e Pilha da Memria de Programa do PIC16F877A. (MICROCHIP, 2003) [10].................................................................................61 Figura 28: Mdulo XBee-PRO da MAXSTREAM. (MAXSTREAM, 2006) [12]...................................................................................................................62 Figura 29: Conexo UART entre microcontrolador e mdulo XBee.(MAXSTREAM, 2006) [12].....................................................................63 Figura 30: Pacote de dados UART.(MAXSTREAM, 2006) [12]...................................................................................................................63 Figura 31: Adaptador COM-USBBEE da Rogercom.(ROGERCOM, 2008) [11]...................................................................................................................65 Figura 32: Ligao entre adaptador Zigbee e microcontrolador.(ROGERCOM, 2010) [11].........................................................................................................65 Figura 33: Integrao dos Mdulos do Sistema..............................................64 Figura 34: Prottipo da Unidade Remota (Frente)..........................................68 Figura 35: Prottipo da Unidade Remota (Fundo)...........................................68 Figura 36: Configurao Simples do Regulador LM317 [14]...........................69 Figura 37: Fluxograma do programa da unidade remota................................70 Figura 38: Fluxograma do programa do servidor............................................72 Figura 39: Janelas do programa do servidor..................................................72

LISTA DE GRFICOS
Grfico 1: Tendncia da corrente pela temperatura. (NATIONAL SEMICONDUCTOR, 2000) [6]...................................................................................41 Grfico 2: Caracterstica da Sensibilidade do MQ-6 para Diferentes Gases (Temp:20C, Umidade: 65%, O2: 21%, RL=20K). (HANWEI, 2010) [7]................................................................................................................................43 Grfico 3: Dependncia em Umidade e Temperatura do MQ-6. (HANWEI, 2010) [7]................................................................................................................................44 Grfico 4: Caracterstica da Sensibilidade do MQ-135 para Diferentes Gases. (HANWEI, 2010) [7]....................................................................................................45 Grfico 5: Dependncia em Umidade e Temperatura do MQ-135. (HANWEI, 2010) [7]................................................................................................................................45 Grfico 6: Caracterstica da Sensibilidade do MQ-135 para Diferentes Gases (Temp:20C, Umidade: 65%, O2: 21%, RL=10K). (HANWEI, 2010) [7]..................47 Grfico 7: Dependncia em Umidade e Temperatura do MQ-7. (HANWEI, 2010) [7]................................................................................................................................48 Grfico 8: Variao da Temperatura Ambiente no Teste de Validao com Vela.....73 Grfico 9: Variao de monxido de Carbono no Teste de Validao com Vela......74 Grfico 10: Variao de gs GLP no Teste de Validao com Vela..........................74 Grfico 11: Variao da Temperatura Ambiente no Teste de Validao com Isqueiro.......................................................................................................................75 Grfico 12: Variao de monxido de Carbono no Teste de Validao com Isqueiro.......................................................................................................................75 Grfico 13: Variao de gs GLP no Teste de Validao com Isqueiro.......................................................................................................................76

LISTA DE TABELAS
Tabela 1: Bandas de freqncia e taxas de transmisso Zigbee (traduzido).(ERGEN, 2004) [2].....................................................................................................................24 Tabela 2: Comprimentos do campo SFD.(FARAHANI, 2008)[4]................................27 Tabela 3: Valores de comprimento de MPDU em octetos.(FARAHANI, 2008) [4].....28 Tabela 4: Caractersticas eltricas do sensor MQ-6. (HANWEI, 2010) [7].................43 Tabela 5: Caractersticas eltricas do sensor MQ-135. (HANWEI, 2010) [7].............44 Tabela 6: Caractersticas Eltricas do MQ-7. (HANWEI, 2010) [7]............................46 Tabela 7: Bits de configurao do Timer 0 pertencentes ao registrador OPTION_REG. (MICROCHIP, 2003) [10]..................................................................50 Tabela 8: Bits de configurao do Timer 1 pertencentes ao registrador T1CON. (MICROCHIP, 2003) [10]...........................................................................................51 Tabela 9: Bits de configurao do Timer 2 pertencentes ao registrador T2CON. (MICROCHIP, 2003) [10]...........................................................................................53 Tabela 10: Freqncia mxima do dispositivo para cada opo de TAD. (MICROCHIP, 2003) [10]............................................................................................57 Tabela 11: Configuraes das portas do mdulo A/D. (MICROCHIP, 2003) [10]......59 Tabela 12: Bits de seleo do banco de dados. (MICROCHIP, 2003) [10]...............61 Tabela 13: Caractersticas do mdulo XBee-PRO [12]..............................................62

10

LISTA DE ABREVIATURAS E SIGLAS


A/D ACK AP BLE BSS CAP CCA CFP CI CS CW DS DSSS ED EEPROM ESS Fev. FHSS GLP GTS I/O IEEE IFS ISO Jan. LIFS LQI MAC-PIB MCSP-SAP MLME MLME-SAP Conversor Analgico para Digital Acknowledged Access Point Battery Life Extension Basic Service Set Contention Access Period Clear Channel Assessment Contention Free Period Circuito Integrado Carrier Sense Contention Window Distribution System Direct Sequence Spread Spectrum Energy Detection Electrically Erasable Programmable Read Only Memory Extended Service Set Fevereiro Frequency Hopping Spread Spectrum Gs de Petrleo Liquefeito Guaranteed Time Slot Entrada e sada digital Instituto dos Engenheiros Eletricistas e Eletrnicos Interframe Spacing International Organization for Standardization Janeiro Long Interframe Spacing Link Quality Indication MAC PAN Information Base MAC Common Part Sublayer SAP MAC Layer Management Entity Ponto de acesso a servios do MLME

11

MPDU MSDU NPDU OSI PDA PHR PLME PPDU ppm PSDU PWM RH RISC RSS SAP SFD SHR SIFS SNR USART Wi-Fi WLAN WPAN

MAC Protocol Data Unit MAC Service Data Unit Network Protocol Data Unit Open System Interconection Personal digital assistants PHY Header Physical Layer Management Entity PHY Protocol Data Units Partes por milho PHY Service Data Unit Pulse-Width Modulation Relative Humidity Reduced Instruction Set Computer Received Signal Stregth Service Access Point Start of Frame Delimiter Synchronization Header Short Interframe Spacing Signal-to-Noise Ratio Universal Transmitter Wireless fidelity Wireless Local Area Network Wireless Personal Area Network Synchronous and Asynchronous Receiver

12

SUMRIO
1 INTRODUO........................................................................................................14 1.1 OBJETIVO............................................................................................................14 1.2 JUSTIFICATIVA...................................................................................................15 1.3 METODOLOGIA DO TRABALHO........................................................................15 2 TECNOLOGIAS DE COMUNICAO WIRELESS................................................17 2.1 INTRODUO.....................................................................................................17 2.2 A TECNOLOGIA Wi-Fi.........................................................................................17 2.3 A TECNOLOGIA BLUETOOTH............................................................................19 2.4 A TECNOLOGIA ZIGBEE....................................................................................20 2.5 ESCOLHA DA TECNOLOGIA..............................................................................22 3 O PADRO IEEE 802.15.4.....................................................................................23 3.1 CAMADAS DE PROTOCOLO DO IEEE 802.15.4...............................................23 3.1.1 O IEEE 802.15.4 PHY.......................................................................................24 3.1.1.1 DETECO DE ENERGIA (ED ENERGY DETECTION).............................................................................................................25 3.1.1.2 INDICAO DE QUALIDADE DA CONEXO (LQI LINK QUALITY INDICATION).............................................................................................................26 3.1.1.3 AVALIAO DE CANAL LIVRE (CCA CLEAR CHANNEL ASSESSMENT)..........................................................................................................26 3.1.1.4 UNIDADES DE DADOS DA CAMADA PHY..................................................27 3.1.2 O IEEE 802.15.4 MAC.......................................................................................28 3.1.2.1 MODOS DE OPERAO...............................................................................29 3.1.2.2 ESPAO ENTRE QUADROS........................................................................30 3.1.2.3 O CSMA-CA...................................................................................................31 3.1.2.4 O PROBLEMA DE NS ESCONDIDOS........................................................33 3.1.2.5 FORMATO GERAL DO QUADRO MAC........................................................34 3.1.2.6 SERVIOS MAC............................................................................................36 3.1.2.6.1 SERVIO DE DADOS MAC........................................................................36 3.1.2.6.2 SERVIO DE GERNCIA MAC..................................................................37

13

4 AQUISIO DE DADOS........................................................................................40 4.1 SENSORES..........................................................................................................40 4.1.1 SENSOR DE TEMPERATURA.........................................................................40 4.1.2 SENSOR DE GASES INFLAMVEIS...............................................................42 4.1.3 SENSOR DE QUALIDADE DO AR...................................................................44 4.1.4 SENSOR DE MONXIDO DE CARBONO.......................................................45 4.2 MICROCONTROLADOR.....................................................................................48 4.2.1 TEMPORIZADORES (TIMERS).......................................................................49 4.2.1.1 TIMER 0...................................................................................49 4.2.1.2 TIMER 1...................................................................................51 4.2.1.3 TIMER 2...................................................................................52 4.2.2 COMUNICAO SERIAL ASSNCRONA........................................................54 4.2.3 CONVERSOR ANALGICO PARA DIGITAL (A/D).........................................56 4.2.4 DIAGRAMA DE PINOS.....................................................................................60 4.2.5 ORGANIZAO DA MEMRIA.......................................................................60 4.3 MDULO DE COMUNICAO ZIGBEE............................................................61 4.4 ADAPTADOR USB PARA MDULO ZIGBEE....................................................64 4.5 ADAPTADOR PARA MDULO ZIGBEE............................................................65 5 CONSTRUO DO PROTTIPO.........................................................................66 5.1 MODULARIZAO E INTEGRAO DO SISTEMA..........................................66 5.2 CONSTRUO DO HARDWARE.......................................................................67 5.3 DESENVOLVIMENTO DO SOFTWARE.............................................................70 5.3.1 PROGRAMA DA UNIDADE REMOTA.............................................................70 5.3.2 SOFTWARE SERVIDOR..................................................................................71 6 TESTES E RESULTADOS.....................................................................................73 7 CONCLUSO.........................................................................................................77 REFERNCIAS..........................................................................................................78 ANEXO I MAPA DE REGISTRADORES................................................................80 ANEXO II PROJETOS DOS CIRCUITOS IMPRESSOS DOS MDULOS............82 ANEXO III CDIGO FONTE DO PROGRAMA DA UNIDADE REMOTA..............88 ANEXO IV CDIGO FONTE DO SOFTWARE SERVIDOR...................................93

14

INTRODUO

De acordo com o artigo 189 da CLT (Consolidao das Leis do Trabalho), as atividades insalubres so aquelas que possuem natureza, condies ou mtodos de trabalho que exponham o empregado a agentes nocivos a sade, acima dos limites de segurana fixados em razo da natureza e da intensidade do agente, assim como o tempo de exposio aos seus efeitos. O artigo 193 da CLT descreve atividades perigosas como sendo aquelas que, por sua natureza ou mtodo de trabalho impliquem em contato permanente com inflamveis ou explosivos em condies de risco acentuado. A lei permite que os empregados trabalhem em ambientes de trabalho agressivos (at um limite estabelecido), desde que recebam um adicional para isso. Porm, como um ambiente de trabalho definido como insalubre ou perigoso? Muitas empresas contratam especialistas para fazer estudos nas reas de trabalho e classific-las. Entretanto esses estudos so pontuais, incapazes de identificar variaes dos agentes nocivos com o passar do tempo. J em reas classificadas como perigosas, como identificar vazamentos de inflamveis e explosivos? Existe uma necessidade eminente de um dispositivo que consiga analisar, durante todo o perodo de trabalho, os agentes nocivos a sade presentes no ambiente de trabalho e assim determinar, no exato momento, se possvel a permanncia do empregado nessa rea. 1.1 Objetivo O Objetivo deste trabalho desenvolver um sistema capaz de monitorar gases nocivos a sade, e a temperatura do ambiente durante todo o momento que o empregado permanecer nessa rea. O dispositivo dever ser de fcil transporte e instalao, e dever enviar os dados coletados a um servidor que far o armazenamento desses dados para futura disponibilizao em forma grfica. O

15

servidor tambm dever ter o cadastro dos limites das variveis para que possa gerar alarmes caso alguma delas ultrapasse seu limite. 1.2 Justificativa As leis de trabalho impem que as empresas garantam um ambiente de trabalho seguro para seus funcionrios [15]. Porm, quando o processo trabalha com armazenamento e transporte de gases inflamveis ou explosivos existe sempre a possibilidade de vazamentos, que podem causar exploses quando a concentrao necessria do gs alcanada. Da mesma forma quando o processo produz gases txicos ou asfixiantes importante o monitoramento constante da concentrao desses gases. Outro fator importante a temperatura do ambiente. Altas temperaturas podem causar diversos problemas ao organismo, quando o trabalhador fica exposto por muito tempo. Alguns dos transtornos que esse calor excessivo pode causar so: insolao, esgotamento, cimbra, desmaio e urticria. Com um sistema de monitoramento on-line ser possvel monitorar as variveis mencionadas de forma contnua, gerando alarmes locais e remotos caso alguma varivel ultrapasse o limite programado. Assim tanto os empregados expostos quanto os responsveis pela sade e segurana da empresa sero alertados do perigo imediatamente depois de detectado o perigo, possibilitando um perodo de tempo para que os empregados tomem as devidas providncias. Com esse sistema os funcionrios podem trabalhar mais seguros e a empresa pode retirar uma das tarefas dos tcnicos de segurana, que normalmente fazem esse monitoramento de forma manual e pontual. 1.3 Metodologia do trabalho O desenvolvimento desse trabalho ser executado em cindo etapas. No captulo 2 feito o estudo das principais tecnologias de comunicao sem fio existentes, escolhendo a tecnologia que mais se adqua a esse projeto. O captulo 3 faz o estudo mais aprofundado da tecnologia wireless escolhida, para um maior domnio do funcionamento, das vantagens e das limitaes da mesma. No captulo 4 so estudados os principais componentes de hardware do projeto, incluindo os sensores de gases, o microcontrolador e o transceptor escolhidos. O

16

desenvolvimento do prottipo ser descrito no captulo 5 e os testes e resultados deste sero descritos no captulo 6.

17

TECNOLOGIAS DE COMUNICAO WIRELESS


Esse captulo faz um breve estudo sobre as principais tecnologias de

comunicao sem fio compatveis com o projeto, fazendo uma comparao entre as tecnologias para a escolha da que mais se adqua s necessidades do projeto. 2.1 INTRODUO O desenvolvimento de uma conexo sem fio foi incentivado pela necessidade por mobilidade e pelo alto custo da instalao de novos cabeamentos em estruturas j existentes. Inicialmente o incentivo pela comunicao wireless surgiu pela necessidade da comunicao de voz em reas metropolitanas. Em meados de 1980 foi notada a necessidade por redes de menor rea de cobertura e maior densidade de usurios e trafego de dados [2]. Em 1990 o IEEE (Institute of Electrical and Electronics Engineers Instituto dos Engenheiros Eletricistas e Eletrnicos) instaurou um comit para definio de um padro para conectividade sem fio e em 1997 foi aprovado o padro IEEE 802.11. Esse padro especificava opes de tecnologia para a camada fsica: difuso por infravermelho operando em 1 Mbit/s; FHSS (Frequency Hopping Spread Spectrum Salto de frequncia) operando em 1 Mbit/s ou 2 Mbit/s; DSSS (Direct Sequence Spread Spectrum Sequncia Direta de Espalhamento de Espectro) operando em 1 Mbit/s ou 2 Mbit/s [1]. Em 2002-2003 surgiram os padres IEEE 802.15.1 (Bluetooth) e 802.15.4 (Zigbee) desenvolvidos para criao de redes WPANs (Wireless Personal Area Network Rede Pessoal Sem Fio). Enquanto os padres IEEE 802.11 focam em caractersticas como longo alcance e alta taxa de transmisso, os padres IEEE 802.15 focam em baixo custo, baixa potncia, curto alcance e pequenas dimenses [2]. 2.2 A TECNOLOGIA WI-FI Baseado nos padres IEEE 802.11a/b/g a tecnologia Wi-Fi (Wireless fidelity Fidelidade Sem Fio) foi criada para redes WLAN (Wireless Local Area Network Redes Locais sem Fio). De forma transparente a camadas superiores, os padres

18

IEEE 802.11 fornecem conexo WLAN a estaes mveis, que permitem usurios acessarem a Internet em banda larga atravs de APs (Access Point - Pontos de acesso) ou em modo ad hoc (sem a necessidade de centralizadores). A clula bsica das redes IEEE 802.11 chamada de BSS (Basic Service Set), como mostra a figura 1. Um grupo de estaes que se comunicam entre si atravs de um ponto comum de acesso, um mesmo AP, e nenhuma estao conversa sem passar pelo AP. Se uma estao sair do raio de ao de uma BSS essa estao no poder se comunicar de forma direta (somente atravs do AP) com outra estao pertencente a esta BSS, sendo necessria a utilizao de um sistema de distribuio (DS Distribution System) que unir diferentes BSS ampliando o alcance de comunicao das estaes. Essa estrutura de rede contendo mais de uma BSS conectadas por APs e pelo menos um DS chama-se ESS (Extended Service Set). Um exemplo de dispositivo usado no DS mostrado na figura 2. As principais caractersticas do WiFi so: Mximo de conexes por clula: 2007. Freqncia da banda: 2.4GHz. Taxa de transmisso: 54Mbit/s. Alcance nominal: 100 metros. Potncia nominal de transmisso: 15-20 dBm [3].

Figura 1: Configuraes de redes Wi-Fi [3].

19

Figura 2: Roteador Wi-Fi Linksys_WRT54G [1]. 2.3 A TECNOLOGIA BLUETOOTH Foi desenvolvida sobre o padro IEEE 802.15.1, para inicialmente substituir cabos de perifricos de computador, tais como mouse, teclado, impressora e fones de ouvido. Atualmente esto presentes em todos os celulares e PDAs modernos, servindo para comunicaes de todos os tipos. A figura 3 mostra um adaptor Bluetooth para computadores que possibilita a conexo do computador com seus perifricos ou com outros computadores. Essa tecnologia possui dois tipos de topologia de rede: a piconet e scatternet. A piconet uma rede WPAN na qual um dos dispositivos o mestre e os outros so os escravos. Todos os dispositivos escravos sintonizam no relgio do dispositivo mestre e a comunicao permitida somente ponto-a-ponto entre escravo e mestre, sobre o controle do mestre. Somente os dispositivos mestres podem fazer comunicao multiponto. A scatternet uma rede formada por duas ou mais piconets que se sobrepem no tempo e no espao. Desta forma as informaes podem fluir alm da rea de cobertura de uma nica piconet. Principais caractersticas do Bluetooth: Mximo de conexes por clula: 8. Freqncia da banda: 2.4GHz. Taxa de transmisso: 3Mbit/s [1]. Alcance nominal: 10 metros. Potncia nominal de transmisso: 0 10 dBm [3].

20

Figura 3: Adaptador USB Bluetooth [1]. 2.4 A TECNOLOGIA ZIGBEE Essa tecnologia de comunicao sem fio baseada no protocolo IEEE 802.15.4 para redes com baixa taxa de transmisso e baixo consumo de energia. O Zigbee suporta topologias de rede Estrela, rvore ou Malha, conforme mostra a figura 4, onde podem existir dois tipos de dispositivos: dispositivos com funo total (FFD Full-Function Device) e dispositivos com funo reduzida (RFD ReducedFunction Device). Um FFD pode conversar com um RFDs ou outro FFD, porm o RFD s pode conversar com FFDs. Um FFD pode operar como coordenador PAN, coordenador, ou dispositivo comum da rede. O coordenador PAN o dispositivo centralizador da rede, o controlador central [3]. As principais caractersticas do Zigbee so: Mximo de conexes por clula: >65000. Freqncia da banda: 868/915 MHz; 2.4GHz. Taxa de transmisso: 250 Kbit/s [1]. Alcance nominal: 10 100 metros. Potncia nominal de transmisso: (-25) 0 dBm [3].

21

Figura 4: Topologias de rede Zigbee [2]. Essa tecnologia foi desenvolvida visando reduzir o custo em relao s tecnologias similares como o Bluetooth. Alguns exemplos de chips Zigbee vendidos comercialmente so: o Jennic JN5148, o Freescale MC13213, o Ember EM250, the Texas Instruments CC2430 (figura 5 e 6), o Samsung Electro-Mechanics ZBS240, e o Atmel Atmega128RFA1. Os rdios tambm so fornecidos separadamente para o uso com qualquer processador ou microcontrolador. Geralmente os fabricantes tambm fornecem a pilha de protocolos usados para o roteamento na rede Zigbee [1].

Figura 5: Kit de desenvolvimento com chip CC2430 da Texas Instruments [16].

22

Figura 6: Circuito utilizando chip CC2430 da Texas Instruments [16].

2.5

Escolha da Tecnologia Dentre essas tecnologias analisadas o Zigbee mostrou-se pelas suas

caractersticas ser a melhor escolha para o desenvolvimento do presente projeto. As pequenas dimenses dos transceptores disponveis no mercado e o baixo consumo de energia possibilitaram a fabricao de dispositivos leves e fceis de serem carregados durante o trabalho. O baixo custo far com que esse produto seja acessvel desde pequenos comerciantes a grandes indstrias, e a flexibilidade de configuraes de comunicao somada com o mdio alcance dos transmissores faro com que grandes rea sejam cobertas por poucos dispositivos.

23

O PADRO IEEE 802.15.4


Esse captulo aprofunda o estudo sobre o padro que define a camada fsica

e a camada de acesso ao meio da tecnologia Zigbee. 3.1 Camadas de protocolo IEEE 802.15.4 As camadas de protocolo do Zigbee so baseadas no modelo bsico de referncia da OSI (Open System Interconection Interconexes de Sistemas Abertos), desenvolvido pela ISO (International Organization for Standardization Organizao de Padronizao Internacional). Existem sete camadas no modelo ISO/OSI, mas o Zigbee implementa somente as camadas essenciais para baixa potncia e baixa taxa de transmisso. As duas camadas iniciais (PHY e MAC) so definidas pelo padro IEEE 802.15.4. A camada de rede e a camada de aplicao so definidas pelo padro Zigbee. As caractersticas de segurana so definidas por ambos os padres. Sendo assim, uma rede que implementa todas as camadas de protocolo mostradas na figura 7 considerada uma rede Zigbee [4].

Figura 7: Camadas de protocolo da rede Zigbee [4].

24

3.1.1 O IEEE 802.15.4 PHY O IEEE 802.15.4 especifica tanto as funcionalidades do protocolo PHY e interaes com a camada MAC quanto os requisitos mnimos de hardware do sistema [4]. A camada PHY responsvel por dois servios: servio de dados e servio de gerenciamento. O servio de gerenciamento faz interface com a entidade de gerencia da camada fsica (PLME Physical Layer Management Entity). O servio de dados permite o envio e recebimento de unidades de dados do protocolo PHY (PPDU PHY Protocol Data Units) atravs do canal fsico de rdio. A camada PHY responsvel pelas seguintes tarefas: Ativao e desativao do transceptor de rdio. Deteco de energia (ED). Indicao da qualidade do enlace (LQI). Seleo de canal. Checagem de canal livre (CCA). Transmisso e recebimento de dados. A tabela 1 mostra os dois tipos de camada PHY baseados na frequncia que o padro oferece (ambos utilizando DSSS). Tabela 1: Bandas de frequncia e taxas de transmisso Zigbee [2].

A alta taxa de transmisso em 2.4 GHz esta atribuda ao tipo de modulao de ordem superior. Baixas frequncias permitem que o sinal alcance maiores distncias devido a baixa perda por propagao, enquanto altas frequncias permitem maiores taxas de transmisso. A figura 8 mostra o nmero de canais por faixa de frequncia e a largura dos mesmos. Existe apenas um canal entre as

25

freqncias 868 e 868.6 MHz, 10 canais entre 902.0 e 928.0 MHz e 16 canais entre 2.4 e 2.4835 GHz.

Figura 8: Bandas de frequncia de operao [2]. O Padro tambm permite alocao dinmica de canais. Essa funo percorre uma lista de canais suportados em busca de sinais de transmisso, deteco de energia e indicao da qualidade do enlace. Na frequncia de 2.4 GHz a sensibilidade do receptor de -85 dB e nas freqncias 868/915 MHz a sensibilidade de -92 dB. A vantagem da alta sensibilidade est vinculada a desvantagem da baixa taxa de transmisso. O mximo alcance funo da sensibilidade do receptor e a potncia do transmissor [2]. 3.1.1.1 Deteco de Energia (ED Energy Detection)

O ED uma estimativa da potncia do sinal recebido na banda de um canal de interesse. Ele usado como parmetro no algoritmo de escolha de canal. O tempo de medio do ED deve ser igual ao perodo de 8 smbolos e o resultado armazenado em uma varivel tipo inteiro de 8 bits (variando de 0x00 0xff). O valor mnimo do ED (0) indica que a potncia do sinal recebido est 10 dB acima da sensibilidade do receptor especificada. A amplitude de deteco do ED deve ser no mnimo 40 dB. Nessa faixa o mapeamento da potncia do sinal recebido deve ser linear, com preciso de mais ou menos 6 dB [2;4].

26

3.1.1.2

Indicao de qualidade da conexo (LQI Link Quality Indication)

O LQI uma caracterizao da fora do sinal recebido (RSS Received Signal Stregth). Sua medio pode usar como parmetro somente o ED do receptor, somente a relao entre sinal e rudo (SNR Signal-to-Noise Ratio), ou uma combinao dos dois indicadores. O resultado da medio do LQI passado como um inteiro de 8 bits, variando de 0x00 0xff. O valor mnimo e mximo do LQI deve ser associado com a pior e a melhor qualidade de sinal detectvel pelo receptor IEEE 802.15.4, e os valores entre esses dois limites devem ser distribudos uniformemente. O LQI passado para a camada MAC que o disponibiliza para utilizao na camada de rede ou na camada de aplicao [2;4]. 3.1.1.3 Avaliao de canal livre (CCA Clear Channel Assessment)

O CCA faz parte do servio de gerenciamento da camada PHY. A deciso do CCA pode se basear no resultado do ED, no resultado do CS (Carrier Sense Sensibilidade de Portadora) ou na combinao lgica dos dois resultados. Existem trs modos de operao do CCA nos quais uma camada PHY deve ser habilitada a operar: Modo 1 (Energia acima do limiar): o CCA indica que o meio est ocupado se qualquer energia acima do limiar do ED for detectada. Modo 2 (Sensibilidade de portadora): o CCA indica meio ocupado se detectar um sinal com caractersticas de modulao e espalhamento do IEEE 802.15.4. O sinal pode estar acima ou abaixo do limiar do ED. Modo 3 (Sensibilidade de portadora com energia acima do limiar): Esse mtodo uma combinao lgica (E/OU) dos modos 1 e 2. O PHY pode usar duas opes para indicar meio ocupado: O nvel de energia est acima do limiar do ED e a portadora possui caractersticas do IEEE 802.15.4. O nvel de energia est acima do limiar do ED ou a portadora possui caractersticas do IEEE 802.15.4.

27

3.1.1.4

Unidade de Dados da Camada PHY

Antes que a camada PHY transmita o PSDU (PHY Service Data Unit) Unidade de dados da camada MAC, chamada de MPDU (MAC Protocol Data Unit) ela o converte em um PPDU (PHY Protocol Data Unit Unidade de Dados do Protocolo PHY). O PPDU simplesmente um PSDU no qual foi adicionado o cabealho PHY, que constitudo por trs componentes: um prembulo de 4 bytes, um delimitador de quadro de 1 byte (SFD Start of Frame Delimiter) e um campo de 1 byte contendo o tamanho do quadro (PHR PHY Header). O conjunto prembulo e SFD chamado de cabealho de sincronizao (SHR Synchronization Header). O SHR habilita o receptor sincronizar com o fluxo de bits [5].

Figura 9: Formatos dos encapsulamentos das camadas MAC e PHY [5]. O tamanho e a durao do prembulo dependem da opo de PHY utilizada (tabela 2). O SFD indica o final do SHR e o comeo do PHR. A tabela 3 mostra as faixas de comprimentos para o PSDU ou MPDU, de acordo com o IEEE 802.15.4 [4]. Tabela 2: Comprimentos do campo SFD [4].

28

Tabela 3: Valores de comprimento de MPDU em octetos[4].

3.1.2 O IEEE 802.15.4 MAC A camada MAC fornece a interface entre a camada PHY e a camada de rede atravs dos pontos de acesso a servios (SAP Service Access Point). De forma similar a cama PHY, a camada MAC possui uma entidade de gerenciamento (MLME MAC Layer Management Entity). O MAC tambm possui seu prprio banco de dados (MAC-PIB MAC PAN Information Base), conforme ilustrado na figura 10 [4].

Figura 10: Modelo de referncia da camada MAC [4].

29

3.1.2.1

Modos de Operao

Existem trs modos de operao da camada MAC: modo sinalizado (BeaconEnabled), modo sinalizado com super quadro (superframe) e modo no sinalizado (Nonbeacon-Enebled). No modo sinalizado existe a vantagem da disponibilizao de espaos de tempo garantidos (GTS Guaranteed Time Slot). Os sinais (beacons) so quadros MAC que contm informaes tais como intervalo de tempo entre beacons e nmero de GTSs. Quando o modo sinalizado est habilitado possvel a utilizao de superframe, cuja estrutura mostrada na figura 11.

Figura 11: Estrutura de um superframe [4]. No superframe podem existir trs tipos de perodos: CAP (Contention Access Period Perodo de conteno de acesso): durante esse perodo todos os dispositivos que desejam transmitir necessitam usar o mecanismo CSMA-CA para ter acesso a um canal, no existindo garantia de que o dispositivo ir conseguir o canal no momento solicitado. Como os canais esto disponveis de forma igualitria para todos os dispositivos pertencentes rede, o primeiro dispositivo que comear a usar o canal ir mant-lo para si at que a transmisso se complete. Se um dispositivo encontrar o canal ocupado, ele ir aguardar por um perodo de tempo aleatrio at uma nova tentativa. Os quadros de comando MAC tm que ser transmitidos durante esse perodo.

30

CFP (Contention Free Period Perodo Livre de Disputa): nesse perodo cada dispositivo possui seu GTS, sendo assim, no necessria a utilizao do CSMA-CA para acesso ao canal. Esse perodo bastante utilizado para aplicaes crticas de baixa latncia, na qual o dispositivo no pode esperar por um perodo de tempo aleatrio, e possivelmente longo, para transmitir a mensagem. Perodo Inativo: o superframe pode optar por ter um perodo inativo, o qual permite que o dispositivo desative seu transceptor para economizar energia. A combinao CAP e CFP conhecida como perodo ativo. Esse perodo

dividido em 16 espaos de tempo iguais. Podem existem at sete GTSs no CFP, e cada GTS pode ocupar um ou mais espaos de tempo. Se um dispositivo deixa de usar seu GTS por um perodo prolongado, seu GTS expira, e pode ser designado para outro dispositivo. A estrutura do superframe definida pelo coordenador e configurada pela camada de rede. No modo no sinalizado o coordenador s transmite beacons quando solicitado por um dispositivo da rede. Nesse caso o beacon utilizado por um dispositivo da rede para encontrar o coordenador [4]. 3.1.2.2 Espao entre Quadros

Quando um dispositivo transmite uma mensagem, ele deve esperar um tempo antes de transmitir outra mensagem para o mesmo dispositivo. Esse tempo de espera, chamado de IFS (Interframe Spacing), necessrio para que o dispositivo receptor processe a mensagem recebida. A durao do IFS depende do tamanho do quadro transmitido. A figura 12 mostra o IFS por dois cenrios. No primeiro cenrio (a) a comunicao utiliza quadros de reconhecimento (ACK Acknowledged). O tempo de espera entre o quadro ACK e o prximo quadro pode ser SIFS (Short Interframe Spacing Curto IFS) ou LIFS (Long Interframe Spacing Longo IFS), dependendo do tamanho do quadro transmitido. O Tack o tempo entre transmisso de um quadro e recepo de um ACK.

31

Figura 12: O espao entre quadros em (a) uma transmisso com reconhecimento e (b) em uma transmisso sem reconhecimento [4]. 3.1.2.3 O CSMA-CA

O mecanismo de acesso ao meio suportado pelo IEEE 802.15.4 o CSMACA (Carrier Sense Multiple Access with Collision Avoidance Mltiplo Acesso por Deteco de Portadora com Preveno de Coliso). Nesse mecanismo qualquer dispositivo que deseje transmitir deve solicitar o CCA camada PHY para garantir que nenhum outro dispositivo est utilizando o canal. Existem somente duas ocasies onde um dispositivo no precisa usar CSMACA para transmisso: Durante o perodo livre de conteno (CFP). Transmisses logo aps o envio de ACK de requisio de dados. Nesse caso o dispositivo envia, aps receber o comando de requisio de dados, o ACK e o quadro contendo os dados requisitados, sem execuo do CSMA-CA entre as trasmisses. Existem dois tipos de CSMA-CA: Slotted (Com divises de espao de tempo) e Unslotted (Sem divises de espao de tempo). Slotted CSMA-CA: definido quando existe a utilizao do CSMA-CA com estrutura de superframe. Nesse caso o superframe divide o perodo ativo em

32

16 slots e o perodo back-off (espera aleatria para prxima tentativa de acesso ao meio) deve ser sincronizado com o especfico slot de tempo. Unslotted CSMA-CA: utilizado quando no usada a estrutura de superframe, nesse caso no necessrio a sincronizao de back-off. Uma rede nonbeacon-Enabled sempre utiliza unslotted CSMA-CA para acesso ao meio. Na tentativa de acesso ao meio, quando o CCA indica que o canal esta ocupada, o dispositivo fica em espera por um tempo aleatrio e depois tenta novamente. A figura 13 mostra o algoritmo do CSMA-CA.

Figura 13: O algoritmo do CSMA-CA [4]. Trs variveis so usadas no algoritmo: o expoente de back-off (BE), o nmero de back-offs (NB) e o comprimento da janela de disputa (CW Contention

33

Window). Na primeira etapa do algoritmo tomada a deciso de qual tipo de CSMACA ser utilizado (Slotted ou Unslotted). A varivel BE define o range (amplitude) do back-off de acordo com a frmula: Back-off = (Nmero inteiro aleatrio entre 0 e 2BE-1) x (Unidade de perodo de back-off) No Slotted CSMA-CA, se a opo de extenso de vida da bateria (BLE Battery Life Extension) estiver ativa, o coordenador ir desligar seu receptor aps um perodo de tempo definido por macBattLifeExtPeriods, seguido da transmisso de um quadro beacon. Nessa opo o BE limitado ao menor de 2 e macMinBE (mnimo valor de BE). Esse mecanismo possibilita o coordenador economizar energia. Se BLE no estiver ativo o coordenador permanecer ativo durante todo o CAP e o valor de BE igual a macMinBE (similar ao unslotted CSMA-CA). O valor de BE ser incrementado sempre que o CCA indicar canal ocupado, limitando-se ao valor mximo permitido macMaxBE. A varivel NB acumula o nmero de back-offs e se esse valor for igual ao valor mximo definido macMaxCSMABackoffs o algoritmo desiste e notifica falha no acesso ao canal. A varivel CW determina o nmero de perodos back-off que o canal tem que estar disponvel antes de comear a transmisso. Se a transmisso no for sucedida durante o perodo permitido a camada MAC dever esperar pelo prximo CAP e tentar novamente o acesso ao canal atravs do CSMA-CA. 3.1.2.4 Problema de Ns Escondidos

Um inconveniente do CSMA-CA o problema de ns escondidos. A figura 14 mostra um exemplo deste problema. Observa-se que os ns A e C esto dispostos muito distantes um do outro, ambos esto fora do raio de ao do outro. Porm o n B est dentro do raio de ao tanto do n A quanto do n C. Neste caso, se os ns A e C decidirem transmitir ao mesmo tempo para o n B, ambos enxergaram meio livre, pois a energia de um no ser forte o suficiente para ser detectada pelo

34

transceptor do outro. Assim ambos iram transmitir simultaneamente para B, ocasionando coliso. As alternativas para solucionar este tipo de problema so: Aumentar a potncia dos ns escondidos. Mudar o posicionamento dos ns escondidos.

Figura 14: Problema de Ns Escondidos [4]. 3.1.2.5 Formato Geral do Quadro MAC

A figura 15 mostra o formato geral de um quadro MAC, o qual consiste em trs sees: o cabealho, a carga e o rodap.

Figura 15: (a) Formato do quadro MAC e (b) detalhes do campo Controle de Quadro [4].

35

Cabealho MAC (MHR): Contm as informaes necessrias para envio do

quadro, como configuraes de segurana e confiabilidade, informaes de compatibilidade e endereamento, entre outras: Controle de Quadro (FC Frame Control): Tipo de Quadro (Frame Type): define o tipo de quadro que est sendo transmitido (beacon, dados, ACK, comando MAC). Segurana Habilitada (Security-Enabled): Se habilitado o quadro possui proteo de segurana e o cabealho auxiliar (Auxiliary Security HDR) vai fazer parte do quadro, caso contrrio o cabealho auxiliar ser zero. Quadro em Espera (Frame Pending): Faz parte do mtodo de transmisso indireta de dados. Se habilitado significa que existe quadro em espera no transmissor que o receptor precisa requisitar. Reconhecimento (Acknowledgment): Se habilitado significa que o receptor precisa confirmar a recepo com um ACK. Compresso do Identificador PAN (PAN ID Compression): quando a comunicao entre dispositivos da mesma rede, o identificador PAN ser o mesmo, sendo desnecessria sua repetio no quadro. O PAN ID Compression evita essa repetio desnecessria fazendo com que na transmisso dentro da mesma PAN somente o campo Identificador da PAN Destino (Destination PAN Identifier) ser includo, e o campo Identificador da PAN Fonte (Source PAN Identifier) ser o mesmo do destino. Modo de Endereamento do Destino/Fonte (Destination/Source Addressing Mode): o modo de endereamento de ser utilizado (endereamento curto de 16 bits e endereamento estendido de 64 bits). Verso do Quadro (Frame Version): O IEEE 802.15.4 pode ser atualizado com o tempo e a estrutura do quadro pode sofrer alteraes. O Frame Version usado para indicar qual verso do IEEE 802.15.4 usada na construo do quadro. Nmero de Sequncia (Sequence Number): o nmero que identifica o quadro enviado. Se dois quadros com o mesmo Sequence Number

36

forem recebidos, o segundo quadro descartado para evitar problemas de retransmisso. Cabealho Auxiliar de Segurana (Auxiliar Security HDR): esse campo opcional. Quando utilizado contm informaes tais como nvel de segurana e tipo de chave de segurana usada para proteger o quadro. Carga do Quadro MAC (MAC Payload): Carga do Quadro (Frame Payload): o campo disponvel para a informao (dados ou comando) que ser enviada para o destinatrio. Esse campo pode ser considerado o contedo do quadro. Rodap do Quadro MAC (MFR MAC Footer): Sequncia de Verificao de Quadro (FCS Frame Check Sequence): esse campo usado para verificar possveis erros no quadro recebido. Interferncias externas podem alterar bits do quadro enviado, fazendo com que o receptor receba uma informao incorreta. O IEEE 802.15.4 utiliza FCS de 16 bits baseado no CRC (Cyclic Redundancy Check Verificao de Redundncia Cclica) [4]. 3.1.2.6 Servios MAC

A camada MAC oferece dois tipos de servios: o servio de dados MAC e o servio de gerencia MAC. O servio de dados acessado pela camada de rede atravs do MCPS-SAP (MAC Common Part Sublayer SAP Ponto de acesso a servios da subcamada de funes comuns da MAC). E o servio de gerencia da MAC acessado pelo MLME-SAP (Ponto de acesso a servios do MLME). 3.1.2.6.1 Servio de Dados MAC

A camada MAC fornece servio de dados camada de rede. Quando a camada de rede necessita transmitir um pacote, ela o encaminha para a camada MAC no formato de NPDU (Network Protocol Data Unit Unidade de dados do protocolo de rede), o qual na camada MAC ser designado de MSDU (MAC Service Data Unit Unidade de dados do servio MAC), tambm chamado de MAC Payload. Existem trs opes para a transmisso de dados:

37

Transmisso

Acknowledged

ou

Unacknowledged:

na

transmisso

Acknowledged o emissor solicita do receptor, atravs da mensagem, que o receptor envie uma mensagem ACK se a recepo dos dados for bem sucedida. Na transmisso Unacknowledged o receptor no envia mensagens ACK de confirmao. Transmisso Durante CAP ou GTS: Em uma rede nonbeacon-enabled no existe GTS, ento as transmisses ocorrem sempre durante o CAP. Transmisso Direta e Indireta: Transmisso Direta quando a mensagem transmitida diretamente para o destinatrio. Na transmisso Indireta a mensagem transmitida para o coordenador, e este fica responsvel de envia-l para o destinatrio. 3.1.2.6.2 Servio de Gerncia MAC

Os comandos MAC informam os resultados das solicitaes para a camada de rede atravs de status como SUCESSO (SUCCESS) ou INVLIDO (INVALID). Segue abaixo os principais exemplos de comandos MAC: Comando Reset (MAC Reset): o comando reset usado para fazer a camada MAC voltar s condies iniciais, modificando as variveis internas para seu valor default (padro). Antes de executar o comando reset a camada MAC usa o servio de gerenciamento da camada PHY para desativar o transceptor. Associao e Dissociao de Dispositivos: a camada MAC fornece os procedimentos de associao e dissociao dos dispositivos rede. Existe oito primitivas para o procedimento de associao e dissociao: MLME-Associate.request MLME-Associate.indication MLME-Associate.response MLME-Associate.confirm MLME-Disassociate.request MLME-Disassociate.indication MLME-Disassociate.response MLME-Disassociate.confirm

38

O comando MLME-Associate.request usado pela camada de rede do dispositivo para entrar em uma rede. Esse comando tambm fornece uma lista de funcionalidades do dispositivo. Quando a camada MAC pretende se juntar a uma rede, ela passa o comando para a camada PHY que o transmitir. No coordenador a camada MAC usa a primitiva MLME-Associate.indication (figura 16) para informar a camada de rede da solicitao. Ento a camada de rede utiliza a primitiva MLMEAssociate.response para enviar uma mensagem de confirmao. Quando a resposta do coordenador chega, a camada MAC encaminha a confirmao (MLMEAssociate.confirm) para a camada de rede. O coordenador nesse caso utiliza transmisso indireta na confirmao [4].

Figura 16: Sequncia de Associao [4]. A dissociao um procedimento que o dispositivo utiliza quando pretende sair da rede (figura 17). A camada de rede solicita a dissociao atravs da primitiva MLME-Disassociate.request. Quando a requisio chega no coordenador ela analisada, e se o campo de endereamento e segurana estiverem vlidos, o coordenador envia uma mensagem de dissociao bem sucedida atravs da MLMEDisassociate.response. Da mesma forma que a associao, a camada MAC ao receber a resposta encaminha uma mensagem de confirmao para camada de rede, atravs da MLME-Disassociate.confirm [4].

39

Sincronizao com o Coordenador: Em uma rede beacon-enabled a camada de rede de um dispositivo pode solicitar a sincronizao com o coordenador atravs da primitiva MLME-Sync.request. Se um dispositivo perder a sincronizao com o coordenador, a camada de rede, atravs da primitiva MLME-Sync.indication, solicita que o MLME informe o coordenador sobre a perda [4].

Figura 17: Sequncia de Dissociao Iniciada pelo (a) dispositivo pertencente a rede e (b) pelo coordenador da rede [4].

40

AQUISIO DE DADOS
Esse captulo faz o estudo dos principais componentes na aquisio da dados

das variveis monitoradas, incluindo os sensores de gases, o microcontrolador, o mdulo Zigbee, e os adaptadores serial e USB. O estudo focado no funcionamento e na configurao necessria para interligao de cada um desses componentes no sistema. 4.1 Sensores Os sensores esto presentes no nosso dia-a-dia e so usados nas mais diversas aplicaes em reas industriais, comercias e at mesmo em reas residncias. Eles so usados de forma essencial em muitos casos, onde a segurana est em risco ou quando a velocidade e preciso so inalcanveis por seres humanos. Em outros casos so utilizados para melhorar a praticidade e conforto, como nos botes de elevadores sensveis ao toque ou sensores de presena que ascendem as luzes automaticamente. Pela definio, sensores so dispositivos que medem uma quantidade fsica e a transforma em um sinal que possa ser lido por um observador ou um instrumento [1]. Existem diversos tipos de sensores disponveis no mercado, como: sensores mecnicos, sensores fotoeltricos, sensores de temperatura, sensores de gases, sensores indutivos, sensores capacitivos e muitos outros. Esse projeto utilizar um sensor de temperatura e dois sensores de gases escolhidos entre os 3 estudados. 4.1.1 Sensor de Temperatura O LM35DZ um preciso circuito integrado para medio de temperatura. Sua sada analgica linearmente proporcional a temperatura em graus Celsius (grfico 1). As principais caractersticas desse sensor so: Fator de escala linear de 10 mV/C Preciso de 0,5C (em 25C)

41

Baixo custo Baixo consumo (menos de 60A) Amplitude mxima de temperatura de -55C at 150C Outra vantagem desse CI a simplicidade do seu circuito de montagem,

podendo operar sem a necessidade de nenhum outro componentes em configuraes mais simples (figura 18).[6] Internamente o LM35DZ possui fonte de corrente, transistores e amplificador operacional. O princpio de funcionamento desse sensor baseado na variao de tenso da juno PN dos transistores que varia linearmente com a variao da temperatura. A excitao dos transistores feita pela fonte de corrente para que no ocorram erros na configurao do sensor devido a variao de tenso da fonte. O amplificador interno configurado para transformar a variao de tenso em sua entrada (causada pela juno PN do transistor) em 10 mV/C.

Grfico 1: Grfico de tendncia da corrente pela temperatura [6].

Figura 18: Configurao bsica para sensor de (+2C +150C) [6].

42

Mais caractersticas desse CI podem ser encontradas em seu datasheet (folha de dados). 4.1.2 Sensor de Gases Inflamveis O MQ-6 um sensor que possui alta sensibilidade ao gs GLP (Gs de Petrleo Liquefeito) e metano (CH4) [7]. Esse tipo de sensor utilizado na deteco de vazamentos de gases inflamveis em ambientes residncias, comercias e industriais. As principais caractersticas desse sensor so: 19. Baixa sensibilidade a lcool e fumaa Resposta rpida Estvel Longa durabilidade Simplicidade no circuito de operao A estrutura desse sensor composta por nove partes, como mostra a figura

Figura 19: Configurao do Sensor e Circuito de Operao [7]. A bobina de aquecimento fornece a condio de trabalho para os componentes sensitivos. O conjunto do sensor forma uma ponte que se equilibra quando no existem gases reativos no ambiente. Se um gs reativo entra em contato com a camada reativa, ao ser absorvido na presena do calor, ela muda sua resistncia causando desequilbrio da ponte. O desequilbrio da ponte altera a

43

tenso de sada do circuito do sensor, dessa forma a presena do gs pode ser detectada. As principais caractersticas eltricas esto na tabela 4: Tabela 4: Caractersticas eltricas do sensor MQ-6 [7].

A resistncia do sensor (RS) varia de acordo com a concentrao de diferentes gases os quais ele sensvel, como mostrado no grfico 2. Sendo RO a resistncia do sensor em 1000 ppm de GLP no ar limpo. Portanto, a calibrao do sensor essencial para obter confiabilidade de medio. O fabricante recomenda que a calibrao seja executada com a concentrao de 1000 ppm (1000 partes por milho) de GLP no ar e que a resistncia de carga RL seja entre 10 k 47 k [7].

Grfico 2: Caracterstica da Sensibilidade do MQ-6 para Diferentes Gases (Temp:20 C, Umidade: 65%, O2: 21%, RL=20 K) [7].

44

A umidade e a temperatura do ambiente tambm devem ser levados em considerao na leitura de concentrao dos gases, pois esses parmetros tambm afetam a resistncia do sensor. O grfico 3 mostra a curta caracterstica do sensor para diferentes valores de umidades e temperaturas do ambiente, sendo RH a umidade relativa do ar.

Grfico 3: Dependncia em Umidade e Temperatura do MQ-6 [7]. 4.1.3 Sensor de Qualidade do Ar So usados para medir a qualidade do ar em ambientes de trabalho e reas pblicas. So sensveis a gases como: amnia (NH3), xidos de nitrognio (NOx), lcool, benzeno e gs carbnico (CO2). Esses gases em altas concentraes so txicos ou asfixiantes. A estrutura e funcionamento desse sensor so iguais as do sensor de gases inflamveis. As principais caractersticas eltricas so mostradas na tabela 5. Tabela 5: Caractersticas eltricas do sensor MQ-135 [7] (traduzido).

45

Para calibrao deste sensor o fabricante recomenda utilizar 100 ppm de NH3 ou 50 ppm de lcool no ar. Nos grficos 4 e 5, esto respectivamente a relao entre resistncia interna do sensor com a concentrao de diferentes gases e a relao entre a resistncia interna do sensor com a umidade relativa e temperatura do ar.

Grfico 4: Caracterstica da Sensibilidade do MQ-135 para Diferentes Gases (Temp:20 C, Umidade: 65%, O2: 21%, RL=20 K) [7].

Grfico 5: Dependncia em Umidade e Temperatura do MQ-135 [7]. 4.1.4 Sensor de Monxido de Carbono O monxido de carbono (CO) um agente redutor, usado para retirar oxignio de compostos industriais, formando dixido de carbono (CO2). O CO forma com a hemoglobina do sangue um composto mais estvel do que ela e o oxignio,

46

podendo levar a morte por asfixia. Concentraes abaixo de 400 ppm desse gs no ar causam dores de cabea, e acima desse valor so potencialmente mortais para plantas e animais. Por esse motivo a superviso do acmulo desse gs em ambientes de trabalho (principalmente industriais) extremamente importante. O MQ-7 possui as mesmas configuraes do MQ-6 e do MQ-135, e tambm fabricado pelo Hanwei Electronics. A operao de aquecimento desse sensor se diferencia dos outros, por possuir dois perodos de aquecimento com tenses aplicadas diferentes. A figura 20 mostra como funciona o ciclo de aquecimento desse sensor. O primeiro perodo corresponde tenso de cinco volts aplicada por 60 segundos e o segundo perodo corresponde a tenso de 1,4 volts aplicada por 90 segundos. Isso corresponde a economia de energia de 60% em relao aos outros sensores [7].

Figura 20: Princpio de Operao do MQ-7 [7]. Abaixo segue as principais caractersticas eltricas deste sensor: Tabela 6: Caractersticas Eltricas do MQ-7 [7].

Smbolo
VC VH(H) VH (L) RL RH TH (H) TH (L) PH

Nome do parmetro
Tenso do circuito Tenso de aquecimento (alta) Tenso de aquecimento (baixa) Resistncia de ajuste Resistncia de aquecimento Tempo aquecimento (alta) Tempo aquecimento (baixa) Potncia de aquecimento

Condio tcnica
5V 0,1 5V 0,1 1,4V 0,1 Ajustvel 33 5% 60 1 segundo 90 1 segundo Menos de 330 mW

47

Na figura 21 est o circuito bsico de operao do MQ-7, e nos grficos 6 e 7 esto, respectivamente, a relao de dependncia entre a resistncia interna do sensor com a concentrao de diferentes gases, e a relao de dependncia entre a resistncia interna do sensor com a temperatura e umidade do ambiente. Para calibrao do sensor o fabricante recomenda utilizar 200 ppm de CO no ar.

Figura 21: Circuito bsico de operao do MQ-7 [7].

Grfico 6: Caracterstica da Sensibilidade do MQ-135 para Diferentes Gases (Temp:20 C, Umidade: 65%, O2: 21%, RL=10 K) [7].

48

Grfico 7: Dependncia em Umidade e Temperatura do MQ-7 [7]. 4.2 Microcontrolador Microcontrolador o termo usado para sistemas que possuem, pelo menos, um microprocessador, memria de programa, memria para dados e dispositivos de entrada e sada (I/O). Os microcontroladores modernos possuem, alm das caractersticas bsicas de um microcontrolador, componentes como temporizadores, contadores, conversores analgico para digital (A/D), entre outros. O microcontrolador escolhido para implementao do presente projeto foi o PIC 16F877A da Microchip. As principais caractersticas desse dispositivo so: Arquitetura: RISC (Reduced Instruction Set Computer Computador com Conjunto de Instrues Reduzidas). Freqncia de operao: 0 20 MHz 35 pinos de I/O Memria Flash de 8K Memria EEPROM de 256 bytes 8 entradas analgicas 3 temporizadores/contadores independentes Mdulo comparador analgico Mdulo de sada PWM Mdulo de comunicao universal sncrona e assncrona USART Porta de comunicao serial sncrona MSSP (SPI ou I2C) A figura 22 mostra a estrutura em blocos do PIC 16F877A [8].

49

Figura 22: Estrutura do PIC 16F877A [9]. 4.2.1 Temporizadores (Timers) Os timers so componentes usados em microcontroladores para aplicaes como gerao de pulsos aleatrios, marcador de tempo ou contador de pulsos externos. O PIC 16F877A possui 3 Timers que possuem diferentes caractersticas [10]. 4.2.1.1 Timer 0

um temporizador de 8 bits com prescaler (divisor de clock) de 8 bits. O valor desse timer varia de 00h at FFh (byte TMR0), podendo gerar interrupo por transbordamento de FFh para 00h se o bit TMR0IE estiver marcado (possui valor 1). Se o prescale no for usado o Timer 0 ser incrementado a cada ciclo de instruo. O Timer 0 divide a utilizao do prescaler com o watchdog (dispositivo utilizado para reiniciar o microcontrolador caso o programa trave), dessa maneira somente um deles pode utilizar o prescaler por vez. Na tabela 7 esto descritos os bits de configurao do Timer 0 pertencentes ao registrador OPTION_REG [10].

50

Tabela 7: Bits de configurao do Timer 0 pertencentes ao registrador OPTION_REG [10] (traduzido). TOCS: Seleo da fonte do clock. Bit 5 1 = Clock externo (pino RA4/T0CKI) 0 = Clock interno (Fosc/4) T0SE: Designao do prescaler Bit 3 1 = Prescaler designado para o Watcdog 0 = Prescaler designado para o Timer 0 Bits de seleo da proporo do prescaler 000 = 1:2 001 = 1:4 010 = 1:8 Bits 2-0 011 = 1:16 100 = 1:32 101 = 1:64 110 = 1:128 111 = 1:256 O Timer 0 tambm est associado ao registrador INTCON. Esse registrador contm bits de habilitao e sinalizao de interrupes. Os bits desse registrador relacionados com o Timer 0 so [10]: Bit 7 (GIE Global Interrupt Enable): Quando possui valor 1 esse bit habilita as interrupes (chave geral), e quando possui valor 0 desabilita todas as interrupes. Bit 5 (TMR0IE TMR0 Overflow Interrupt Enable): Quando possui valor 1 habilita a interrupo por transbordo do Timer 0. Quando possui valor 0 desabilita essa interrupo, mesmo que o GIE possua valor 1. Bit 2 (TMR0IF TMR0 Overflow Interrupt Flag): Esse bit indica que o timer estourou quando possui valor 1.

51

4.2.1.2

Timer 1

O Timer 1 um temporizador de 16 bits (2 registradores de 8 bits chamados de TMR1H e TMR1L) que incremente de 0000h at FFFFh. Aps essa faixa os registradores so zerados e o bit de sinalizao de estouro (TMR1IF) passa a conter o valor 1. O prescaler desse timer possui apenas 3 bits, podendo escalonar o valor do clock em, no mximo, oito vezes. O registrador de configurao desse mdulo chamado de T1CON, e os bits relacionados s configuraes do Timer 1 esto presentes na tabela 8 [10]. Tabela 8: Bits de configurao do Timer 1 pertencentes ao registrador T1CON [10] (traduzido). T1CKPS1:T1CKPS0: Bits de seleo do Prescaler. 11 = 1:8 Bits 5-4 10 = 1:4 01 = 1:2 00 = 1:1 TMR1CS: Bit de seleo da fonte do clock. Bit 1 1 = Clock externo do pino RC0/T1OSO/T1CKI 0 = Clock interno (Fosc/4) TMR1ON: Bit de ativao do Timer 1 Bit 0 1 = Habilita o Timer 1 0 = Desativa o Timer 1 Existem outros 3 registradores de configurao e sinalizao aos quais o Timer 1 est associado: Registrador INTCON: Bit 7 (GIE Global Interrupt Enable): Quando possui valor 1 esse bit habilita as interrupes (chave geral), e quando possui valor 0 desabilita todas as interrupes. Registrador PIR1 (registrador de sinalizao de perifricos): Bit 0 (TMR1IF TMR1 Overflow Interrupt Flag): Quando possui valor 1 significa que houve estouro do Timer 1.

52

Registrador PIE1 (registrador de configurao de interrupo de perifricos): Bit 0 (TMR1IE TMR1 Overflow Interrupt Enable): Esse bit habilita a interrupo por transbordo quando possui valor 1 e desabilita quando possui valor 0.

4.2.1.3

Timer 2

Esse temporizador de 8 bits possui algumas particularidades que o diferencia dos outros timers. Ele possui alm de um prescaler de 8 bits, tambm um postscaler de 4 bits. A sada TMR2 desse mdulo pode ser usado como base de tempo para o mdulo PWM. Outra diferena desse timer que ele no gera interrupo por transbordo na transio de FFh para 00h. Esse timer incrementa de 00h at o valor do registrador PR2 e ento volta para o valor 00h e muda o valor do flag TMR2IF de 0 para 1. O postscaler usado somente para escalonar o tempo de interrupo, no pode ser usado para escalonar a sada TMR2 (figura 23) [10].

Figura 23: Diagrama de blocos do Timer 2 [10]. O registrador de configurao do Timer 2 chamado de T2CON. Na tabela 9 esto descritos os bits desse registrador.

53

Tabela 9: Bits de configurao do Timer 2 pertencentes ao registrador T2CON [10] (traduzido). Bit 7 No tem funcionalidade TOUTPS3:TOUTPS0: Bits de seleo do Postscaler 0000 = 1:1 0001 = 1:2 Bits 6-3 . . . 1111 = 1:16 TMR2ON: Bit de ativao do Timer 2 Bit 2 1 = Habilita o Timer 2 0 = Desativa o Timer 2 T2CKPS1:T2CKPS0: Bits de seleo do Prescaler Bits 1-0 00 = 1:1 01 = 1:4 1x = 1:16 Assim como o Timer 1 esse temporizador tambm est associado aos registradores INTCON, PIR1 e PIE1, com os seguintes bits: Registrador INTCON: Bit 7 (GIE Global Interrupt Enable): Quando possui valor 1 esse bit habilita as interrupes (chave geral), e quando possui valor 0 desabilita todas as interrupes. Registrador PIR1 (registrador de sinalizao de perifricos): Bit 1 (TMR2IF TMR2 Overflow Interrupt Flag): Quando possui valor 1 significa que houve estouro do Timer 2, ou seja, o valor do timer se igualou ao valor de PR2. Registrador PIE1 (registrador de configurao de interrupo de perifricos): Bit 1 (TMR2IE TMR2 Overflow Interrupt Enable): Esse bit habilita a interrupo por estouro quando possui valor 1 e desabilita quando possui valor 0.

54

4.2.2 Comunicao Serial Assncrona O mdulo de comunicao universal sncrona e assncrona USART (Universal Synchronous and Asynchronous Receiver Transmitter) pode ser configurado como um sistema assncrono full-duplex (transmisso e recepo so independentes). Nesse modo o USART utiliza o formato padro NRZ (Non-Return-to-Zero), com um bit de sinalizao de comeo de transmisso, oito ou nove bits de dados e um bit de sinalizao de fim de transmisso. Esse mdulo possui dois registradores de configurao e controle, um para o transmissor (TXSTA) e outro para o receptor (RCSTA). Os bits associados ao modo assncrono so [10]: TXSTA (Transmit Status and Control Register): Bit 6 (TX9): Bit de habilitao para transmisso de 9-bits. Quando esse possui valor 1 a transmisso de dados contm 9 bits. Esse bit pode ser utilizado tanto para reconhecimento de endereamento da mensagem pelo receptor como tambm para bit de paridade. Caso o bit seja 0 a transmisso ocorrer com 8 bits. Bit 5 (TXEN): Bit de ativao da transmisso. Quando marcado como 1 a transmisso ativada. Bit 4 (SYNC): Bit de seleo do modo serial. Para a transmisso ser assncrona esse bit precisa ter valor 0, caso contrrio a transmisso ser sncrona. Bit 2 (BRGH): Bit de seleo de taxa de transmisso. Para alta taxa de transmisso esse bit deve ter valor 1, e para baixas valor 0. Bit 1 (TRMT): Bit de sinalizao de status da transmisso. Quando o bit possui o valor 1 significa que o registrador TSR (Transmit Shift Register Registrador de Mudana na Transmisso) est vazio e se o valor for 0 significa que esse registrador ainda possui dados para transmitir. Bit 0 (TX9D): o nono bit da transmisso de dados. Bit 7 (SPEN): Bit de ativao das portas serial RC7/RX/DT e RC6/TX/CK. Habilita portas quando possui valor 1 e as desabita quando possui valor 0. RCSTA (Receive Status and Control Register):

55

Bit 6 (RX9): Bit de habilitao para recepo de 9-bits. Quando esse bit possui valor 1 a recepo de dados contm 9 bits. Caso o bit seja 0 a recepo ocorrer com 8 bits. Bit 4 (CREN): Habilita a recepo serial contnua quando possui valor 1 e desabilita recepo serial quando possui valor 0. Bit 3 (ADDEN): Esse bit habilita a deteco de endereamento quando possui valor 1. Bit 0 (RX9D): o nono bit na recepo de dados.

Os outros registradores de controle e configurao associados a este mdulo so: Registrador INTCON: Bit 7 (GIE Global Interrupt Enable): Quando possui valor 1 esse bit habilita as interrupes (chave geral), e quando possui valor 0 desabilita todas as interrupes. Bit 6 (PEIE Peripheral Interrupt Enable): Habilita interrupes de perifricos quando possui valor 1. Registrador PIR1: Bit 5 (RCIF USART Receive Interrupt Flag): Esse bit sinaliza a recepo de uma mensagem (buffer cheio). Quando possui valor 1 significa que o registrador RCREG est pronto para ser lido. Bit 4 (TXIF - USART Transmit Interrupt Flag): Esse bit sinaliza o final da transmisso de uma mensagem (buffer vazio) quando possui valor 1. Registrador RCREG: Esse registrador usado para armazenar os dados que deseja-se transmitir. Registrador PIE1: Bit 5 (RCIE USART Receive Interrupt Enable): Quando possui valor 1 habilita a interrupo pelo receptor USART. Bit 4 (TXIE USART Transmit Interrupt Enable): Quando possui valor 1 habilita a interrupo pelo transmissor USART. Registrador SPBRG: usado para escolha da taxa de transmisso na qual o transmissor e receptor iro operar [10].

56

Os algoritmos de operao do transmissor e receptores esto presentes na figura 24. No transmissor e no receptor, se a interrupo estiver habilitada, quando a transmisso ou recepo de uma mensagem se completa gerado um desvio de programa para o endereo 0004h. Esse endereo corresponde ao vetor de interrupes, onde sero implementadas as rotinas de tratamento de interrupes.

Figura 24: Algoritmos de operao do transmissor e do receptor.

4.2.3 Conversor Analgico para Digital (A/D) Esse mdulo capaz de converter grandeza analgica (tenses) em grandeza digital (expressa em cdigo binrio). O PIC 16F877A possui um conversor A/D de 10 bits com oito entradas analgicas. O A/D utiliza duas tenses de referncia entre as quais sero distribudos linearmente os 1024 possveis valores de sada digital. Aps a escolha da porta analgica que ser utilizada o conversor A/D necessita de um tempo de configurao dos seus componentes internos, que na pior condio de 20 s [9]. Outro fator que deve ser levado em considerao a impedncia da fonte analgica, que no deve passar de 2,5 k. Aps o conversor

57

est pronto para converso, ainda sero necessrios 12 ciclos para converso dos 10 bits, sendo cada ciclo de no mnimo 1,6 s [10]. Para garantir o perodo mnimo de ciclo o clock do conversor deve ser escolhido cuidadosamente de acordo com a frequncia do dispositivo (tabela 10). Tabela 10: Freqncia mxima do dispositivo para cada opo de TAD [10] (traduzido). Fonte do Clock do A/D (TAD) Operao 2 TOSC 4 TOSC 8 TOSC 16 TOSC 32 TOSC 64 TOSC ADCS2:ADCS1:ADCS0 000 100 001 101 010 110 Frequncia Mxima do Dispositivo 1.25 MHz 2.5 MHz 5 MHz 10 MHz 20 MHz 20 MHz

O mdulo A/D possui quatro registradores, dois para configurao e controle chamados de ADCON0 e ADCON1, e dois para armazenar o resultado da converso, chamados de ADRESH e ADRESL. Os registradores de resultado juntos possuem 16 bits, dos quais somente 10 sero usados. Os outros 6 bits tero valor 0 atribudo a eles. Os bits de configurao e controle pertencentes aos registradores ADCON0 e ADCON1 so: Registrador ADCON0: Bits 7-6 (ADCS1:ADCS0): Bits de seleo do clock. Trabalham junto com o bit ADCS2 do registrador ADCON1 (tabela 10). Bits 5-3 (CHS2:CHS0): Bits de seleo do canal analgico. 000 = Canal 0 (pino RA0) 001 = Canal 1 (pino RA1) 010 = Canal 2 (pino RA2) 011 = Canal 3 (pino RA3) 100 = Canal 4 (pino RA5) 101 = Canal 5 (pino RE0) 110 = Canal 6 (pino RE1)

58

111 = Canal 7 (pino RE2) Bit 2 (GO/DONE): Bit de controle do processo de converso. 1 = Converso em progresso (carregando esse valor no bit inicia o processo de converso). 0 = Processo de converso parado (utilizado para sinalizar o final da converso). Bit 1: No utilizado. Bit 0 (ADON): Bit de ativao do conversor A/D. 1 = Conversor ligado. 0 = Conversor desligado. Registrador ADCON1: Bit 7 (ADFM): Bit de seleo do formato de resultado. 1 = Justificado direita. Os seis bits mais significativos de ADRESH so carregados com valor 0. 0 = Justificado esquerda. Os seis bits menos significativos de ADRESL so carregados com valor 0. Bit 6 (ADCS2): Bit de seleo do clock (tabela 10). Bits 5-4: No so utilizados. Bits 3-0 (PCFG3:PCFG0): Bits de configurao das portas do mdulo A/D (tabela 11): Outros registradores associados ao conversor A/D: Registrador INTCON: Bits GIE e PEIE. Registrador PIR1: Bit ADIF (Flag de interrupo do conversor A/D). Registrador PIE1: Bit ADIE (ativao da interrupo pelo conversor A/D). Registrador TRISA: Configura os pinos da porta A. Registrador TRISE: Configura os pinos da porta E.

59

Tabela 11: Configuraes das portas do mdulo A/D[10].

Na figura 25 est o algoritmo de operao do conversor A/D.

Figura 25: Algoritmo de operao do conversor A/D.

60

4.2.4 Diagrama de Pinos Na figura 26 est o diagrama de pinos do PIC 16F877A. No presente projeto no ser necessria a utilizao de todos os 40 pinos. A configurao da funo de cada pino utilizado necessria j que muitos pinos possuem mais de uma funcionalidade.

Figura 26: Diagrama de pinos do PIC16F877A [10]. 4.2.5 Organizao da Memria O PIC16F877A possui estruturas diferentes para memria de programa e memria de dados. Cada dispositivo possui um contador de programa de 13 bits capaz de enderear 8k words (tamanho da menor instruo do programa) de 14 bits. A figura 27 mostra o mapa da memria de programa organizada em pilha, sendo o vetor reset em 0000h e o vetor de interrupo em 0004h [10]. A memria de dados dividida em quatro bancos de registradores (registradores de propsito gerais e registradores de funes especiais) que so

61

selecionados a partir dos bits RP0 e RP1 do registrador Status (tabela 12). Os registradores pertencentes a cada banco de dados esto presentes no anexo I.

Figura 27: Mapa e Pilha da Memria de Programa do PIC16F877A [10]. Tabela 12: Bits de seleo do banco de dados [10].

4.3

Mdulo de comunicao Zigbee O mdulo XBee-PRO da Maxstream (figura 28) foi desenvolvido no padro

IEEE 802.15.4 para atender necessidades de redes de sensores sem fio com baixo custo e baixo consumo de energia. Esse mdulo possui alcance nominal de 100 metros em reas urbanas e ambientes fechados, e 1500 metros em visada direta.

62

Para atender a esse alcance a potencia do transmissor teve que ser amplificada em relao a mdulos Zigbee convencionais, que buscam mnino consumo. A potncia nominal do transmissor de 100 mW, o que corresponde a 20 dBm, e a sensibilidade do receptor de -100 dBm. A taxa de transmisso do link entre dois mdulos XBee-PRO de 250 Kbps. A tabela 13 mostra outras caractersticas importantes desse mdulo:

Figura 28: Mdulo XBee-PRO da MAXSTREAM [12]. Tabela 13: Caractersticas do mdulo XBee-PRO [12]. Geral Frequncia de Operao Dimenses Opes de Antena ISM 2.4 GHz 2.438cm x 3.294cm Chip, Fio ou RPSMA

Temperatura de Operao - 40C at 85C Rede e Segurana Point-to-Point, PointTopologias de Rede Nmero de canais (selecionado por software) Opo de endereamento to-Multipoint and Peer-to-Peer 12 PAN ID, Canal ou Endereo do mdulo.

O XBee-PRO faz interface com dispositivos atravs da sua porta de comunicao serial assncrona. Assim dispositivos que possuem interface serial assncrona UART (Universal Asynchronous Receiver and Transmiter) podem se comunicar diretamente com esse mdulo (figura 29). Dispositivos que no possuem

63

UART podem se comunicar com esse mdulo atravs de adaptadores como MAX232 ou placas de interface USB.

Figura 29: Conexo UART entre microcontrolador e mdulo XBee [12]. A dados so passados para o pino 3 do mdulo como sinal serial assncrono, o que significa que cada byte possui um bit que simboliza o inicio da transmisso, oito bits de dados (sendo os mais significativos transmitidos primeiro), e um bit que simboliza o final da transmisso, como mostra a figura 30.

Figura 30: Pacote de dados UART [12]. Uma grande vantagem do mdulo XBee-PRO a opo de operao transparente, na qual dois mdulos agem como substitutos a uma linha (cabeamento) de transmisso serial. Dessa forma todos os dados recebidos pelo pino de transmisso UART so passados para o transmissor RF e todos os dados recebidos pelo receptor RF so passados para o pino de recepo UART. Antes da transmisso os dados recebidos so armazenados no buffer, ento so enviados em pacotes quando no h recepo de caracteres seriais por um tempo limite

64

(chamado de RO), quando o nmero mximo de caracteres (100) alcanado, ou quando a transmisso solicitada via comando. importante ter o controle de fluxo de dados de sada e entrada do mdulo para evitar perda de dados por sobrecarga no buffer. Dessa forma as seguintes precaues precisam ser tomadas: Enviar mensagens menores que o tamanho do buffer de sada. Trabalhar com taxas de envio de mensagens menores do que a taxa de transmisso do mdulo. Todos os pacote enviados precisam ter um endereo fonte e um destino, de acordo com as especificaes do padro IEEE 802.15.4 (16 bits para endereamento curto ou 64 para endereamento longo). Um endereo nico de 64 bits programado de fbrica para cada mdulo, os quais podem ser lidos com os comandos SL (Nmero Serial Baixo) e SH (Nmero Serial Alto). Ento para enviar um pacote para um determinado mdulo necessrio carregar o endereo destino do pacote com o endereo fonte do mdulo destino. Por padro o mdulo configurado para envio de dados unicast. Esse modo o nico que suporta retransmisses quando o mdulo transmissor no recebe o ACK do mdulo receptor. Nesse caso o transmissor envia o pacote trs vezes ou at receber o ACK. 4.4 Adaptador USB para Mdulo Zigbee O adaptador COM-USBBEE da Rogercom (figura 31) utilizado para conexo dos mdulos XBee no computador, atualizao de firmware e alimentao do mdulo. Alm dessas funes o mdulo tambm possui ferramentas como LEDs de sinalizao do sinal RF (LEDs RSSI), LEDs indicadores de transmisso e recepo de dados e LED indicador de associao do mdulo a uma rede. Ao instalar o driver do adaptador o computador cria uma porta COMx virtual. Assim programas no computador podem se comunicar com o mdulo de forma serial, a conexo USB fica transparente para o programador.

65

Figura 31: Adaptador COM-USBBEE da Rogercom [11].

4.5

Adaptador para Mdulo Zigbee O adaptor PROTO-BEE um componente para facilitar a integrao do

mdulo Zigbee com o microcontrolador. Ele tem a responsabilidade de regular a tenso de 5,0 volts do sistema para 3,3 volts, tenso de operao do mdulo Zigbee (figura 32). Alm dessa funo esse adaptador possui tambm ferramentas como: LED RSSI que indica quando um dado recebido (indicando boa comunicao de dados), LED ASSOCIADO que indica associao a uma rede, e conector (jumper) para teste de link entre dois mdulos Zigbee.[11]

Figura 32: Ligao entre adaptador Zigbee e microcontrolador [11].

66

CONSTRUO DO PROTTIPO
Este captulo relata como foi construdo o prottipo, descrevendo a funo, os

principais componentes utilizados e o modo de funcionamento de cada um dos mdulos. Incluindo, tambm, a descrio dos softwares desenvolvidos para o microcontrolador e para o servidor.

5.1 Modularizao e Integrao do Sistema A construo do prottipo ser realizada em cinco mdulos: o mdulo Fonte, o mdulo Reguladores, o mdulo CPU, o mdulo Transmissor e o mdulo Aquisio de Dados. Sendo cada mdulo responsvel por uma funo especfica do sistema. As vantagens de desenvolver o prottipo em mdulos so: Diminuio da complexidade. Facilidade na melhoria (upgrade). Facilidade no reparo. Facilidade na construo. Flexibilidade no posicionamento dos componentes. A integrao dos mdulos mostrada na figura 33. O mdulo Fonte possui a funo de fornecer a alimentao de tenso contnua do sistema. Esse mdulo possui sadas de tenses de 5 volts e 12 volts que sero utilizadas para fornecer energia para os outros mdulos. Uma bateria de 9 volts ligada a esse mdulo para manter a sada de 5 volts do sistema caso haja falta de energia da rede eltrica. O mdulo Reguladores responsvel por fornecer tenses de 1,4 volts e 5,0 volts para os sensores de gases, a partir da sada de 12 volts do mdulo Fonte (que no alimentado pela bateria de 9 volts). O mdulo CPU responsvel pelo controle dos sensores e converso dos sinais analgicos dos sensores em digitais, assim como o encaminhamento desses sinais digitais para o mdulo de transmisso de dados. O mdulo de aquisio de dados possui os sensores de gases que faro a converso das variveis analisadas em sinais analgicos de tenso. O envio dos dados adquiridos por essa unidade remota para o servidor ser realizado pelo mdulo de

67

transmisso de dados, que possui o mdulo Zigbee responsvel pela transmisso. Esse mdulo tambm possui um sensor de temperatura, que foi instalado nesse mdulo por convenincia de espao e porque a temperatura de aquecimento dos sensores de gases poderia afetar na leitura da temperatura ambiente. A interligao do sistema ser feita por cabos flat com conectores tipo latch e bornes.

Figura 33: Integrao dos Mdulos do Sistema. 5.2 Construo do Hardware Os mdulos foram desenvolvidos em placas de fenolite de face simples e os circuitos foram projetados no software Eagle (Easy Applicable Graphical Layout Editor Editor de Projeto Grfico de Fcil Aplicao). A transferncia dos circuitos para as placas foi realizada utilizando-se o mtodo de transferncia por calor entre o papel couch, impresso em impressora a laser, e a placa, transferindo assim o toner do papel para a placa. O mdulo Fonte utiliza uma ponte retificadora 4JBG6005 superdimensionada (6A) que fazem a retificao de onda completa da tenso alternada do secundrio do transformador (15 VAC). Em seguida dois capacitores de (50V, 1000C) garantem a retirada do ripple, estabilizando a tenso contnua. Nessa etapa um diodo Zener de 35 V protege os reguladores de tenso de uma sobretenso da rede eltrica. A regulao das tenses para 5 VDC e 12 VDC feita

68

atravs dos reguladores KA7805 e KA7812. Por causa da queda de tenso no regulador de 5 VDC foi necessria a utilizao de um dissipador de calor e o cooler. A figura 34 e 35 mostra o prottipo pronto, destacando os principais componentes.

Figura 34: Prottipo da Unidade Remota (Frente).

Figura 35: Prottipo da Unidade Remota (Fundo).

69

O mdulo Reguladores utiliza dois LM317 para fazer a retificao das tenses aplicadas do sensor de monxido de carbono. O motivo desse mdulo fornecer tambm a tenso de 5 VDC aplicada nos sensores de gases a pequena queda de tenso gerada pelo transistor TIP127 do mdulo Sensores. A figura 36 mostra a configurao simples do circuito regulador, sendo a sada Vo proporcional a razo entre R2 e R1, como mostra a frmula abaixo:

Figura 36: Configurao Simples do Regulador LM317 [14]. O mdulo CPU utiliza como unidade de processamento o PIC16F877A com um cristal de 4 MHz que fornece um clock de processamento de 1 MHz. Esse mdulo, assim como o mdulo Transmissor, alimentado pela sada de 5 VDC do mdulo Fonte. O mdulo Sensores utiliza dois transistores TIP127 por sensor, para possibilitar o fornecimento de duas tenses diferentes (necessrias para o ciclo de funcionamento do sensor de carbono). O TIP127 um transistor tipo Darlington PNP que foi utilizado por possuir caractersticas como baixa tenso de acionamento (diferente dos transistores tipo MOSFETs), carga ligada no coletor (o que possibilita o fornecimento de duas tenses diferentes) e mxima corrente de coletor de 5 ampres (superdimensionado para no aquecer). Esse mdulo tambm possui um regulador de 5 VDC KA7805 para fornecer a tenso de referncia dos sensores de gases atravs da sada de tenso mais alta do mdulo Regulador, que alimentado pela sada de 12 VDC do mdulo Fonte. Isso diminui o aquecimento no regulador de 5 VDC do mdulo Fonte e faz com que caso haja uma queda de energia o mdulo

70

Sensor no seja alimentado pela bateria de back-up. Os sensores de gases funcionam como resistores variveis (variando a resistncia com diferentes concentraes de gases), fazendo o circuito divisor de tenso com os potencimetros de calibrao. Assim quanto maior for o valor da resistncia do potencimetro menor ser a variao do sensor em tenso e maior ser o valor da tenso de sada. Os projetos dos circuitos impressos da unidade remota esto presentes no anexo II. 5.3 Desenvolvimento do Software Nesse projeto foi necessrio o desenvolvimento de dois programas. O programa do microcontrolador da unidade remota foi desenvolvido em linguagem Assembly, no editor e compilador MPLAB, da Microchip. J o software do servidor de dados foi desenvolvido em linguagem C#, no editor e compilador Visual Studio, da Microsoft. 5.3.1 Programa da Unidade Remota A figura 37 mostra o fluxograma do programa da unidade remota.

Figura 37: Fluxograma do programa da unidade remota.

71

A funo deste programa simples, enviar as leituras dos sensores, feitas pelo conversor A/D, para o buffer de entrada serial do mdulo Zigbee. O cdigo fonte deste programa est presente no anexo III. 5.3.2 Software Servidor O software do servidor possui as seguintes funes e caractersticas: Calcular os valores das variveis de temperatura, monxido de carbono e gs GLP. Mostrar os valores das variveis e gerar alarme. Armazenar os valores das variveis no histrico com a data e horrio da leitura. Configurao da comunicao serial. Escolha do diretrio onde ser armazenado o histrico. Janela para teste do link serial.

O clculo do valor das variveis feito atravs da equao de proporo com o valor da resistncia do sensor em relao a uma determinada concentrao de gs, de forma linear como est demonstrado no datasheet do produto. Desta forma:

Sendo Vout a leitura do A/D convertida para tenso, RL a resistncia do potencimetro e RS a resistncia do sensor (5 o valor de tenso de referncia do sensor). Utilizando o valor da resistncia do sensor encontrado no datasheet do produto para uma determinada concentrao de gs em ppm possvel determinar qual ser o valor da tenso para essa concentrao. Na figura 38 est o fluxograma do programa do servidor. O ciclo principal acionado na recepo de dados e o ciclo da atualizao dos valores das variveis monitoradas acionado periodicamente.

72

Figura 38: Fluxograma do programa do servidor. O software do servidor possui trs janelas, na primeira janela possvel iniciar o programa e testar o link de comunicao transmitindo e lendo dados. Na segunda janela possvel configurar a comunicao serial e escolher o diretrio onde sero armazenados os arquivos do histrico. E na terceira janela possvel visualizar os valores das variveis, o alarme visual e gravar valores para os limites de cada varivel (figura 39).

(a)

(b) Figura 39: Janelas do programa do servidor.

(c)

O cdigo fonte do programa do servidor est presente no anexo IV.

73

6 TESTES E RESULTADOS

Na etapa de validao do projeto foram utilizados dois testes de simulao para validar o funcionamento do prottipo. No primeiro teste foi utilizado uma vela em um ambiente fechado junto a unidade remota. A vela foi utilizada por produzir na combusto monxido de carbono e calor, e outros gases (combusto incompleta). Nesse teste foi avaliado o funcionamento dos sensores de monxido de carbono e de temperatura. Tambm foi avaliada a sensibilidade do sensor de gs GLP ao monxido de carbono. Esse teste teve uma durao de aproximadamente 17 minutos, os quais foram suficientes para gerar os grficos de validao necessrios. O grfico 8 mostra a variao de temperatura ambiente provocada pela chama da vela. No tempo 10:47:27 foi colocado o balde de isolamento do ambiente do sensor e a vela. Nota-se claramente a variao crescente de temperatura a partir desse ponto. E no tempo 10:57:31 a vela foi apagada e o balde foi retirado. Notasse que a temperatura a partir desse ponto comea a decair at estabilizar novamente na temperatura ambiente.

Grfico 8: Variao da Temperatura Ambiente no Teste de Validao com Vela.

74

De forma similar ao grfico de temperatura apresenta-se o grfico de variao de monxido de carbono (grfico 9). O sensor de monxido de carbono possui um tempo superior de resposta em relao ao sensor de temperatura (2,5 minutos), por isso o nmero de leituras desse sensor a metade do nmero de leituras dos sensores de temperatura e gs GLP. Lembrar que os sensores de gases no foram calibrados devido ausncia de um dispositivo que possui preciso superior.

Grfico 9: Variao de monxido de Carbono no Teste de Validao com Vela.

Grfico 10: Variao de gs GLP no Teste de Validao com Vela.

75

Nesse teste foi comprovada a sensibilidade do sensor de gs GLP ao monxido de carbono. O grfico 10 mostra essa variao, mesmo com uma pequena correo via software (subtrao da resposta por um valor fixo) o sensor apresentou valor de pico de 233 ppm, sugerindo a necessidade de um aumento no valor de correo do erro. No segundo teste foi utilizado um isqueiro para simular o vazamento de gs GLP. Essa simulao teve a durao de aproximadamente 21 minutos, suficiente para gerar os grficos de validao dos sensores. O grfico 11 mostra que a variao de temperatura deste teste foi muito pequena, provocada pelo aquecimentos dos componentes do prottipo quando o balde isolou o ambiente.

Grfico 11: Variao da Temperatura Ambiente no Teste de Validao com Isqueiro. Da mesma forma que o sensor de gs GLP sofre influncia do monxido de carbono, o sensor de monxido de carbono tambm sensvel ao gs GLP, como mostra o grfico 12.

76

Grfico 12: Variao de monxido de Carbono no Teste de Validao com Isqueiro. Devido a essa influncia foi necessria a implementao de uma funo de correo desse erro, uma subtrao da resposta, proporcional a concentrao identificada pelo sensor de gs GLP. Apesar do valor de pico de 107 ppm do sensor de monxido de carbono ser alto, esse erro tornasse facilmente corrigvel quando comparado com os valores do grfico de variao do sensor de gs GLP (grfico 13).

Grfico 13: Variao de gs GLP no Teste de Validao com Isqueiro. Apesar desse grfico no mostrar uma curva crescente como os grficos de validao dos sensores de temperatura e monxido de carbono, devido a grande sensibilidade do sensor de gs GLP os vazamentos so facilmente identificados, comprovando a eficincia do prottipo para essa funo.

77

7 CONCLUSO

O prottipo mostrou atender as expectativas iniciais do projeto, sendo eficiente na identificao de temperatura ambiente e gases nocivos a sade. Os sensores de gases indicaram uma rpida variao de resistncia na presena dos gases monitorados, devido alta sensibilidade dos mesmos. A influncia negativa de outros gases (no monitorados) sobre os sensores de monxido de carbono e gases GLP pode ser controlada atravs de software, solucionando essa desvantagem. O sensor de temperatura obteve leituras precisas da temperatura ambiente, sem necessidade de ajuste via software. Os resultados incentivam o desenvolvimento de uma verso desse dispositivo que possa ser comercializada. A montagem do prottipo em mdulos simplificou o desenvolvimento desse trabalho, porm no projeto da verso comercializvel ser utilizado um nmero menor de mdulos (ou apenas um mdulo) para minimizar e baratear o dispositivo. Existe a necessidade da implementao de outros alarmes, como alarme sonoro no servidor e na unidade remota e via mensagens SMS. importante tambm o desenvolvimento de um software para computadores portteis (Pocket PC) que se comunique com o servidor via comunicao Wi-Fi e possibilite aos tcnicos de segurana do trabalho a visualizao das tendncias das variveis analisadas em qualquer localizao que esteja. O custo estimado para fabricao de cada unidade remota de R$ 300,00. A relao do custo com a importncia de implementao deste sistema torna esse projeto um promissor produto de comercializao, tanto no setor industrial como no setor comercial.

78

REFERNCIAS
[1] WIKIPDIA: A Enciclopdia Livre. Disponvel em: <http://www.wikipedia.com/>. Acesso em: 17 fev. 2010. ERGEN, Sinem Coleri. Zigbee/IEEE 802.15.4 Summary. Disponvel em: <http:// pages.cs.wisc.edu/~suman/courses/838/papers/zigbee.pdf>. Acesso em: 25 jan. 2010. LEE, Jin-Shyan; SU, Yu-Wei; SHEN, Chung-Chou. Conferncia Anual da Sociedade Eletrnica Industrial do IEEE (IECON), 33., 2007. Tapei, Taiwan. A Comparative Study of Wireless Protocols: Bluetooth, UWB, Zigbee, and Wi-Fi. Disponvel em: <http://eee.guc.edu.eg/Announcements/> . Acesso em: 18 fev. 2010. FARAHANI, Shahin. Zigbee Wireless Networks and Transceivers. Burlington, USA:Elsevier, 2008. 364 p. EADY, Fred. Hand-On Zigbee: Implementing 802.15.4 with Microcontrollers. Burlington, USA:Elsevier, 2007. 351 p. NATIONAL SEMICONDUCTOR. LM35 Precision Centigrade Temperature Sensors. California, 2000. HANWEI: Henan Hanwei Electronics Co., Ltd. Disponvel http://www.hwsensor.com>. Acessado em: 26 fev. 2010. em: <

[2]

[3]

[4]

[5]

[6]

[7]

[8]

ABRAHIM, Dogan. Advanced PIC Microcontroller Projects in C. Burlington, USA:Elsevier, 2008. 541 p. VERLE, Milan. Pic Microcontroller Programing in C. Disponvel em: <www.4share.com>. Acessado em: 18 fev. 2010. MICROCHIP. PIC16F87XA DATA SHEET <www.microchip.com>. Acessado em: 18 fev. 2010. .Disponvel em:

[9]

[10]

[11] ROGERCOM. Manual da Placa PROTO-BEE. Disponvel em: <www.rogercom.com.br>. Acessado em: 09 Abril 2010.

79

[12] MAXSTREAM. XBee/XBee PRO 802.15.4 OEM RF Modules. Utah, USA, 2006. [13] ROGERCOM. Manual da Placa COM-USBBEE. Disponvel em: <www.rogercom.com.br>. Acessado em: 09 Abril 2010. [14] STMICROELECTRONICS. 1.2V TO 37V VOLTAGE REGULATOR DATA SHEET .Disponvel em: <www.alldatasheet.com>. Acessado em: 18 Maio. 2010. ANGHER, Anne Joyce. VADE MECUM Coleo de Leis. 4 ed. So Paulo: Editora Rideel, 2007.

[15]

[16] Texas Instruments. TIs Wireless Applications Solutions. Disponvel em: <www.ti.com>. Acessado em: 09 Fev. 2010.

80

ANEXO I

81

MAPA DE REGISTRADORES

82

ANEXO II

83

PROJETO DO CIRCUITO IMPRESSO DO MDULO SENSORES

84

PROJETO DO CIRCUITO IMPRESSO DO MDULO TRANSMISSOR

85

PROJETO DO CIRCUITO IMPRESSO DO MDULO CPU

86

PROJETO DO CIRCUITO IMPRESSO DO MDULO REGULADORES

87

PROJETO DO CIRCUITO IMPRESSO DO MDULO FONTE

88

ANEXO III

89

CDIGO FONTE DO PROGRAMA DO MICROCONTROLADOR DA UNIDADE REMOTA


#INCLUDE <P16F877A.INC> #DEFINE BANK1 BSF #DEFINE BANK0 BCF #DEFINE BANK01 ADCON0 ADCON1 ADRESH ADRESL TXREG EQU TXSTA EQU SPBRG EQU RCSTA EQU EQU 1Fh EQU 9Fh EQU 1Eh EQU 9Eh 19h 98h 99h 18h

STATUS,RP0 STATUS,RP0 BCF STATUS,RP1

__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC CBLOCK 0X20 ENDC CONTADOR_SEG DADOSTX

ORG 0000h GOTO CONFIGUR CONFIGUR ORG 0040h

BANK01 BANK1 MOVLW B'00000000' ;CHAVE GERAL DE INTERRUPO DESABILITADA. MOVWF INTCON MOVLW B'00000001' ;ATIVA INTERRUPO DO TIMER 1. MOVWF PIE1 MOVLW B'10000111' ;Pull-ups OFF, Interrupo por borda de descida, TMR0 clock interno, Prescale para TMR0, Prescale 1:256. MOVWF OPTION_REG MOVLW B'00100100' ;Configurao assncrona de 8 bits, alta taxa de transmisso. MOVWF TXSTA MOVLW .25 ;Taxa de transmisso 9.6 K para Fosc = 4 MHz. MOVWF 0099h MOVLW B'00000010' ;Configura A/D para:Resultado justificado a direita, frequncia mxima de 5 MHz, portas analgicas RA0-RA4, ref. tenso Vdd. MOVWF ADCON1 MOVLW #2Fh ; MOVWF TRISA ; MOVLW #00h ; MOVWF TRISB ; MOVLW #80h ;Portas configuradas como OUTPUT, somente pino RC7/RX configurado como INPUT. MOVWF TRISC ; MOVLW #00h ; MOVWF TRISD ; MOVLW #00h ; MOVWF TRISE ;

90

desligado.

BANK0 MOVLW B'00110000'

;Prescale 1:8, Oscilador desligado, Clock interno, Timer 1 ;Habilita portas RC7 para RX e RC6 para TX, recepo de 8 ;Configura A/D para:Frequncia mxima de 5 MHz, canal 2 ; ; ;Limpar memria das portas. ; ; ;Liga sensor 1 com tenso de 5 volts ; ;Liga sensor 2 com tenso de 5 volts ;

MOVWF T1CON MOVLW B'10000000' bits e contnua sem endereamento. MOVWF RCSTA MOVLW B'01010001' (RA2) e conversor ligado. MOVWF ADCON0 CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BSF PORTC,1 BCF PORTC,0 BSF PORTC,3 BCF PORTC,2 MOVLW MOVWF 0X20 FSR

PARA LIMPA_RAM

; APONTA O ENDEREAMENTO INDIRETO ; A PRIMEIRA POSIO DA RAM

POS. +1

CLRF INDF INCF FSR,F MOVF FSR,W XORLW 0X80 BTFSS STATUS,Z GOTO LIMPA_RAM

; LIMPA A POSIO ; INCREMENTA O PONTEIRO P/ A PRX. POS. ; COMPARA O PONTEIRO COM A LT. ; J LIMPOU TODAS AS POSIES? ; NO - LIMPA A PRXIMA POSIO

; SIM

INICIO NOP

NOP

MOVLW .150 CALL DELAY_S MOVLW .150 CALL DELAY_S

;Espera 60 segundos de aquecimento dos sensores

segundos (CO)

CALL TEMPERATURA ;Envia o valor de temperatura CALL SENSOR2 ;Envia o valor do sensor 2 BSF PORTC,0 ;Desliga sensor 1 com tenso de 5 volts (CO) BCF PORTC,1 ;Alimenta sensor 1 com tenso de 1,4 volts por 90

MOVLW .225 CALL DELAY_S MOVLW .225 CALL DELAY_S CALL SENSOR1 ;Envia o valor do sensor 1 (CO) BSF PORTC,1 ;Desliga sensor 1 com tenso de 1,4 volts (CO) BCF PORTC,0 ;Liga sensor 1 com tenso de 5 volts (CO) CALL TEMPERATURA ;Envia o valor de temperatura CALL SENSOR2 ;Envia o valor do sensor 2 GOTO CICLO

DELAY_S MOVWF CONTADOR_SEG ; LOOP2 MOVLW B'10011110' ;CARREGA VALOR PARA 0,2 SEGUNDOS.

91

LOOP1 NOP

MOVWF TMR1H MOVLW B'01010111' MOVWF TMR1L BSF T1CON,0

BTFSS PIR1,0 ;TESTE ESTOURO DO TIMER 1, RETORNA PARA NOP ENQUANTO NO ESTOURA. GOTO LOOP1 BCF T1CON,0 BCF PIR1,0 DECFSZ CONTADOR_SEG GOTO LOOP2 RETURN ESCREVE BANK0 MOVWF TXREG BANK1 BTFSS TXSTA,1 GOTO $-1 BCF TXSTA,1 BANK0 RETURN ;Configura A/D para:Frequncia mxima de 5 MHz, ;Tempo de aquisio do A/D ;Comea a converso ;Verifica se a converso foi finalizada ;Envia identificador de dado ;Envia bits mais significativos da converso ;Envia identificador de dado ;Envia bits menos significativos da converso

TEMPERATURA BANK0 MOVLW B'01010001' canal 2 (RA2) e conversor ligado. MOVWF ADCON0 MOVLW .1 CALL DELAY_S BSF ADCON0,2 BTFSC ADCON0,2 GOTO $-1 MOVLW .1 CALL ESCREVE MOVF ADRESH,W CALL ESCREVE BANK1 MOVLW .2 CALL ESCREVE MOVF ADRESL,W CALL ESCREVE RETURN SENSOR1 MOVLW B'01000001' canal 0 (RA0) e conversor ligado. MOVWF ADCON0 MOVLW .1 CALL DELAY_S BSF ADCON0,2 BTFSC ADCON0,2 GOTO $-1 MOVLW .3 CALL ESCREVE MOVF ADRESH,W CALL ESCREVE BANK1 MOVLW .4 CALL ESCREVE BANK0

;SENSOR DE CO ;Configura A/D para:Frequncia mxima de 5 MHz, ;Tempo de aquisio do A/D ;Comea a converso ;Verifica se a converso foi finalizada ;Envia identificador de dado ;Envia bits mais significativos da converso ;Envia identificador de dado

92

MOVF ADRESL,W CALL ESCREVE RETURN SENSOR2 BANK0

;Envia bits menos significativos da converso

MOVLW B'01011001' ;Configura A/D para:Frequncia mxima de 5 MHz, canal 3 (RA3) e conversor ligado. MOVWF ADCON0 MOVLW .1 ;Tempo de aquisio do A/D CALL DELAY_S BSF ADCON0,2 ;Comea a converso BTFSC ADCON0,2 ;Verifica se a converso foi finalizada GOTO $-1 MOVLW .5 ;Envia identificador de dado CALL ESCREVE MOVF ADRESH,W ;Envia bits mais significativos da converso CALL ESCREVE BANK1 MOVLW .6 ;Envia identificador de dado CALL ESCREVE MOVF ADRESL,W ;Envia bits menos significativos da converso CALL ESCREVE RETURN END

93

ANEXO IV

94

CDIGO FONTE DO PROGRAMA DO SERVIDOR


using using using using using using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; System.Threading; System.IO; System.IO.Ports; Office; System.Reflection; System.Diagnostics; Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication1 { public partial class Form1 : Form { static String texto;//STRING PARA RECEPO DE DADOS SERIAIS static String inicioHistorico, fimHistorico; //DATA INICIO E FIM DO HISTRICO static int Dados, Byte1, Byte2, aux = 0;//VARIVEIS AUXILIARES PARA RECEPO SERIAL static int linhaTemp, linhaCO, linhaGLP;//LINHA DA PLANILHA PARA GRAVAR DADOS static int temporizador = 0;//TEMPORIZADOR PARA ATUALIZAR JANELA DE TESTE DA SERIAL E GRAVAO DO HISTORICO static Int32 ADRES,temp,co,glp;//VARIAVEIS AUXILIARES PARA CLCULO DAS VARIVEIS MONITORADAS static Int32 limiteTemp = 50,limiteCO = 100,limiteGLP=1000;//LIMITE PARA GERAR ALARME static int cont, numeroBytes;//VARIVEIS AUXULIARES NA RECEPO DE DADOS SERIAIS static string celula;//AUXILIARES DA GRAVAO DE DADOS NO HISTRICO static string colunaTemp = "A", colunaHorarioTemp = "B";//AUXILIARES DA GRAVAO DE DADOS NO HISTRICO DE TEMPERATURA static string colunaCO = "C", colunaHorarioCO = "D";//AUXILIARES DA GRAVAO DE DADOS NO HISTRICO DE CO static string colunaGLP = "E", colunaHorarioGLP = "F";//AUXILIARES DA GRAVAO DE DADOS NO HISTRICO DE GLP int[] baudrates = { 1200, 2400, 4800, 9600 };//OPES DE TAXAS PARA COMUNICAO SERIAL String[] ports = { "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10", "COM11", "COM12" };//OPES DE PORTAS SERIAIS DO PC int[] bitsDados = { 5, 6, 7, 8 };//NUMERO DE BITS DE DADOS NO PACOTE SERIAL String[] Paridade = { "None", "Odd", "Even", "Mark", "Space" };//OPES DE BIT DE PARIDADE int[] bitsParada = { 0, 1 };//BIT DE IDENTIFICAO DE FIM DO PACOTE SERIAL Excel.Application historico;//APLICATIVO DO HISTORICO Excel.Workbook registro;//ARQUIVO DO HISTORICO Excel.Worksheet DadosSheet1;//PLANILHA DO HISTORICO Excel.Range DadosRange;//CLULAS DO HISTORICO object PastaHistorico = "D:\\Temporario\\";//DIRETRIO ONDE SER SALVO O HISTORICO static DateTime relogio;//DATA E HORRIO DOS HISTRICOS FileInfo fi;//INFORMAES DE ARQUIVO

95

public Form1() { //INICIALIZAO DO FORM DA APLICAO InitializeComponent(); button2.Enabled = false; serialPort1.PortName = "COM12"; comboBox1.Items.AddRange(ports); foreach (int i in baudrates) { comboBox2.Items.Add(Convert.ToString(i)); } foreach (int i in bitsDados) { comboBox3.Items.Add(Convert.ToString(i)); } comboBox4.Items.AddRange(Paridade); foreach (int i in bitsParada) { comboBox5.Items.Add(Convert.ToString(i)); } } //BOTO "LIGA", ABRE PORTA SERIAL, CRIA PLANILHA DE HISTRICO. private void button1_Click(object sender, EventArgs e) { button1.Enabled = false; button2.Enabled = true; textBox1.Enabled = true; button5.Enabled = false; try { serialPort1.Open(); serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); label1.Text = "On-Line"; texto="Porta serial aberta.\n"; label2.Text += texto; } catch (Exception ex) { MessageBox.Show(ex.Message, "ERRO AO INICIAR APLICATIVO", MessageBoxButtons.OK, MessageBoxIcon.Error); } CriarPlanilhaHistorico(); relogio = DateTime.Now; inicioHistorico = relogio.ToString(); inicioHistorico = inicioHistorico.Replace("/", "_"); inicioHistorico = inicioHistorico.Replace(":", " "); try { registro.SaveAs(PastaHistorico + ("Valores monitorados - (" + inicioHistorico + ").xls")); fi = new FileInfo(PastaHistorico + ("Valores monitorados - (" + inicioHistorico + ").xls")); } catch (Exception ex) { MessageBox.Show(ex.Message, "DIRETRIO DO HISTRICO NO EXISTE.", MessageBoxButtons.OK, MessageBoxIcon.Error);

96

} timer1.Enabled = true; linhaTemp=2; linhaCO=2; linhaGLP=2; //Retorno gravao de dados para linha inicial label10.Text = ""; label14.Text = ""; label20.Text = ""; //Apaga dados antigos da janela de monitoramento } //FUNO PARA CRIAR PLANILHA DE HISTRICO private void CriarPlanilhaHistorico() { historico= new Excel.Application(); registro = historico.Workbooks.Add(Missing.Value); DadosSheet1 = (Excel.Worksheet)registro.Worksheets.get_Item(1); DadosSheet1.Activate(); DadosRange = DadosSheet1.get_Range("A1"); DadosRange.Value = "Temperatura (C)"; DadosRange = DadosSheet1.get_Range("B1"); DadosRange.Value = "Data/Horrio"; DadosRange = DadosSheet1.get_Range("C1"); DadosRange.Value = "CO (ppm)"; DadosRange = DadosSheet1.get_Range("D1"); DadosRange.Value = "Data/Horrio"; DadosRange = DadosSheet1.get_Range("E1"); DadosRange.Value = "GLP (ppm)"; DadosRange = DadosSheet1.get_Range("F1"); DadosRange.Value = "Data/Horrio"; } //FUNO PARA GRAVAR DADOS NO HISTRICO private int gravarDados(string coluna,string colunaHorario,int linha,Int16 valor) { if (label1.Text == "On-Line") { try { celula = coluna + linha; DadosRange = DadosSheet1.get_Range(celula); DadosRange.Value = valor; celula = colunaHorario + linha; DadosRange = DadosSheet1.get_Range(celula); relogio = DateTime.Now; DadosRange.Value = relogio.ToString(); registro.Save(); } catch { } linha++; if (linha > 1000) { coluna = (Convert.ToInt32(coluna) + 1).ToString(); colunaHorario = (Convert.ToInt32(coluna) + 1).ToString(); } } //TESTA O TAMANHO DO ARQUIVO HISTORICO E CRIA OUTRO ARQUIVO. if (fi.Length > 100000) { relogio = DateTime.Now; fimHistorico = relogio.ToString(); fimHistorico = fimHistorico.Replace("/", "_"); fimHistorico = fimHistorico.Replace(":", " "); try

97

{ registro.SaveCopyAs(PastaHistorico + ("Valores monitorados - (" + inicioHistorico + ") - (" + fimHistorico + ").xls")); registro.Close(); historico.Quit(); } catch (Exception ex) { MessageBox.Show(ex.Message, "ERRO NA TENTATIVA DE SALVAR O HISTORICO", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { CriarPlanilhaHistorico(); inicioHistorico = relogio.ToString(); inicioHistorico = inicioHistorico.Replace("/", "_"); inicioHistorico = inicioHistorico.Replace(":", " "); registro.SaveAs(PastaHistorico + ("Valores monitorados - (" + inicioHistorico + ").xls")); fi = new FileInfo(PastaHistorico + ("Valores monitorados - (" + inicioHistorico + ").xls")); linhaTemp = 2; linhaCO = 2; linhaGLP = 2; } catch (Exception ex) { MessageBox.Show(ex.Message, "ERRO NA TENTATIVA DE SALVAR NOVO HISTORICO", MessageBoxButtons.OK, MessageBoxIcon.Error); } } return linha; } //FUNO DE IDENTIFICAO DOS LIMITES E GERAO DE ALARMES. private void testeLimites() { if (temp > limiteTemp) label10.BackColor = Color.Red; else label10.BackColor = Color.White; if (co > limiteCO && co>19) label14.BackColor = Color.Red; else label14.BackColor = Color.White; if (glp > limiteGLP && glp>199) label20.BackColor = Color.Red; else label20.BackColor = Color.White; } //BOTO "DESLIGA", FECHA PORTA SERIAL E HISTRICO. private void button2_Click(object sender, EventArgs e) { timer1.Enabled = false; try { serialPort1.Close(); label1.Text = "Off-Line"; } catch (Exception ex) { MessageBox.Show(ex.Message, "ERRO AO FECHAR PORTA SERIAL", MessageBoxButtons.OK, MessageBoxIcon.Error); }

98

texto += "Porta serial fechada...\n"; label2.Text = texto; button1.Enabled = true; button2.Enabled = false; textBox1.Enabled = false; button5.Enabled = true; relogio = DateTime.Now; fimHistorico = relogio.ToString(); fimHistorico = fimHistorico.Replace("/", "_"); fimHistorico = fimHistorico.Replace(":", " "); try { registro.SaveCopyAs(PastaHistorico+("Valores de temperatura ("+inicioHistorico+") - ("+fimHistorico+").xls")); registro.Close(); historico.Quit(); } catch (Exception ex) { MessageBox.Show(ex.Message, "ERRO NA TENTATIVA DE SALVAR O HISTORICO", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //BOTO "ENVIAR", ENVIA DADOS PELA PORTA SERIAL. private void button3_Click(object sender, EventArgs e) { serialPort1.WriteLine(textBox1.Text); textBox1.Text = ""; } //BOTO "LIMPAR", LIMPA A JANELA DE TESTE DA PORTA SERIAL. private void button4_Click(object sender, EventArgs e) { texto = ""; label2.Text = texto; } //FUNO DE RECEPO DE DADOS SERIAL. //IDENTIFICAO DA INFORMAO RECEBIDA E CHAMADA DA FUNO ESPECFICA. public void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { numeroBytes=serialPort1.BytesToRead; cont = 0; do { aux = Dados; try { Dados = serialPort1.ReadByte(); } catch { } texto += Convert.ToDecimal(Dados) + "\n"; cont +=1; if (Convert.ToDecimal(aux) == 1 || Convert.ToDecimal(aux) == 2) temperatura(); if (Convert.ToDecimal(aux) == 3 || Convert.ToDecimal(aux) == 4) monoxidoCarbono(); if (Convert.ToDecimal(aux) == 5 || Convert.ToDecimal(aux) == 6) gasesGLP(); } while (cont < numeroBytes); }

99

//FUNO PERIDICA DE ATUALIZAO DA JANELA DE TESTE DA PORTA SERIAL E GRAVAO DAS VARIVEIS NO HISTRICO private void timer1_Tick(object sender, EventArgs e) { label2.Text = texto; label10.Text = temp + "C"; if(co>19) label14.Text = co + " ppm"; else label14.Text = "0 ppm"; if(glp>199) label20.Text = glp + " ppm"; else label20.Text = "0 ppm"; testeLimites(); } //FUNO PARA CLCULO DA TEMPERATURA (temp). private void temperatura() { Int16 tempAUX; if (Convert.ToDecimal(aux) == 1) Byte1 = Dados; else { Byte2 = Dados; ADRES = Convert.ToInt16(Byte1); ADRES *= 256; //TRANSFERE O BYTE RECEBIDO PARA OS 8 BITS MAIS SIGNIFICATIVOS DO INT16 ADRES += Convert.ToInt16(Byte2); //SOMA OS 2 BYTES RECEBIDOS ADRES /= 64; //REMOVE OS 6 BITS MENOS SIGNIFICATIVOS // temp = Convert.ToInt16(ADRES * 500); //REGRA DE 3 PARA CLCULO DA TEMPERATURA temp = Convert.ToInt32(ADRES/2.048); //RANGE DO A/D = 1024, 1C= 10 mV [1/(500/1024)=2.048] tempAUX = Convert.ToInt16(temp); linhaTemp=gravarDados(colunaTemp,colunaHorarioTemp,linhaTemp,tempAUX); } } //FUNO PARA CLCULO DE MONOXIDO DE CARBONO private void monoxidoCarbono() { Int32 Vout; Int16 coAUX; if (Convert.ToDecimal(aux) == 3) Byte1 = Dados; else { try { Byte2 = Dados; ADRES = Convert.ToInt32(Byte1); ADRES *= 256; //TRANSFERE O BYTE RECEBIDO PARA OS 8 BITS MAIS SIGNIFICATIVOS DO INT16 ADRES += Convert.ToInt32(Byte2); //SOMA OS 2 BYTES RECEBIDOS ADRES /= 64; //REMOVE OS 6 BITS MENOS SIGNIFICATIVOS Vout = Convert.ToInt32(ADRES * 5); //REGRA DE 3 PARA CLCULO DO CO //RANGE DO A/D = 1024 Vout = Convert.ToInt32(Vout / 10.24); (1000/1024, 100 PPM REGRA DE 3)

100

co = Convert.ToInt32(Vout / 3); //3 Volts = VALOR ESTIMADO PARA SADA EM 100 PPM if (glp > 200) co -= Convert.ToInt32(0.2 * glp); if (co < 0) co = 0; coAUX = Convert.ToInt16(co); linhaCO = gravarDados(colunaCO, colunaHorarioCO, linhaCO, coAUX); } catch { } } } //FUNO PARA CLCULO DE GASES GLP private void gasesGLP() { Int32 Vout; Int16 glpAUX; if (Convert.ToDecimal(aux) == 5) Byte1 = Dados; else { try { Byte2 = Dados; ADRES = Convert.ToInt32(Byte1); ADRES *= 256; //TRANSFERE O BYTE RECEBIDO PARA OS 8 BITS MAIS SIGNIFICATIVOS DO INT16 ADRES += Convert.ToInt32(Byte2); //SOMA OS 2 BYTES RECEBIDOS //REMOVE OS 6 BITS MENOS ADRES /= 64; SIGNIFICATIVOS //REGRA DE 3 PARA CLCULO DO Vout = Convert.ToInt32(ADRES * 5); GLP //RANGE DO A/D = 1024 Vout = Convert.ToInt32(Vout / 1.024); (1000/1024, 1000 PPM REGRA DE 3) glp = Convert.ToInt32((Vout/3.75)-400); //3.75 Volts = VALOR ESTIMADO PARA SADA EM 1000 PPM. 400 = AJUSTE DE ERRO DE INFLUENCIA DO CO if (glp < 0) glp = 0; glpAUX = Convert.ToInt16(glp); linhaGLP = gravarDados(colunaGLP, colunaHorarioGLP, linhaGLP, glpAUX); } catch { } } } //ESCOLHA DA PORTA SERIAL private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.PortName = comboBox1.Text; } //ESCOLHA DA TAXA DE COMUNICAO SERIAL private void comboBox2_SelectedIndexChanged_1(object sender, EventArgs e) { serialPort1.BaudRate = Convert.ToInt16(comboBox2.Text); } //ESCOLHA DO NUMERO DE BITS DE DADOS DO PACOTE SERIAL private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

101

{ serialPort1.DataBits = Convert.ToInt16(comboBox3.Text); } //ESCOLHA DO TIPO DE PARIDADE private void comboBox4_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox4.Text); } //ESCOLHA DO BIT DE IDENTIFICAO DE FIM DO PACOTE SERIAL private void comboBox5_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox5.Text); } //ESCOLHA DO DIRETRIO ONDE SER SALVO O HISTRICO private void button5_Click(object sender, EventArgs e) { folderBrowserDialog1.Description ="Select the directory that you want to use as the default."; folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer; folderBrowserDialog1.ShowDialog(); PastaHistorico = folderBrowserDialog1.SelectedPath; PastaHistorico += "\\"; } //GRAVA O LIMITE DE TEMPERATURA DESEJADO. private void button6_Click(object sender, EventArgs e) { try { limiteTemp = Convert.ToInt16(textBox2.Text); } catch { } } //GRAVA O LIMITE DE CO DESEJADO. private void button7_Click(object sender, EventArgs e) { try { limiteCO = Convert.ToInt16(textBox3.Text); } catch { } } //GRAVA O LIMITE DE GLP DESEJADO. private void button9_Click(object sender, EventArgs e) { try { limiteGLP = Convert.ToInt16(textBox5.Text); } catch { } }

102

private void textBox2_TextChanged(object sender, EventArgs e) { } } }

103

Potrebbero piacerti anche