pic com comunicacao wireless

58
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA DA COMPUTAÇÃO E AUTOMAÇÃO DESENVOLVIMENTO DE UM SISTEMA DE TELEMETRIA REMOTA Victor Hugo Freitas de Oliveira Orientador: Prof. Dr. Andrés Ortiz Salazar Natal, Junho de 2009

Upload: viniciusloureiro986

Post on 23-Jun-2015

1.464 views

Category:

Documents


18 download

TRANSCRIPT

Page 1: Pic Com Comunicacao Wireless

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

CENTRO DE TECNOLOGIA

DEPARTAMENTO DE ENGENHARIA DA COMPUTAÇÃO E AUTOMAÇÃO

DESENVOLVIMENTO DE UM SISTEMA

DE TELEMETRIA REMOTA

Victor Hugo Freitas de Oliveira

Orientador: Prof. Dr. Andrés Ortiz Salazar

Natal, Junho de 2009

Page 2: Pic Com Comunicacao Wireless

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

CENTRO DE TECNOLOGIA

DEPARTAMENTO DE ENGENHARIA DA COMPUTAÇÃO E AUTOMAÇÃO

DESENVOLVIMENTO DE UM SISTEMA

DE TELEMETRIA REMOTA

Autor: Victor Hugo Freitas de Oliveira

Orientador: Prof. Dr. Andrés Ortiz Salazar

Natal, Junho de 2009

Trabalho de Conclusão de Curso,

submetido ao Departamento de

Engenharia de Computação e

Automação do Centro de Tecnologia

da Universidade Federal do Rio

Grande do Norte, como parte dos

requisitos necessários para obtenção

do grau de Graduado.

Page 3: Pic Com Comunicacao Wireless

Agradecimentos

Aos meus pais, por terem me dado oportunidade de uma boa educação.

Aos meus amigos, por me apoiarem ao longo dessa jornada.

Ao prof. Andrés Ortiz Salazar, pela ajuda ao longo de todo o curso, sendo um grande

responsável pela minha formação acadêmica e profissional.

Ao prof. André Laurindo Maitelli e a toda equipe do Laboratório de Automação em

Petróleo – LAUT, pela oportunidade de trabalho em um ambiente de muito

profissionalismo, mas ao mesmo tempo de companheirismo, resultando em uma

aprendizagem contínua.

Aos demais professores do Departamento de Engenharia de Computação e Automação,

pela dedicação ao nosso aprendizado.

Page 4: Pic Com Comunicacao Wireless

Resumo

Este trabalho aborda o desenvolvimento de um sistema de telemetria remota. Ele

é capaz de se comunicar, através do protocolo de redes industriais Modbus, com um

dispositivo que realiza medições quaisquer. Essa comunicação é realizada para a

obtenção dos dados de um determinado instante. O sistema é capaz de armazenar

temporariamente esses dados e enviá-los para um servidor, através de uma conexão à

Internet.

O servidor recebe essas informações e as armazena em um banco de dados.

Então, permite que softwares clientes realizem a visualização desses dados, de acordo

com sua própria interface.

Page 5: Pic Com Comunicacao Wireless

Sumário

1. Introdução................................................................................................................. 8 2. Fundamentação teórica ........................................................................................... 10

2.1. Microcontrolador PIC..................................................................................... 10 2.1.1. Arquitetura.................................................................................................... 10 2.1.2. Hardwares incorporados ............................................................................... 13 2.1.3. Interrupções .................................................................................................. 14

2.2. Rede GSM ...................................................................................................... 15 2.2.1. Estação Móvel (MS)..................................................................................... 16 2.2.2. Sistema de estação base (BSS) ..................................................................... 17 2.2.3. Sistema de comutação de rede (NSS)........................................................... 18

2.3. Tecnologia GPRS ........................................................................................... 20 2.3.1. Arquitetura GPRS................................................................................... 21 2.3.2. Protocolos da rede GPRS ....................................................................... 24 2.3.3. Tarifação................................................................................................. 25

3. Softwares e hardwares utilizados ........................................................................... 26 3.1. PIC18F2525.................................................................................................... 26 3.2. Modem GSM .................................................................................................. 28 3.3. Compilador CCS ............................................................................................ 30 3.4. Gravador PicBurner........................................................................................ 31 3.5. Relógio de Tempo Real - DS1307.................................................................. 32 3.6. Biblioteca LibModbus .................................................................................... 33 3.7. PostgreSQL..................................................................................................... 34

3.7.1. libpq........................................................................................................ 35 4. Desenvolvimento .................................................................................................... 36

4.1. Descrição do projeto....................................................................................... 36 4.2. Módulo Embarcado ........................................................................................ 38

4.2.1. Algoritmo do microcontrolador PIC18F2525 ........................................ 41 4.3. Módulo Servidor............................................................................................. 49

4.3.1. Cliente exemplo............................................................................................ 53 5. Conclusão ............................................................................................................... 55 6. Referências ............................................................................................................. 57

Page 6: Pic Com Comunicacao Wireless

Lista de figuras

Figura 2.1 – Arquitetura da rede GSM........................................................................... 16 Figura 2.2 – Formato do IMEI ....................................................................................... 19 Figura 2.3 – Evolução do sistema de telefonia móvel celular ........................................ 21 Figura 2.4 – Arquitetura GPRS ...................................................................................... 22 Figura 2.5 – Camadas de protocolo da rede GSM.......................................................... 24 Figura 3.1 – Gravador PicBurner USB........................................................................... 31 Figura 3.2 – Diagrama de blocos do DS1307................................................................. 32 Figura 4.1 – Esquema do circuito eletrônico.................................................................. 38 Figura 4.2 – Foto do Módulo Embarcado....................................................................... 39 Figura 4.3 – Ligação entre DS1307 e o PIC18F2525 .................................................... 40 Figura 4.4 – Fluxograma da função main() .................................................................... 42 Figura 4.5 – Fluxograma da interrupção da USART...................................................... 44 Figura 4.6 – Fluxograma da função “trata_rtc()” ........................................................... 45 Figura 4.7 – Fluxograma da função “processamento()”................................................. 46 Figura 4.8 – Fluxograma da função “captura_dados()” ................................................. 47 Figura 4.9 – Fluxograma da função “conecta()” ............................................................ 47 Figura 4.10 – Fluxograma da função “envia()”.............................................................. 48 Figura 4.11 – Fluxograma da função “envia_dado()” .................................................... 49 Figura 4.12 – Fluxograma da thread main()................................................................... 51 Figura 4.13 – Fluxograma da thread servidor() ............................................................. 52 Figura 4.14 – Fluxograma da thread cliente()................................................................ 52 Figura 4.15 – Tela de login do software cliente-exemplo .............................................. 53 Figura 4.16 – Tela principal do software cliente-exemplo............................................. 54 Figura 4.17 – Tela da ação “Ver Dados da UTR”.......................................................... 54

Page 7: Pic Com Comunicacao Wireless

Lista de tabelas

Tabela 2.1 – Modificações da rede GSM para se adequar à tecnologia GPRS.............. 21 Tabela 3.1 – Especificações técnicas do PIC18F2525 ................................................... 27 Tabela 3.2 – Principais comandos/respostas AT utilizados no projeto .......................... 28 Tabela 3.3 – Parâmetros de especificação do cristal ...................................................... 33

Page 8: Pic Com Comunicacao Wireless

8

1. Introdução

Hoje em dia, o mercado mundial encontra-se bastante acirrado, com elevados

níveis de concorrência e diversas empresas buscando apenas um pequeno detalhe que a

diferencie das demais, a fim de obter maior êxito (lucro) que suas concorrentes. Pode-se

dizer que as principais buscas das empresas se resumem em três categorias: redução de

custos, maior confiabilidade de seus produtos e uma maior segurança (para seus clientes

e funcionários).

Com o avanço da tecnologia, uma das formas para acentuar essas características

é o emprego da automação. Para o trabalho em questão, é muito importante o avanço

significativo das tecnologias de transmissão sem fio, mais especificamente o avanço dos

sistemas de telefonia móvel, e a expansão da Internet, na qual ela é a protagonista de

uma convergência tecnológica, aonde os mais diversos dispositivos eletrônicos possuem

a capacidade de estabelecer comunicação com a mesma.

É neste cenário tecnológico que este trabalho apresenta um sistema de telemetria

remota, capaz de automatizar processos que necessitem enviar informações de

monitoração de um dispositivo, no qual o mesmo não se encontra conectado a nenhuma

rede local. O foco principal do trabalho são os sistemas de medição de água/luz e a

monitoração de tubulações de gás, seja para fins fiscais ou não.

O sistema proposto neste trabalho é composto por dois principais módulos:

Módulo Embarcado e o Módulo Servidor. O Módulo Embarcado tem como função

capturar as informações do dispositivo, armazená-las temporariamente e enviá-las ao

Módulo Servidor. Este último deve ser capaz de receber essas informações e armazená-

las em um banco de dados. Além disso, deve permitir que programas clientes se

conectem ao Módulo Servidor e visualizem as informações contidas no banco de dados,

de forma intuitiva e adaptável.

O capítulo 2 deste trabalho apresenta os principais conceitos teóricos necessários

para o desenvolvimento do projeto exposto. Aborda as principais características dos

microcontroladores da família PIC, detalhando sua arquitetura, os principais hardwares

incorporados internamente em seus chips e as principais interrupções.

Ainda no capítulo 2, são descritas as características da rede GSM, explicando a

sua arquitetura e seus principais componentes, servindo como base para o estudo da

tecnologia GPRS, a qual é ferramenta indispensável no projeto proposto. Sobre o

GPRS, são mostradas as alterações ocorridas da rede GSM padrão, falando sobre cada

Page 9: Pic Com Comunicacao Wireless

9

mudança e novos componentes, além dos principais protocolos existentes em uma rede

GPRS.

O capítulo 3 aborda os softwares e hardwares utilizados para o desenvolvimento

do projeto. Em cada tópico é mostrado apenas as principais características do

determinado produto, enfatizando as funcionalidades exploradas pelo projeto. Os itens

abordados são: PIC18F2525, Modem GSM, compilador CCS, gravador PicBurner,

DS1307, LibModbus e PostgreSQL.

O capítulo 4 apresenta o desenvolvimento do projeto, dando uma explicação

mais detalhada sobre o funcionamento geral do sistema. Depois, mostra como foram

desenvolvidos os Módulos integrantes e os algoritmos que o compõem.

O capítulo 5 apresenta as conclusões finais do projeto, além de indicar os

detalhes que faltam para tornar o projeto um produto comercial. Também são

apresentadas algumas melhorias que podem ser desenvolvidas para tornar o projeto

ainda mais atrativo.

Page 10: Pic Com Comunicacao Wireless

10

2. Fundamentação teórica

2.1. Microcontrolador PIC

O PIC pertence a uma família de microcontroladores de arquitetura Harvard

produzido pela Microchip Technology, derivado do PIC1640, originalmente

desenvolvido pela General Instrument’s Microelectronics Division. O nome PIC

inicialmente se referia a “Peripheral Interface Controller” (Controlador de Interfaces

Periféricas) [13].

Essa família de microcontroladores é bastante popular entre profissionais da área

de eletrônica, assim como com hobbystas, devido a seu baixo custo; grande

