Universidade Federal de Santa Catarina Bacharelado em Sistemas de Informação Disciplina de Introdução a Projetos Aluno : Nicolás Curti Chiribao – 0213836-0 Orientador: Prof. João Candido Dovicci Dispositivos móveis como servidores de informação Estudo de viabilidade para a criação de dispositivos móveis conectados como provedores de serviços e Informação. Florianópolis, julho de 2006 Introdução: Sistemas usando dispositivos móveis celulares já são uma realidade presente no nosso 1/14 dia-a-dia e já são usados há tempos em aplicações de telemetria, controle, automação e monitoramento de equipamentos e veículos. Apesar de não ser uma idéia nova no meio tecnologico, o tema não é tão popular quanto parece, e os conhecimentos na área muitas vezes não são difundidos no meio academico, que muitas vezes confunde o que realmente existe e é possível com idéias de ficção cientifica. Durante o periodo academico, por muitas vezes houveram duvidas entre os colegas sobre que tipo de tecnologia nesta área seria real e viável, tanto tecnicamente como financeiramente. Monitorar a posição de uma pessoa por triangulação de antenas no celular? Controlar o que acontece na nossa casa através de um link pela internet? E a automação de uma fabrica inteira, seria possível através de um tecnico com um celular em mãos? E quando o dispositivo a ser controlado não tem uma posição fixa, ou não tem contato com um ponto de rede com acesso a internet? Estas são algumas perguntas que nos levaram a pensar neste trabalho e desbravar um pouco mais deste mundo da comunicação remota por celular, e sua aplicação em sistemas, não só industriais, mas naqueles que temos uso e acesso no nosso cotidiano. Com o barateamento destas tecnologias, a Experimentação Remota se torna cada dia mais proxima de ser não só tecnica, mas financeiramente viável em muitas aplicações. Mas para que isto saia da nossa imaginação e passe para o papel, e em seguida para os prototipos e uso, precisamos antes acabar com alguns mitos e ver que na realidade, a programação destes dispositivos móveis está longe de ter uma complexidade intangivel, mas ao mesmo tempo, não é tão fácil quanto parece. O tema Dispositivos Móveis como Servidores de Informação tem a intenção de mostrar que é possível um dispositivo prover informações em tempo real a um usuario, não importando onde ambos estejam. Não temos mais por que estar amarrados a fios e cabos, nem a tecnologias carissimas para ter mobilidade. Mostrar que isso é possível, e como podemos faze-lo, é a nossa busca neste trabalho.Objetivo do trabalho O objetivo deste trabalho é fazer um estudo da tecnologia J2ME e dos frameworks de programação que existem hoje que permitam fazer com que dispositivos móveis possam se tornar fornecedores de informação, e não apenas consumidores. Pretendemos ao final 2/14 deste propor uma arquitetura e apresentar um conjunto de tecnologias que torne viável esta idéia. Objetivos Específicos – Estudar tecnologia J2ME, suas vantagens e limitações; – Estudar frameworks de comunicação; – Estudar protocolos de comunicação; – Propor uma arquitetura para acesso a dados em dispositivos móveis. Escopo O escopo do trabalho será o estudo da tecnologia J2ME, incluindo aí as especificações da criadora da tecnologia, Sun Microsystems. Também será estudado a arquitetura e especificações de frameworks existentes hoje com o objetivo de facilitar a comunicação entre dispositivos e dos protocolos envolvidos nestas. Como o trabalho envolverá a aplicação prática dos conceitos estudados, também será necessário o estudo das especificações de hardware compatível com a idéia, o que envolve módulos celulares que implementam J2ME e são capazes de ser programados e de ter embutidos neles os programas e frameworks descritos anteriormente. Para que o trabalho tenha uma aplicação prática, estudaremos também as necessidades de algumas empresas por esta tecnologia, através de estudos de caso, estudando as vantagens da aplicação da tecnologia celular sobre as tecnologias usadas atualmente. Tecnologia J2ME A origem da plataforma java surgiu em 1995, e era destinada a tornar real a idéia de se escrever os códigos de programa uma vez, e poder rodá-los em qualque rmaquina ou dispositivo que tivesse implementado em si a plataforma da maquina virtual Java. Dois anos depois de seu lançamento, o Java sofreu um Upgrade, junto com o lançamento 3/14 da sua versão 1.2. Foi criado o conceito de J2SE(Java 2 Standard Edition) para o pacote java que seria executado em computadores pessoais, e incluidos na familia Java 2 o J2EE(Java 2 Enterprise Edition), destinado a rodar aplicativos corporativos e J2ME(Java 2 Micro Edition), destinado a rodar em equipamentos com pouca capacidade de memoria e processamento. Este ultimo foi o pacote mais revolucionario que foi criado, segundo algumas opiniões, pois permitiu que dispositivos que vão desde microcontroladores, celulares ou equipamentos acoplados a televisores pudessem ser programados e ter aplicativos desenvolvidos e instalados a qualquer momento, e numa linguagem cada vez mais popular e de facil aprendizado, se compararmos a linguagens tradicionais de programação destes equipamentos, como assembly, por exemplo, que tornava inviavel a ideia de que estes dispositivos rodassem qualquer outro aplicativo que não fosse aqueles que saíam da fabrica com o equipamento. A partir da criação do J2ME, finalmente podemos pensar em programação de aplicativos para equipamentos que, anteriormente, tinham seus programas intimamente ligados a seus circuitos. Foi o inicio da independencia entre software e hardware para dispositivos móveis, comparavel ao que aconteceu quando do advento dos computadores pessoais na decada de 80. Definição de CDC (Conected Device Configuration) e CLDC (Conected Limited Device Configuration) Para permitir a compatibilidade e distinção entre uma ampla variedade de dispositivos com caracteristicas difrentes de recursos disponiveis, foi criado o conceito de configurações de dispositivos para J2ME. As configurações de Dispositivos móveis são o mínimo de recursos que um desenvolvedor pode esperar de um dispositivo com o qual está trabalhando, em termos de memória, processamento, hardware, assim como bibliotecas basicas da JVM disponiveis. Os dois padrões de configuração definidos pela industria e amplamente conhecidos são o CDC e CLDC. Num FAQ sobre J2ME do site da Sun, foi encontrado uma definição geral e informal das configurações que pode dar uma idéia interessante das diferenças entre elas: "A tecnologia J2ME tem dois centros de projeto – Um para os dispositivos que você carrega na mão, e outro para aqueles que você conecta na parede." CDC – Conected Device Configuration: É uma configuração focada em dispositivos conectados à rede, como conversores de TV a cabo, navegadores de carros e PDAs. São 4/14 dispositivos que possuem todas as funcionalidades da maquina virtual java. Esta configuração especifica que os dispositivos tenham ao menos 512 Kb de memoria ROM para os programas Java, 256 Kb de memoria RAM para alocação de memoria em tempo de execução e algum tipo de conexão de rede de banda possivelmente persistente e alta. CLDC – Conected Limited Device Configuration: Esta será a configuração estudada e aprofundada neste trabalho. Ela é importante dentro do J2ME, pois representa um grupo basico de bibliotecas e caracteristicas de maquina-virtual suficientes para rodar uma aplicação java em equipamentos limitados em memoria e processamento. A maquina virtual e classes java para estes equipamentos podem ser contidos em dispositivos com até 128Kb de memoria de programa e 32Kb de memoria para alocação em tempo de execução. Para caber neste espaço reduzido de memoria, algumas funcionalidades foram cortadas da maquina virtual, como suporte a ponto flutuante, JNI ou Reflection, Thread Groups, entre outras. Note que threads são suportadas pela maquina virtual. A restrição é apenas para grupos de Threads. Uma nova versão de CLDC, conhecida como CLDC 1.1, tem menos restrições, permitindo por exemplo o suporte a calculos com ponto flutuante. Máquina Virtual K A máquina virtual K é uma implementação de referencia de maquina virtual que atende à especificação CLDC. Esta maquina virtual foi projetada paa ser a menor e mais eficiente maquina virtual capaz de rodar aplicativos Java. Seu código foi escrito em C, para possibilitar a portabilidade ao maior numero possivel de dispositivos, sendo necessárias personalizações apenas na questão de tratamento de erros e manipulação de memoria para atender a particularidades de cada maquina real. O nome K a maquina virtual se explica pelo seu objetivo de rodar em equipamentos em apenas algumas dezenas de Kbytes de memoria. MIDP – Perfil de Dispositivo de Informação Móvel Para tratar da ampla variação de recursos dos dispositivos, memso depois de classificados dentro de configurações, e também das atualizações tecnologicas que venham a ocorrer com os mesmos, a Sun lançou o conceito de Perfil na plataforma J2ME. 5/14 Um perfil pode ser entendido como uma extensão de uma configuração. O MIDP(MOBILE Information Device Profile) particularmente é uma especificação de um conjunto de bibliotecas minimas que devem ser contidas dentro de uma maquina virtual para rodar J2ME em dispositivos móveis capazes de realizar comunicação e com limitações de teclado e display, como celulares, por exemplo. A Norma que rege os requisitos minimos que um perfil deve ter para ser considerado um MIDP 1.0 é a JSR-37 (Java Specification Request) do JCP(Java Comunity Process). Segundo esta norma, um dispositivo seria considerado um MIDP, se contivesse os requisitos minimos de tela com tamanho 96x54, dispositivo de entrada de dados do tipo teclado ou touch-screen, 128Kb de memoria de programa e 32Kb de memoria de execução. Nos equipamentos e módulos de telemetria estudados neste trabalho não temos dispositivos de entrada e saída do tipo teclado e display, conforme rege a norma. Porém, estes são opcionais, havendo APIs uqe permitem que estes sejam adaptados aos módulos. Já que o principal objetivo da telemetria é fazer a interface com equipamentos de medição e atuaçao, o principal meio de entrada e saída são portas seriais, que podem trasmitir dados no padrão RS-232 ou através de entradas e saídas GPI/O(Generic Pourpouse In/Out). Esta é a principal diferença entre os equipamentos que implementam MIDP em celulares de uso comum e modulos celular usados em telemetria. Nos demais quesitos de software e hardware, ambos ostumam seguir as normas da JCP. Para contornar esta diferença no tratamento de entradas e saídas, cada fabricante oferece bibliotecas particulares para o tratamento e gerenciamento de entradas e saídas, de acordo com cada hardware. Para o armazenamento de dados nos dispositivos, a JSR dita que estes devem ser munidos de um sistema de armazenamento de dados, que é chamado RMS(Record Management System). A plataforma deve ser responsável por fazer a gerencia deste armazenamento no dispositivo, fornecendo às aplicações as bibliotecas necessárias para incluir, ler e excluir dados em um meio persistente e organizado de armazenamento de dados. A unidade de armazenamento deste sistema é uma Record(Registro), que nada mais é que um array de bytes, identificados através de um identificador único chamado 6/14 RecordId. O RMS tem uma utilidade muito grande nas aplicações de telemetria, uma vez que torna possível ter no dispositivo meios de fazer buffer de dados ou armazenamento de configurações ou parametros que possam ser usados e alterados durante a execução dos aplicativos. Telemetria O termo telemetria, usado há algum tempo apenas como forma de medição de distancias entre um observador e um ponto remoto, usando equipamentos conhecidos como Telemetros. Com o avanço tecnologico, o termo telemetria passou a ser empregado sempre que nos referimos a formas de fazer medições à distancia, pela origem grega da palavra Tele(distancia) e Metria(Medição) [Rozas2004]. Esta tecnologia de medição à distancia que já é conhecida e difundida em diversos países começa a se tornar popular no Brasil por conta da abertura de mercado que ocorreu na década de 90 e da necessidade cada vez maor das empresas em melhorar seus serviços de atendimento aos clientes, bem como ter um maior controle das operações de suas industrias de produtos e serviços prestados. Existem muitas maneiras de se implantar sistemas de telemetria no mercado, dependendo das necessidades de cada empresa. A base de todo sistema de telemetria está em tres elementos fundamentais, que são as unidades de medição e Leitura junto com as suas interfaces, conhecido também como Elemento de Medição Remota(EMR), redes de comunicação e uma central de monitoramento e gerenciamento. 7/14 A diferença entre o porte das diversas soluções de sistemas de telemetria são mais visiveis quando pensamos no elemento de comunicação usado para integrar os equipamentos à central de gerenciamento. Estas soluções de comunicação podem ir desde um cabeamento serial RS-232 ou RS-485 para ligar as maquinas a uma sala de controle até sistemas de comunicação por satélite, que permitem que seja controlado num a só central equipamentos distribuidos por qualquer parte do mundo, até mesmo onde não haja a minima condição de implementar qualquer outra comunicação. Obviamente, que a diferença do custo do investimento de uma solução local é sensivelmente menor que uma solução de telemetria global. E é para encontrar um meio termo entre estas soluções, pesando custos e beneficios, que a comunicação via celular se torna a opção mais viavel disponivel no mercado. Especialmente, após a popularização de modens de relativamente baixo custo capazes de usar tecnologia GSM/GPRS para a transmissão de dados. Além de diminuir o investimento inicial de compra de equipamentos, são diminuidos também os custos de manutenção da telemetria, tanto do ponto de vista do trafego de dados quanto da manutenção do hardware celular. Vejamos agora uma pequena comparação entre algumas maneiras de se implementar telemetria: Satélite: A transmissão via satélite permite que seja feito controle sobre equipamentos de maneira praticamente global, porém, o custo de equipamentos e manutenção desta tecnologia a torna muitas vezes proibitiva. Também temos o problema da perda de sinal, caso o equipamento de transmissão perca visibilidade com o satélite, algumas vezes por se encontrar enclausurado ou até mesmo a causa de nuvens de mau tempo. Rádio: É uma solução com custo de transmissão de dados zero, uma vez que os equipamentos são de propriedade do proprio cliente. Porém, a responsabilidade do 8/14 funcionamento e o custo de instalação e manutenção também são responsabilidade do cliente, o que exige uma equipe dedicada a esse trabalho. Tem a desvantagem também de ter pouco alcance, o que exige pontos de repetição de sinal quando temos equipamentos espalhados por uma grande área. Linha discada(PSTN): Parece ser a principio a tecnologia mais barata de implementar para telemetria, por precisar de equipamentos relativamente baratos e termos boa disponibilidade de linhas telefonicas distribuidas nas areas urbanas e industriais. Porém, os custos desta tecnologia começam a encarecer, quando levamos em conta o custo de assinatura básica de uma linha telefonica, ou de instalação, manutenção e configuração de centrais telefonicas e cabeamento. Também temos que considerar as relevantes perdas de qualidade e demora de transmissão de dados por acesso discado. Considerando também a probabilidade de queima de equipamentos caros por surto de energia que vem com os cabos de telefonia, por resultado de raios, por exemplo, implementar uma solução de telemetria com esta tecnologia pode ser um risco alto e caro a se pagar.Estudo de Caso: Implementação de Comunicação entre Epagri e estações meteorologicas Para o aspecto prático deste trabalho, foi feito um estudo de caso através de projeto de estágio do autor na EPAGRI/CIRAM – Empresa de pesquisa agropecuária e extensão rural de SC/Centro de Informações de Recursos Ambientais e de Hidrometeorologia. Neste projeto, foi projetada e desenvolvida uma arquitetura para fazer a comunicação entre a empresa e as suas estações meteorológicas, para coleta de dados como temperatura, pressão atmosferica, nivel de chuva, velocidade do vento, etc. O estágio teve como objetivo inicial o estudo e desenvolvimento de aplicações em J2ME para programação de módulo celular Siemens TC45. A aplicação estudada foi a construção de uma interface de comunicação via rede celular com as estações meteorológicas da empresa, que são distribuídas por uma extensa área do estado, muitas vezes não permitindo uma fácil coleta dos dados registrados. A comunicação destes dados via celular é uma alternativa, pela ampla cobertura da rede celular GSM pelo estado. O projeto teve inicio em setembro de 2005, e suas atividades se encerram em 20 de dezembro de 2005. 9/14 Apresentação da Empresa: EPAGRI/CIRAM – Empresa de pesquisa agropecuária e extensão rural de SC/Centro de Informações de Recursos Ambientais e de Hidrometeorologia. A Epagri/Ciram é um centro de informações associado ao governo do estado que desenvolve pesquisas nos diversos segmentos do meio ambiente de forma estrategicamente modulada e tem em sua estrutura funcional as seguintes áreas: Recursos Hídricos, Geoprocessamento, Agrometeorologia, Educação e Saneamento Agroambiental, Tecnologia da Informação e Zoneamento Agroambiental. Atividades Realizadas no projeto: -Estudo da tecnologia J2ME; Inicialmente, foi estudada toda a arquitetura do Java J2ME, suas principais funcionalidades e formas de implementação. Uma etapa importante nessa fase de estudo foi a instalação do framework e do ambiente de desenvolvimento, que demandou trabalho para sua correta configuração. Nesta atividade o maior conhecimento adquirido foi a diferenciação das varias classificações de aparelhos que rodam J2ME e as varias configurações e pacotes adicionais que podem ser usados, dependendo destas características. - Estudo das especificações do modulo Siemens TC45; As especificações do equipamento Modulo Siemens TC45 e sua arquitetura foram estudados de modo a conhecer a fundo as suas possibilidades de funcionamento e de integração com equipamentos e com outros sistemas. Este equipamento foi escolhido como referencia pela sua capacidade de rodar aplicativos J2ME CLDC1.0 e MIDP 1.0, bem como por seu tamanho compacto e possibilidades de comunicação entre o modulo e uma porta serial RS-232 padrão. Este equipamento também tem a opção de uso de pinos de entrada e saída de dados digitais GPIO(Generic Purpouse I/O). Estas duas opções permitem que o equipamento se comunique de maneira eficaz com a maioria dos instrumentos de medição e automação existentes no mercado, sem a necessidade de 10/14 grandes implementações de interfaces entre os equipamentos. Este módulo consiste num micro-controlador que roda Java J2ME, acoplado a um modem GSM/GPRS e a uma saída serial para acoplar outros equipamentos de medição ou telemetria. Usando as APIs do equipamento, é possível programa-lo para fazer a interface entre um equipamento de medição que possa transmitir dados lidos por sensores através de uma interface serial RS-232, e transmitir para um servidor ou outro equipamento usando uma conexão discada, GPRS, ou mensagem SMS. - Elaboração da arquitetura de monitoramento remoto; Como o objetivo do estudo, é o desenvolvimento de uma arquitetura, que possibilite a comunicação com estações de monitoramento remotas. Na Epagri hoje existem estações meteorológicas que medem por todo o estado as condições de vento, temperatura, chuvas, entre outras variáveis. Nas estações é usado um equipamento DataLogger que lê os dados dos sensores e transforma em caracteres numéricos, transmitidos por uma interface serial RS-232 de tempos em tempos, conforme configuração. Sendo assim, desenvolvemos uma arquitetura em que o modulo TC45 é programado para ficar aguardando na porta serial a chegada dos caracteres a serem transmitidos e armazena os mesmos numa fila. De tempos em tempos, outra Thread do programa lê a fila, e encontrando dados a ser transmitidos faz a conexão http com o servidor, enviando estes dados para ser armazenados e analisados. Segue o esquema da arquitetura do projeto: 11/14 - Desenvolvimento do programa de monitoramento do modulo Siemens integrado com DataLogger da estação; Projetada a arquitetura do sistema, a codificação do programa passou pelas etapas de modelagem, codificação, testes e reengenharia. Na primeira modelagem, foram projetadas uma classe principal de controle do programa, que instanciaria duas outras Threads, que fariam a interação com a porta serial e com a conexão com o servidor. Feitos os primeiros testes, foi adicionada mais uma classe chamada Modem para fazer o controle do modem e seu estado. Com os testes e a maturação do modelo, foi criada também uma classe para servir de parser de comandos recebidos pela porta serial, enquanto o programa está ativo. Desta maneira, o dataLogger ou outros equipamentos podem fazer interações com o modulo através de comandos, quando estes forem identificados como tal, por terem um símbolo de interrogação no inicio da mensagem. Desta maneira pode-se interagir diretamente com o modulo e o programa vivo, e ter informações sobre seu estado e as condições do módulo, sem precisar interromper a execução. 12/14 - Documentação de manual de uso do sistema. A documentação do manual de uso do sistema consiste de uma descrição textual de todas as funções do modulo TC45 e algoritmos em J2ME utilizados para o desenvolvimento do projeto. O objetivo é manter na empresa, além do fonte funcionando do sistema, também uma documentação explicativa sobre o que foi utilizado, para que possa ser dado continuidade ao projeto. Foram incluídos no manual os comandos AT mais importantes utilizados com uma descrição de seu uso e do porque da sua importância no funcionamento do sistema. Também foram descritos os algoritmos e funções em J2ME usados no programa fonte da aplicação, com uma descrição do funcionamento dos comandos embutidos no framework do módulo, e também das classes e funções implementadas para fazer o reuso do código. Conclusões do projeto: Concluímos que o projeto foi válido e produtivo no quesito do conhecimento e desenvolvimento das aplicações que foram propostas. O equipamento e a tecnologia de transmissão de dados por celular e GPRS foram estudados a fundo e desse estudo surgiram muitas propostas e idéias novas para a área. A implementação do sistema e da arquitetura proposta resultaram em um protótipo funcional, que tem todas as condições de se transformar em um protótipo de campo, o que é um resultado positivo deste trabalho. No quesito de estudo, as próximas atividades estão em estudar os equipamentos novos lançados pelos fabricantes com tecnologia mais moderna, que permitem a utilização de novas funcionalidades do J2ME, e com certeza a partir destes estudos, surgirão novas propostas de soluções e arquiteturas para o monitoramento e comunicação com estações remotas. Bibliografia: 13/14 – Connected Limited Device Configuration (CLDC); JSR 30, JSR 139 Overview – http://java.sun.com – Revista Gás Brasil – http://www.gasbrasil.com.br – Muchow, John W. - Core J2ME / Tecnologia e MIDP. - Pearson Makron Books – 2004 – JCP Specification - JSR-37 - Mobile Information Device Profile – http://www.jcp.org Referencias Bibliograficas: [LIMA2004] Lima, Eduardo nascimento; Soares, Marilson Duarte; Fernandes, Michelle P. - Artigo Wireless Modules – Revista Gás Brasil – 20/07/2004 [Rozas2001]Rozas, Norberto – Artigo Sistemas de medição à distancia – Revista Gás Brasil – 05/09/2001 [Rozas2004]Rozas,Norberto – Artigo "O que é Telemetria" – Revista Gás Brasil – 22/11/2004 [JSR-37] JCP Specification - Mobile Information Device Profile – http://www.jcp.org 14/14