MINISTÉRIO DA DEFESA EXÉRCITO BRASILEIRO DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA INSTITUTO MILITAR DE ENGENHARIA (Real Academia de Artilharia, Fortificação e Desenho, 1792) 1o Ten RAQUEL LAMPAÇA VIEIRA RADOMAN SISTEMA MULTI-PROTOCOLO PARA TRANSFERÊNCIA DE DADOS Rio de Janeiro 2013 INSTITUTO MILITAR DE ENGENHARIA 1o Ten RAQUEL LAMPAÇA VIEIRA RADOMAN SISTEMA MULTI-PROTOCOLO PARA TRANSFERÊNCIA DE DADOS Projeto de Fim de Curso apresentado ao Curso de Graduação em Engenharia Eletrônica do Instituto Militar de Engenharia. Orientador: Cel R/1 Marcus Vinícius dos Santos Fernandes – D.C. Rio de Janeiro 2013 2 c2013 INSTITUTO MILITAR DE ENGENHARIA Praça General Tibúrcio, 80 – Praia Vermelha Rio de Janeiro - RJ CEP: 22290-270 Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar qualquer forma de arquivamento. É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem finalidade comercial e que seja feita a referência bibliográfica completa. Os conceitos expressos neste trabalho são de responsabilidade dos autores e do orientador. 623.043 R131s Radoman, Raquel Lampaça Vieira Sistema Multiprotocolo para transferência de Dados; orientado por Marcus Vinícius dos Santos Fernandes. - Rio de Janeiro: Instituto Militar de Engenharia, 2013. 88 p.: il. Projeto de Final de Curso - Instituto Militar de Engenharia – Rio de Janeiro, 2013. 1. Engenharia Eletrônica. 2. Controle remoto. 3. Rastreamento. 4. Microcontrolador. 5. GPRS. 6. AT. 7. Domótica. 8. Protocolos I. Fernandes, Marcus Vinícius dos Santos. II. Título. III. Instituto Militar de Engenharia. CDD 623.043 3 INSTITUTO MILITAR DE ENGENHARIA 1o Ten RAQUEL LAMPAÇA VIEIRA RADOMAN SISTEMA MULTI-PROTOCOLO PARA TRANSFERÊNCIA DE DADOS Projeto de Fim de Curso apresentado ao Curso de Graduação em Engenharia Eletrônica do Instituto Militar de Engenharia. Orientador: Cel R/1 Marcus Vinícius dos Santos Fernandes- D.C. Aprovada em 25 de outubro de 2013 pela seguinte Banca Examinadora: __________________________________________________________________ Marcus Vinícius dos Santos Fernandes - Cel R/1 ___________________________________________________________________ Mauro Cezar Rebello Cordeiro – Maj ___________________________________________________________________ Amarildo Teodoro da Costa – D.Sc Rio de Janeiro 2013 4 SUMÁRIO 1. Introdução ............................................................................................................................. 12 1.1 Objetivo ............................................................................................................................. 12 1.2 Justificativa........................................................................................................................ 12 1.3 Metodologia ...................................................................................................................... 13 1.4 Estrutura ............................................................................................................................ 13 2. Revisão de Literatura ............................................................................................................ 14 2.1 Tecnologia GSM/GPRS .................................................................................................... 14 2.2 Módulo GSM/GPRS GM862-QUAD ............................................................................... 14 2.3 Comandos AT ................................................................................................................... 15 2.4 A rede de comunicação ..................................................................................................... 15 2.5 O reed-switch .................................................................................................................... 17 2.6 O relé ................................................................................................................................. 17 2.6.1 Funcionamento do relé ............................................................................................... 18 2.6.2 Circuito do Relé ......................................................................................................... 18 2.7 O LDR (Light Dependent Resistor) .................................................................................. 19 2.8 Protocolo Modbus ............................................................................................................. 20 2.8.1 Estrutura mestre / escravo .......................................................................................... 20 2.8.2 Formato da mensagem ............................................................................................... 21 2.8.2.1 Endereço do escravo ........................................................................................... 21 2.8.2.2 Função ................................................................................................................ 21 2.8.2.3 Parâmetros ou dados ........................................................................................... 21 2.8.2.4 Checagem de erro ............................................................................................... 22 2.8.3 Modos de transmissão ................................................................................................ 22 2.8.3.1 Modo de transmissão ASCII ............................................................................... 23 2.9 Arquitetura OSI ................................................................................................................. 23 2.9.1 Camada de Aplicação ................................................................................................ 25 2.9.1.1 Protocolo FTP ..................................................................................................... 26 2.9.1.2 Protocolo SMTP ................................................................................................. 26 2.9.1.2.1 A Base 64 .................................................................................................... 27 2.9.1.2.2 Processo de autenticação ............................................................................. 28 2.9.2 Camada de Transporte ............................................................................................... 29 2.9.2.1 Protocolo TCP versus UDP ................................................................................ 29 2.9.3 Camada de Rede ........................................................................................................ 30 2.9.3.1 Protocolo IP ........................................................................................................ 30 2.10 GPS ................................................................................................................................. 30 2.10.1 NMEA formato RMC .............................................................................................. 30 2.11 EasyPIC5 ......................................................................................................................... 31 3. Descrição dos projetos ........................................................................................................... 32 3.1 Casa Inteligente ................................................................................................................. 32 3.2 Rastreamento de veículo ................................................................................................... 32 4. Implementação ....................................................................................................................... 33 4.1 Casa Inteligente: ................................................................................................................ 33 4.1.1 Hardware:................................................................................................................... 33 4.1.1.1 Dispositivos controlados..................................................................................... 36 4.1.1.1.1 Acionamento do alarme .............................................................................. 37 5 4.1.1.1.2 Acende / apaga lâmpada .............................................................................. 38 4.1.1.1.3 Controle de luminosidade............................................................................ 39 4.1.2 Software ..................................................................................................................... 41 4.1.2.1 Comunicação cliente/servidor ............................................................................ 41 4.1.2.2 Comunicação modem/ PIC ................................................................................. 45 4.2 Sistema de rastreamento de veículo .................................................................................. 49 4.2.1 Hardware .................................................................................................................... 49 4.2.2 Software ..................................................................................................................... 51 4.2.2.1 Testes realizados com SMTP.............................................................................. 51 4.2.2.2 Teste do funcionamento do protocolo FTP ........................................................ 53 4.2.2.3 Elaboração do código ......................................................................................... 54 4.2.2.3.1 Funções........................................................................................................ 54 4.2.2.3.2 Considerações sobre o código ..................................................................... 59 5. Funcionamento do projeto .................................................................................................... 65 5.1 Casa inteligente ................................................................................................................. 65 5.2 Rastreamento de um veículo frigorífico ............................................................................ 66 6. Dificuldades e limitações do projeto .................................................................................... 70 6.1 Casa Inteligente ................................................................................................................. 70 6.2 Rastreamento de veículo frigorífico .................................................................................. 71 7. Trabalhos futuros .................................................................................................................. 71 8. Conclusão ............................................................................................................................... 71 9. Referências Bibliográficas .................................................................................................... 72 ANEXO ....................................................................................................................................... 74 6 LISTA DE FIGURAS Figura 1 - Modem GSM/GPRS ............................................................................................................................. 15 Figura 2 - Ligação do CI MAX232 na interface RS232 para conversão TTL/ RS232 (Autor: Rogercom.com) ............................................................................................................................................ 16 Figura 3 - Ligação do CI MAX485 para conversão de TTL/RS485 ..................................................................... 16 Figura 4 - Funcionamento do reed-switch ............................................................................................................. 17 Figura 5 - Tipos de relé ......................................................................................................................................... 17 Figura 6 - Estrutura do relé.................................................................................................................................... 18 Figura 7 - Circuito do relé ..................................................................................................................................... 18 Figura 8 - Contatos do relé .................................................................................................................................... 19 Figura 9 – LDR ..................................................................................................................................................... 19 Figura 10: Arquitetura OSI de redes e a função de cada camada .......................................................................... 25 Figura 11: Protocolo FTP ...................................................................................................................................... 26 Figura 12: Exemplo de conversão de ASCII em base64 e a tabela de correspondência aos índices .................... 28 Figura 13: EasyPIC5 ............................................................................................................................................. 31 Figura 14 - Pinos do conector DB9 ....................................................................................................................... 33 Figura 15 - Projeto do circuito do PIC16F628 mestre .......................................................................................... 34 Figura 16 - Montagem do circuito em protoboard ................................................................................................ 34 Figura 17 - Fresadora Lpkf .................................................................................................................................... 35 Figura 18 - Esquemático do circuito do MAX232 ................................................................................................ 35 Figura 19: Comunicação modem/ PIC .................................................................................................................. 36 Figura 20 - Esquemático do circuito do PIC 16F628 ............................................................................................ 36 Figura 21 - Esquemático do circuito do alarme..................................................................................................... 37 Figura 22: Montagem do circuito do alarme ......................................................................................................... 38 Figura 23 - Esquemático do circuito da lâmpada .................................................................................................. 38 Figura 24: Circuito de acionamento da lâmpada ................................................................................................... 39 Figura 25 - Esquemático do circuito do LDR ....................................................................................................... 40 Figura 26 - Esquemático do PIC 16F877A escravo .............................................................................................. 40 Figura 27 - Configuração da conexão cliente ........................................................................................................ 41 Figura 28 - Conexão cliente .................................................................................................................................. 42 Figura 29 - Conexão na rede GPRS ...................................................................................................................... 43 Figura 30 - Configuração da conexão servidor ..................................................................................................... 44 Figura 31 - Socket full duplex ............................................................................................................................... 45 Figura 32 - Rotina de recepção de caracteres ........................................................................................................ 46 Figura 33 - Caractere 'VT' ..................................................................................................................................... 47 Figura 34 - Envio de comandos ao Modem........................................................................................................... 48 Figura 35 - Comunicação bidirecional .................................................................................................................. 49 Figura 36: Display de LCD acompanhando o envio dos comandos AT ............................................................... 50 Figura 37: Conexão com o servidor SMTP "gmail".............................................................................................. 51 Figura 38: Conexão SMTP com o "gmail" bem sucedida por Telnet ................................................................... 52 Figura 39: Função TX para transferência de caracteres ........................................................................................ 54 Figura 40: Primeira parte da função RX................................................................................................................ 55 Figura 41: Segunda parte da função RX................................................................................................................ 56 Figura 42: Função codetxt_to_ramtxt ................................................................................................................... 56 Figura 43: Separação das strings de dados na função GPS ................................................................................... 57 7 Figura 44: Reordenação dos caracteres de Data .................................................................................................... 58 Figura 45: Parte da função "leitura_botoes" .......................................................................................................... 58 Figura 46: Uso do contador auxiliar na função leitura_botoes .............................................................................. 59 Figura 47: Especificação de registradores e baud rate .......................................................................................... 60 Figura 48: Exemplo de envio de comando para o modem e análise da resposta................................................... 60 Figura 49: Nomeação do arquivo salvo no servidor FTP ...................................................................................... 61 Figura 50: Envio da sequência de escape "+++" ................................................................................................... 62 Figura 51: Abertura de socket TCP ....................................................................................................................... 62 Figura 52: Recebimento dos comandos do servidor TCP ..................................................................................... 63 Figura 53: Programa terminal HDC-Control......................................................................................................... 64 Figura 54: HDC-Creator........................................................................................................................................ 65 Figura 55: Comunicação bidirecional servidor TCP - modem .............................................................................. 66 Figura 56: Início da simulação do funcionamento do sistema .............................................................................. 67 Figura 57: Arquivos salvos no servidor FTP......................................................................................................... 68 Figura 58: Comunicação bidirecional no servidor TCP ........................................................................................ 69 Figura 59: Confirmação do recebimento do comando "1" .................................................................................... 69 Figura 60: Mensagem visualizada pelo condutor do veículo e confirmação de recebimento do comando "3" ................................................................................................................................................. 70 8 LISTA DE TABELAS Tabela 1 - Estrutura do framing ............................................................................................................................ 21 Tabela 2 - Tipos de erro ........................................................................................................................................ 21 Tabela 3: Funcionalidade dos botões e LEDs ....................................................................................................... 50 9 RESUMO As áreas de sistemas de controle e rastreamento remoto tem se tornado cada vez mais populares, pois oferecem ao usuário maior segurança e facilidade de operação. A comunicação de dados entre dispositivos, ou entre o cliente e servidor, é um dos fatores mais importantes para o funcionamento de projetos nessas áreas. A transferência mútua de dados nesses sistemas se dá por meio de protocolos de comunicação, funcionando à base da conexão com a rede GPRS. Uma maneira eficaz e de baixo custo de tornar isso possível é abordada nesse trabalho, que explora os padrões de rede serial RS485 e o microcontrolador PIC, para comunicação entre os dispositivos, e os protocolos FTP e TCP, para registrar informações do sistema em um servidor e permitir o envio de comandos. A comunicação foi realizada via modem GSM/GPRS da Telit. Palavras-chave: protocolos, GPRS, AT, modem, microcontrolador, controle remoto, rastreamento, domótica. 10 ABSTRACT The fields of control systems and remote tracking has become increasingly popular because they offer the user more safety and ease of operation. The data communication between devices, or between a client and a server, is one of the most important factors for the operation of projects in these areas. The mutual transfer of data in these systems is by means of communication protocols, operating on the basis of the connection to the GPRS network. An effective and low cost way to make this possible is discussed in this paper, which exploits network standards RS485 and PIC microcontroller for communication between devices, and FTP and TCP protocols to record system information on a server and allow sending commands. The modem GSM/GPRS Telit was used to establish the communication with the servers. Keywords: protocols, GPRS, modem, AT, remote control, microcontroller, home automation, tracking. 11 1. Introdução Ao longo do tempo, a computação vem ajudando pessoas comuns a fazerem seus trabalhos de forma cada vez mais rápida e eficiente. Com o advento da automação, tarefas repetitivas podem ser realizadas por máquinas. Ao mesmo tempo, com o avanço das telecomunicações, principalmente da comunicação sem fio, os dispositivos móveis vem ganhando espaço considerável no mercado de transmissão de dados. O controle remoto de dispositivos envolve automação e comunicação sem fio, com transferência de dados. Gradativamente, a automação vem se tornando comum nas instalações residenciais, visando o conforto, entretenimento, economia e segurança, resultando no que pode ser chamado de domótica. Os sistemas domóticos permitem a gestão de todos os recursos habitacionais, através da utilização de computadores, controle remoto, aparelhos celulares, e outros dispositivos fixos e móveis capazes de realizar tarefas complexas e interagir com o usuário e com o meio físico. Em outras palavras, remotamente, permitem ligar ou desligar uma televisão, abrir ou fechar uma persiana, aumentar ou diminuir a temperatura de um ar-condicionado, entre outros. Outro sistema que explora bastante o uso da automação com a comunicação sem fio é o de rastreamento de carros. O rastreamento vem se tornando a nova tendência no controle e segurança de veículos, sejam eles leves ou pesados. Permite ao usuário interagir com seu veículo direta ou indiretamente, possibilitando controlar diversas funções e obter informações à distância. Os servidores de centrais de monitoramento recebem diretamente de cada veículo diversas informações de localização, através de transmissão em tempo real via internet móvel GPRS (General Packet Radio Service). Com a ampliação dos sistemas de telefonia celular GSM e seu protocolo de comunicação GPRS, os sistemas de rastreamento passaram a ter seus custos bastante reduzidos. A qualquer momento podem ser enviados remotamente comandos específicos aos veículos. Pode-se solicitar bloqueio de combustível e alarme, como exemplo. Os comandos podem ser enviados ao mesmo tempo em que se rastreia o veículo. Assim, ele para de funcionar ao mesmo tempo em que é localizado. O presente trabalho visa mostrar uma solução de baixo custo para dois projetos: um de automação residencial e outro de rastreamento e monitoramento remoto de veículos. Usando chips microcontroladores e uma rede RS-485 para comunicação entre eles e um modem GSM/GPRS, será desenvolvido um sistema capaz de controlar a iluminação e equipamentos elétricos de uma residência, através da rede GPRS. No outro projeto, será desenvolvido um sistema que lê os dados de sensores presentes no veículo, assim como informações de um GPS, e guarda essas informações em um servidor FTP, além de também permitir que o usuário envie comandos ao seu veículo remotamente. Para tal, também serão utilizado o modem GPRS e microcontrolador PIC 16F877A. 1.1 Objetivo Este trabalho tem como objetivo realizar o estudo de protocolos de comunicação e suas aplicações em sistemas de rastreamento de veículos e controle remoto de dispositivos residenciais. 1.2 Justificativa Uma casa inteligente contém um sistema capaz de gerenciar todo o tráfego de informações, bem como o controle de equipamentos, permitindo um conforto maior com o menor gasto possível de energia. Os sistemas de segurança, os sistemas de aquecimento, ventilação e ar-condicionado, e entretenimento tendem a beneficiar as novas construções, mas os projetos de reforma também podem 12 ser contemplados com esta nova tecnologia. Com isso, a centralização dos sistemas de controle tende a diminuir o tempo gasto com o projeto e a facilitar a manutenção. Permite também a busca de possíveis erros, de forma rápida, assim como o disparo das ações necessárias para solucioná-los. Com a aplicação certa das técnicas, pode-se conseguir atingir altos níveis de conforto e segurança a custos relativamente baixos. A busca pela praticidade e segurança não se restringe a residências, também pode acompanhar o usuário em seu veículo. O índice de roubos de carros nas grandes metrópoles é bastante alto. Mesmo com seguro, as consequências de um roubo não são nada agradáveis. O carro é encontrado em estado ruim e o seguro não reembolsa o prejuízo. Para evitar problemas, existem vários tipos de equipamentos contra roubos e furtos. Rastreadores, bloqueadores e alarmes são as principais ofertas para a segurança de um veículo. Para uma boa parte da população, o conforto, comodidade e a segurança providos pela domótica, não passam de um sonho de consumo inatingível. No entanto, esta realidade pode ser modificada com soluções que proporcionem tais benefícios, aliando também, um projeto de baixo custo. Outro sistema que é altamente desejado, mas que necessita de progresso, é o de rastreamento e controle de veículos. Aliando o conforto da residência com a segurança de seu veículo, o usuário se sente mais livre para usufruir de seus bens e se deslocar para onde desejar. Dentro deste cenário, este trabalho tem o desafio de apresentar uma solução simples de domótica, que possui baixo custo, com o objetivo de desmistificar a ideia de que a automação residencial não é uma tecnologia palpável, e de representar de uma maneira simples e prática o funcionamento de um sistema de rastreamento e controle de veículos. 1.3 Metodologia O trabalho foi constituído por duas partes: na primeira, foi feito um modelo de casa inteligente, cujo funcionamento é baseado em controle remoto de dispositivos. Na segunda, foi realizada a simulação de um sistema de rastreamento de veículos. Ambas as etapas fazem uso de protocolos de comunicação. Para tal, primeiramente foi feito um estudo sobre o modem utilizado e os comandos AT necessários para o projeto. Depois, realizou-se a comunicação entre dois modems (um deles ligado a um computador de IP fixo e outro, a um computador conectado à rede GPRS, provida por empresa de telefonia celular). Em seguida, foi proposto um modelo de casa inteligente e desenvolveram-se o hardware e o software de controle necessários à sua implementação. Após isso, foi feito o estudo dos protocolos SMTP e FTP, seguido pela aplicação dos mesmos na realização da simulação de um sistema de rastreamento de veículo. 1.4 Estrutura O trabalho está estruturada da seguinte forma: no item 2, é feita uma revisão da literatura utilizada. No item 3, é feita uma descrição dos projetos. No item 4, é descrita a implementação dos projetos (hardware e software). No item 5, são apresentados os testes e a fase final do projeto. O item 6 mostra as principais dificuldades enfrentadas. No item 7, são citados os possíveis trabalhos futuros. No item 8 é feita a conclusão. A bibliografia está disponível no item 9. Por fim, são apresentados em anexo os códigos utilizados nos projetos. 13 2. Revisão de Literatura 2.1 Tecnologia GSM/GPRS A tecnologia GSM/GPRS é uma integração das redes GSM com GPRS (General Packet Radio Service), ou seja, é a junção de uma rede GPRS em cima da outra rede celular GSM, que possui abrangência global. Com a popularização do uso da internet e de outros serviços de dados, observouse que as redes GSM não comportariam grandes quantidades de dados nos diferentes estágios do sistema. Por esse motivo, as redes GPRS foram desenvolvidas para aceitar serviços de dados, pois foram criadas com base em transmissão por comutação de pacotes, que utiliza a fonte de rádio para tráfego em rajadas. Para que as operadoras possam utilizar os serviços GSM e GPRS, os dois sistemas compartilham características entre si, tais como as bandas de freqüência, a estrutura de frames e técnicas de modulação. Mas, no entanto, a cobrança pelo uso do sistema GPRS é feita pela quantidade de dados transmitidos, enquanto que no sistema GSM, é feita por tempo de conexão. A tecnologia GSM/GPRS explora as redes celulares e internet, e esta integração com a internet é umas das grandes vantagens do sistema GPRS, porque permite a conexão com qualquer ponto do mundo em diferentes equipamentos. Essa versatilidade do sistema é algo importante em qualquer sistema de monitoramento remoto de dados. O sistema possui também recursos de segurança, chaves de autenticação, código de identificação pessoal (Código PIN – Personal Identification Number), etc., que podem ser usados para controlar e proteger conexões entre os dispositivos. A transmissão de dados pode ser feita através de duas maneiras: via GPRS- Internet ou via SMS (Short Message Services). A transmissão de dados via GPRS – Internet é feita na forma de protocolos em camadas. A rede GPRS utiliza dois tipos de protocolos para a transferência de dados, o IP e o X.25. 2.2 Módulo GSM/GPRS GM862-QUAD O módulo de comunicação usado no projeto é o modelo GM862 (Telit), que é utilizado em larga escala no mercado. O módulo GSM/GPRS GM862 (Figura 1) é uma interface compacta que apresenta as seguintes características: Baixo consumo; Possui memória flash e RAM; Alimentação 12 Volt; Possui conector de antena GSM; Possui entrada para cartão SIM; Possui saída serial. Formato de comunicação de alto nível (comandos AT); SMS (Short Message Service); Pilha TCP/IP interna; Acesso à rede GSM/GPRS. O módulo trabalha com banda Quad-Band EGSM 850/900/1800/1900 MHz e classe B de estação móvel. O multiplexador GSM 7.10 permite a aquisição de dados via porta serial, com integração à internet via arquitetura TCP/IP. Oferece um desempenho de voz, SMS, dados e fax. A Figura 1 mostra o modem GSM/GPRS externamente e a antena GSM. O modem possui os seguintes conectores de interfaceamento: conector da antena, da fonte de alimentação, entrada serial e entrada para o chip SIM. 14 Figura 1 - Modem GSM/GPRS 2.3 Comandos AT Os modems são módulos largamente divulgados, com ligação à rede telefônica, e cuja interface com computadores pessoais seguem as normas standard. A troca de informações entre um computador e um modem ligado via porta serial utiliza geralmente um protocolo, designado como comandos AT. O padrão AT é uma linguagem de comandos orientados por linha. Cada comando é constituído por três elementos: o prefixo, o corpo de comando, e o caractere de fim de comando ou terminação. O prefixo consiste nos caracteres “AT”. O corpo de comando é constituído por caracteres individuais. E o caractere de fim de comando é o “<CR>”. Segundo Arthut (2007), uma linha de comando AT pode conter um ou mais comandos, usando delimitadores para separar cada comando. Esse delimitador pode ser um ponto e vírgula ou um espaço para comandos básicos. Quando um comando é enviado, o modem responde com uma mensagem (Result Code), ou “Código Resultante”, que avisa para o modem o resultado do comando que foi requisitado. Os comandos AT são projetados de acordo com a ITU (International Telecommunication Union). 2.4 A rede de comunicação A rede de comunicação escolhida para a implementação do sistema de controle remoto foi a rede RS485, por ser uma rede robusta e bastante utilizada, por poder operar no modo multiponto, possuir capacidade de comunicação com cabos de grandes comprimentos e facilidade de conversão do padrão RS232 para o padrão RS485, características essenciais para a rede deste protótipo. Para que os dispositivos pudessem se comunicar por esta rede, foram necessários circuitos integrados conversores, que serviram para converter os sinais do padrão RS232 do modem para o padrão TTL e os sinais TTL do microcontrolador para RS485. A seguir, pode ser visto o modo de ligação destes circuitos integrados na rede de comunicação. A Figura 2 mostra a ligação do CI MAX232 para converter os sinais da interface RS232 do modem para os sinais TTL. Já a Figura 3, mostra a ligação do CI MAX485 para converter os sinais TTL dos microcontroladores para os sinais do padrão RS485. 15 Figura 2 - Ligação do CI MAX232 na interface RS232 para conversão TTL/ RS232 (Autor: Rogercom.com) Figura 3 - Ligação do CI MAX485 para conversão de TTL/RS485 (Autor: Rogercom.com) O RS-485 é um padrão elétrico utilizado para comunicação de dados de alta velocidade, em distâncias de até 1200 metros, sendo adequado para ambientes expostos a elevados níveis de distúrbios. Suas principais características são: • Transmissão diferencial balanceada; • Característica multiponto; • Apenas uma fonte simples de +5V para alimentar os circuitos de transmissão e recepção; • Transmissão de dados em modo comum com tensões de -7V até +12V; • Suporta até 32 dispositivos. A distância do cabo depende da taxa de transmissão utilizada. Por exemplo, uma taxa de transmissão de dados de 10Mbps pode ocorrer até uma distância máxima de 12 metros, enquanto taxas de transmissão de até 100kbps podem ocorrer em distâncias de até 1200 metros. 16 2.5 O reed-switch O reed-switch é composto de uma cápsula de vidro e de duas lâminas de um material ferromagnético (ligas de níquel e ferro). As duas lâminas são colocadas muito próximas, sem que haja contato entre elas (com uma extremidade afixada no vidro) e mergulhadas num gás inerte, para não sofrerem oxidação ou deformação mecânica (para durarem mais). - Para acionar o reed-switch, isto é, para haver contato elétrico entre as lâminas, é necessário induzir a magnetização delas, fazendo com que elas se atraiam magneticamente. Basta aproximar um pequeno ímã do reed-switch, como mostra a Figura 4. - São usados para acionar, magneticamente, dispositivos eletro-eletrônicos como alarmes, trancas elétricas, portas, circuitos eletrônicos de partida. Figura 4 - Funcionamento do reed-switch 2.6 O relé Os relés são dispositivos comutadores electromecânicos. Representam-se pelo símbolo: Relé Simples Relé duplo Figura 5 - Tipos de relé Uma bobina ao ser percorrida por uma corrente, gera um campo magnético no seu núcleo que atrai um ou vários contatos elétricos, permitindo ligar, desligar ou comutar um circuito elétrico externo. 17 Figura 6 - Estrutura do relé No exemplo da imagem, uma bobina, ao receber uma tensão nos seus terminais, cria um campo magnético que, através do seu núcleo, atrai o induzido, fechando os contatos entre os pontos A e B. 2.6.1 Funcionamento do relé No funcionamento de um relé, na sua forma mais comum de aplicação permite três tipos básicos de funcionamento. Fig.1- O relé fecha o circuito entre os terminais A e B. Fig.2- O relé abre o circuito entre os terminais A e B. Fig.3- O relé comuta a tensão que entra no terminal A comutando entre o terminal B e C. 2.6.2 Circuito do Relé A figura abaixo mostra o circuito de funcionamento de um relé: Figura 7 - Circuito do relé A estrutura do relé permite, ao ser energizado com correntes muito pequenas, em relação à corrente do circuito controlado, o controle de circuitos de altas correntes (motores, lâmpadas, 18 máquinas industriais...), diretamente a partir de dispositivos eletrônicos fracos, (transistores, circuitos integrados, fotorresistores, etc). Figura 8 - Contatos do relé 2.7 O LDR (Light Dependent Resistor) LDR é um componente eletrônico passivo do tipo resistor variável, mais especificamente, é um resistor cuja resistência varia conforme a intensidade da luz que incide sobre ele. Tipicamente, à medida que a intensidade da luz aumenta, a sua resistência diminui. O LDR é construído a partir de material semicondutor com elevada resistência elétrica. Quando a luz que incide sobre o semicondutor tem uma frequência suficiente, os fótons que incidem sobre o semicondutor libertam elétrons para a banda condutora que irão melhorar a sua condutividade e assim diminuir a resistência. Os resultados típicos para um LDR poderão ser: Escuridão: resistência máxima, geralmente mega ohms. Luz muito brilhante: resistência mínima, geralmente dezenas de ohms. Figura 9 – LDR 19 2.8 Protocolo Modbus O protocolo Modbus foi desenvolvido em 1979 pela empresa MODICON, Inc., Industrial Automation System, que define um protocolo de aplicação do tipo cliente/ servidor entre os dispositivos conectados, independentes do meio físico utilizado. A estrutura de comunicação Modbus atualmente pode ser implementada em: • TCP/IP sobre Ethernet • Mestre / Escravo em transmissão serial assíncrona sobre vários meios (EIA/TIA 232-E, EIA-422, EIA/TIA-485; fibra óptica, rádio, etc.) e • Modbus Plus em rede token pass de alta velocidade. 2.8.1 Estrutura mestre / escravo O sistema desenvolvido utiliza o protocolo Modbus na estrutura mestre / escravo, que basicamente é constituída por uma estrutura de mensagens compostas por bytes e que determina como cada dispositivo: • Identifica seu endereço na rede; • Reconhece uma mensagem endereçada a ele; • Determina o tipo de ação a ser executada; • Obtém toda a informação necessária para executar a ação. Havendo necessidade de responder ao comando recebido, o dispositivo envia uma mensagem, mesmo ocorrendo erro na ação a ser executada. Apenas um dispositivo (mestre) pode iniciar a comunicação (chamada query) e os outros dispositivos (escravos) respondem enviando os dados requisitados pelo mestre ou realizando uma ação solicitada pela query. O mestre pode endereçar um escravo individualmente ou iniciar uma mensagem broadcast para todos os escravos. Apenas o escravo endereçado retorna uma mensagem (chamada response) a uma query. Responses nunca são retornadas para query do tipo broadcast. O protocolo Modbus estabelece o formato para a query definindo: • O endereço do escravo (ou broadcast); • Código da função que define a ação a ser realizada pelo escravo; • Parâmetros ou dados pertencentes à função; • Checagem de erro. As responses são construídas também nos mesmos moldes da query, obedecendo ao formato correspondente à função enviada pelo mestre, definindo: • A confirmação da ação realizada; • Parâmetros ou dados pertencentes à função solicitada; • Checagem de erro para verificar a integridade da mensagem enviada. Se o escravo for incapaz de executar a ação pedida, o escravo construirá uma mensagem de erro e irá emiti-la na resposta. Se um erro ocorrer no recebimento da mensagem, o escravo não responde à query, pois no erro de comunicação, dois ou mais escravos poderiam responder à query ao mesmo tempo. 20 2.8.2 Formato da mensagem Na mensagem do protocolo Modbus mestre / escravo, há identificadores de início e fim de framing. Este recurso permite aos dispositivos da rede detectarem o início de uma mensagem, ler o campo de endereço e determinar qual dispositivo está sendo endereçado (ou todos, se a mensagem é broadcast), e reconhecer quando a mensagem é completada. As mensagens poderão ser detectadas parcialmente podendo gerar erros de acordo com o resultado. O formato do framing Modbus mestre / escravo, como mostra a Tabela 1 é constituído de seis campos: início do framing, o endereço do escravo que deve receber a mensagem, o código da função a ser executada, os parâmetros ou dados da função, um campo para checagem de erro e, por último, indicação do fim do framing. Tabela 1 - Estrutura do framing Início da mensagem Endereço escravo Função Parâmetros ou dados Checagem de erro Fim da mensagem 2.8.2.1 Endereço do escravo A faixa de endereços válidos para os escravos é de 0 a 247. Individualmente os dispositivos escravos são endereçados de 1 a 247. O mestre endereça o escravo colocando o seu endereço no campo de endereço da mensagem e quando o escravo envia uma response, ele coloca o seu próprio endereço no campo de endereço da mensagem para que o mestre reconheça qual escravo está respondendo. O endereço 0 é utilizado para acesso tipo broadcast, em que todos os escravos reconhecem, mas não realizam responses. 2.8.2.2 Função O código da função varia de 0 a 255, sendo o número 0 reservado para a função de broadcast, e os números 128 a 255 reservados para representação de erro. Quando um escravo responde a uma requisição, ele usa o campo de função para indicar execução normal ou erro. Em caso de erro, o sétimo bit do campo função estará em nível 1. Em caso de execução normal, o código da função é deixado intacto e é ecoado na resposta. Por exemplo, se ocorrer algum tipo de erro, ao invés do escravo retornar a função 05h (0000 0101), que foi enviada, o escravo retornará 85h (1000 0101) no campo de função, indicando a ocorrência de erro e juntamente com esta sinalização, o escravo coloca no campo de dados um código que indica o tipo de erro. 2.8.2.3 Parâmetros ou dados O campo de dados é usado para transportar informações adicionais que o escravo pode usar para execução da ação especificada no campo de função pelo mestre. Este campo é constituído por conjuntos de 2 dígitos hexadecimais na faixa de 00h a FFh. Se nenhum erro ocorrer, o campo de dados do escravo conterá as informações requisitadas pelo mestre. Se algum erro ocorrer, o campo conterá o código do tipo de erro, como mostra a Tabela 2, juntamente com o sétimo bit do campo função em nível 1. Tabela 2 - Tipos de erro 21 Código Identificação Significado 01h Função inválida 02h Sensor ou registrador Inválido 03h Valor de dados inválido 04h Falha no dispositivo 05h Estado de espera 06h Dispositivo ocupado 07h Não reconhecimento 08h Erro de paridade de memória A função solicitada pelo mestre não está implementada no escravo. O escravo não possui o sensor ou registrador especificado no comando enviado pelo mestre. Algum valor no campo de dados é inválido. Erro por parte do escravo durante a execução solicitada pelo mestre. O escravo reconheceu o comando do mestre, mas o notifica que o mesmo será processado num período maior que o normal. O escravo está atendendo outro comando. O escravo não conseguiu executar o comando. O escravo detectou erro de paridade. 2.8.2.4 Checagem de erro Há dois tipos de métodos para checagem de erro para o protocolo Modbus mestre / escravo: o LRC (Longitudinal Redundancy Check) e o CRC (Cyclical Redundancy Check). Estes métodos dependem do tipo do modo de transmissão utilizado. O sistema desenvolvido utiliza como método para a checagem de erro o LRC, que consiste na soma dos valores dos campos da mensagem, excluindo o início de mensagem, “:” (3Ah), e fim de mensagem, CRLF (0Dh 0Ah). O dispositivo que recebe a mensagem recalcula um LRC durante o recebimento do framing, e compara o valor calculado ao valor real que recebeu no campo de LRC. Se os dois valores não forem iguais, há ocorrência de erro. 2.8.3 Modos de transmissão A estrutura Modbus mestre / escravo pode trabalhar em dois modos de transmissão serial: ASCII (American Standard Code for Information Interchange) ou RTU (Remote Terminal Unit). O modo de transmissão determina a configuração binária das mensagens que trafegam na rede e como os dados serão empacotados na mensagem e decodificados. Estabelecido o modo de transmissão, devem-se definir os parâmetros da porta serial (baud rate, paridade, etc.). O modo e os parâmetros da serial devem ser os mesmos para todos os dispositivos da rede. O modo ASCII foi utilizado como modo de transmissão porque permite intervalos de até 1 segundo entre a transmissão de caracteres consecutivos sem que um erro de timeout seja gerado. Entretanto, no modo ASCII, cada byte é enviado como 2 caracteres ASCII usando os caracteres “0 - 9” e “A - F”. 22 2.8.3.1 Modo de transmissão ASCII Neste modo, as mensagens são iniciadas com o caractere“:”, valor ASCII 3Ah, e terminadas com os caracteres de retorno – avanço de linha (CR - LF), valores ASCII 0Dh e 0Ah respectivamente. Os caracteres permitidos na transmissão para os outros campos da mensagem são “0” a “9” e “A” a “F” correspondentes aos caracteres ASCII 30h a 39h e 41h a 46h, respectivamente. Quando os dispositivos são configurados para comunicar em modo ASCII, em cada byte da mensagem são enviados dois caracteres ASCII (0 a 9 ou A a F). A principal vantagem deste modo é que ele permite um grande intervalo de tempo entre caracteres sem causar erro. Porém, o tamanho da mensagem em bytes é aumentado significativamente. Como a perda de dados é um fator a se evitar, então este modo de transmissão, tolerante a tempos longos entre bytes de comunicação, foi o modo escolhido para o projeto. O formato de cada byte em modo ASCII é: Sistema de codificação: Caractere ASCII 0-9 (30h a 39h), A a F (41h a 46h) Cada byte é enviado como 2 caracteres ASCII Endereçamento (1 byte): 0: usado para “broadcast” 1 a 247: usados pelos escravos Código da função (1 byte): Estabelece a ação a ser efetuada. 0 a 127: funções 128 a 255: informe de erro na transmissão Bytes de dados: Informações adicionais necessárias; Endereços de memória; Quantidade de itens transmitidos; Quantidade de bytes de campo. Checagem de erro: Longitudinal Redundancy Check (LRC) Os dispositivos da rede monitoram continuamente o barramento e quando é detectado o caractere“:” (3Ah), tem-se o início da decodificação do próximo campo, que indica para qual dispositivo a mensagem está sendo transmitida. Intervalos de até 1 segundo podem ocorrer entre o envio de caracteres dentro da mesma mensagem. Se ocorrer em intervalos maiores (timeout), o dispositivo assume ocorrência de erro. 2.9 Arquitetura OSI Com o objetivo de facilitar o processo de padronização e obter interconectividade entre máquinas de diferentes fabricantes, a Organização Internacional de Normalização (ISO International Standards Organization), uma das principais organizações no que se refere à elaboração de padrões de comunicação de âmbito mundial, aprovou, no início da década de 1980, um modelo de arquitetura para sistemas abertos, visando permitir a comunicação entre máquinas heterogêneas e definindo diretivas genéricas para a construção de redes de computadores independente da tecnologia de implementação. Esse modelo foi denominado OSI (Open Systems Interconnection), servindo de base para a implementação de qualquer tipo de rede, seja de curta, média ou longa distância. 23 A arquitetura de uma rede é formada por camadas (ou níveis), interfaces e protocolos. As camadas são processos, implementados por hardware ou software, que se comunicam com o processo correspondente na outra máquina. Cada camada oferece um conjunto de serviços ao nível superior, usando funções realizadas no próprio nível e serviços disponíveis nos níveis inferiores. Em uma estrutura baseada em camadas, os dados transferidos em uma comunicação de um nível específico não são enviados diretamente ao processo do mesmo nível em outra estação, mas descem, através da cada camada adjacente da máquina transmissora até o nível inicial, onde é transmitido, para depois subir através de cada nível adjacente da máquina receptora. Os protocolos são conjuntos de regras e formatos que permitem a comunicação entre as camadas nas diferentes máquinas. Em cada camada podem ser definidos um ou mais protocolos. Já as interfaces representam o limite entre cada nível adjacente onde uma camada compreende as informações vindas de outra camada. Dentro dessa filosofia, o modelo OSI define uma arquitetura genérica de sete camadas para o sistema computacional (Figura 10). Com exceção da camada mais alta, cada camada é usuária dos serviços prestados pela camada imediatamente inferior (n-1) e presta serviços para a camada imediatamente superior (n+1). Esta troca de informações entre as camadas adjacentes ocorre por meio da troca de primitivas de serviços (funções que um nível oferece ao nível imediatamente superior de forma a prover a comunicação entre os mesmos) nas interfaces entre as camadas. Apesar da divisão em sete níveis, pode-se considerar genericamente que as três camadas mais baixas do modelo cuidam dos aspectos relacionados à transmissão propriamente dita, a quarta camada lida com a comunicação fim-a-fim, enquanto que as três camadas superiores se preocupam com os aspectos relacionados à aplicação, já ao nível de usuário. Uma maneira bastante simples de se enxergar a funcionalidade do modelo OSI é imaginar que cada camada tem como função adicionar um cabeçalho aos dados do usuário a serem transmitidos para outro sistema. Deste modo, a função de cada camada do outro sistema é exatamente a inversa, ou seja, retirar os cabeçalhos dos dados que chegam e entregá-los ao usuário em sua forma original. 24 Figura 10: Arquitetura OSI de redes e a função de cada camada Os protocolos utilizados nos projetos foram TCP, IP e FTP, pertencentes às camadas de transporte, rede e aplicação, respectivamente. Serão abordadas as funcionalidades das camadas citadas. 2.9.1 Camada de Aplicação Esta camada fornece uma interface ao usuário que permite acesso a diversos serviços de aplicação, convertendo as diferenças entre fabricantes distintos para um denominador comum. Por esse motivo, é o nível que possui o maior número de protocolos existentes. Por exemplo, em uma transferência de arquivos entre máquinas de diferentes fabricantes pode haver convenções de nomes diferentes (DOS tem uma limitação de somente 8 caracteres para o nome de arquivo, UNIX não), formas diferentes de representar as linhas, e assim por diante. Transferir um arquivo entre os dois sistemas requer uma forma de trabalhar com essas incompatibilidades, e essa é a função da camada de aplicação. O dado entregue pelo usuário à camada de aplicação do sistema recebe a denominação de SDU (Service Data Unit). A camada de aplicação, então, junta a SDU (no caso, os dados do usuário) um cabeçalho chamado PCI (Protocol Control Information). O objeto resultante desta junção é chamado de PDU (Protocol Data Unit), que corresponde à unidade de dados especificada de um certo protocolo da camada em questão. 25 2.9.1.1 Protocolo FTP Figura 11: Protocolo FTP O FTP (File Transfer Protocol - Protocolo de transferência de arquivos) oferece um meio de transferência e compartilhamento de arquivos remotos. O protocolo FTP disponibiliza interatividade entre cliente e servidor (Figura 11), de forma que o cliente possa acessar informações adicionais no servidor, não só ao próprio arquivo em questão. Como exemplo de facilidades podemos citar a lista de arquivos, onde o cliente lista os arquivos existentes no diretório, ou até mesmo de outros diretórios. O protocolo FTP permite que o cliente especifique o tipo e o formato dos dados armazenados. Como exemplo, se o arquivo contém texto ou inteiros binários, sendo que no caso de texto, qual o código utilizado (USASCII, EBCDIC,etc). Como segurança mínima o protocolo FTP implementa um processo de autenticação e outro de permissão. A autenticação é verificada através de um código de usuário e senha, já a permissão, é dada em nível de diretórios e arquivos. O servidor de FTP possibilita acessos simultâneos para múltiplos clientes. O servidor aguarda as conexões TCP, sendo que para cada conexão cria um processo cativo para tratá-la. Diferente de muitos servidores, o processo cativo FTP não executa todo o processamento necessário para cada conexão. A comunicação FTP utiliza uma conexão para o controle e uma (ou várias) para transferência de arquivos. A primeira conexão (chamada de conexão de controle "Ftp-control") é utilizada para autenticação e comandos, já a segunda (chamada de conexão de dados "Ftp-data"), é utilizada para a transferência de informações e arquivos em questão. No projeto desenvolvido nesse trabalho, foi explorada apenas a conexão FTP-data. 2.9.1.2 Protocolo SMTP O protocolo SMTP (Simple Mail Transfer Protocol) é o protocolo que permite transferir o email de um servidor a outro em conexão ponto a ponto. Trata-se de um protocolo que funciona em modo conectado. O email é entregue diretamente ao servidor de email do destinatário. O protocolo funciona por meio de comandos textuais enviados ao servidor SMTP. Cada um dos comandos 26 enviados pelo cliente é seguido de uma resposta do servidor SMTP, composta de um número e de uma mensagem descritiva. Segue um exemplo de pedido de envio de email a um servidor SMTP: A partir da abertura da sessão SMTP, o primeiro comando a enviar é o comando HELO seguido de um espaço (notado <SP>) e o nome de domínio da sua máquina. Desde abril de 2001, as especificações do protocolo SMTP, definidas no RFC 2821, impõem que o comando HELO seja substituído pelo comando EHLO. Em seguida, é feito o pedido de autenticação com o comando AUTH LOGIN; o servidor solicita, com comandos na base 64, o nome de usuário e a senha, os quais devem ser enviados também na base 64. O segundo comando é "MAIL FROM" seguido do email do remetente. Se o comando for aceito, o servidor devolve a mensagem "250 OK" O comando seguinte é "RCPT TO: " seguido do email do destinatário. Se o comando for aceito, o servidor devolve a mensagem "250 OK" O comando DATA é a terceira etapa do envio. É relativo ao o início do corpo da mensagem. Se o comando for aceito, o servidor responde com uma mensagem intermédia numerada 354, que indica que o envio do corpo da mensagem pode começar, considerando como conteúdo o conjunto das linhas seguintes até uma linha que contém unicamente um ponto (final da mensagem). Se o comando for aceito, o servidor devolve a mensagem "250 OK". 2.9.1.2.1 A Base 64 É um método de codificação de dados para transferência na Internet. É utilizado frequentemente para transmitir dados binários por meios de transmissão que lidam apenas com texto, como por exemplo para enviar arquivos anexos por email. A conversão de caracteres em ASCII para base 64 ocorre da seguinte maneira: um caractere em ASCII é representado por 8 bits, enquanto que na base 64 por 6 bits. Grupos de 6 bits (6 bits tem o máximo de 26 = 64 valores binários diferentes ) são feitos a partir dos correspondentes binários dos caracteres em ASCII, de forma que 3 desses caracteres (24 bits) geram 4 caracteres na base 64. Quando o número de bytes a ser codificado para base 64 não é divisível por três, faz-se o seguinte: caso dê resto 1 na divisão por 3, adiciona-se '=='; caso dê resto 2, adiciona-se "=". 27 Figura 12: Exemplo de conversão de ASCII em base64 e a tabela de correspondência aos índices 2.9.1.2.2 Processo de autenticação A maioria dos servidores SMTP tem exigido um protocolo de autenticação para realizar o envio de email. Isso se faz necessário pois a porta 25 tem sido alvo de propagação de vírus e spans. Esses protocolos garantem a segurança no envio de emails. Os mais comuns são TLS e SSL. - SSL: SSL significa Secure Sockets Layer. Quando o SMTP é usado, esse modo SSL geralmente indica a necessidade de uma conexão segura, desde o momento em que se conecta com os servidores de e-mail. Normalmente, o SSL está associado à porta 465. - TLS (formalmente conhecido como STARTTLS) TLS significa Transport Layer Security. Quando o SMTP é usado, esse tipo de protocolo de autenticação começa com uma conexão não segura com o servidor, seguida por um comando STARTTLS e, em seguida, atualiza para uma conexão segura quando efetivamente começa a transmitir dados. Normalmente, o TLS está associado às portas 25 e 587. Ambos são protocolos de segurança válidos que garantem que os dados, como nome de usuário, senha e mensagens, sejam criptografados. Isso significa que uma linguagem comum é transformada em código para que ninguém possa ler o que você é enviado. 28 2.9.2 Camada de Transporte Os serviços prestados pelo IP (Internet Protocol, camada de rede) não oferecem confiabilidade. Problemas comuns, como congestionamento, perda ou ordenação de pacotes não são tratados.Porém, as aplicações (SMTP,FTP, HTTP) necessitam prover um serviço de qualidade ao usuário.Essa é a finalidade da camada de transporte, fornecer um serviço confiável a essas aplicações. Os principais serviços oferecidos pela camada de transporte são: Controle de conexão: A camada de transporte tem protocolos orientados ou não para a conexão. Para os que são orientados, primeiramente é estabelecida a comunicação entre os usuários finais, e só depois é iniciada a transmissão. Fragmentação: dividir os pacotes em segmentos menores para que sejam encapsulados pela camada de rede. Endereçamento: conexão entre servidor e cliente é feita com o auxílio de "sockets", ou seja, estruturas que auxiliam no endereçamento, compostas por IP e porta de comunicação utilizada. Os sockets podem ser abertos entre pontos pertencentes à mesma rede e que utilizam o mesmo protocolo. Confiabilidade: controle de fluxo, erros, congestionamento e qualidade de serviço. Os principais protocolos da camada de transporte são TCP e UDP. A seguir, são apresentadas algumas diferenças entre eles. 2.9.2.1 Protocolo TCP versus UDP Transmission Control Protocol é um protocolo voltado à conexão, ou seja, requer um processo de " handshaking" (ou confirmação de recebimento) para as comunicações ponto-a-ponto. Uma vez estabelecida a conexão, os dados podem ser transmitidos de maneira bidirecional entre os pontos. Principais características: Confiável – TCP controla o processo de confirmação de recebimento, retransmissão e timeout, além do controle de congestionamento. Ordenada – Garante que múltiplas mensagens transmitidas em sequência cheguem no receptor na ordem correta. Pesada – TCP requer três pacotes para inicar uma comunicação socket. User Datagram Protocol é um protocolo de comunicação baseado na simplicidade de envio da mensagem. Não é dedicada à comunicação ponto-a-ponto, portanto não é voltado à conexão. A comunicação é estabelecida ao se transmitir informação para o destinatário (unidirecional) sem sem verificar o estado do mesmo (se está em condições de receber). Um benefício do UDP sobre TCP é a aplicação VoIP (voice over internet protocol), pois preocupa-se mais em reduzir o atraso no envio do dado que com a precisão com a qual os mesmos chegam no receptor. Principais caracterísitcas: Não confiável – Quando a mensagem é enviada, não tem como saber se ela realmente chegou no destino. 29 Não ordenada– Não há garantia de que mensagens enviadas em sequência cheguem na mesma ordem. Leve – Não há ordenação de mensagens, preocupação com a confirmação de recebimento. Não há controle de congestionamento –a UDP não realiza esse controle, podendo gerar colapsos de congestionamento, a não ser que esse controle seja feito na camada de Aplicação. 2.9.3 Camada de Rede A camada de rede recebe os serviços providos da camada de enlace e presta serviços à camada de transporte. As principais finalidades da Camada de Rede são: Interconexão: prover conexão lógica entre diversas redes físicas heterogêneas. Endereçamento: prover, de forma única, a identificação de um host na rede à qual faz parte Roteamento: escolher a rota por onde os pacotes irão trafegar a fim de que cheguem ao destino. Encapsulamento: encapsular pacotes recebidos de camadas superiores em um datagrama. Fragmentação: permite que pacotes viajem por diferentes redes, independente da tecnologia utilizada. 2.9.3.1 Protocolo IP O IP(Internet Protocol) é um protocolo da camada de redes responsável pelo encaminhamento de dados em uma rede, fornecendo o endereço virtual do host na rede. Presta todos os serviços dessa camada para as camadas superiores. É o protocolo base da internet, sendo utilizado por todos os serviços de aplicação. 2.10 GPS GPS (Global Positioning System) é um sistema de posicionamento global baseado na navegação por satélite, que fornece a um aparelho receptor móvel a posição do mesmo e o horário que está sendo realizada a medida, assim como outras informações complementares. Pode ser feita sob qualquer condição atmosférica, a qualquer momento, desde que o receptor se encontre no campo de visão de quatro satélites GPS. Existem diversos padrões de recebimento 2.10.1 NMEA formato RMC NMEA (National Marine Electronics Association) é um padrão de recebimento de dados de posição em tempo real. A NMEA possui uma versão própria para recebimento de PVT (position, velocity, time) proveniente de GPS, a chamada RMC (Recommender Minimum). A maior parte dos softwares que fazem interface com GPS esperam que os dados recebidos estejam no formato NMEA RMC. Esse formato apresenta-se da seguinte maneira: $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A Onde: 30 RMC 123519 A 4807.038,N 01131.000,E 022.4 084.4 230394 003.1,W *6A " Recommended Minimum sentence C" Dado colhido às 12:35:19 UTC Status A=ativo ou V=Void. Latitude 48 graus 07.038' N Longitude 11 graus 31.000' E Velocidade em relação à terra em nós Direção de movimento em graus Data - 23 de Março de 1994 Variação Magnética Checksum, sempre inicia com * Esse foi o formato adotado para a simulação do projeto. 2.11 EasyPIC5 Figura 13: EasyPIC5 EasyPIC5 é uma placa de desenvolvimento da MikroElektronica para diversos microcontroladores PIC. Permite a engenheiros e estudantes testar facilmente e explorar a capacidade dos microcontroladores PIC. Também possibilita que seja interfaceado com diversos periféricos e circuitos externos. Essa placa permite ao usuário se concentrar no desenvolvimento softwares, pois já provê grande parte de hardware necessário para a realização de projetos. Para esse 31 trabalho, foi utilizada a saída serial RS232, a entrada USB (para alimentação e gravação do código implementado no PIC), os botões, LEDs e LCD. 3. Descrição dos projetos 3.1 Casa Inteligente O projeto tem como objetivo permitir que o usuário envie comandos a dispositivos e receba dados de um alarme remotamente. O usuário envia os comandos por meio de um servidor TCP, que possui IP fixo, sendo os mesmos recebidos por um modem. Esse, por sua vez, se conecta à rede GPRS através do chip de uma empresa de telefonia, obtendo IP dinâmico. Apesar de o modem também poder trabalhar com UDP, optou-se por realizar a comunicação com TCP porque esse protocolo é voltado para conexão e é confiável, ou seja, fornece maior segurança de que os dados serão efetivamente transmitidos, com menores ocorrências de erros; o UDP é mais útil quando é preferível obter os dados em menor tempo, mesmo que haja perdas, como no caso de transferência de voz. O modem é conectado a um microcontrolador PIC via rede RS232. O PIC processa e repassa os comandos aos respectivos dispositivos pela rede RS485. As ações testadas nesse projeto são: acender ou apagar uma lâmpada remotamente, controlar a luminosidade de um ambiente e acionar um alarme, informando o seu acionamento ao usuário. 3.2 Rastreamento de veículo O projeto consiste na simulação do rastreamento de um veículo frigorífico. É constituído pelo usuário, que possui acesso direto a uma interface de servidor TCP, com IP fixo, e pode enviar comandos ao sistema; pelo servidor FTP, onde são salvos arquivos no formato ".txt" com os estados do sistema em uma determinada data e horário, e ao qual o usuário tem acesso; e pelo veículo propriamente dito, composto por circuito com microcontrolador e modem. O usuário do sistema pode ser, por exemplo, o proprietário do veículo e deseja monitorar como o motorista, seu funcionário, está conduzindo o frigorífico. É feita a simulação da leitura do estado de sete sensores (capô do motor, porta da carga, tampa do combustível, ignição, temperatura da carga baixa, temperatura da carga alta e nível de combustível baixo) e da leitura de dados provenientes de um GPS seguindo o formato NMA RMC. Esses dados são salvos na página do servidor por meio do protocolo FTP, sendo a conexão realizada pela rede GPRS, de maneira semelhante à descrita no projeto da casa inteligente. Em seguida, é feita a conexão com o usuário (abertura de um socket TCP) para verificar se há comandos a serem enviados pelo mesmo, como acionar o bloqueador (em caso de roubo, por exemplo), desativar o bloqueador e enviar mensagens (pedir para o motorista reduzir a velocidade, por exemplo, sendo esse valor um dado do GPS). O período que o sistema permanece em "escuta" é limitado a no máximo 3 minutos, pois é custoso para a operadora de telefonia manter uma conexão. Após o fechamento dessa conexão, o processo se reinicia continuamente (leitura dos sensores e GPS, registro desses valores no servidor e posterior escuta de algum comando proveniente do usuário). Optou-se por utilizar o protocolo FTP pois o mesmo permite que arquivos sejam salvos em um servidor e possam ser acessados a qualquer instante, não apenas no momento em que a conexão está ocorrendo. Dessa maneira, o usuário do sistema pode verificar o status de seu caminhão quando convier. Porém, para o envio de comandos é necessário que ambos estejam conectados, pois desejase que os comandos sejam realizados naquele instante. 32 A ideia inicial era utilizar também o protocolo SMTP, visando enviar os dados do sistema ao email do usuário além de salvar no servidor FTP. Porém, para realizar a abertura de uma comunicação SMTP é preciso passar por um processo de autenticação que é consideravelmente complexo (TLS). Alguns modelos de modem mais modernos já possuem esse processo embarcado, porém esse não é o caso do modem utilizado no projeto. Diante dessa dificuldade, optou-se por utilizar apenas o FTP. 4. Implementação A implementação da primeira parte do projeto, a da casa inteligente, consistiu do desenvolvimento do hardware, do software e da integração entre eles. A segunda parte, simulação do sistema de rastreamento de veículo, consistiu da elaboração do software e integração desse com a placa de desenvolvimento EasyPIC5, da MikroElektronica. 4.1 Casa Inteligente: 4.1.1 Hardware: O hardware foi implementado numa estrutura mestre – escravo, em que o microcontrolador mestre recebe os comandos do modem e os transmite aos escravos (PIC 16F628). O pinos rx e tx do conector DB9 do modem (Figura 14) são ligados ao MAX232 para que seja feita a conversão de níveis de tensão RS232/TTL do PIC. Cada um dos microcontroladores possui um MAX485 conectado a si e o MAX485 do mestre se comunica com cada MAX485 ligado a um escravo. Cada escravo está ligado a um dispositivo a ser controlado. As atividades remotamente executadas são: acender e apagar uma lâmpada, controlar a luminosidade de uma lâmpada e acionar um alarme. O projeto do hardware começou com um esboço do circuito do escravo, conforme mostra a Figura 15. Figura 14 - Pinos do conector DB9 Fonte : (Messias, 2006) 33 Figura 15 - Projeto do circuito do PIC16F628 mestre Inicialmente, o circuito foi montado em protoboard (Figura 16). Depois, foram confeccionadas placas de circuito impresso, para garantir maior mobilidade e menor interferência de ruídos ao projeto. Para a confecção das placas de circuito impresso na fresadora para circuitos Lpkf (Figura 17), foram feitos os esquemáticos dos circuitos do mestre e dos escravos e, posteriormente, o layout, no software EAGLE 6.4.0. Figura 16 - Montagem do circuito em protoboard 34 Figura 17 - Fresadora Lpkf O circuito da Figura 18 realiza a conversão de níveis de tensões para que diferentes dispositivos possam se comunicar entre si. Converte +12V em zero (GND) e -12V em +5V. O modem que estará conectado à entrada DB9 entende -12V como nível lógico 1 e +12V como nível lógico zero. O microcontrolador entende +5V como nível lógico 1, e zero como nível lógico zero. Figura 18 - Esquemático do circuito do MAX232 A Figura 19 mostra a montagem da comunicação do modem com o PIC 16F628, composta pela placa do MAX232, modem, placa do PIC 16F628 e fonte de 12V para o modem. O intuito desse circuito é de fazer a comunicação serial do microcontrolador mestre com modem, a fim de que o mesmo se conecte com o servidor TCP. 35 Figura 19: Comunicação modem/ PIC 4.1.1.1 Dispositivos controlados Figura 20 - Esquemático do circuito do PIC 16F628 36 A Figura 20 mostra o esquemático do PIC16F628, utilizado para os microcontroladores escravos e pelo mestre. Os microcontroladores escravos serão ligados ao mestre através da rede RS485 e também aos dispositivos controlados. Foram necessárias três unidades desta placa, uma para o mestre e duas para os dispositivos, com exceção do LDR, que utilizou o PIC 16F877A. 4.1.1.1.1 Acionamento do alarme O circuito funciona da seguinte forma: quando a porta da residência é aberta, o reed switch aproxima-se de um campo magnético produzido por um imã fazendo com que suas lâminas entrem em contato, fechando o circuito. O acionamento é feito por uma chave de pull-up. O microcontrolador monitora (realiza um polling) a tensão na porta em que está conectado o reed switch. Enquanto o reed switch permanece aberto, a tensão verificada é aproximadamente 5V (nível alto) e quando ocorre o fechamento do dispositivo, esta tensão cai a zero (nível baixo). Nesse momento, o alarme é acionado, ou seja, o microcontrolador disponibiliza nível alto em sua saída, a qual se encontra conectada a um transistor. A corrente de base aumenta, assim como a de coletor, e a tensão entre coletor e base torna-se negativa, o que indica a saturação do transistor. Consequentemente, o alto falante é acionado. Figura 21 - Esquemático do circuito do alarme A Figura 22 mostra a placa do PIC 16F628, ligada à do reed switch pela rede RS485. O buzzer está conectado à placa do reed switch. 37 Figura 22: Montagem do circuito do alarme 4.1.1.1.2 Acende / apaga lâmpada O circuito funciona da seguinte forma: quando o microcontrolador disponibiliza nível alto na porta em que o transistor está conectado, este é saturado, assim o relé fecha devido à indução de um campo magnético que provoca a atração de sua chave. Existe a necessidade do diodo (diodo de roda livre) para que haja um caminho de condução da corrente do relé quando o transistor parar de conduzir, pois o relé tem caráter indutivo nos terminais da bobina. Figura 23 - Esquemático do circuito da lâmpada A Figura 24 mostra a placa do PIC 16F628, conectada à do reed switch pela rede RS485. A lâmpada está ligada à placa do relé. 38 Figura 24: Circuito de acionamento da lâmpada 4.1.1.1.3 Controle de luminosidade No circuito da Figura 25, o microcontrolador, através da expansão, lê o nível de tensão em uma de suas portas analógicas e, de acordo com esse nível, muda o Duty Cicle da onda quadrada gerada em sua saída PWM. A mudança no nível de tensão é proporcionada por um simples divisor de tensão, pois o LDR altera o valor de sua resistência de acordo com a luminosidade incidente sobre ele. Assim, pode-se realizar a dimerização de uma lâmpada DC de baixa tensão, por exemplo. 39 Figura 25 - Esquemático do circuito do LDR A Figura 26 mostra o esquemático do PIC escravo que envia o comando ao circuito do LDR. Esse foi o único escravo a utilizar PIC16F877A. Figura 26 - Esquemático do PIC 16F877A escravo 40 4.1.2 Software 4.1.2.1 Comunicação cliente/servidor O primeiro teste de comunicação (software HDC Terminal) ocorreu entre dois modems, cada um ligado a um computador. O servidor tem um IP fixo, podendo ser acessado em qualquer lugar do mundo, e o cliente (aquele que fica na casa remotamente controlada) se conecta à rede GPRS, provida por empresa de telefonia celular através do chip inserido no modem. A figura abaixo mostra a configuração da conexão no modo cliente, em que são configurados o tipo de conexão (serial), a porta COM e a velocidade de transferência de bits. Figura 27 - Configuração da conexão cliente Após a conexão, são preenchidos os campos “APN”, “User Id” e “Senha”, de acordo com o chip da operadora inserido no modem. É informado também o IP do servidor (fixo), conforme mostra a figura abaixo. 41 Figura 28 - Conexão cliente A conexão na rede GPRS (Figura 29) ocorreu através dos seguintes comandos: AT#SGACT: ativação do contexto PDP (Packet Data Protocol) AT&K0: sem controle de fluxo no RS232 AT+CGDCONT: configurações do contexto PDP AT#SCFG: configurações do socket A seguir, o programa fornece o IP que o dispositivo possui na rede GPRS. 42 Figura 29 - Conexão na rede GPRS Após a conexão na rede GPRS, são feitas as configurações do modo servidor. O tipo de conexão é TCP e a porta escolhida foi “1234”. Em seguida, conecta-se o servidor. 43 Figura 30 - Configuração da conexão servidor O próximo passo é a abertura do socket no modo cliente através do seguinte comando: AT#SD: abre uma conexão remota via socket Quando o socket é efetivamente aberto, o programa imprime “CONNECT” na tela do cliente. Com isso, o que for escrito no campo “Comando” do cliente, aparece na tela do servidor e vice-versa, pois a comunicação é bidirecional. Assim, quando o cliente enviar um comando de acender uma lâmpada, por exemplo, o servidor poderá responder com uma mensagem de confirmação ou erro. 44 Figura 31 - Socket full duplex 4.1.2.2 Comunicação modem/ PIC Após o teste de funcionamento do Modem, prosseguiu-se para a conexão do mesmo ao PIC, de forma que o envio desses comandos para estabelecer a comunicação seja realizada pelo microcontrolador, e não mais por um usuário. O código foi desenvolvido no software "MikroC for PIC". Como as portas de comunicação serial RX/TX do PIC já estavam sendo utilizadas para a aplicação do protocolo Modbus, e o PIC utilizado possui apenas um par RX/TX, foi necessário utilizar duas outras portas I/O para transmissão e recepção de dados via RS232. O software em questão possui uma biblioteca "SoftUART" que contém comandos para tornar isso viável. Desses comandos, foi utilizado apenas o "Soft_UART_Init", que inicializa as portas I/O como TX/RX a uma dada baud rate, e o" Soft_UART_Write ", que transmite o caractere desejado. Para o projeto, foi escolhidas as portas RA2 e RA3 como RX e TX, respectivamente. Existe também uma função "Soft_UART_Read ", porém a mesma não estava realizando a recepção dos caracteres de maneira devida, acusando erro de stop bit. Diante disso, foi criada uma rotina própria de recepção (Figura 32). Inicialmente, é feito um while de forma que o programa só dê prosseguimento caso haja o start bit, que deixa a porta RA2 em baixa. Detectado o start bit, é aguardado um tempo de meio bit para que, a partir de então, os bits relativos ao dado fossem lidos no meio do pulso, e não nas bordas, a fim de evitar erro de processamento. A identificação dos bits ocorre da seguinte maneira: para guardar o valor do bit[i], onde i varia de 0 a 7, é feito, primeiramente, uma máscara para o bit 3 da porta A, relativo à saída RA2. O bit resultante é deslocado dentro do byte que recebeu o valor da máscara em RA2, de forma que ocupe a posição "i". Esse valor fica retido em "BYTE", que, após guardar o valor dos bits de 0 a 7, possui o dado relativo ao caractere como um todo. Após a recepção dos bits, é enviado o stop bit, devendo o mesmo estar em nível alto. O valor do período do bit é calculado a partir da taxa de transmissão. No caso, a baud rate é de 9600 bits/s, o que implica 104 µs por bit. 45 Figura 32 - Rotina de recepção de caracteres A Figura 33 mostra um exemplo de caractere recebido pelo PIC na comunicação serial. O gráfico foi medido pelo osciloscópio na porta RA2 do PIC. A escala temporal é de 100 µs, portanto há um bit por quadro. Percebe-se, no início, a mudança do nível alto (5.40V) para nível baixo (1V), caracterizando o start bit. A partir de então, tem-se a sequência 11010000, seguida por um 1 (stop bit), pois nessa transmissão optou-se por não trabalhar com bit de paridade. Os bits são transmitidos do menos significativo para o mais significativo, ou seja, esse caractere é, em binário, 00001011. Consultando-se a tabela ASCII, tem-se que esse byte se refere ao caractere 'VT', responsável pelo salto para a próxima linha. 46 Figura 33 - Caractere 'VT' A Figura 34 mostra a parte do código relativa ao envio de comandos ao Modem através da função Soft_UART_Write. Essa função só permite enviar caractere por caractere. Os caracteres '\n' e '\r' são necessários para que o Modem reconheça como término do envio de um comando. O "for" realiza a leitura dos bytes recebidos pelo PIC, sendo necessário ler apenas os três primeiros caracteres, que são '\n','\r' e o primeiro caractere do tipo de resposta que o modem envia ao PIC. Por exemplo, caso tenha dado erro, o Modem responde: '\n', \r' e 'ERROR'. Caso não haja erro, o Modem responde '\n', \r' e 'OK'. Como o desejado é 'OK', é feito um loop em que, caso o terceiro bit lido não seja 'O', o PIC envia o comando novamente ao Modem, até responder como resposta 'OK', para, então, dar prosseguimento nos demais comandos. É importante ressaltar que inicialmente deve ser desabilitada a função de Eco do Modem, responsável por repetir o comando recebido e apenas após isso retornar a resposta. O eco dificulta a leitura do caractere, em especial porque o Modem inicia o retorno do comando antes do término do envio desse por parte do PIC. para tal, deve ser enviado o comando "ATE". 47 Figura 34 - Envio de comandos ao Modem O código utiliza os mesmos comandos do teste feito com o Modem descrito inicialmente para estabelecimento da conexão. Portanto, foi dividido em oito partes, das quais sete são para o envio de cada comando especificado, e a oitava é para a comunicação bidirecional (Figura 35). No código, foi feito um teste para verificar se a comunicação ocorre em ambos os sentidos. Caso o servidor envie '1', o PIC deveria retornar 'LED ACESO', e caso envie '2' retorna 'LED APAGADO'. Esse teste de confirmação pode facilmente se tornar um comando. Por exemplo, caso o servidor envie '1', o circuito pode ativar, através do ModBus, um dos dispositivos, além de retornar a confirmação. Após realização de testes, percebeu-se que a comunicação ocorreu com sucesso. O código completo encontra-se no Anexo. 48 Figura 35 - Comunicação bidirecional 4.2 Sistema de rastreamento de veículo 4.2.1 Hardware O hardware do projeto foi composto pelo kit de desenvolvimento EasyPIC5 e o modem GSM/GPRS GM862. Os componentes do kit utilizados foram: painel de LCD, botões RC0 a RC3, LEDs RD0 a RD7, saída para comunicação serial e saída USB por onde é realizada a alimentação do sistema e gravação no PIC. A funcionalidade dos LEDs e botões encontra-se na Tabela 3. O LCD foi utilizado para permitir o acompanhamento do envio de comandos AT e as respectivas respostas do modem, permitindo detecção de falhas, conforme a Figura 36. Os comandos enviados aparecem na primeira linha, enquanto que o primeiro caractere da resposta encontra-se na segunda linha. "O" significa "OK". 49 Figura 36: Display de LCD acompanhando o envio dos comandos AT Tabela 3: Funcionalidade dos botões e LEDs Botão RC0 Botão RC1 Botão RC2 Botão RC3 LED RD0 LED RD1 LED RD2 LED RD3 LED RD4 LED RD5 LED RD6 LED RD7 - Acende/ Apaga o LED RD0 - Simula a atuação sobre a porta do frigorífico (Abrir/ Fechar) - Acende/ Apaga o LED RD1 - Simula a atuação sobre o capô do motor (Abrir/ Fechar) - Acende/ Apaga o LED RD2 - Simula a atuação sobre a tampa do combustível (Abrir/ Fechar) - Acende/ Apaga o LED RD3 - Simula a atuação sobre a ignição(ligando/ desligando) Simula um sensor na porta do frigorífico (Ligado = Aberta, Desligado = Fechada) Simula um sensor no capô do motor (Ligado = Aberto, Desligado = Fechado) Simula um sensor na tampa do combustível (Ligado = Aberta, Desligado = Fechada) Simula um sensor no sistema de ignição (Ligado = Motor acionado, Desligado = Motor desligado) Simula um sensor no controle da temperatura (Ligado = Temperatura baixa, Desligado = Temperatura acima da mínima) Simula um sensor no controle da temperatura (Ligado = Temperatura alta, Desligado = Temperatura abaixo da máxima) Simula um sensor no controle do nível de combustível (Ligado = Combustível acabando, Desligado = Nível normal) Simula o sistema de bloqueio do veículo (Ligado = Ativado, 50 Desligado = Desativado) 4.2.2 Software 4.2.2.1 Testes realizados com SMTP Inicialmente, foi realizado o teste do uso do protocolo com o modem conectado a um computador (porta COM). O software utilizado foi o HyperTerminal. Os comandos para conexão na rede GPRS são os mesmos apresentados na Figura 29. Após a obtensão do IP, envia-se o comando AT#SD=1,0,587,"gmail.com.br",0. A porta "587" é a utilizada pelo gmail, e exige autenticação por meio de TLS. Cabe ressaltar que a porta "25" encontra-se bloqueada pela maioria dos servidores SMTP, visto que, por não exigir autenticação, acabou se tornando um canal para envio de spans e vírus. Após receber o "CONNECT" do modem, tudo o que é escrito é recebido pelo servidor. É importante que o a opção de eco esteja ativada, pois ele torna possível ver o que está sendo escrito para o servidor (lembrando que par acionar o eco basta usar o comando "ATE=1" antes de iniciar a conexão ). Figura 37: Conexão com o servidor SMTP "gmail" Iniciada a comunicação com o servidor, deve ser seguido um procedimento em etapas para poder efetivamente enviar o email. Os números do início da mensagem do servidor indicam o status da operação (por exemplo: se o comando foi recebido e realizado com sucesso, se houve erro, se o servidor está em condições de estabelecer conexão). Primeiramente, o servidor retorna a mensagem "220", indicando que está em condições de iniciar o serviço. Deve-se responder "ehlo", para que o servidor identifique com quem está operando. Em seguida, responde com "250" (ação concluída com 51 sucesso) e solicita que inicie o "TLS", portanto deve-se responder com "starttls". A partir desse ponto, seria necessário realizar um procedimento complexo de autenticação. Seria necessário bastante tempo de pesquisa para compreender o processo, já que o modem utilizado não possui esse sistema pronto. Por esse motivo, decidiu-se não trabalhar mais com o SMTP. A critério de conhecimento (ou caso estivesse disponível um modem com esse processo de TLS pronto), foi feito um exemplo da conexão SMTP por meio de Telnet (Figura 38). Figura 38: Conexão SMTP com o "gmail" bem sucedida por Telnet Na Figura 38, nota-se que o servidor não solicitou a realização do processo de TLS (aparece "AUTH LOGIN PLAIN (...) PLAIN CLIENTTOKEN" no lugar de "STARTTLS"), pois já obteve a resposta desse procedimento realizado pelo Telnet. Em seguida, deve-se enviar "auth login", a fim de solicitar o início da identificação do login e senha. O servidor ,então, solicita o "username" com o comando na base 64 "WXNIcm5hbWU6". Deve-se responder o nome de usuário também na base 64. Em seguida, solicita a senha ("UGFzc3dvcmQ6", em base 64). Responde-se, então, com a senha na base 64. Após a confirmação da senha e do usuário, o servidor envia "Accepted". Em seguida, seguem-se os seguintes comandos: "mail from: <email da pessoa que envia>", aguarda-se o "OK" do servidor; "rcpt to: <email do destinatário>", aguarda-se o "OK" e "Go ahead"; escreve-se "subject: <título do email>", aperta "ENTER" no teclado e digita-se o corpo da mensagem; o término da mensagem é indicado por um ponto (".") em uma linha abaixo da última com conteúdo. Após o envio correto, indicado por "OK" do servidor, encerra-se a conexão com o comando "quit". Na 52 Figura 38 os campos relativos ao envio da senha e do nome de usuário foram apagados da figura propositalmente por razões de segurança . 4.2.2.2 Teste do funcionamento do protocolo FTP Primeiramente foi feito o teste da conexão com o servidor FTP com o modem ligado ao computador (porta serial), pois é mais fácil de ter o controle sobre os comandos enviados e recebidos pelo modem (aparecem na tela do programa terminal, em vez de LCD, por exemplo). Foi utilizada a ferramenta de comunicação serial USART Terminal do software MikroC PRO for PIC. Percebeu-se que é importante enviar ao modem os comandos que especificam a taxa de transferência, tipo de transferência de bytes e controle de fluxo nulo, pois a detecção automática desses parâmetros por parte do modem não funcionou corretamente em alguns testes (não recebia o "CONNECT" do servidor). Os comandos para especificar esses parâmetros são: AT+IPR=9600: especifica a taxa de transferência AT+ICF=3: 8 bits de dados, 1 stop bit e 1 start bit AT+FLO=0,0: sem controle de fluxo Para estabelecer a conexão com o servidor FTP, deve-se inicialmente receber um IP da rede GPRS (fornecido pela operadora telefônica), processo esse já realizado no projeto anterior. Em seguida, especifica-se o tempo de "timeout" da conexão e busca-se a abertura da conexão: AT#FTPTO=1000; AT#FTPOPEN="<endereço do host>","<nome de usuário>","<senha>",0 Iniciada a conexão, é possível pedir para listar os arquivos presentes no servidor, deletar arquivos, mudar de diretório e inserir arquivos no mesmo, mas para o projeto somente serão usados os comandos de mudança de diretório e inserção de arquivos: AT#FTPLIST AT#FTPDELE=""<Nome do arquivo que se deseja deletar>" AT#FTPCWD = "<Nome do diretório que se deseja acessar>" AT#FTPPUT = "<Nome do arquivo que vou incluir>" Após o envio do comando "FTPPUT", o servidor responde "CONNECT". A partir de então, tudo o que é escrito é salvo nesse arquivo até que seja escrita a sequência de escape "+++" (é normal acontecer de o servidor não entender essa sequência de primeira, portanto deve-se enviá-la até receber "NO CARRIER" como resposta do servidor). Para encerrar a conexão, basta enviar o seguinte comando: AT#FTPCLOSE O software utilizado para acessar o servidor e observar os arquivos presentes foi o FileZilla Client. 53 4.2.2.3 Elaboração do código Após se compreender os comandos e sequenciamento para realizar a conexão com o servidor FTP, foi realizada a elaboração do código do programa. 4.2.2.3.1 Funções Inicialmente foram criadas funções de auxílio na recepção e transferência de caracteres. Essas são as funções mais importantes do programa, visto que o projeto consiste em basicamente tráfego de dados. Em seguida, foram feitas funções auxiliares (codetxt_to_ramtxt) e de processamento de dados para fins específicos (leitura_botoes e gps). Figura 39: Função TX para transferência de caracteres - Função TX: A função TX faz a transmissão de uma string byte a byte. A flag "TRMT_BIT" indica quando o buffer do registrador de transmissão do PIC encontra-se vazio, o que acontece quando não há caractere sendo transmitido. Estando o buffer vazio, escreve-se no registrador TXREG o próximo caractere que se deseja transmitir. Prossegue-se da mesma maneira até que todos os caracteres da string sejam enviados (inclusive o de terminação 'NULL'). A função "strlen", presente na biblioteca de strings, calcula o comprimento da string, sem contar o 'NULL'. Cabe ressaltar que todos os comandos enviados ao modem devem ser terminados por "\r\n", pois é a maneira que o mesmo usa para reconhecer o término do pedido do comando. - Função RX: A função RX é a responsável por realizar a recepção de caracteres. Já havia sido observado através da ferramenta USART Terminal do MikroCPro que o modem inicia e termina a resposta a um comando com ambos os caracteres '\r' e '\n', conforme o exemplo abaixo: PIC: AT\r\n MODEM: \r\nOK\r\n O conteúdo da resposta encontra-se entre essa sequência. Para captar apenas esse conteúdo, dividiu-se a função em duas partes: a primeira (Figura 40) lê todos os caracteres enviados até o primeiro '\n' (10, em ASCII); a segunda (Figura 41) salva o valor do primeiro caractere efetivo em uma variável auxiliar (aux1), e continua recebendo os caracteres até o '\r'(13, em ASCII), que representa o término da mensagem. A primeira parte é importante para o caso em que o sistema está com eco, pois antes de retornar '\r''\n' o modem ecoa a mensagem enviada, ou seja, repete o que foi 54 passado para ele a fim de ser transmitido. Sem essa primeira parte, a repetição poderia ser confundida com uma resposta do modem. Além disso, permite que o primeiro caractere recebido na segunda parte seja de conteúdo, e não '\r\n'. Para a recepção foram utilizadas funções próprias do compilador. A UART1_Data_Ready verifica se o registrador de recepção está pronto para receber o caractere e se há dados a serem recebidos, e a UART1_Read salva o caractere em uma variável do programa. Nesse caso não houve a necessidade de usar Soft_UART, como ocorreu no projeto da casa inteligente, pois faz uso de apenas uma saída serial. A variável auxiliar aux1 será útil para o microcontrolador identificar a resposta do modem. Não é necessário gravar o restante da resposta em uma string, pois as iniciais das mesmas já as diferenciam (podem ser CONNECT, NO CARRIER, OK, ERROR, #SGAT(...) ). Isso evita o desperdício de memória RAM. Foi criado um sistema de contagem dentro da condição de espera de caractere (loop while(!UART1_Data_Ready())). A finalidade disso é evitar que o programa fique travado aguardando resposta do modem, de forma que após aproximadamente sete segundos o PIC saia desse loop e envie o comando novamente. Figura 40: Primeira parte da função RX 55 Figura 41: Segunda parte da função RX - Função codetxt_to_ramtxt: Essa função tem por finalidade receber uma string pré-definida e copiar caractere por caractere para uma outra. Funciona de maneira semelhante à função srtcpy. Por exemplo: o comando texto = codetxt_to_ramtxt("TESTE") faz com que texto[0] = 'T', texto[1] = 'E', texto[2] = 'S', texto[3] = 'T', texto[4] = 'E', texto[5] = NULL. Também teve grande importância no projeto, pois evitou a necessidade de definir uma string para cada comando, economizando consideravelmente memória RAM. Figura 42: Função codetxt_to_ramtxt - Função gps: 56 Simula a recepção de uma string de um GPS no formato NMA RMC. Realiza a separação dos dados em strings Data, direção, velocidade. Essa separação é feita da seguinte maneira: como o formato da string original é conhecido, contou-se o número de vírgulas até o dado desejado e copiaram-se os caracteres presentes a partir dessa vírgula até a próxima (Figura 43). A contagem das vírgulas é feita pela variável k. A cada contagem de vírgula, a variável j (posição dentro da string principal) também é incrementada, pois deseja-se apenas o dado que se inicia após essa vírgula. É importante fazer o último elemento da string de cada dado igual a 'NULL', pois esse caractere representa o final da string quando é realizada a transmissão da mesma. Os dados referentes à string Data são inicialmente salvos no formato hora/minuto/segundo/dia/mês/ano. Porém, é interessante deixar no formato ano/mês/data/hora/minuto/segundo, pois essa string será utilizada posteriormente para dar o nome do arquivo ".txt" que será salvo no servidor FTP com os status do veículo, e essa maneira facilita a ordenação dos mesmos. Portanto, a inversão da ordem foi feita conforme a Figura 44. Figura 43: Separação das strings de dados na função GPS 57 Figura 44: Reordenação dos caracteres de Data - Função botões: Essa função tem por finalidade representar nos LEDs RA0 a RA3 os estados dos botões RC0 a RC3, considerando que o estado do LED só é alterado nas bordas de subida dos botões. Ou seja, apertando-se o botão acende-se o LED, permanecendo nesse estado até que o botão seja apertado novamente, o que o fará apagar. Figura 45: Parte da função "leitura_botoes" 58 Na Figura 45, percebe-se que foram criadas duas variáveis para cada botão, uma relativa ao estado anterior e outra ao estado atual. Isso é necessário para poder verificar se houve alteração de estado. Caso os valores sejam distintos, é aguardado 1ms e é feita a comparação novamente. A inserção desse delay é importante para evitar o efeito de "bouncing", ou seja, detecção dos ruídos instantâneos produzidos ao apertar um botão. Caso após 1ms seja confirmada a alteração, o valor anterior assume o valor atual. Dentro da situação de alteração de estado do botão, caso o novo valor seja 1, o LED muda de estado. Esse processo descreve a detecção de pico de subida. Embora a figura só mostre até o botão/LED1, o mesmo código foi usado para os demais botões/LEDs. Figura 46: Uso do contador auxiliar na função leitura_botoes Também foi utilizado um contador nessa função (Figura 46), pois a ideia é fazer com que a leitura dos status dos sensores do sistema seja feita por um dado período (em torno de 10s), a fim de, em seguida, poder ser feita a atualização no servidor. 4.2.2.3.2 Considerações sobre o código Inicialmente, foram definidas algumas variáveis globais, pois as mesmas seriam utilizadas em mais de um ponto ao longo do programa, além de muitas vezes poderem ser reutilizadas, tendo o cuidado de não prejudicar o funcionamento em outras partes. Na função main, atentou-se primeiramente para a especificação de alguns registradores e da baud rate utilizada, a fim de obter coerência no funcionamento do sistema (Figura 47). 59 Figura 47: Especificação de registradores e baud rate Em seguida, iniciou-se um loop infinito, dando a ideia de continuidade do sistema. O loop é iniciado pela sequência de comandos que definem a desativação do eco, baud rate, formato do caractere (8 bits de dados 1 stop bit, 1 start bit), sem controle de fluxo e demais comandos para conexão na rede GPRS (Figura 29) já apresentados anteriormente. Figura 48: Exemplo de envio de comando para o modem e análise da resposta A Figura 48 mostra como é feito o envio de comandos e análise da resposta. Primeiro é definida a string que deve ser enviada, sendo essa salva na variável global "texto" através da função codtxt_to_ramtxt. Depois, dentro do loop é feito o envio dessa string caractere por caractere e posterior recepção da resposta do modem, sendo guardada na variável aux1 apenas o primeiro caractere, conforme mencionado anteriormente. Caso a variável recebida seja "O", relativo a "OK", dá-se prosseguimento com as demais etapas. Caso seja distinta, retorna ao primeiro passo do loop. 60 Lembrando que com o contador na função RX, caso seja passado um tempo sem resposta a função retorna aux1=NULL, portanto também retornando ao primeiro passo do loop. A partir da obtenção de IP, são enviados os comandos relativos à conexão com o servidor FTP. Para tal, seguem-se os passos descritos no teste inicial referido no item 4.2.2.2. No comando AT#FTPPUT, o nome do arquivo a ser salvo é dado pela string com a data ordenada Data. Para tal, foi utilizada a função strcat , que serve para concatenar strings, de forma que o texto enviado seja: AT#FTPPUT="<Data>.txt" (Figura 49) Figura 49: Nomeação do arquivo salvo no servidor FTP Após o recebimento do "CONNECT", tudo que é escrito é salvo no arquivo, até que seja enviada a sequência "+++". Para enviar os dados desse arquivo, é feita a concatenação dos dados do GPS com os estados dos sensores, de forma que o conteúdo do arquivo fique da seguinte maneira: <estados dos três primeiros LEDs, em 1 ou 0>;<estado do quarto LED, 1 ou 0 >;<"AT" caso o LED RD5 esteja aceso, ou "BT", caso o LED RD4 esteja aceso>;<"BN", caso RD6 esteja aceso, ou "NN", caso esteja apagado>;<Data>;<velocidade>;<direcão>. "AT" significa alta temperatura, "BT" baixa temperatura, "NN" nível normal de combustível, "NB" nível baixo de combustível. Por exemplo, em uma situação em que os LEDs acesos eram RD0, RD2, RD4 e a string do GPS era: " $GPRMC,173020,4807.038,N,01131.000,E,022.4,211013,W*6A ", tem-se o seguinte formato no arquivo salvo: 131021173020.txt: "101;0;BT;NN; 131021173020;022.4;NE" Para detectar a sequência de escape, foi feito um processo semelhante ao de envio de comando (Figura 50). É importante fazer esse teste de recebimento do "NO CARRIER" pois muitas vezes o servidor não consegue identificar a sequência "+++" como de escape, sendo preciso reenviála. Percebe-se novamente a importância do contador na função RX, pois como o servidor não identificou o "+++" como escape, e sim como informação a mais a ser escrita no arquivo, não retorna nada. Ou seja, se não houvesse um contador para sair do loop de espera de caracteres após algum tempo sem resposta, o programa ficaria travado. 61 Figura 50: Envio da sequência de escape "+++" Após o arquivo ser salvo com sucesso, fecha-se a conexão FTP. Em seguida, é feita a abertura de um socket TCP com o servidor de IP fixo, por onde o usuário envia os comandos ao sistema. Figura 51: Abertura de socket TCP A variável m presente na Figura 51 é um contador que tem como finalidade controlar a quantidade de vezes que o servidor não responde à solicitação de abertura de socket. Isso pode ocorrer por falha na tentativa de conexão (o que devido ao número de tentativas aceitáveis, 5, é menos provável) ou porque o servidor TCP não encontra-se conectado, o que significa que o usuário não deseja enviar comandos naquele instante. 62 Figura 52: Recebimento dos comandos do servidor TCP Caso a conexão seja bem sucedida, inicia-se uma comunicação bidirecional entre o servidor TCP e o PIC presente no veículo. O modem envia ao servidor uma mensagem "CONECTADO", e fica aguardando comandos do mesmo. Nessa aplicação, o servidor pode pedir para acender/apagar o LED RD7 ou fazer aparecer no display do LCD do motorista "REDUZIR VEL", sendo que para cada aplicação o modem responde ao servidor com "BLOQUEIO ATIVADO", "BLOQUEIO DESATIVADO" ou "MENSAGEM ENVIADA" Figura 52. Cada comando é representado por um número, ou seja, na realidade o servidor envia o número relativo à ação que deseja fazer. Isso facilita a transferência do comando e evita erros. Como manter aberto um socket TCP é custoso para a operadora (pois o protocolo TCP possui uma série de atributos que garantem a confiabilidade da conexão), a conexão não dura mais que 3 minutos (observado empiricamente), após esse tempo a operadora retira o IP que era dedicado 63 ao cliente. Portanto, o envio de comandos deve ser feito antes desse tempo. Quando a conexão cai, seja essa interrompida pelo servidor ou pela operadora, o socket TCP é fechado (pois o IP de uma das partes, ou de ambas, não estaria mais disponível para essa conexão) e o modem retorna "NO CARRIER". Isso faz com que saia do loop apresentado na Figura 52. Figura 53: Programa terminal HDC-Control A Figura 53 mostra a interface do servidor TCP com o usuário. A opção "Conectar" faz com que o servidor seja iniciado e fique aguardando cliente, ou seja, aguarda o pedido de conexão com o modem. Quando a conexão já foi iniciada, esse botão aparece como "Desconectar". "Configurar Conexão" permite que o programa atue como servidor ou cliente, conectado via TCP ou porta serial (Figura 30). Ao abrir o programa, o primeiro procedimento a ser tomado nessa aplicação é configurar a conexão como TCP e servidor na porta "1234". Os botões "Ativa o bloqueador", "Desativa o bloqueador"e "Diminuir velocidade" são possíveis comandos a serem enviados para o modem. Essa interface é criada a partir de um programa auxiliar, HDC-Creator (Figura 54), que permite, dentre outras possibilidades, criar botões relativos a determinados comandos, de forma que o usuário não precise conhecer os comandos AT e escrevê-los para se comunicar com o modem. 64 Figura 54: HDC-Creator Tanto no caso de sair do loop da Figura 52 ou de não ter obtido resposta do servidor (caso m=5), o ciclo se reinicia: é dado um tempo de leitura dos LEDs, seguido da conexão à rede GPRS (obtenção de IP), conexão com o servidor FTP (para atualizar os dados dos sensores e do gps), fechamento da conexão FTP e abertura de socket com o servidor TCP (verifica se há comandos a serem executados). No início de cada ciclo, o valor de m é zerado. 5. Funcionamento do projeto 5.1 Casa inteligente Primeiramente, foi feito um teste em cada placa com microcontrolador escravo, sem utilizar a rede RS485. A lâmpada AC e o alarme funcionaram corretamente (circuitos da Figura 24 e da Figura 22, respectivamente). A placa do LDR não foi concluída (faltou soldar alguns componentes, incluindo a lâmpada DC), portanto não houve teste de sua funcionalidade. Em seguida, foi testada a integração do circuito do microcontrolador mestre com o circuito de cada microcontrolador escravo, separadamente. O teste consistia em enviar um comando para o escravo especificado e verificar se esse respondia ao mesmo devidamente. O circuito da lâmpada AC funcionou corretamente, porém o do alarme não respondeu (o buzzer do alarme não acionava quando solicitado). Paralelamente aos testes nos dispositivos, foram realizados outros testes com o circuito do MAX232 integrado ao PIC 16F628 mestre (Figura 19). O PIC conseguiu enviar os comandos e receber as respostas do modem corretamente, fazendo com que a parte de comunicação do projeto (conexão com o servidor TCP) funcionasse efetivamente. O resultado do teste pode ser visto na Figura 55, retirada do vídeo do funcionamento da comunicação. O item 4.1.2.2 explica como foram obtidas essas respostas (entre a Figura 34 e Figura 35). 65 Figura 55: Comunicação bidirecional servidor TCP - modem O último teste realizado seria a integração do sistema de comunicação modem-servidor com o RS485, aplicado sobre o circuito da lâmpada (por ter sido o único escravo a responder positivamente até então). Porém, ao juntar os códigos relativos à comunicação e à interação mestreescravo, notou-se que o PIC 16F628 não apresentava memória ROM suficiente. Portanto, o ideal seria ter trabalhado com o PIC877A como mestre. Como não havia mais tempo para adaptar o sistema para esse PIC, esse último teste não foi realizado. A complexidade desse sistema estava no fato de integrar software, hardware e comunicação. Portanto, quando havia alguma falha no funcionamento do sistema era necessário avaliar se isso era devido a um problema de hardware (ruídos, solda mal feita, alimentação de corrente insuficiente, componente queimado), no software (alguma incoerência no código, tanto na sintaxe quanto na semântica) ou na comunicação propriamente dita (problemas devido à comunicação serial, taxas e modos de envio de caracteres distintos, comandos incorretos, rede GPRS sem sinal). 5.2 Rastreamento de um veículo frigorífico Para testar o funcionamento do sistema, foi imaginada uma situação a ser simulada: O proprietário do veículo frigorífico acessou o servidor FTP a fim de verificar o estado do mesmo e percebeu que estava da seguinte maneira: a temperatura da carga estava acima do limite superior permitido; a porta do frigorífico estava mal fechada; e o veículo estava em movimento (ignição ligada); a velocidade estava alta (43.2 nós, equivalente a 80Km/h). Além disso, não conseguia entrar em contato com o motorista para averiguar o que estava ocorrendo. Suspeitando de que se tratava de um roubo, imediatamente conectou o servidor TCP, aguardou o veículo se conectar a ele e enviou os comandos de "Ativar o bloqueador" e "Diminuir a velocidade", a fim de que a pessoa que estivesse conduzindo o veículo visse a mensagem e já fosse reduzindo a velocidade, pois o bloqueador faria o carro parar em instantes. O GPS acusaria, então, a posição em que o carro parou, permitindo que o proprietário pudesse recuperar o veículo. Para representar essa situação no circuito, seguem-se as funcionalidades dos LEDs/Botões apresentadas na Tabela 3. Essa situação é simulada da seguinte maneira: no início, durante o tempo que é dedicado à leitura dos sensores (em torno de 10s), apertam-se os botões RC0 e RC3 uma vez a fim de acionar os LEDs RD0 e RD3, e o LED RD5 já é inicializado como "1" (simula a entrada de um sensor que não depende de atuadores), (Figura 56). Após esse tempo, é feito o processo automático de envio de comandos AT para o modem, a fim de realizar a conexão à rede GPRS, seguido pela conexão com o servidor FTP, gravação dados dos sensores e do GPS em um arquivo .txt nesse servidor, fechamento da conexão com o servidor FTP, abertura de um socket com o 66 servidor TCP (para verificar se há comandos) e fechamento desse socket, completando um ciclo. Ao término do primeiro ciclo, o arquivo "131024140015.txt" é gerado no servidor (Figura 57). Nessa figura, nota-se a seguinte sequência: “100;1”, o que é coerente com o estado dos LEDs apresentado na Figura 56. Antes das informações, percebe-se que o comando "AT#FTPPUT" também foi salvo, representando uma falha no processo de conexão. Figura 56: Início da simulação do funcionamento do sistema 67 Figura 57: Arquivos salvos no servidor FTP No segundo ciclo, é feita a conexão do servidor TCP, de forma a simular a atuação do usuário. Logo após a conexão ser estabelecida, o modem envia uma mensagem de confirmação "CONECTADO". Quando o servidor envia o comando "3" e "1", o modem responde com "MENSAGEM ENVIADA" e "BLOQUEIO ATIVADO", simulando os comandos enviados pelo proprietário do veículo (Figura 58). A Figura 59 mostra a confirmação do recebimento do comando enviado pelo servidor para o modem "Ativar bloqueador", que é simulado pelo acendimento do LED RD7. A Figura 60 mostra como o condutor do veículo veria a mensagem enviada pelo servidor TCP. . 68 Figura 58: Comunicação bidirecional no servidor TCP Figura 59: Confirmação do recebimento do comando "1" 69 Figura 60: Mensagem visualizada pelo condutor do veículo e confirmação de recebimento do comando "3" Como a simulação foi coerente com o problema proposto, conclui-se que o funcionamento da simulação do sistema de rastreamento do veículo frigorífero foi realizada com êxito. 6. Dificuldades e limitações do projeto 6.1 Casa Inteligente Por uma questão de tempo, não foi possível a implementação, na prática, do circuito de controle de luminosidade. O programador do PIC nem sempre atualiza o programa após a compilação, o que gera a desconfiança de que o programa continua apresentando problemas. A alimentação do circuito do relé, do reed switch e da comunicação serial (entre modem e PIC), enquanto fornecida pelo computador (corrente pequena), através do programador do PIC, gerava um reset no programa. Quando a alimentação passou a ser feita por uma fonte externa (corrente maior), o problema cessou. O pino MCLR/ do PIC deve ser desativado no mikroC Pro para que o programa não sofra reset. O reed switch, por ser de vidro, é muito frágil. 70 O modem, quando se desconecta da rede GPRS, só envia essa informação após um delay, o que impede que o servidor TCP envie dados ou mesmo comandos. O programa Hyperterminal somente funciona como cliente. A operadora Claro não permite que o modem opere como cliente. Como o projeto não foi, de fato, implementado em uma casa, não foram encontradas algumas dificuldades reais, como instalações elétricas (altas potências que o circuito poderia não suportar) e uma possível interferência de ruídos. Não foi desenvolvida uma interface mais elaborada com o usuário. Não foi realizada a integração entre o circuito de comunicação e o de cada um dos dispositivos. 6.2 Rastreamento de veículo frigorífico Algumas vezes o comando "AT#FTPPUT="<Data.txt>"" é repetido dentro do próprio arquivo, o que representa uma falha no início da conexão com o servidor. O compilador utilizado (MikroC PRO for PIC v5.4) não faz a troca do IRP (dado que identifica o banco de memória em que são salvas as variáveis do código), o que gera problemas em termos de memória RAM. Como o código em questão apresenta grande uso de variáveis, esse problema se tornou um grande limitante do projeto. Por exemplo, não foi possível salvar mais dados do GPS no servidor FTP por falta de memória RAM. 7. Trabalhos futuros 7.1 Casa Inteligente Para o projeto da casa inteligente, propõe-se que seja feito um robustecimento dos circuitos de cada dispositivo, inclusive concluindo-se a placa do LDR, a fim de que os mesmos possam funcionar devidamente. Após isso, fazer a junção dos programas relativos à comunicação com o modem e à rede RS485, e aplicá-los ao sistema. Em seguida, seria interessante detalhar mais o projeto a fim de aplicá-lo efetivamente a uma residência. 7.2 Rastreamento de veículos A próxima etapa do projeto seria inserir os sensores e um GPS no sistema, em vez de simular um resultado, como foi feito no trabalho. Após isso, criar um hardware próprio a fim de instalar o sistema em um veículo. 8. Conclusão Neste trabalho, foi apresentado o uso da rede GPRS para sistemas de automação residencial e rastreamento de veículos. Foi realizado também um estudo sobre os principais protocolos de comunicação envolvidos na funcionalidade desses sistemas. 71 Apesar de o projeto do sistema de controle remoto de dispositivos, base para automação residencial, não ter funcionado conforme esperado, o trabalho foi bastante válido por ter servido como grande fonte de aprendizado. A segunda parte do trabalho, a simulação de um sistema de rastreamento de veículo frigorífico, teve sucesso na aplicação prática. A fim de permitir o estudo de outros protocolos, como o SMTP e FTP, foi utilizado uma placa de desenvolvimento em vez de construir um hardware próprio. O uso dessa placa auxiliou bastante, pois a maior complexidade do projeto anterior estava na elaboração do hardware. Há ainda, porém, alguns refinamentos a serem feitos, ficando os mesmos para trabalhos futuros. Para finalizar, ambos projetos agregaram bastante conhecimento teórico e prático, e ressaltaram a importância de protocolos de comunicação em diferentes áreas. 9. Referências Bibliográficas DA SILVA , Ivan Vieira Ferreira. DE CARVALHO, Sérgio Silva. Automação residencial de baixo custo: um protótipo com acesso web. Disponível em: <http://semanaacademica.org.br/system/files/artigos/revistasemanaacademicadomoticaii.pdf>. Acesso em: 19 fevereiro 2013. FERNANDES, Bruno Coutinho. Construção de um sistema eletrônico de monitoramento de consumo de água residencial. Vitória, 2007. Disponível em: <http://www2.ele.ufes.br/~projgrad/documentos/PG2006_1/brunocoutinhofernandes.pdf>. Acesso em: 14 março 2013. JUCÁ, Sandro. Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais. Disponível em: < http://www.maracanau.ifce.edu.br/~sandrojuca/Microcontroladores1.pdf>. Acesso em: 19 fevereiro 2013. DE OLIVEIRA, Victor Hugo Freitas. Desenvolvimento de um sistema de telemetria remota. Natal, 2009. Disponível em: < http://www.engcomp.ufrn.br/publicacoes/TCC-2009-1-1.pdf>. Acesso em: 5 março 2013. DOS SANTOS, Ricardo Antônio Silva. Domótica via dispositivos móveis. Ouro Preto, 2010. Disponível em: < http://www.em.ufop.br/cecau/monografias/2010/Ricardo%20A.%20S.%20Santos.pdf>. Acesso em: 3 março 2013. BEZERRA, Romildo Martins. A Camada de Rede. Disponível em: < http://www.ifba.edu.br/professores/romildo/downloads/ifba/rede.pdf>. Acesso em: 20 de outubro de 2013. ANTONIOUS, Stelius. TCP, UDP, TCP/IP and OSI Model. Disponível em: < http://www.trainsignal.com/blog/networking-basics-tcp-udp-tcpip-osi-models>. Acesso em: 9 de outubro de 2013. 72 DOS SANTOS, Thassia Lopes Correia. DE ANDRADE, Leonardo Ghidetti Moraes. Sistema de Controle de dispositivos remotos via rede GSM/GPRS. MikroElektronica, EasyPIC5 Manual. Telit, AT Commands Reference Guide. Telit, Easy GPRS User Guide. Microship, 2003. Data Sheet PIC16F87XA. Microship, 2009. Data Sheet PIC16F627A/628A/648. MAXIM. +5V-Powered, Multichannel RS-232 Drivers/Receivers. MAXIM. Low-Power, Slew-Rate-Limited RS-485/RS-422 Transceivers. LDR. Disponível em: <http://pt.wikipedia.org/wiki/LDR>. Acesso em: 16 junho 2013. Reed-switch. Disponível em: <http://www.if.ufrgs.br/mpef/mef004/20061/Cesar/SENSORES-Reedswitch.html>. Acesso em: 16 junho 2013. Relé. Disponível em: <http://www.electronica-pt.com/index.php/content/view/179/37/>. Acesso em: 16 junho 2013. Base 64 decoder-encoder. Disponível em: <http://www.motobit.com/util/base64-decoder-encoder.asp>. Acesso em: 14 de agosto de 2013 Conceitos de email. Disponível em: <http://technet.microsoft.com/pt-br/library/cc737894(v=ws.10).aspx>. Acesso em: 15 de agosto de 2013. RFC 3207 - SMTP. Disponível em: <http://tools.ietf.org/html/rfc3207>. Acesso em: 25 de agosto de 2013. Rastreamento. Disonível em: <http://www.controlando.com.br/quanto_custa.php>. Acesso em: 10 de outubro de 2013. Arquitetura OSI. Disponível em: <https://support.google.com/mail/answer/1074635?hl=pt-BR>. Acesso em: 10 de outubro de 2013. NMEA Data. Disponível em: < http://www.gpsinformation.org/dale/nmea.htm>. Acesso em: 5 de outubro de 2013. 73 ANEXO: - Código referente à comunicação entre o servidor TCP e o modem (projeto da casa inteligente); - Código referente à comunicação RS485 (Mestre e Escravo); - Código referente à comunicação entre o servidor TCP, servidor FTP e o modem (projeto do rastreamento de veículos). 74