disponibilidade no mercado nacional; extenso material para consulta, como livros

especializados, artigos em revistas especializadas, fóruns e sites dedicados na internet;

disponibilidade de ferramentas de desenvolvimento de baixo custo e até mesmo grátis; e

possibilidade de programação (e re-programação com a memória flash) pela porta serial

e, ultimamente, já são encontrados hardwares que realizam a programação do PIC pela

porta USB.

2.1.1. Arquitetura

A arquitetura do PIC é tipicamente minimalista. Suas principais características

são:

• Memória de dados independente da memória de programa (arquitetura Harvard);

• Um pequeno número de instruções de tamanhos fixos;

• A maioria das instruções são executadas em um único ciclo (4 períodos de

clock), com espera de um ciclo nas instruções de desvio;

• Um único acumulador (W);

• Toda a memória de dados funciona como registradores para fonte ou destino de

funções matemáticas e outros tipos;

• Uma pilha implementada em hardware para armazenas os endereços de retornos

(usados nas chamadas de funções);

• Memória de dados mapeia os registradores da CPU, das Portas de I/O e dos

periféricos;

Diferente da maioria das CPUs existentes, não há distinção entre memória e

registradores, pois a memória RAM realiza os serviços da memória e dos registradores.

Page 11: Pic Com Comunicacao Wireless

11

Assim, a memória RAM é usualmente chamada como o registrador de arquivos ou

apenas os registradores.

Espaço de dados - RAM

Os PICs possuem um grupo de registradores que funcionam como memória de

uso geral. Registradores especiais para controlar os hardwares embutidos no

microcontrolador também são mapeados no espaço de dados. O endereçamento da

memória depende da série do dispositivo, mas todas as séries possuem mais de um

banco de memória, o que facilita o endereçamento de toda a memória.

Memória de programa

Todos os PICs possuem a arquitetura Harvard, então a memória de dados e a

memória de programa são separadas. A memória de programa geralmente são

implementadas em EPROM, ROM ou flash ROM. Em geral, os dispositivos de

memória externa não são endereçados diretamente devido a falta de uma interface

própria para este fim. A exceção são alguns microcontroladores da série 18F.

Tamanho da palavra

O tamanho da palavra dos PIC’s é uma fonte de muita confusão. Todos os PIC’s

(exceto os dsPIC’s) trabalham com dados de 8 bits (1 byte), então eles deveriam ser

chamados de microcontroladores de 8 bits. Mas ao contrário da maioria das CPU’s, os

PIC’s usam a arquitetura Harvard, então o tamanho da instrução pode ser diferente do

tamanho do dado. Na verdade, famílias diferentes de PIC’s usam instruções de

tamanhos diferentes, o que torna um desafio comparar o tamanho do código de um PIC

com outros microcontroladores. Por exemplo, digamos que um microcontrolador tenha

6144 bytes de memória de programa – para um PIC de 12 bits, isso resulta em 4096

palavras ou instruções; para um PIC de 16 bits, resulta em 3072 palavras.

Pilha

Os microcontroladores da Microchip Technology possuem um hardware

chamado pilha, o qual é usado para salvar endereços de retorno quando uma função é

chamada e no uso de desvios. Essa pilha não era acessada por software, até a criação da

série 18F, o que resultou em um dispositivo mais amigável para os compiladores de

linguagens de alto nível.

Page 12: Pic Com Comunicacao Wireless

12

Conjunto de instruções

Os PIC’s usam um conjunto de instruções RISC, as quais variam de 35

instruções para os PIC’s das séries 12 e 16 até cerca de 80 instruções para os da série

18. O conjunto de instruções inclui instruções que realizam uma variedade de operações

entre o acumulador e uma constante ou entre o acumulador e um endereço de memória,

bem como possibilita a inclusão de códigos condicionais, simplesmente pulando o

código ou realizando chamadas de funções, sempre retornando após a execução.

Algumas operações, como ativação e teste de bits, podem ser realizadas em

qualquer registrador, mas operações aritméticas com dois operandos sempre envolvem o

acumulador W (por exemplo, a operação soma só pode ser realizada entre um

registrador e o acumulador). O mesmo ocorre na atribuição de uma constante a um

registrador. Para realizar uma cópia entre dois registradores, apenas a série 18 permite

que seja realizada diretamente, nas séries mais antigas é necessária a copia intermediária

para o acumulador W.

A arquitetura do PIC não possui suporte de hardware para realizar

automaticamente a cópia do estado do processador quando ocorre uma interrupção. A

série 18 aprimorou esta situação, implementando registradores sombra, o qual salva as

informações contidas nos principais registradores (especialmente os propósito

específico) quando ocorre uma interrupção.

Em geral, as instruções do PIC se enquadram em uma das categorias abaixo:

1. Operações com o acumulador W e uma constante. O resultado é sempre

armazenado no próprio acumulador;

2. Operações com o acumulador W e um registrador indexado. O resultado pode

ser salvo no acumulador ou no registrador informado;

3. Operações com bits. Elas recebem como parâmetro o número do registrador e o

número do bit que se deseja operar. As ações permitidas são: ativar, desativar e

testar se o bit está ativado ou não, após o teste é realizado (ou não) um desvio;

4. Transferência de controle. São as operações “call” (chamada de função) e

“goto”;

5. Algumas operações com nenhum operando, como “return”, que retorna de uma

função, e “sleep”, que coloca o microcontrolador em um estado de baixo

consumo.

Page 13: Pic Com Comunicacao Wireless

13

2.1.2. Hardwares incorporados

Os microcontroladores da família PIC possuem em seu chip vários módulos de

hardware já incorporados. Os principais são:

• Osciladores internos (geradores de clock);

• Timers de 8/16/32 bits;

• Memória EEPROM interna;

• Interface serial síncrona e assíncrona (USART);

• Comunicação serial por MSSP, que pode funcionar com os protocolos: I²C e

SPI;

• Módulos Captura/Compara e PWM (CCP);

• Conversores analógico/digital;

• Suporte para a interface USB;

• Suporte para a interface Ethernet;

• Suporte para a interface CAN;

• Transmissores de rádio-frequência integrados (PIC16F639 e rfPIC)

USART – Universal Synchronous Asynchronous Receiver Transmitter

A USART, também conhecida como SCI (“Serial Communications Interface” –

Interface de comunicação serial), é um módulo responsável pela comunicação serial

entre periféricos (inclusive entre outro microcontrolador) [14]. Ela pode ser configurada

como um sistema assíncrono full-duplex, o qual pode se comunicar com dispositivos

como terminais CRT e computadores de forma geral. Também pode ser configurada

para operar como um sistema síncrono half-duplex, se comunicando com dispositivos

conversores Analógico/Digital ou Digital/Analógico, memórias EEPROM seriais e etc.

No modo half-duplex, a USART pode operar como mestre ou como escravo.

Protocolo I²C

Com o intuito de aumentar a eficiência do hardware e diminuir a complexidade

dos circuitos eletrônicos, a Philips desenvolveu, em meados de 1996, o protocolo de

comunicação serial I²C. Algumas de suas principais vantagens são [15]:

• Organização funcional em blocos, resultando em um simples diagrama

esquemático;

Page 14: Pic Com Comunicacao Wireless

14

• Endereçamento e protocolo de transferência de dados totalmente definidos via

software;

• Inclusão e exclusão de dispositivos em um barramento sem afetar o seu

funcionamento;

• Bibliotecas disponíveis pela comunidade do protocolo facilitam o

desenvolvimento de aplicações utilizando o I²C;

O barramento I²C possui duas linhas de comunicação: a SDA (Serial Data),

responsável pela transmissão dos dados; e a SCL (Serial Clock), responsável pela

transmissão do sinal de clock. Ambas as linhas são bi-direcionais e são conectadas ao

positivo do circuito através de um resitor de pull-up. A taxa de transferência máxima do

barramento é de 100kbits/s no modo padrão, chegando até a 400kbits/s no modo rápido.

Todo dispositivo possui um endereço único no barramento e qualquer

dispositivo conectado pode operar como transmissor ou receptor. O número de

interfaces conectadas ao barramento depende apenas da capacitância máxima do

barramento, que é de 400pF.

Para a comunicação ser realizada com sucesso, é necessário que a linha SDA

permaneça estável durante todo o período em que o clock esteja no nível lógico “alto”.

Quando o clock estiver em nível lógico “baixo”, é permitido realizar mudanças na linha

SDA. O procedimento para a realização da comunicação entre dispositivos é detalhado

a seguir:

1. O dispositivo master ajusta a condição inicial;

2. O dispositivo master envia 7 bits de endereçamento, caso seja utilizado o modo

padrão. Para o modo estendido são usados 10 bits;

3. O dispositivo master envia o bit de WR ;

4. O dispositivo slave envia o sinal de reconhecimento (ACK);

5. Um dispositivo envia dados em forma de pacotes de 8 bits, que são respondidos

por um sinal de reconhecimento do dispositivo destinatário;

6. O dispositivo master encerra a comunicação.

2.1.3. Interrupções

Uma funcionalidade muito importante dos microcontroladores da família PIC é

a existências das interrupções. Elas permitem que seja executado um trecho específico

de código toda vez que uma determinada ação ocorrer ou que determinada condição seja

determinada. Após a execução do código informado, a CPU retorna a execução da

Page 15: Pic Com Comunicacao Wireless

15

tarefa que ora realizava. Nas séries 12 e 16, não é realizada a cópia do conteúdo de

nenhum registrador (exceto o registrador PC – Program Counter, necessário para o

retorno da execução do programa executado) [14], portanto, ela deve ser realizada via

software. Na série 18 é realizada a cópia do acumulador W e do registrador de STATUS

[1], caso essa funcionalidade não seja desejada é possível desativá-la.

As principais interrupções e suas explicações são dadas a seguir:

• Interrupção externa Ocorre na alteração do pino RB0, de acordo com a borda

de sensibilidade configurada, que pode ser na alteração de nível lógico “baixo”

para “alto” ou o contrário. Alguns PICs possuem mais de um pino para

interrupção externa, obedecendo a seqüência RB1 e RB2;

• Overflow dos timers Ocorre quando um timer estoura a sua capacidade de

contagem. Por exemplo, o timer0 possui 8 bits, então quando ele alcançar o

valor de 255, no próximo incremento, ocorrerá um estouro de sua capacidade e a

interrupção irá ser disparada (caso a mesma esteja ativada);

• Alteração do PORTB Ocorre após uma alteração em qualquer dos pinos RB7

a RB4;

• USART De acordo com sua configuração, ocorre quando um dado for

recebido ou enviado pela porta serial;

• Conversão A/D finalizada Ocorre sempre que uma conversão

Analógico/Digital é finalizada;

• Escrita na EEPROM finalizada Ocorre no momento em que uma escrita na

memória de dados EEPROM é concluída;

• SSP Ocorre após um recebimento ou envio de dados nas portas destinadas a

esse tipo de comunicação. Pode ser utilizada tanto no modo I²C como no modo

SPI.

2.2. Rede GSM

A rede GSM – Global System for Móbile communications teve como objetivo

criar um padrão de telefonia celular mais abrangente possível, portanto, ela utilizou de

interfaces abertas e padronizadas, permitindo a combinação de componentes de diversos

