Escolar Documentos
Profissional Documentos
Cultura Documentos
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA DA COMPUTAÇÃO E AUTOMAÇÃO
DESENVOLVIMENTO DE UM SISTEMA
DE TELEMETRIA REMOTA
DESENVOLVIMENTO DE UM SISTEMA
DE TELEMETRIA REMOTA
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.
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.
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
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
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
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
8
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.
9
2. Fundamentação teórica
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.
10
Assim, a memória RAM é usualmente chamada como o registrador de arquivos ou
apenas os registradores.
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.
11
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.
12
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)
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;
13
• 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 RW ;
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
14
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.
15
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:
16
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.
Transcodificador (XCDR)
17
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.
18
• Serviços suplementares associados ao assinante;
• Estado do assinante;
• Chave de autenticação.
19
• 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
20
estudos para uma nova expansão, resultando em uma 4ª geração. A Figura 2.3 apresenta
essa evolução.
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).
21
base (BTS)
Controlador de estação Atualização de software e instalação de hardware novo,
base (BSC) 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 Atualização do software para fornecer as funções oferecidas
e todos elementos de pelo GPRS
base de dados
22
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.
23
• 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.
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).
24
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;
25
• 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.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;
26
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 -40 ºC a +125ºC
funcionamento
Máxima corrente de saída no 300mA
pino de terra (VSS)
Máxima corrente de entrada no 250mA
pino de alimentação (VDD)
Máxima corrente fornecida para 25mA
qualquer pino de E/S
Máxima corrente requerida para 25mA
qualquer pino de E/S
Máxima corrente fornecida para 200mA
todos os pinos de E/S
Máxima corrente requerida para 200mA
todos os pinos de E/S
27
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’.
28
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>, Indica o recebimento de uma mensagem SMS. O
<CR><LF><texto> 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>, Abre uma conexão no socket ‘sock’, utilizando a porta de
<porta ori>,<ip>,<porta origem ‘porta ori’, com o servidor de endereço igual a ‘ip’,
dest>,<prot> pela porta de destino ‘porta dest’ e utilizando o protocolo
especificado por ‘prot’, aonde 0 significa TCP e 1 significa
UDP.
AT+MIPSEND=<sock>, Coloca os dados contidos no parâmetro ‘dado’ no buffer de
<dado> 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
29
socket ‘sock’
AT+MIPCLOSE=<sock> Finaliza a conexão do socket ‘sock’, mas não desconecta o
Modem da APN.
+MIPRUDP: <ip ori>, Informa que foi recebida uma mensagem UDP, do
<porta ori>, <sock>, endereço ‘ip ori’, pela porta ‘porta ori’ e com o conteúdo
<dado> igual a ‘dado’.
30
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.
31
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.
32
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.
33
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;
34
• 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’;
35
• 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
36
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].
37
A seguir serão descritos em mais detalhes os principais componentes dos
Módulos da UTR proposta.
38
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
39
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].
40
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.
41
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.
42
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.
43
• 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.
44
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.
45
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.
46
Figura 4.8 – Fluxograma da função “captura_dados()”
47
Figura 4.10 – Fluxograma da função “envia()”
48
Figura 4.11 – Fluxograma da função “envia_dado()”
49
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
50
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.
51
Figura 4.13 – Fluxograma da thread servidor()
52
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.
53
Figura 4.16 – Tela principal do software cliente-exemplo
54
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
55
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.
56
6. Referências
57
[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
58