fabricantes, resultando em uma arquitetura flexível e bastante competitiva

comercialmente.

Page 16: Pic Com Comunicacao Wireless

16

Sua arquitetura é dividida em quatro grupos, que formam a PLMN (Public Land

Móbile Network – rede móvel pública terrestre). A Figura 2.1 [16] apresenta a

interligação desses grupos, os quais são descritos a seguir:

Figura 2.1 – Arquitetura da rede GSM

• Estação móvel (MS – Mobile Station) É responsável pela conexão do

assinante à rede GSM. É considerado um MS qualquer dispositivo de

comunicação de dados, voz e imagem.

• Sistema de estação base (BSS – Base Station System) É responsável pelas

conexões de radiofreqüência da MS para o sistema de comutação;

• Sistema de comutação de rede (NSS – Network Switching System) Realiza o

processamento das informações através de interfaces e protocolos e o

gerenciamento do banco de dados. Assim, é possível conectar a rede GSM à

rede pública (RTPC – Rede Telefônica Pública Comutada);

• Sistema de operação e manutenção (OMS – Operations and Maintenance

System) Realiza a administração, operação e manutenção dos grupos

componentes.

2.2.1. Estação Móvel (MS)

A estação móvel é constituída pelo equipamento móvel (ME – Mobile

Equipment) e pelo módulo de identidade do assinante (SIM – Subscriber Identity

Module). O equipamento móvel é responsável pela interligação entre o assinante e à

rede GSM. Ele possui uma identificação chamada “identidade internacional do

Page 17: Pic Com Comunicacao Wireless

17

equipamento móvel” (IMEI – International Móbile Equipment Identity). Os números

IMEIs são armazenados no registro de identidade de equipamento, abordado nas

próximas seções.

O processamento e a tarifação das chamadas são realizados a partir das

informações contidas no cartão SIM e não no MS. Portanto, para obter uma linha

habilitada em um MS, é necessário adquirir um cartão SIM com uma operadora de

telefonia celular, o qual poderá ser usado em qualquer região que possua um terminal

GSM compatível com o sistema da operadora.

2.2.2. Sistema de estação base (BSS)

O sistema de estação base (BSS – Base Station System) é responsável pela

conexão entre a MS e a central de comutação celular (MSC – Mobile Services Centre).

Ele é constituído por três elementos, são eles:

• Estação transceptora base (BTS – Base Transceiver Station);

• Controlador de estação base (BSC – Base Station Controller);

• Transcodificador (XCDR – Transcoder).

Estação transceptora base (BTS)

A BTS provê as conexões na interface aérea com a MS. Ela é basicamente

composta por um hardware de radiofreqüência e de antenas. A BTS sempre está

interligada a BSC, e ambos realizam as funções de gerência dos canais de tráfego e

controle na interface aérea.

Controlador de estação base (BSC)

O BSC é responsável por controlar um grupo de BTSs. Todas as operações de

uma BTS são comandadas pelo seu respectivo BSC. Através de uma matriz de

comutação digital, as BSCs conectam os canais de RF com os circuitos terrestres

provenientes da central de comutação celular. Com essa técnica, o BSC é capaz de

realizar handovers entre os canais de RF independente da MSC, o que otimiza o tráfego

na interface aérea e reduz o trabalho da MSC.

Transcodificador (XCDR)

Page 18: Pic Com Comunicacao Wireless

18

O transcodificador é o elemento encarregado de converter os sinais de voz

provenientes da MSC no padrão especificado pelas normas GSM, utilizado na

transmissão sobre a interface aérea.

2.2.3. Sistema de comutação de rede (NSS)

O sistema de comutação de rede (NSS – Network Switching System) é

responsável pelas funções de comutação, controle e gerenciamento da mobilidade e da

base de dados dos assinantes em uma rede GSM. Seus principais componentes são:

• Central de comutação móvel (MSC – Mobile services Switching Centre);

• Registro de localização local (HLR – Home Location Register);

• Registro de localização de visitante (VLR – Visitor Location Register);

• Centro de autenticação (AuC – Authentication Centre);

• Registro de identidade de equipamento (EIR – Equipment Identity Register);

• Função de interfuncionamento (IWF – InterWorking Function);

• Supressor de eco (EC – Echo Canceler).

Central de comutação móvel (MSC)

A MSC é o “coração” do sistema de comutação de rede. Ela é a encarregada de

conectar e desconectar chamadas, promover handover entre BSSs e MSCs;

supervisionar, manter e operar as bases de dados; gerenciar as interfaces entre a rede

GSM e outras redes, como a RTCP e a Rede Digital de Serviços Integrados (RDSI); e

tarifar os serviços.

Para realizar todas essas funções, a MSC precisa estar conectada aos bancos de

dados que possuem essas informações. Dois componentes possuem grande parte dessas

informações: o HLR e o VLR.

Registro de localização local (HLR)

O HLR administra, altera e atualiza a base de dados dos assinantes locais. Esses

dados são acessados remotamente pelo MSC e pelo VLR. Os principais dados

armazenados pelo HLR são:

• Identidade internacional do assinante (IMSI – International Móbile Subscriber

Identity);

• Localização corrente do assinante no VLR;

Page 19: Pic Com Comunicacao Wireless

19

• Serviços suplementares associados ao assinante;

• Estado do assinante;

• Chave de autenticação.

Registro de localização de visitante (VLR)

Pode acontecer de um assinante passar para outra PLMN que não a sua de

origem, o que é óbvio em se tratando de sistemas de comunicação móveis. Para se

realizar a comunicação com esse usuário visitante, existe o VLR. Ele guarda uma cópia

dos principais dados do assinante, contidos no seu HLR de origem. Essas informações

são:

• Estado da estação móvel (livre/ocupado/não responde);

• Identidade de área de localização (LAI – Location Área Identity);

• Identidade temporária do assinante móvel (TMSI – Temporary Mobile

Subscriber Identity);

• Número da estação móvel visitante (MSRN – Mobile Station Roaming Number).

Centro de autenticação (AuC)

Normalmente instalado no mesmo hardware do HLR, o AuC tem as funções de

autenticar e criptografar as mensagens, impedindo ataques à rede, principalmente a

clonagem de MS. Esses processos são executados simultaneamente no AuC e na MS.

Registro de identidade do equipamento (EIR)

O registro de identidade de equipamento contém a base de dados centralizada

dos números de identidade internacional do equipamento móvel (IMEI). A Figura 2.2

apresenta o formato do IMEI e a seguir são dadas explicações sobre cada campo.

Figura 2.2 – Formato do IMEI

• Type Approval Code (TAC) 6 dígitos que representam o código de aprovação

do ME;

Page 20: Pic Com Comunicacao Wireless

20

• Final Assembly Code (FAC) 2 dígitos que identificam o local de manufatura

ou montagem final do ME;

• Serial Number (SNR) 6 dígitos que identificam o número de série para cada

TAC e FAC de uma ME;

• Software Version Number (SVN) 2 dígitos decimais que identificam o

número da versão de software instalado no ME

Função de interfuncionamento (IWF)

O IWF é responsável por realizar o interfaceamento entre a rede GSM com

outras redes de dados, como a internet, por exemplo. É sua função adaptar a taxa de

dados e converter os protocolos quando necessário. Essas atividades são realizadas por

um conjunto de MODEMs.

Supressor de eco (EC)

O supressor de eco é responsável por eliminar o efeito de eco presente nas

conexões entre a MSC e a RTPC. Esse efeito pode ocorrer por diversos fatores, alguns

dos principais são: atraso de propagação na interface aérea; atraso de propagação devido

ao processo de transcodificação; e geração de eco na bobina híbrida.

2.3. Tecnologia GPRS

Com a evolução da comunicação sem fio e a tendência de convergência das

tecnologias, com a crescente expansão da internet, criou-se uma necessidade da

utilização de novos serviços pelos usuários dos telefones móveis celulares. Os

principais serviços demandados pela sociedade moderna podem ser classificados nos

seguintes grupos:

• Comunicação Acesso a internet, e-mail e fax;

• Serviços de entretenimento Jogos em modo multi-jogador, aonde é necessária

a utilização de uma rede de dados;

• Comércio eletrônico venda de ingressos, acesso a bancas, compras pela

celular (acessando a web), informações sobre promoções, recebimento de

passagens aéreas e etc.

Com base nessa tendência, o sistema de telefonia móvel celular sofreu várias

evoluções. Atualmente se encontra implantada os sistemas de 3ª geração, e já ocorrem

Page 21: Pic Com Comunicacao Wireless

21

estudos para uma nova expansão, resultando em uma 4ª geração. A Figura 2.3 apresenta

essa evolução.

Figura 2.3 – Evolução do sistema de telefonia móvel celular

Nessa seção será abordada a tecnologia GPRS (sistema 2,5G), por ainda possuir

uma abrangência maior que as novas tecnologias, mas ao mesmo tempo ser compatível

com possíveis atualizações (a 3G adotada pelas operadoras no Brasil é totalmente

compatível com a tecnologia GPRS).

2.3.1. Arquitetura GPRS

A arquitetura GPRS utiliza a mesma infra-estrutura básica utilizadas nas redes

GSM comuns, realizando a inclusão de novos elementos de rede e interfaces e

modificando alguns componentes já existentes. Essas alterações tornam possível a

transmissão de dados a uma taxa de 9,6 a 171 kbits/s (valor teórico). A Figura 2.4

apresenta a arquitetura com suas modificações.

As principais modificações são indicadas na Tabela 2.1.

Tabela 2.1 – Modificações da rede GSM para se adequar à tecnologia GPRS

Elemento de rede Modificação ou atualização da arquitetura GSM

Estação móvel (MS) É necessário uma nova MS, que permanece compatível com

todos os serviços existentes anteriormente.

Estação transceptora Necessário uma atualização de software nas BTSs existentes.

Page 22: Pic Com Comunicacao Wireless

22

base (BTS)

Controlador de estação

base (BSC)

Atualização de software e instalação de hardware novo,

chamado unidade de controle de pacote – PCU (Packet

Control Unit), que direciona o tráfego de dados para a rede

GPRS.

SGSN e GGSN Novos elementos de rede, chamados servidor do nó de

suporte GPRS (SGSN - Serving GPRS Support Node) e

Gateway do nó de suporte GPRS (GGSN – Gateway GPRS

Support Node)

VLR, HLR, AuC, EIR

e todos elementos de

base de dados

Atualização do software para fornecer as funções oferecidas

pelo GPRS

Figura 2.4 – Arquitetura GPRS

A seguir serão descritos os novos elementos e serviços oferecidos pela

introdução da tecnologia GPRS.

Page 23: Pic Com Comunicacao Wireless

23

Unidade de controle de pacote (PCU)

Todos os BSCs exigem a instalação de um PCU para se integrarem à rede

GPRS. Os PCUs organizam os dados vindos da BSC em pacotes e transportam-no até o

servidor do nó de suporte GPRS (SGSN). O tráfego de voz continua sendo tratado como

nas redes GSM comuns, ou seja, do BSS até a MSC.

Servidor do nó de suporte GPRS (SGSN)

O SGSN pode ser visto como uma “MSC de comutação de pacotes”, ou seja, ele

é responsável por provê o ponto de acesso das MSs à rede GPRS. Note que ele o SGSN

trata apenas o tráfego de dados, permanecendo o tratamento do tráfego de voz

inalterado. As principais funções do SGSN são:

• Detecção de novos usuários GPRS na área de serviço;

• Registro de novos usuários;

• Criptografia dos dados;

• Manutenção dos registros de localização dos usuários na área de serviço;

• Gerenciamento da mobilidade;

• Compressão dos cabeçalhos de dados dos protocolos TCP/IP;

• Tarifação das transações na rede local;

• Comunicação com o HLR, para obter dados dos usuários GPRS.

Gateway do nó de suporte (GGSN)

O GGSN provê as interfaces de conexão com as redes de pacotes externas, como

IP. Todos os pacotes transferidos entre uma rede externa e o GPRS passam pelo GGSN.

Suas principais funções são:

• Manter informações de roteamento para entregar as unidades de protocolo de

dados (PDU – Protocol Data Unit) ao SGSN que serve uma determinada MS;

• Mapeamento dos endereços de rede e assinante, através do protocolo DHCP;

• Tarifar as transações efetuadas nas redes externas.

Nome do ponto de acesso (APN – Access Point Name)

Em suma, APNs são endereços IP associados a cada interface externa que

conecta a rede GPRS ao GGSN. São usados para definir quais serviço podem ser

acessados por um certo usuário. Consiste de:

Page 24: Pic Com Comunicacao Wireless

24

• Identificador de rede APN (Network ID): identifica o GGSN e o nó externo ou

serviço ao qual o usuário deseja se conectar;

• Identificador da operadora APN (Operator ID): campo opcional que identifica

em qual rede backbone GPRS o GGSN está localizado.

2.3.2. Protocolos da rede GPRS

A Figura 2.5 apresenta as camadas de protocolos da rede GPRS. É importante

destacar que, a partir do nível de rede, são usados os protocolos da Internet, como IP,

TCP, UDP e etc. A seguir será dada uma descrição dos principais protocolos da rede

GPRS.

Figura 2.5 – Camadas de protocolo da rede GSM

Camada SNDCP

A camada de protocolo de convergência dependente da sub-rede (SNDCP –

SubNetwork Dependent Convergence Protocol) é responsável pela interface das

camadas de protocolo GPRS entre os elementos de rede MS e SGSN, visando o suporte

dos protocolos IP, PPP e X-25. Adicionalmente, o SNDCP realiza a compressão de

dados e cabeçalho, aumento a eficiência do canal. A compressão de cabeçalho é

realizada apenas ao protocolo TCP, não sendo aplicada ao UDP.

Outra função de grande importância é a segmentação e remontagem das

unidades de protocolo de dados (PDU – Protocol Data Unit).

Page 25: Pic Com Comunicacao Wireless

25

Camada LLC

A camada do protocolo de controle de enlace lógico (LLC – Logical Link

Control) é encarregada de provê o enlace lógico entre a MS e o SGSN. Suas principais

funções são:

• Encapsular dados da camada SNDCP em unidades tratadas pelo LLC;

• Entregar os dados da camada RLC à SNDCP na ordem certa;

• Se encarregar da criptografia;

• Controlar o fluxo de dados;

• Controlar a seqüência de pacotes;

• Detectar e corrigir erros.

Camadas RLC/MAC

A camada de protocolo de controle de rádio (RLC – Radio Link Control)

segmenta os quadros LLC em blocos RLC, associando um número de seqüência por

bloco (BSN - Block Sequence Number).

A camada de protocolo de acesso ao meio (MAC - Medium Access Control)

trata os diferentes canais lógicos a serem compartilhados por várias MSs. Sua principal

função é definir como deve ser feito o acesso ao meio, o que corresponde à função da

camada de enlace do modelo OSI. Provê também mecanismos que evitam colisões de

dados por pacotes no enlace reverso, o que acontece quando várias MSs enviam pacotes

para uma mesma BTS.

2.3.3. Tarifação

Cabe aos elementos de rede SGSN e GGSN a função de coletar as informações

de tarifação de cada MS. O SGSN coleta as informações referentes à utilização da rede

de rádio (RF), enquanto o GGSN coleta as informações referentes à utilização dos

recursos de uma rede externa de dados (tipicamente, a Internet).

As principais informações coletadas pelo SGSN são:

• Volume do tráfego (quantidade de bytes transferidos) de dados originados e

concluídos pela MS;

• Utilização dos recursos GPRS gerais. Representa a utilização de outros recursos

relacionados à rede GPRS, como por exemplo, gerenciamento de mobilidade;

Page 26: Pic Com Comunicacao Wireless

26

• Localização da MS durante a utilização dos serviços da rede GPRS, se local ou

visitada;

As principais informações coletadas pelo GGSN são:

• Volume do tráfego (quantidade de bytes transferidos) de dados originado e

terminado pela MS em uma rede externa de dados;

• Utilização dos endereços do protocolo de dados por pacotes: representa o tempo

de utilização dos endereços do protocolo de dados por pacotes pela MS.

3. Softwares e hardwares utilizados

3.1. PIC18F2525

O PIC18F2525 é um microcontrolador da Microchip da família 18F, que

possuem como características gerais o alto desempenho computacional, preços

acessíveis, alta resistência e extensa memória Flash [1]. Ele é um microcontrolador de 8

bits de dados e16 bits de instrução, possui 28 pinos, podendo utilizar até 25 pinos para

funções diversas de entrada e saída (caso seja utilizado um oscilador interno). Algumas

características específicas do modelo 18F2525 são:

• Possui 3 modos de funcionamento: Execução (CPU e periféricos ativados),

Espera (CPU desativado e periféricos ativados) e Dormindo (CPU e periféricos

desativados;

• Apresenta um baixo consumo de corrente, com valores típicos de 11µA, 2µA e

100nA, nos modos Execução, Espera e Dormindo, respectivamente;

• Suporta uma velocidade de até 40 MHz, utilizando cristal externo;

• Várias configurações de uso do oscilador interno;

• Fonte de corrente de até 25mA;

• Três fontes de interrupção externa (pinos RB0, RB1 e RB2);

• Suporte ao barramento I2C nos modos Mestre e Escravo;

• Avançado módulo USART:

o Suporta os padrões RS232, RS485 e LIN/J2602 (padrão de comunicação

muito usado na indústria automotiva);

o Ativação automática do periférico (caso se encontre no modo

Dormindo), ao receber o start bit;

Page 27: Pic Com Comunicacao Wireless

27

o Detecção automática da taxa de transmissão;

• Suporta 100.000 ciclos de gravação na memória de programa - Flash;

• Suporta 1.000.000 de ciclos de gravação na memória de dados – EEPROM;

• Interrupções com níveis de prioridade: caso ocorra uma interrupção durante o

tratamento de outra interrupção, a que tiver a prioridade mais alta irá ser

executada primeiro;

• Possui quatro timers;

Além das características citadas acima, é interessante destacar algumas

especificações técnicas, elas são visualizadas na Tabela 3.1.

Tabela 3.1 – Especificações técnicas do PIC18F2525

Especificações Valor

Memória de programa 49152 bytes

Memória de dados 3968 bytes

Memória de dados - EEPROM 1024 bytes

Fontes de interrupção 19

Entradas analógicas 5

Temperatura ambiente de

funcionamento

-40 ºC a +125ºC

Máxima corrente de saída no

pino de terra (VSS)

300mA

Máxima corrente de entrada no

pino de alimentação (VDD)

250mA

Máxima corrente fornecida para

qualquer pino de E/S

25mA

Máxima corrente requerida para

qualquer pino de E/S

25mA

Máxima corrente fornecida para

todos os pinos de E/S

200mA

Máxima corrente requerida para

todos os pinos de E/S

200mA

Page 28: Pic Com Comunicacao Wireless

28

3.2. Modem GSM

O Modem GSM utilizado no projeto é o modem iTech G24 Serial Data Modem,

fornecido pela empresa Informat Technology [17]. O equipamento nada mais é do que o

encapsulamento do módulo GSM G24 da Motorola [6]. Ele apresenta uma conexão para

antena externa, uma entrada DB9 para conexão serial, uma entrada mini-USB, uma

entrada para a fonte de alimentação e o suporte para o SIM Card.

Para o seu funcionamento é necessário o uso de um SIM Card, igual aos

utilizados nos telefones celulares atuais (GSM). O modem apresenta todas as

características de um celular comum, podendo realizar chamadas, enviar e receber SMS

e utilizar as conexões GPRS (foco principal do projeto). O motivo da não utilização de

um celular comum é que o mesmo não é projetado para as condições adversas que um

projeto específico possa apresentar.

Uma grande vantagem do módulo G24 da Motorola é que o mesmo possui a

implementação da pilha TCP/IP, o que torna bastante fácil o uso de conexões à internet.

Ele dispõe de 4 sockets internos que podem ser utilizados para as conexões TCP e as

portas no intervalo de 0 a 65535. Os comandos referentes à pilha TCP/IP são iniciados

por AT+MIP.

As principais especificações técnicas do módulo em questão são [6]:

• Quad band (850, 900, 1800 e 1900 MHz);

• Temperatura de operação: -20 a +60ºC;

• Consumo de corrente: menor que 2,5mA;

• Potência do transmissor: 1 Watt (850/900 MHz) e 2 Watts (1800/1900 MHz);

• Conexões: USB e RS232;

• Velocidade de transmissão GPRS: até 85,6 Kbps;

• SMS: modo texto e PDU;

O módulo G24 suporta os comandos AT padrões (GSM 07.05, GSM 07.07 e

GSM 07.10), além dos comandos proprietários, que em sua maioria são para acessar a

pilha TCP/IP. Os principais comandos/respostas utilizados no projeto [7] são mostrados

na Tabela 3.2.

Tabela 3.2 – Principais comandos/respostas AT utilizados no projeto

Comando/Resposta Observações

AT Comando básico para testar a comunicação. Retorna ‘OK’

ou ‘ERROR’.

Page 29: Pic Com Comunicacao Wireless

29

AT&K0 Desabilita o controle de fluxo da comunicação serial.

ATE0 Desabilita o ‘eco’ da comunicação serial, ou seja, o

Modem não envia os dados recebidos pela interface serial.

AT+CMGF=1 Configura as mensagens SMS para o modo texto

AT+CNMI=3,2 Faz com que as mensagens SMS recebidas sejam

encaminhas para a interface serial. Após cada SMS, espera

o comando AT+CNMA por 60 segundos, caso não receba,

retorna a configuração para o valor padrão (armazena as

mensagens na memória, sem encaminhar para o terminal).

AT+CNMA Indica o conhecimento de que foi recebida uma nova

mensagem. Faz com que o modem mantenha a sua

configuração das mensagens SMS.

+CMT: <end. ori>, <hora>,

<CR><LF><texto>

Indica o recebimento de uma mensagem SMS. O

parâmetro ‘end. ori’ indica a origem da mensagem, o

parâmetro ‘hora’ indica a hora da central de serviços da

operadora, <CR><LF> indica uma nova linha e o

parâmetro ‘texto’ representa o conteúdo da mensagem.

AT+MIPCALL=1, <APN> Realiza a conexão com a APN indicada no parâmetro.

AT+MIPCALL=0 Caso o modem esteja conectado a alguma APN, realiza a

desconexão.

+MIPCALL: <parâmetro> Resposta referente a um comando ‘AT+MIPCALL’. Caso

uma conexão tenha sido estabelecida, parâmetro indica o

endereço IP obtido. Caso tenha ocorrida uma desconexão

ou a tentativa de se conectar falhou, parâmetro é igual a 0.

AT+MIPOPEN=<sock>,

<porta ori>,<ip>,<porta

dest>,<prot>

Abre uma conexão no socket ‘sock’, utilizando a porta de

origem ‘porta ori’, com o servidor de endereço igual a ‘ip’,

pela porta de destino ‘porta dest’ e utilizando o protocolo

especificado por ‘prot’, aonde 0 significa TCP e 1 significa

UDP.

AT+MIPSEND=<sock>,

<dado>

Coloca os dados contidos no parâmetro ‘dado’ no buffer de

envio do socket ‘sock’. O parâmetro ‘dado’ aceita dados no

código ASCII e na sua representação hexadecimal.

AT+MIPPUSH=<sock> Força o envio imediato dos dados contidos no buffer do

Page 30: Pic Com Comunicacao Wireless

30

socket ‘sock’

AT+MIPCLOSE=<sock> Finaliza a conexão do socket ‘sock’, mas não desconecta o

Modem da APN.

+MIPRUDP: <ip ori>,

<porta ori>, <sock>,

<dado>

Informa que foi recebida uma mensagem UDP, do

endereço ‘ip ori’, pela porta ‘porta ori’ e com o conteúdo

igual a ‘dado’.

3.3. Compilador CCS

O compilador CCS é uma ferramenta muito utilizada pelos profissionais que

fazem uso dos microcontroladores da Microchip (PICs). Ele mantém uma grande

similaridade com o padrão ANSI C e fornece bibliotecas próprias com um total de 307

[9] funções específicas para tornar possível a utilização das características fornecidas

pelos microcontroladores. Ainda fornece drivers que permitem a utilização de diversos

componentes acessórios, como display LCD, teclado, grande número de memórias

EEPROM, cartões de memória MMC, sensores de temperatura, relógios de tempo real e

etc.

O projeto em questão faz uso de duas bibliotecas fornecidas pelo compilador:

modbus.c, que implementa todo o protocolo de comunicação Modbus (as principais

funções e os dois modos de funcionamento, mestre e escravo), utilizando pinos de E/S

do PIC para realizar a comunicação RS232; e ds1307.c, que fornece funções para a

configuração e a leitura dos dados desse circuito integrado, capaz de implementar um

relógio de tempo real.

Outras características do compilador podem ser citadas [9], são elas:

• Tipo de variável de 1 bit, o que permite a criação de códigos mais eficientes;

• Constantes salvas na memória de programa (mais abundante que a memória de

dados);

• Permite strings de tamanho variável;

• Apresenta várias opções de formatação para a função ‘printf()’, tornando prático

a exibição das variáveis em algum determinado modelo (hexadecimal, decimal,

binário, com N casas decimais e etc);

• Permite o uso de múltiplas portas RS232 e I2C;

Page 31: Pic Com Comunicacao Wireless

31

o Para isso, faz uso de uma implementação via software de transceptores

seriais;

• Configura automaticamente a direção de cada pino (entrada ou saída) de acordo

com as funções utilizadas (input(), output_high(), output_low() e etc);

• Permite o uso de funções assembly a qualquer momento.

3.4. Gravador PicBurner

Para inserir o arquivo gerado pelo compilador CCS (arquivo.hex) em um

microcontrolador é necessário um dispositivo de hardware específico para esta

finalidade. Esse hardware é chamado de gravador ou programador (o termo em inglês é

programmer).

O gravador utilizado ao longo do projeto foi o PicBurner, o qual foi adquirido

em um site de compra e venda. Ele é baseado no projeto Brenner8 [8], o qual é um

gravador controlado por um microcontrolador em seu circuito. A sua principal

característica é ser um gravador USB, tornando possível a gravação de

microcontroladores a partir de notebooks (os quais, em geral, não possuem portas

seriais). Outras características que podem ser citadas:

• Grava PICs de 8, 14, 18, 28 e 40 pinos;

• Grava dsPICs de 8, 18, 28 e 40 pinos;

• Permite gravação In-Circuit.

• Não precisa de fonte de alimentação externa! Utiliza a propria alimentacao

Figura 3.1 – Gravador PicBurner USB

Page 32: Pic Com Comunicacao Wireless

32

A conexão do microcontrolador ao PicBurner é feita através de um conector ZIF

(Zero Insertion Force – Força de Inserção Nula), evitando que os pinos do

microcontrolador sejam danificados. A Figura 3.1 apresenta o gravador em questão.

3.5. Relógio de Tempo Real - DS1307

O circuito integrado DS1307 é um relógio de tempo real que apresenta um

calendário completo, além de permitir a utilização de 56 bytes de memória [2]. Ele é

capaz de fornecer segundo, minuto, hora, dia, dia da semana, mês e ano. Os meses são

automaticamente ajustados para o seu correto número de dias, incluindo anos bissextos.

Permite a configuração da exibição da hora em formato de 12 (com indicação de AM e

PM) ou 24 horas. Seu encapsulamento é bastante simples, apresentando apenas 8 pinos.

A Figura 3.2 apresenta o seu diagrama de blocos.

Figura 3.2 – Diagrama de blocos do DS1307

O DS1307 necessita de uma bateria de 3V de backup conectada aos seus

terminais (pino 3) para um correto funcionamento. Quando a tensão de alimentação cai

abaixo de 1,25xVBAT (tensão da bateria), o circuito termina a operação que está sendo

realizado naquele momento e bloqueia novas requisições de escrita ou leitura, evitando

que dados inválidos sejam trafegados. Caso a tensão de alimentação se torne menor que

a tensão da bateria, o DS1307 muda para o modo de baixo consumo (menor que 500nA)

Page 33: Pic Com Comunicacao Wireless

33

e passa a ser alimentado apenas pela bateria. No restabelecimento da tensão de

alimentação, o circuito passa a utilizá-la quando a mesma atingir uma valor maior que

VBAT + 0,2V e retorna a aceitar requisições de escrita e leitura quando a tensão de

alimentação atingir um valor maior que 1,25 x VBAT.

O dispositivo em questão faz uso de um cristal oscilador para o seu

funcionamento. O cristal deve ter uma freqüência igual a 32,768kHz e é conectado nos

pinos 1 e 2. Não é necessário o uso de capacitores de carga, mas o cristal deve obedecer

aos parâmetros expostos na Tabela 3.3. A precisão obtida pelo circuito é função da

precisão do cristal e do casamento entre a carga capacitiva do circuito interno e a carga

capacitiva para o qual o cristal foi projetado, ou seja, depende da obediência do cristal

aos parâmetros da Tabela 3.3.

Tabela 3.3 – Parâmetros de especificação do cristal

Parâmetro Típico Máximo

Freqüência 32,768kHz

Resistência série 45kΩ

Capacitência de carga 12,5 pF

Ele utiliza o barramento I2C para realizar a transferência dos dados, pinos 5

(SDA) e 6 (SCL). Além disso, possui uma saída programável (pino 7 SWQ/OUT). Essa

saída pode ser habilitada ou não, quando habilitada emite uma onda quadrada com uma

das quatro freqüências possíveis (1 Hz, 4kHz, 8kHz e 32,768kHz). Essa configuração é

feita habilitando os bits do registrador de controle do DS1307. O pino de saída é

coletor-aberto, portanto, necessita a ligação de um resistor à alimentação para um

correto funcionamento. A saída é habilitada mesmo que o circuito se encontre

alimentado apenas com a bateria.

3.6. Biblioteca LibModbus

O projeto em questão considera como o dispositivo a ser monitorado um

equipamento industrial que permita a comunicação através do protocolo Modbus. Como

é inviável a obtenção de tal dispositivo para fins de desenvolvimento do projeto, fez-se

necessário uma ferramenta que tornasse possível a simulação de tal dispositivo. Para

tanto, foi utilizado a biblioteca LibModbus [10].

Ela implementa o protocolo Modbus utilizando a porta serial para a

comunicação. Ela utiliza o compilador GNU GCC para o seu funcionamento e faz uso

Page 34: Pic Com Comunicacao Wireless

34

da biblioteca libpthread. A LibModbus permite a implementação de dispositivos

mestres e escravos, além de apresentar algumas funções de configuração da porta serial.

Ela reconhece apenas as funções de escrita e leitura de registradores (funções 3, 4, 6 e

16), além das funções de diagnóstico (função 7 – retorna o status do software e função 8

– teste de linha). Mas para o projeto em questão as funções apresentadas atendem às

necessidades.

O software desenvolvido para simular o dispositivo industrial utiliza a

LibModbus para implementar um escravo Modbus. É realizada a inicialização do mapa

de registradores com 3 variáveis de 16 bits (pressão, temperatura e alarmes) e 2

variáveis de 32 bits (volume bruto e volume corrigido). Os valores são obtidos de

forma aleatória e a cada leitura são obtidos novos valores para as variáveis. A biblioteca

em questão permite que seja configurada uma função para ser executada toda vez que

um dado for recebido ou enviado, e é dessa forma que é obtido um novo valor para o

mapa de memória.

3.7. PostgreSQL

O projeto proposto necessita de uma base de dados, para tanto, foi escolhido

como o Sistema Gerenciados de Banco de Dados – SGBD, o PostgreSQL. Ele possui

código aberto e obedece ao paradigma objeto-relacional. Esta seção não irá explorar

toda a potencialidade do SGBD em questão, pois no estágio atual do projeto, o seu uso

foi bastante simplificado. Mas a opção pela escolha do PostgreSQL foi feita para que

seja possível a utilização futura de toda a sua potencialidade. Algumas de suas

principais características [11] são:

• Grande confiabilidade e integridade dos dados;

• Sua implementação da linguagem SQL é fortemente baseada no padrão ANSI-

SQL 92/99;

• Compatível com inúmeros sistemas operacionais (GNU/Linux, diversas

variações de Unix e Windows);

• Possui a maioria dos tipos de dados especificados no ISO SQL:1999;

• Suporta o armazenamento de objetos binários;

Algumas funcionalidades mais sofisticadas podem ser mencionadas, tais como:

• Controle de concorrência multiversionado;

• Recuperação em um ponto no tempo;

Page 35: Pic Com Comunicacao Wireless

35

• Transações agrupadas;

• Cópias de segurança a quente;

• Suporta conjuntos de caracteres internacionais;

• Codificação de caracteres multibyte;

• Sensibilidade a caixa (maiúscula e minúscula)

O PostgreSQL oferece ainda diversas bibliotecas que fazem a interface entre o

banco de dados e uma determinada linguagem de programação. Algumas das linguagens

suportadas nativamente são: C/C++, Java, Net, Perl, Python e Ruby. A linguagem

utilizada no projeto foi C/C++ e a biblioteca disponibilizada pelo PostgreSQL é a libpq.

3.7.1. libpq

A biblioteca libpq é a interface de programação para as aplicações desenvolvidas

em C/C++ que desejam acessar as funções do PostgreSQL. Ela possui um conjunto de

funções que permitem que um programa cliente envie requisições para um servidor

PostgreSQL e receba os seus resultados. Os programas clientes que utilizam a libpq

devem incluir o arquivo de cabeçalho libpq-fe.h e utilizar a opção para realizar o link

com a biblioteca libpq.

A seguir será dada uma breve descrição das principais funções desta biblioteca,

retirados de [12]:

• PQconnectdb( char *conninfo ) Realiza a conexão com o servidor do banco

de dados de acordo com os parâmetros especificados na variável ‘conninfo’. Ela

retorna um ponteiro para a conexão (PGconn);

• PQstatus( PGconn *conn ) Indica o status da conexão passada como

parâmetro;

• PQexec( PGconn *conn, const char *command ) Executa o comando contido

na variável ‘command’ utilizando a conexão ‘conn’. A resposta é retornada

como um ponto para uma variável do tipo PGresult;

• PQresultstatus( PGresult *res ) Indica o status da resposta passada como

parâmetro;

• PQclear( PGresult *res ) Limpa o conteúdo da variável ‘res’;

• PQfinish( PGconn *conn ) Finaliza a conexão ‘conn’;

• PQnfields( PGresult *res ) Retorna o número de colunas (campos) contidos

na resposta de um comando SQL, armazenado em ‘res’;

Page 36: Pic Com Comunicacao Wireless

36

• PQntuples( PGresult *res ) Retorna o número de linhas (tupla) contidos na

resposta de um comando SQL, armazenado em ‘res’;

• PQgetvalue( PGresult *res, int row_number, int column_number ) Obtém o

valor armazenado na linha e coluna indicados nos parâmetros da função. Retorna

como uma variável do tipo char*.

4. Desenvolvimento

4.1. Descrição do projeto

O projeto consiste no desenvolvimento de uma Unidade de Telemetria Remota –

UTR. Ela é ser capaz de capturar dados de um dispositivo qualquer (na aplicação em

questão, está sendo considerado um dispositivo industrial) e transmitir esses dados para

um servidor, de forma totalmente remota. Para tanto, é utilizado um Modem GSM

(descrito na seção anterior), o qual utiliza a internet para enviar os dados. O servidor

armazena esses dados em um banco de dados e os torna disponível para consulta através

de um software cliente, que tem a opção de filtrar a visualização desses dados da forma

mais conveniente.

A UTR é composta por dois módulos principais, referenciados ao longo do texto

como Módulo Embarcado e Módulo Servidor, nas próximas seções esses módulos serão

mais detalhados, mas essa definição irá ajudar na explicação do funcionamento do

projeto, que será dada a seguir.

O Módulo Embarcado possui um relógio dedicado e uma configuração do

intervalo de tempo em que deve realizar leituras do dispositivo monitorado. Esse

intervalo pode ser alterado enviando um SMS para a UTR, o número telefônico

correspondente ao chip usado no Modem de cada UTR deve ser cadastrado no banco de

dados do Módulo Servidor (o envio do SMS pode ser inserido ao Módulo Servidor, mas

atualmente esta função não está disponível). Após esse intervalo é feita uma requisição

Modbus de leitura dos registradores desejados do dispositivo monitorado, os valores

desses registradores são armazenados no Módulo Embarcado, além disso, é

acrescentada uma variável que indica o número da mensagem e a marca de tempo em

que a leitura foi realizada.

As variáveis são enviadas em uma única mensagem para o Módulo Servidor,

através do Modem GSM, o qual armazena no banco de dados os valores dos

registradores recebidos e envia uma resposta ao Módulo Embarcado contendo o número

Page 37: Pic Com Comunicacao Wireless

37

da mensagem recebida. Este último compara o valor recebido com o número da

mensagem enviada, caso sejam iguais, ele considera o dado enviado e aguarda o tempo

configurado para uma nova leitura. Caso não seja igual ou o Módulo Embarcado não

receba nenhuma confirmação em vinte segundos, é realizada uma nova tentativa de

envio, até o limite de cinco tentativas. Se após as cinco tentativas, o Módulo Embarcado

não receber nenhuma confirmação, o mesmo aguarda o intervalo para uma nova leitura,

realiza esta leitura e a armazena em uma nova mensagem. Então, envia novamente a

mensagem anterior, caso obtenha sucesso, envia imediatamente a última leitura. O

Módulo Embarcado possui um buffer de até 100 mensagens.

O projeto proposto pode ser adaptado para atender diversas aplicações comerciais e

industriais. A seguir são enumerados os principais tipos de aplicações encontradas:

1. Monitoração de tubulações de gás natural (temperatura, pressão, volume e etc);

2. Sistemas de medição de água/luz;

3. Substituir sistemas que utilizam como método de transmissão rádios e que

apresentam baixa taxa de entrega.

Para o projeto em questão, foi adotado como exemplo um sistema de

monitoração de tubulações de gás natural, com o intuito de ser realizada a cobrança

mensal do volume consumido por um determinado cliente.

As principais vantagens deste projeto são:

• A redução do custo, pois torna desnecessário funcionários dedicados a

realizarem as leituras dos dispositivos;

• Uma maior segurança, já que muitas aplicações industriais oferecem riscos à

saúde do ser humano;

• Grande comodidade, as leituras são realizadas automaticamente e já são

armazenadas em banco de dados, aonde é possível gerar relatórios customizados

de acordo com a necessidade;

• Flexibilidade, pois o horário da leitura dos dispositivos pode ser facilmente

alterado de acordo com a necessidade;

• Possui uma instalação relativamente simples;

• Utiliza tecnologias que apresentam grande disponibilidade, como o protocolo

Modbus (padrão de fato na área industrial [21]) e o Modem GSM, que apresenta

uma grande área de cobertura [22].

Page 38: Pic Com Comunicacao Wireless

38

A seguir serão descritos em mais detalhes os principais componentes dos

Módulos da UTR proposta.

4.2. Módulo Embarcado

O Módulo Embarcado tem como objetivo coletar as informações do dispositivo,

armazená-las temporariamente e enviá-las para o servidor. Além disso, ele é capaz de

reconhecer mensagens SMS recebidas pelo Modem e dessa forma é feita a configuração

do intervalo de tempo entre as leituras do dispositivo. Outras configurações podem ser

implementadas dessa mesma forma. Ele é composto pelo circuito eletrônico e pelo

Modem GSM. Os principais componentes do circuito eletrônico são:

• Microcontrolador PIC18F2525;

• Relógio de tempo real - DS1307;

• Conversor TTL/RS232 - MAX232;

• Regulador de tensão – 7805.

O esquema do circuito eletrônico pode ser visualizado na Figura 4.1. O protótipo

desse circuito pode ser observado na Figura 4.2, na qual apresenta o Módulo Embarcado

por completo (circuito eletrônico e Modem GSM).

Figura 4.1 – Esquema do circuito eletrônico

Page 39: Pic Com Comunicacao Wireless

39

Figura 4.2 – Foto do Módulo Embarcado

O circuito eletrônico foi projetado para que fosse alimentado por uma tensão

contínua de 12V, quer seja advinda de um transformador de tensão alternada para

contínua, como também por uma bateria. Como o projeto é voltado para aplicações

industriais, é muito importante maximizar o tempo de funcionamento do circuito

quando apenas uma bateria é usada para alimentá-lo. Nesse sentido, o circuito

apresentado na Figura 4.1 pode consumir apenas 0,72mA, caso o MAX232 seja

substituído pelo MAX222. Isso resulta em mais de 2 anos e 6 meses de funcionamento

no caso de uso de uma bateria de 18Ah. Os consumos individuais são os seguintes:

• PIC18F2525 em modo de operação 11µA [1];

• DS1307 em modo standby 200µA [2];

• MAX222 em modo shutdown 2µA [4];

• Modem GSM g24 em modo idle 500µA [5].

A alimentação de 12V é conectada à entrada do CI7805, pino 1, o qual gera uma

tensão de 5V em seu terminal de saída, o qual é utilizado para alimentar os demais

componentes do circuito eletrônico. Foi usado um capacitor cerâmico de 330nF na

entrada e um capacitor eletrolítico de 100µF na saída. O CI7805 gera uma tensão de

saída regulada [20], ou seja, ela fica estável em 5V, independente de oscilações na

Page 40: Pic Com Comunicacao Wireless

40

tensão de entrada. A escolha de sua utilização é óbvia, pois assim obtém-se uma tensão

para alimentar o restante do circuito bastante estável e com o nível lógico no padrão

TTL.

O principal componente do circuito eletrônico é o microcontrolador

PIC18F2525, o qual tem como função gerenciar todas as atividades do Módulo

Embarcado. Todos os dispositivos do circuito são conectados a ele, como pode ser

observado na Figura 4.1. Ele utiliza um cristal de 24MHz, logo, é capaz de realizar 6

milhões de instruções por segundo, de acordo explicações dadas em seções anteriores. O

pino de reset está atualmente desativado.

O DS1307 é um CI que funciona como um relógio de tempo real, maiores

explicações já foram fornecidas em seções anteriores. A sua ligação ao PIC18F2525

pode ser observada na Figura 4.3. Seus pinos SCL e SDA são conectados aos

respectivos pinos do PIC. Como o DS1307 utiliza o barramento I2C, são necessários

resistores de pullup para o correto funcionamento da ligação [2]. Os resistores usados

foram de 4,7 kΩ. O DS1307 é configurado pelo PIC para emitir um sinal de saída (pino

SOUT) equivalente a um trem de pulsos de freqüência igual a 1Hz. Esse pino é

conectado na porta RB2 do PIC, de forma que seja possível a utilização da interrupção

externa do microcontrolador a cada segundo. Como bateria do DS1307 está sendo

utilizado 2 pilhas alcalinas de 1,5V cada, conectadas em série, resultando nos 3V

necessários para um correto funcionamento do RTC. Nos pinos do clock externo está

conectado um cristal de 32,768kHz, de acordo com o especificado em [2].

Figura 4.3 – Ligação entre DS1307 e o PIC18F2525

Page 41: Pic Com Comunicacao Wireless

41

No circuito eletrônico existem três conversores MAX232. As suas conexões de

capacitores e alimentação são como sugeridas em [3]. Um dos conversores é utilizado

para a comunicação com o Modem GSM, aonde o PIC envia comandos para o Modem e

recebe as respostas, esse MAX232 está conectado à USART de hardware do

PIC18F2525 (pinos RC6 e RC7), pois se faz necessária a utilização da interrupção

serial. Outro MAX232 é utilizado para a comunicação com o dispositivo que deseja-se

monitorar, no projeto em questão, um dispositivo industrial que oferece comunicação

através do protocolo ModBus via RS232. Ele é conectado ao PIC nas portas RB0

(recepção) e RB3 (transmissão), assim, é possível utilizar a interrupção externa 0 para o

tratamento das mensagens recebidas. O último MAX232 é utilizado apenas para

imprimir dados de depuração para qualquer dispositivo que possa receber uma conexão

RS232. Nos inúmeros testes realizados ao longo do projeto, foi utilizado um PC para

receber esses dados, tornando possível uma fácil depuração do funcionamento do

projeto, viabilizando possíveis soluções de defeitos.

4.2.1. Algoritmo do microcontrolador PIC18F2525

Como dito anteriormente, o microcontrolador PIC 18F2525 é o principal

componente do circuito eletrônico, ele é responsável pela execução de todas as ações do

Módulo Embarcado, aonde é realizada a comunicação com o dispositivo monitorado e o

Modem GSM. Portanto, para uma completa compreensão do funcionamento do Módulo

Embarcado é necessário conhecer em detalhes o algoritmo executado pelo PIC18F2525.

A seguir será explicado todo esse algoritmo, utilizando fluxogramas para facilitar o

entendimento.

O fluxograma da função principal é mostrado na Figura 4.4. O cabeçalho contém

a definição do modelo do PIC utilizado, os drivers utilizados ao longo do código

(modbus.c e ds1307.c), a freqüência do cristal escolhido (24MHz), configurações do

driver Modbus (mestre ou escravo, endereço e etc) e a configuração das interfaces

RS232 utilizadas. Nesse último, é utilizado o conceito de streams, é definida uma

stream para cada configuração e quando se deseja utilizar àquela interface, basta se

referir à stream configurada. São configuradas 3 interfaces RS232, todas com

velocidade igual a 9600bps, 8 bits de dados, sem paridade e 1 stop bit. A interface

padrão do PIC18F2525, ou seja, a implementada via hardware, é dedicado à conexão

com o Modem GSM, pois ela possui um buffer interno de 3 caracteres, indispensáveis

no tratamento das mensagens recebidas pelo Modem. Já nas outras duas interfaces,

Page 42: Pic Com Comunicacao Wireless

42

dedicadas à conexão Modbus com o dispositivo e ao envio de mensagens de depuração

para um PC, são utilizadas interfaces via software, aonde o compilador simula o

funcionamento de uma USART, funcionando perfeitamente, apenas não possuindo o

buffer de 3 caracteres.

Figura 4.4 – Fluxograma da função main()

Page 43: Pic Com Comunicacao Wireless

43

O programa possui um vetor de 100 posições para cada registrador de memória

lido do dispositivo monitorado (no caso do projeto atual, são 5 vetores, que armazenam

pressão, temperatura, volume bruto, volume corrigido e alarmes). Além delas, algumas

variáveis valem a pena serem explicadas, são elas:

• tempo_timeout Armazena o tempo em que é considerado um timeout, ou seja,

a operação alcançou o tempo limite de espera.

• _tempo Armazena o intervalo de tempo entre as leituras do dispositivo

monitorado. Ela é do tipo TEMPO, uma enumeração definida no código.

• estado Armazena o estado atual da execução do código. Ela é importante para

não realizar comparações desnecessárias ao longo do código. Ela é do tipo

ESTADO_PROGRAMA, uma enumeração definida no código.

• flag_rtc Indica que ocorreu uma interrupção externa 2, ou seja, a saída do

DS1307 completou um novo período e como essa saída está configurada para ter

uma freqüência de 1Hz, significa que foi transcorrido 1 segundo. Ela é

importante para a definição do momento em que uma nova leitura deve ocorrer.

A variável é do tipo int1, ou seja, possui apenas 1 bit.

• flag_tempo Indica que foi atingido o intervalo configurado entre as leituras

do dispositivo foi alcançado. Então, são executados as ações necessárias para

realização do objetivo do código. Ela é do tipo int1.

• flag_ack_udp Indica que foi recebida uma mensagem UDP pelo Modem e

que essa mensagem se refere à resposta do Módulo Servidor da última

mensagem enviada pelo Módulo Embarcado. Essa variável é do tipo int1.

• flag_ack_sms Indica que foi iniciado o recebimento de uma mensagem SMS.

Ela é ativada a partir do recebimento do texto “+CMT:”, que de acordo com as

seções anteriores, significa que a próxima linha recebida pelo Modem GSM

apresenta o conteúdo da mensagem SMS. Portanto, essa variável é importante

para alertar ao programa que está sendo executado no microcontrolador, que a

próxima linha deve ser interpretada como advinda de uma mensagem SMS. Esse

alerta é indispensável, pois o único meio do Módulo Servidor iniciar uma

comunicação com o Módulo Embarcado é através de SMS.

• flag_timeout Indica que o tempo limite de espera para a ação executada foi

alcançado. Ela é do tipo int1.

Page 44: Pic Com Comunicacao Wireless

44

• flag_conectado Indica que o Modem GSM se encontra conectado à internet

através de uma conexão PPP com a operadora do cartão SIM inserido.

A configuração do Modem é realizada através de alguns comandos necessários

para o correto funcionamento do mesmo. Eles definem que não estão sendo usados

pinos de controle na comunicação serial, que as mensagens SMS devem ser

encaminhadas para a saída RS232, garante que não existe nenhuma conexão à internet e

desabilita o eco dos comandos enviados para o Modem. O timer0 é configurado de

modo que possa monitorar corretamente o tempo passado desde sua habilitação até o

momento da interrupção.

Figura 4.5 – Fluxograma da interrupção da USART

A Figura 4.5 ilustra o fluxograma da interrupção da USART, ou seja, essa

função é executada toda vez que algum caracter for recebido na interface serial padrão.

Como esta interface está conectada ao Modem e o mesmo envia todos os dados

recebidos por sua porta serial, bem como as respostas aos comandos executados, a

função ilustrada na Figura 4.5 permite o controle sobre tudo o que ocorre referente ao

Modem GSM. Ela basicamente armazena todos os caracteres recebidos no vetor msg,

até que um ‘\n’ (código correspondente ao ENTER) seja encontrado. Quando isso

ocorre, é chamada a função “processamento()”¸ que irá analisar o conteúdo do vetor e,

de acordo com o estado do programa, irá realizar determinadas tarefas, o

funcionamento desta função é demonstrado no fluxograma da Figura 4.7. Além de

Page 45: Pic Com Comunicacao Wireless

45

executar a função “processamento()”, é definido que, no momento que chegar o

próximo caracter, o vetor msg será reiniciado e o novo caracter será inserido no início

do vetor.

A Figura 4.6 apresenta o fluxograma da função “trata_rtc()”. Ela é responsável

por obter os dados do CI DS1307, através de seu driver específico, que fornece a data e

hora com uma precisão de tempo real. Com isso, é possível checar se o intervalo de

tempo configurado na variável _tempo foi alcançado. Em caso positivo, a flag_tempo é

ativada.

Figura 4.6 – Fluxograma da função “trata_rtc()”

A função “captura_dado()” pode ser visualizada no fluxograma da Figura 4.8.

Ela é responsável por obter os dados do dispositivo monitorado, enviando comandos

Modbus para o mesmo, e criar uma mensagem contendo os valores lidos do dispositivo,

o número da mensagem (para ser possível realizar o reconhecimento do envio) e a

marca da hora da leitura. Essa função é chamada pela função “main()”. Outra função

invocada pelo “main()” é a “conecta()”, que é ilustrada na Figura 4.9. Ela é

responsável por realizar a conexão do Modem GSM à internet através da operadora do

cartão SIM inserido, apenas após essa conexão é possível enviar dados para o Módulo

Servidor. A função “conecta()” coloca o estado do programa para ‘MIPCALL’, o que

faz com que a função “processamento()” procure por respostas do tipo

‘+MIPCALL:<endereço ip>’, então envia o comando de conexão para o Modem e

ativa a interrupção de timer0, para que possa ser monitorado o timeout. A função fica

bloqueada, até que o timeout seja alcançado ou a função “processamento()” identifique

que foi realizada uma conexão, o que ativa a flag_conectado. Caso não ocorra a

Page 46: Pic Com Comunicacao Wireless

46

conexão, será realizada uma nova tentativa, até o limite de 10, quando a leitura

armazenada não será enviada até o próximo intervalo de tempo entre as leituras, e então

as duas leituras tentarão ser enviadas.

A função encarregada de realizar a comunicação do Módulo Embarcado com o

Módulo Servidor é a “envia()”, que pode ser visualizada no fluxograma da Figura 4.10.

Ela utiliza conceitos semelhantes à função “conecta()”. Durante a sua execução ela

realiza chamadas à função “envia_dado()”, que pode ser acompanhada pelo

fluxograma da Figura 4.11. Ao final da função “envia()” é fechada a conexão com a

operadora. Assim, um novo ciclo pode ser reiniciado e todo o processo descrito é

realizado novamente.

Figura 4.7 – Fluxograma da função “processamento()”

Page 47: Pic Com Comunicacao Wireless

47

Figura 4.8 – Fluxograma da função “captura_dados()”

Figura 4.9 – Fluxograma da função “conecta()”

Page 48: Pic Com Comunicacao Wireless

48

Figura 4.10 – Fluxograma da função “envia()”

Page 49: Pic Com Comunicacao Wireless

49

Figura 4.11 – Fluxograma da função “envia_dado()”

4.3. Módulo Servidor

O Módulo Servidor tem como função receber os dados enviados pelo Módulo

Embarcado e armazená-los em um banco de dados, de forma que seja possível a

visualização dessas informações. Além disso, ele permite que N clientes se conectem ao

servidor e obtenham acesso ao banco de dados. Para tanto, um cliente deve fornecer um

login e uma senha, que serão usados para se conectar à base de dados, permitindo

apenas que clientes autorizados pelo administrador do sistema obtenham acesso ao

software servidor e sua base de dados (o administrador deve registrar manualmente

todos os clientes que poderão obter acesso).

O software cliente pode ser desenvolvido em qualquer linguagem e sofrer

quaisquer modificações ao longo do tempo, desde que mantenha o protocolo de

comunicação com o servidor. Assim, existe uma grande flexibilidade na forma em que

os dados podem ser visualizados, o que resulta em uma boa característica do projeto

proposto. Nas próximas seções, será citado o software cliente exemplo desenvolvido

utilizando a suíte gráfica QT.

O Módulo Servidor é composto por um computador (com uma configuração

simples) sempre conectado à internet, com um número IP real e fixo e

preferencialmente conectado a qualquer firewall que permita tráfego apenas nas portas

específicas do projeto. O outro componente do Módulo Servidor é um software,

referenciado ao longo do texto como software servidor. Ele possui três threads de

execução [19]. O seu funcionamento será descrito a seguir.

Page 50: Pic Com Comunicacao Wireless

50

O software servidor foi construído utilizando apenas ferramentas livres, aonde

os principais componentes são o compilador GNU GCC e o Sistema Gerenciador de

Banco de Bados – SGBD PostgreSQL. Essa característica, além de oferecer um

baixíssimo custo de implantação, torna o sistema de fácil manutenção, pois ambos os

componentes possuem fortes comunidades de suporte.

A conexão entre o Módulo Embarcado e o Módulo Servidor é efetuada pelo

protocolo UDP, embora pareça mais adequado o conceito de transmissão confiável do

protocolo TCP [18]. Mas não foi possível a utilização do TCP, pois foram encontrados

problemas com o Modem GSM. Quando ocorria uma falha de transmissão, o Modem

GSM não era capaz de fechar a conexão já aberta e o socket se tornava inoperante.

Como o Modem GSM possui apenas quatro sockets [5], rapidamente o Módulo

Embarcado não conseguia mais realizar nenhuma conexão com o Módulo Servidor.

Então, foi implementado um protocolo de confirmação de recebimento de mensagens,

aonde o Módulo Embarcado envia o número da mensagem, junto com as informações

do dispositivo. O Módulo Servidor, ao receber uma mensagem, envia uma resposta ao

Módulo Embarcado contendo apenas o número da mensagem recebida. O Módulo

Embarcado recebe a mensagem e compara o número recebido com o número da

mensagem enviada, caso sejam iguais, considera a mensagem como enviada e apaga a

mesma de seu buffer. Caso a mensagem de confirmação não chegue até o Módulo

Embarcado, o mesmo enviará a mesma mensagem novamente, até que a confirmação

seja recebida ou um número máximo de tentativas seja alcançado. Para evitar dados

duplicados na base de dados, o software servidor está programado para descartar as

mensagens que já foram recebidas.

O funcionamento do software servidor está descrito nos fluxogramas a seguir,

nos fluxogramas estão ocultados os procedimentos de checagem de erros e validações

dos dados, com o intuito de simplificá-los. A thread main() está ilustrada na Figura

4.12, ela executa o servidor que irá receber as conexões do Módulo Embarcado e

armazenar os dados no banco de dados. A Figura 4.13 mostra o funcionamento da

thread servidor(), ela recebe conexões dos softwares clientes e realiza a sua

autenticação junto ao banco de dados, caso obtenha sucesso, inicia uma thread cliente()

para executar as ações daquele cliente e passa a aguardar novas conexões.

A thread cliente() está indicada na Figura 4.14, ela é responsável por realizar a

comunicação entre o software servidor e o software cliente. Com o intuito de permitir

uma grande compatibilidade com os clientes futuramente desenvolvidos, o protocolo de

Page 51: Pic Com Comunicacao Wireless

51

comunicação entre o software servidor e o software cliente é bastante simples. O

software servidor está programado para interpretar apenas comandos SQL e, ao recebê-

los, tenta executá-los e retorna a resposta ao software cliente, cabendo ao mesmo todo o

processo de tratamento dos dados. Assim, é possível obter uma grande flexibilização

dos clientes.

Figura 4.12 – Fluxograma da thread main()

Page 52: Pic Com Comunicacao Wireless

52

Figura 4.13 – Fluxograma da thread servidor()

Figura 4.14 – Fluxograma da thread cliente()

Page 53: Pic Com Comunicacao Wireless

53

4.3.1. Cliente exemplo

Como dito na seção anterior, o software cliente pode sofrer modificações a

qualquer momento e essa é uma característica desejada do projeto. Portanto, não será

dada ênfase ao funcionamento do software cliente, ele apenas obedece ao protocolo de

comunicação explicitado na Figura 4.13 e Figura 4.14. Ele foi desenvolvido apenas para

comprovar a funcionalidade do Módulo Embarcado. Foi utilizada a suíte gráfica QT

para o seu desenvolvimento.

A tela de login do software cliente é apresentada na Figura 4.15. A Figura 4.16

ilustra a sua tela principal, ela possui um menu principal e um menu de ações contendo

dois itens, apenas “Ver Dados da UTR” está disponível atualmente. Além disso, ela

apresenta uma tabela contendo todas as UTRs cadastradas e algumas informações que

podem ser úteis na identificação das mesmas. Clicando sobre uma UTR e pressionando

o botão “Ver Dados da UTR” a tela da Figura 4.17. Nessa tela é possível visualizar os

dados armazenados no banco de dados a partir de dois filtros, o nome da UTR e a

data/hora da leitura. Essa última opção é permitido escolher se deseja visualizar os

dados que contenham data/hora maiores, iguais ou menores que o valor fornecido.

Figura 4.15 – Tela de login do software cliente-exemplo

Page 54: Pic Com Comunicacao Wireless

54

Figura 4.16 – Tela principal do software cliente-exemplo

Figura 4.17 – Tela da ação “Ver Dados da UTR”

Page 55: Pic Com Comunicacao Wireless

55

5. Conclusão

Ao longo do trabalho, foi apresentado um processo de automação simples e

prático de um tipo de sistema bastante comum, mas que em muitos casos ainda

apresenta um funcionamento bastante artesanal, os sistemas de medição fiscal. É

comum encontrarmos sistemas em que é necessário que um funcionário vá até o

equipamento medidor para coletar suas informações. Essa situação se torna mais grave,

quando se tratam de sistemas que possuem equipamentos (clientes) muito distantes uns

dos outros.

O trabalho apresenta um sistema de telemetria remota, que permite que um

Módulo Embarcado colete as informações de um dispositivo e realize o envio para um

Módulo Servidor, o qual armazena todas essas informações em um banco de dados,

permitindo que programas clientes possam visualizá-los.

A implementação desse projeto apresenta algumas vantagens, que podem ser

resumidas em:

• Garantia de que a medição irá ser realizada, independente da necessidade de um

funcionário se deslocar até o ambiente onde o dispositivo se localiza. Essa

vantagem evita possíveis atos de má fé por parte do funcionário, como não se

deslocar até o local, ou anotar medições que não condizem com a realidade;

• Permite que os dispositivos medidos sejam inseridos em locais de acesso mais

restrito, impedindo possíveis alterações no mesmo por parte do cliente;

• Pode apresentar maiores detalhes para o cliente, pois as medições podem ser

realizadas em vários intervalos de tempo pré-definidos. Dessa forma é possível

demonstrar qual consumo diário, ou por período do dia, resultando em uma

maior clareza para o consumidor;

• A empresa passa a possuir um histórico dos clientes, pois todas as informações

vão direto para um banco de dados, o qual permite um grande volume de dados;

Embora o trabalho descrito esteja totalmente funcional, o mesmo ainda necessita

da implementação de algumas funcionalidades e da definição de alguns parâmetros,

bem como a realização dos testes de campo. Na que diz respeito às funcionalidades, é

necessário a integração do envio de SMS ao Módulo Servidor, que pode ser realizada

utilizando um componente (de desenvolvimento próprio ou de terceiros) de software

que realize o acesso aos sites das operadoras de telefonia celular e efetue o envio

gratuito da mensagem, com formatos de texto padrão e o número telefônico de acordo

Page 56: Pic Com Comunicacao Wireless

56

com a UTR selecionada. Outra opção seria o uso de um servidor externo de SMS, o

qual cobraria uma taxa (cerca de R$ 0,15) por cada mensagem enviada, dessa forma, o

envio da SMS poderia ser feito de forma transparente ao usuário. Outra funcionalidade

pendente é a realização do ajuste do relógio de cada Módulo Embarcado, o qual teria

que ser efetuado localmente.

No âmbito das definições, é necessário medir com certo grau de precisão o

consumo de energia total do circuito, em diversos tipos de operação. Apenas com os

dados dessas medições é possível definir qual o tipo de alimentação do circuito

eletrônico, ou seja, se é necessário que o circuito seja alimentado por alguma rede

elétrica ou se apenas baterias de alta durabilidade suportam o funcionamento do circuito

por um tempo economicamente viável.

São necessários testes de campo para confirmar a disponibilidade e o

comportamento da rede GPRS nos locais a serem instalados os Módulos Embarcados.

Além disso, deve-se realizar o teste global do funcionamento do sistema.

Além das atividades a serem realizadas antes de tornar o sistema totalmente

preparado para o funcionamento no campo, existem melhorias a serem feitas no projeto

que podem resultar em uma maior qualidade do mesmo. Pode ser aumentado o número

de ações realizadas pelo Módulo Embarcado a partir de comandos do Módulo Servidor,

realizados através de mensagens SMS, como por exemplo, a realização e o envio

imediato de uma nova leitura. Outra modificação seria a adoção de algum protocolo de

segurança da Internet para a conexão entre os Módulos, ou a utilização de criptografia

de dados.

Page 57: Pic Com Comunicacao Wireless

57

6. Referências

[1] Microchip. Manual do PIC18F2525. Disponível em:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2046.

Acesso em: 20/06/2009

[2] Maxim. Manual do DS1307. Disponível em: http://www.maxim-

ic.com/quick_view2.cfm/qv_pk/2688. Acesso em: 20/06/2009

[3] Texas Instruments. Manual do MAX232. Disponível em:

http://focus.ti.com/docs/prod/folders/print/max232.html. Acesso em: 20/06/2009

[4] Texas Instruments. Manual do MAX222. Disponível em:

http://focus.ti.com/lit/ds/slls590d/slls590d.pdf. Acesso em: 20/06/2009

[5] Informat Technology. Manual do Modem GSM g20/g24. Disponível em:

http://www.grupoinformat.com.br/downloads.php?divisao=wireless. Acesso em:

20/06/2009

[6] Motorola. Motorola G24: Module Hardware Description. Disponível em:

http://developer.motorola.com/products/wirelessmodules/g24/. Acesso em: 20/06/2009

[7] Motorola. Motorola G24: AT Commands Reference Manual. Disponível em:

http://developer.motorola.com/products/wirelessmodules/g24/. Acesso em: 20/06/2009

[8] Bredendiek, Jörg. PIC-Brenner 8 Rev 5. Disponível em:

http://www.sprut.de/electronic/pic/projekte/brenner8/index.htm. Acesso em: 21/06/2009

[9] Custom Computer Services, Inc. http://www.ccsinfo.com. Acesso em: 21/06/2009

[10] LibModbus. http://pes.free.fr. Acesso em: 21/06/2009

[11] Comunidade brasileira de PostgreSQL. http://www.postgresql.org.br. Acesso em:

21/06/2009

[12] PostgreSQL 8.3.1 Documentation. Disponível em:

http://www.postgresql.org/docs/. Acesso em: 21/06/2009

[13] 1977 Data Calatog Micro Electronics. General Instrument Corporation. Disponível

em: http://www.rhoent.com/pic16xx.pdf. Acesso em: 22/06/2009

[14] Microchip. PICmicro – Mid-Range MCU Family: Reference Manual.

Disponível em:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1956.

Acesso em: 22/06/2009

Page 58: Pic Com Comunicacao Wireless

58

[15] Filho, R. P. Protocolo de Comunicação I2C. Artigo disponível em:

http://www2.eletronica.org/artigos/eletronica-digital/protocolo-de-comunicacao-i2c/.

Acesso em: 22/06/2009

[16] Sverzut, J. U. Redes GSM, GPRS, EDGE e UMTS – Evolução a caminho da

quarta geração. 2ª Edição. São Paulo: Editora Érica 2008.

[17] Informat Technology. http://www.informattechnology.com.br. Acesso em:

20/06/2009

[18] Tanenbaum, A. S. Redes de Computadores. 4ª Edição. Rio de Janeiro: Editora

Campus 2003

[19] Tanenbaum, A. S. Sistemas Operacionais Modernos. 2ª Edição. São Paulo:

Prentice Hall 2003

[20] Texas Instruments. Manual do µA7805. Disponível em:

http://focus.ti.com/docs/prod/folders/print/ua7805.html. Acesso em: 23/06/2009

[21] Melo, W. Notas de aula – Redes industriais: Aula 4. Disponível em:

http://www.cefetrn.br/~walmy/RI_A4.pdf. Acesso em 23/06/2009

[22] GSM World. Coverage Maps. Disponível em:

http://www.gsmworld.com/roaming/gsminfo/cou_br.shtml. Acesso em: 23/06/2009