universidade federal do paranÁ hardware consists of a microchip’s microcontroller ......

75
UNIVERSIDADE FEDERAL DO PARANÁ GUSTAVO KLINGUELFUS RODOLFO AMBONATTI PFEFFER PROTÓTIPO DE UM SISTEMA DE ACIONAMENTO REMOTO VIA ETHERNET CURITIBA DEZEMBRO DE 2009

Upload: ngothuan

Post on 29-Mar-2018

219 views

Category:

Documents


3 download

TRANSCRIPT

UNIVERSIDADE FEDERAL DO PARANÁ

GUSTAVO KLINGUELFUS

RODOLFO AMBONATTI PFEFFER

PROTÓTIPO DE UM SISTEMA DE

ACIONAMENTO REMOTO VIA ETHERNET

CURITIBA

DEZEMBRO DE 2009

UNIVERSIDADE FEDERAL DO PARANÁ

GUSTAVO KLINGUELFUS

RODOLFO AMBONATTI PFEFFER

PROTÓTIPO DE UM SISTEMA DE

ACIONAMENTO REMOTO VIA ETHERNET

Projeto de Graduação na área de Engenharia

Elétrica apresentado à Universidade Federal do

Paraná, como requisito parcial para a obtenção

do título de Engenheiro Eletricista.

Orientador: Eduardo Parente Ribeiro

Co-orientador: Igor Gavriloff

CURITIBA

10 DE DEZEMBRO DE 2009

AGRADECIMENTOS

Gostaríamos de agradecer a todas as pessoas que nos deram o seu apoio para que

pudéssemos concluir com êxito, não somente este trabalho de conclusão de curso, mas todo o

curso de Engenharia Elétrica da Universidade Federal do Paraná.

Agradecemos primeiramente ao professor Dr. Eduardo Parente Ribeiro, do

departamento de Engenharia Elétrica da Universidade Federal do Paraná, pelo tempo

dedicado e pelo apoio dado para que este projeto pudesse ser concluído.

Agradecemos também ao engenheiro M.Sc. Igor Gavriloff, pela co-orientação ao nosso

projeto, tendo sido esta de suma importância para a conclusão do mesmo.

Também agradecemos ao professor M.Sc. Ademar Luis Pastro, do departamento de

Engenharia Elétrica da Universidade Federal do Paraná, pelas críticas e sugestões dadas na

apresentação parcial do projeto.

Aos amigos e familiares também dedicamos um agradecimento especial, por toda a

compreensão e apoio que nos foi dado, desde o começo até o final do curso, curso este que

sendo de Engenharia Elétrica, nos exigiu muitas horas de estudo e dedicação devido ao grau de

exigência do mesmo.

Aos graduandos Marcos Vinicius Lopes Paixão e Walter Godefroid Steiger, nossos

sinceros agradecimentos por toda sua ajuda e disponibilidade de tempo para nos ajudar com o

nosso projeto final de graduação.

Por último devemos, acima de tudo, agradecer um ao outro por toda a dedicação e

empenho para com este trabalho.

RESUMO

O protótipo que será apresentado neste trabalho é um sistema que possui o intuito de

ser autônomo, portanto, independente de um computador, conectável a internet e podendo

ser conectado diretamente em uma tomada de energia residencial comum. O hardware

consiste de um microcontrolador PIC18F66J65, fabricado pela Microchip, e mais uma série de

componentes visando criar um mini servidor web autônomo, capaz de monitorar e controlar

entradas e saídas digitais. O firmware do microcontrolador foi baseado na biblioteca

“Microchip TCP/IP Stack”, desenvolvida na linguagem de programação C e fornecida

gratuitamente pela Microchip, que já possui diversas camadas do modelo TCP/IP

implementadas permitindo assim a comunicação do microcontrolador com a rede através dos

protocolos padrão existentes.

Palavras-chave:

PIC18F66J65

Módulo Ethernet

Mini servidor HTML

ABSTRACT

The prototype that is presented in this work is a system which has the purpose of

being autonomous, therefore independent of a computer, connectable to the internet and

also to a standard residential plug. The hardware consists of a Microchip’s microcontroller

PIC18F66J65, plus a variety of components used to create a mini autonomous web server,

capable of monitoring and controlling digital inputs and outputs. Its firmware was developed in

the programming language C, using mainly the library “Microchip TCP/IP Stack”, which is

provided without any cost by Microchip itself. This library has most of the layers of the TCP/IP

protocol already implemented, allowing the communication between the microcontroller and

the internet though the standards existing protocols.

Key words:

PIC18F66J65

Ethernet module

HTML web server

LISTA DE SIGLAS E EXPRESSÕES NA LÍNGUA INGLESA

ACK Mensagem de confirmação de reconhecimento de pacote enviado (do inglês,

Acknowlegment)

ADJ Pino de ajuste do LM317 (do inglês, Adjustment)

API Interface de programação de aplicações (do inglês, Application Programming

Interfaces)

ARP Protocolo de resolução de endereços (do inglês, Address Resolution Protocol)

Array Uma série de elementos de dados, geralmente do mesmo tamanho e tipo

Cache Dispositivo de acesso rápido, interno a um sistema, que serve de intermediário

entre um processo e um dispositivo de armazenamento

CGI Interface comum de porta de ligação (do inglês, Common Gateway Interface)

DHCP Protocolo de configuração dinâmica de terminais (do inglês, Dynamic Host

Configuration Protocol)

DMA Memória de acesso direto (do inglês, Direct Access Memory)

EEPROM Memória somente leitura programável e apagável eletricamente (do inglês,

Electrically Erasable Programmable Read-Only Memory)

FAT Tabela de alocação de arquivos (do inglês, File Allocation Table)

FIFO Tipo de enfileiramento, o primeiro a entrar é o primeiro a sair (do inglês, First In,

First Out)

FTP Protocolo de transferência de arquivo (do inglês, File Transfer Protocol)

HTML Linguagem de marcação de hipertexto (do inglês, HyperText Markup Language)

HTTP Protocolo de transferência de hipertexto (do inglês, HyperText Transfer Protocol)

ICMP Protocolo de controle de mensagens de internet (do inglês, Internet Control

Message Protocol)

ICSP Método de programação serial “no circuito” (do inglês, In Circuit Serial

Programming)

IP Protocolo de internet (do inglês, Internet Protocol)

LAN Rede local (do inglês, Local Area Network)

LED Diodo emissor de luz (do inglês, Light Emissor Diode)

MAC Controle de acesso a mídia (do inglês, Media Access Control)

MCLR Pino de reinicialização do PIC (do inglês, Memory Clear)

MPFS Sistema de arquivos Microchip (do inglês, Microchip File System)

NDP Protocolo de descoberta de vizinhos (do inglês, Neighbor Discovery Protocol)

NIC Controlador de interface de rede (do inglês, Network Interface Controller)

OSI Interconexão de sistemas abertos (do inglês, Open Systems Interconnection)

PC Computador pessoal (do inglês, Personal Computer)

PCI Placa de circuito impresso

PHY Camada física (do inglês, Physical)

PIC Interface controladora de periféricos (do inglês, Peripheral Interface Controller)

RAM Memória de acesso randômico (do inglês, Random Access Memory)

RISC Conjunto de instruções reduzido (do inglês, Reduced Instruction Set Computer)

RTC Relógio em tempo real (do inglês, Real Time Clock)

SFR Registrador especial de função (do inglês, Special Function Register)

SLIP Protocolo de internet para linha serial (do inglês, Serial Line Internet Protocol)

SRAM Memória estática de acesso randômico (do inglês, Static Random Access Memory)

String Seqüência ordenada de caracteres

TCP Protocolo de controle de transmissão (do inglês, Transmisson Control Protocol)

UDP Protocolo de datagrama de usuário (do inglês, User Datagram Protocol)

URL Localizador padrão de recursos (do inglês, Uniform Resource Locator)

LISTA DE FIGURAS

Figura 1 – PIC18F66J65 ................................................................................................................ 21

Figura 2 – Esquema de ligação física do módulo Ethernet ......................................................... 24

Figura 3 – Diagrama de blocos do módulo Ethernet................................................................... 25

Figura 4 – Comparação entre os modelos TCP/IP de referência e Microchip ............................ 26

Figura 5 – Diagrama de implementação de um servidor HTTP em um microcontrolador PIC ... 29

Figura 6 – Fluxograma do programa monitor ............................................................................. 33

Figura 7 – Esquema de funcionamento proposto no presente trabalho .................................... 34

Figura 8 – Diagrama interno do conector RJ45 MAG45 .............................................................. 35

Figura 9 – Conversor TQFP 64 pinos DIP ................................................................................ 36

Figura 10 – Componente do conversor TQFP DIP em ambiente EAGLE ................................ 36

Figura 11 – Esquemático do circuito da placa principal .............................................................. 37

Figura 12 – Layout da placa principal .......................................................................................... 38

Figura 13 – Esquemático da placa reguladora de tensão ........................................................... 39

Figura 14 – Versão final da placa reguladora de tensão ............................................................. 40

Figura 15 – Componentes do projeto ......................................................................................... 44

Figura 16 – Placa principal do protótipo ..................................................................................... 45

Figura 17 – Placa reguladora de tensão ...................................................................................... 46

Figura 18 – Página HTML a ser no protótipo ............................................................................... 47

Figura 19 – Compilação da biblioteca Microchip TCP/IP Stack ................................................... 48

Figura 20 – Teste através do prompt de comando do Windows ................................................ 51

Figura 21 - Monitoramento do funcionamento do PIC com o Wireshark .................................. 51

Figura 22 – Página HTML funcional carregada no protótipo ...................................................... 52

Figura 23 – Esquemático do sistema de armazenamento de arquivos MPFS ............................ 68

Figura 24 – Interface do programa EAGLE .................................................................................. 69

Figura 25 – Interface do programa MPLAB ................................................................................. 70

Figura 26 – Gravador de microcontroladores PIC PICkit 2 .......................................................... 71

Figura 27 – Gerador de imagens MPFS ....................................................................................... 72

Figura 28 – Interface do Microchip Page Preview ...................................................................... 73

Figura 29 – Software MCHPDetect .............................................................................................. 74

Figura 30 – Interface do programa Wireshark ............................................................................ 75

LISTA DE TABELAS

Tabela 1 – Pinos do PIC18F66J65 ................................................................................................ 23

Tabela 2 – Lista de componentes da placa principal................................................................... 39

Tabela 3 – Lista de componentes da placa reguladora ............................................................... 40

Tabela 4 – Cronograma do projeto ............................................................................................. 60

Tabela 5 – Arquivos para configuração da pilha TCP/IP.............................................................. 62

Tabela 6 – Lista dos módulos e arquivos necessários para compilação da biblioteca ................ 64

Tabela 7 – Funções da camada MAC ........................................................................................... 65

Tabela 8 – Funções da camada ARP ............................................................................................ 66

Tabela 9 – Funções da camada IP ............................................................................................... 66

Tabela 10 – Funções da camada TCP .......................................................................................... 67

Tabela 11 – Funções da página HTTP .......................................................................................... 67

SUMÁRIO

Agradecimentos ............................................................................................................................ 1

Resumo .......................................................................................................................................... 4

Abstract ......................................................................................................................................... 5

Lista de siglas e expressões na língua inglesa ............................................................................... 6

Lista de figuras .............................................................................................................................. 8

Lista de tabelas .............................................................................................................................. 9

Sumário ....................................................................................................................................... 10

1 Introdução ........................................................................................................................... 12

1.1 Objetivo ....................................................................................................................... 13

1.1.1 Objetivo geral ...................................................................................................... 14

1.1.2 Objetivo específico .............................................................................................. 14

1.2 Justificativas do projeto .............................................................................................. 14

1.3 Estrutura do relatório .................................................................................................. 15

2 Conceitos ............................................................................................................................. 16

2.1 Ethernet ....................................................................................................................... 16

2.2 MAC ............................................................................................................................. 17

2.3 ARP .............................................................................................................................. 17

2.4 IP .................................................................................................................................. 17

2.5 ICMP ............................................................................................................................ 18

2.6 TCP ............................................................................................................................... 18

2.7 DHCP ............................................................................................................................ 19

2.8 HTTP ............................................................................................................................ 19

2.9 HTML ........................................................................................................................... 20

2.10 Microcontrolador PIC .................................................................................................. 21

2.10.1 Arquitetura .......................................................................................................... 23

2.10.2 Biblioteca “Microchip TCP/IP Stack” ................................................................... 25

3 Metodologia ........................................................................................................................ 34

3.1 Escolha da topologia do circuito ................................................................................. 35

3.2 Confecção da placa...................................................................................................... 36

3.2.1 Placa principal ..................................................................................................... 36

3.2.2 Placa reguladora de tensão ................................................................................. 39

3.2.3 Processo de corrosão .......................................................................................... 41

3.3 Métodos para teste de redes de computadores ......................................................... 42

3.3.1 Prompt de comando do Microsoft Windows ...................................................... 42

3.3.2 Wireshark ............................................................................................................ 42

4 Resultados ........................................................................................................................... 43

4.1 Placas de circuito impresso ......................................................................................... 43

4.1.1 Placa principal ..................................................................................................... 44

4.1.2 Placa reguladora de tensão ................................................................................. 46

4.2 Teste de funcionamento da placa principal ................................................................ 46

4.3 Página HTML ................................................................................................................ 47

4.4 Teste da biblioteca “Microchip TCP/IP Stack” ............................................................. 48

4.4.1 Teste da biblioteca através do prompt de comandos ......................................... 49

4.4.2 Teste com o Wireshark ........................................................................................ 49

4.4.3 Teste dos componentes Ethernet da placa principal .......................................... 50

4.4.4 Resultado final ..................................................................................................... 52

5 Conclusão ............................................................................................................................ 54

5.1 Perspectivas ................................................................................................................ 55

6 Referências bibliográficas ................................................................................................... 56

7 Anexos ................................................................................................................................. 59

ANEXO A – Cronograma do projeto ........................................................................................ 60

ANEXO B – Configuração e utilização da pilha ........................................................................ 61

ANEXO C – APIs ....................................................................................................................... 65

ANEXO D – Sistema de arquivos MPFS.................................................................................... 68

ANEXO E – Ferramentas computacionais utilizadas ............................................................... 69

1 INTRODUÇÃO

A importância da automação é cada vez maior no nosso dia a dia. Os engenheiros

estão sempre aplicando recursos matemáticos e ferramentas organizacionais em conjunto

com algum tipo de maquinário automatizado para criar complexos sistemas para uma gama

cada vez maior de aplicações.

A automação teve um impacto notável dentro dos grandes centros de produção ao

longo do tempo. Até mesmo os outrora imprescindíveis telefonistas foram substituídos por

centrais de comutação e máquinas de resposta automática. Processos médicos, tais como

eletrocardiografia, radiografia e análises laboratoriais de genes, células e tecidos, são

realizados com uma precisão e velocidade muito maior se feitos por processos automatizados.

Caixas automáticos, por exemplo, reduziram a necessidade de uma pessoa ir ao banco para

pegar dinheiro e realizar transações. Sucintamente, a automação foi responsável pela

transação do mundo agrário do século XIX para o mundo industrializado do século XX.

Os impactos da automação vão além dos processos produtivos propriamente ditos.

Existem também impactos sociais, e, dentre eles, destacam-se os vínculos empregatícios. É

comum o pensamento de que a automação leva a substituição, em partes ou completa, do

homem por uma máquina. Durante a década de 1980, críticos da automação afirmavam que o

rápido aumento na industrialização levava ao desemprego. Na verdade, o desemprego é

causado mais devido a políticas econômicas e administrativas empresariais, como recorrer à

demissão ao invés de realocação de funcionários. Como geralmente as empresas recorrem à

política de demissões, neste ponto automação significa desemprego. Por outro lado, em um

cenário fora do ramo da produção, a automação implica em mais tempo livre, como é o caso

das residências, citando como exemplo uma máquina de lavar roupas, na qual se consegue

uma economia grande de tempo, podendo-se assim dedicar mais tempo para o trabalho e

outras tarefas que demandem mais criatividade.

É neste contexto que se encaixa este projeto. Por ser tratar de um sistema de menor

porte, inicialmente é voltado para a automação residencial, visando permitir a automatização

de tarefas dispendiosas e auxiliar no monitoramento dos lares. Existem várias possibilidades

de uso da automação em uma residência. Pode-se, por exemplo, realizar o monitoramento e

controle da iluminação, climatização, segurança e de eletrônicos de uma residência. Uma das

principais vantagens do uso da automação é a possibilidade de que este controle e

monitoramento possa ser feito à distância. Em situações nas quais os moradores esqueceram-

se, por um motivo qualquer, de desligar algum eletrodoméstico ou deixaram alguma janela

aberta a automação remota também é de grande utilidade. No Brasil, quando os moradores

partem para longas viagens, costumeiramente deixa-se alguma lâmpada ligada ou pede-se

para que alguém cuide da casa. Estas atividades poderiam ser realizadas automaticamente por

meio de um sistema de automação com agendamento de tarefas, seguindo assim um roteiro

pré-estabelecido pelo morador, comandando diversas lâmpadas, por exemplo, dando assim a

impressão de que os moradores estão em casa. O intuito é facilitar a vida das pessoas,

liberando mais tempo que pode ser dedicado tanto para trabalho quanto para lazer.

1.1 OBJETIVO

O objetivo deste projeto é construir com protótipo funcional autônomo, que possa ser

conectado a rede mundial de computadores sem o auxílio de um PC. O protótipo também

deve ser confeccionado de modo que futuramente suas aplicações possam ser expandidas.

Através deste deve ser possível o monitoramento de periféricos (que a título de

demonstração conceitual serão apenas LEDs e botões) via web, bem como o comando remoto

dos mesmos. Para tanto o protótipo deve funcionar como um “mini servidor”, com uma página

HTML carregada em sua memória, que permita tanto o monitoramento quanto o comando das

suas entradas e saídas.

Através deste sistema deve ser possível criar um produto que possa ser capaz de

monitorar e controlar um ambiente qualquer. Inicialmente o sistema está mais focado em

aplicações residenciais, por estas serem de menor porte. O protótipo que será desenvolvido

poderá servir de base para uma futura aplicação comercial porque possui o intuito de

demonstrar os conceitos base para a automação remota via web, o monitoramento e a

atuação remota.

1.1.1 OBJETIVO GERAL

O objetivo geral deste projeto é construir um protótipo funcional e autônomo, ou seja,

ele não deve precisar estar conectado a um PC. Ele também deve estar conectado a rede

mundial de computadores e ter uma página HTML carregada em sua memória, sendo assim

capaz de realizar acionamentos comandados por um usuário conectado a esta página HTML.

1.1.2 OBJETIVO ESPECÍFICO

• Projetar um circuito eletrônico, com alimentação independente, capaz de se conectar

a internet

• Estudo, adaptação e utilização da biblioteca “Microchip TCP/IP Stack”, fornecida pela

Microchip, que possui a maioria das camadas do protocolo TCP/IP já implementadas

• Construção de um protótipo funcional cuja finalidade é a demonstração de conceitos

1.2 JUSTIFICATIVAS DO PROJETO

Várias são as motivações para o desenvolvimento deste projeto de final de curso,

dentre elas podem ser citadas:

• A aplicação dos conhecimentos adquiridos durante todo o período de permanência na

Universidade Federal do Paraná

• Para a confecção e utilização do projeto é necessário a junção das três grandes áreas

da Engenharia Elétrica, a Eletrônica, a Eletrotécnica e as Telecomunicações

• A utilidade que o protótipo possui perante a sociedade, sendo um mecanismo que

automatiza tarefas e permite o controle remoto de um recinto, ele pode, por exemplo,

promover uma economia de energia permitindo que uma lâmpada seja desligada

remotamente quando esquecida acesa

• A possibilidade de uma futura comercialização do projeto

1.3 ESTRUTURA DO RELATÓRIO

O presente relatório consiste em uma parte introdutória conceitual, que visa

enquadrar o projeto em uma realidade para assim mostrar a utilidade do mesmo para a

sociedade.

Em seguida será introduzida toda a teoria necessária para o entendimento e

compreensão do trabalho. Devido à natureza do projeto, os focos principais deste documento

são a biblioteca “Microchip TCP/IP Stack”, da Microchip, e o microcontrolador PIC18F66J65,

também da Microchip.

Posteriormente será apresentada toda a metodologia utilizada neste projeto, que vai

desde o estudo do esquema de ligação da placa de circuito impresso até os testes que foram

realizados no mesmo. Posteriormente serão apresentados os resultados obtidos em todas as

fases de desenvolvimento do protótipo, a confecção do layout da placa de circuito impresso,

os resultados dos testes e as soluções encontradas para cada um dos problemas encontrados.

Por último será feito um comentário geral sobre o projeto, sobre as dificuldades

encontradas e sobre o que este projeto agregou nas vidas dos acadêmicos envolvidos com o

projeto. Serão dadas também perspectivas sobre o protótipo em si, como o seu potencial de

comercialização e sugestões para melhorias no projeto e, ainda, sugestões para a continuação

do mesmo.

2 CONCEITOS

A seguir serão apresentados os principais conceitos necessários para o entendimento

do trabalho realizado bem como dos resultados obtidos.

2.1 ETHERNET

A Ethernet é uma tecnologia de conexão para redes locais (LANs) e foi originalmente

baseada na idéia de computadores se comunicando através de um cabo coaxial

compartilhado. A partir deste arranjo conceitualmente simples, a Ethernet continuou

evoluindo tornando-se o padrão 802.3 do IEEE e está presente na maioria das LANs atuais. O

cabo coaxial foi substituído por cabos de pares trançados e são utilizados equipamentos como

hubs e switches para intermediar a conexão entre os computadores. Esta evolução tecnológica

propiciou que novos dispositivos fossem desenvolvidos, miniatuarizando e barateando o

sistema a ponto de existirem dispositivos de pequeno porte, como microcontroladores,

capazes de utilizar a tecnologia.

Esta camada é baseada na idéia de pontos de rede enviando pacotes de mensagens.

Cada um destes pontos possui um endereço MAC de 48 bits único, que é usado para se

especificar tanto o destino quanto a origem de cada pacote de dados. O padrão 802.3 também

define o cabeamento e os sinais elétricos para a camada física, bem como os protocolos e os

formatos de pacotes para a camada MAC. [13] [27]

2.2 MAC

O endereço MAC é um identificador único de 48 bits designado para a maioria dos

NICs pelos seus respectivos fabricantes para fins de identificação.

Em redes TCP/IP, o endereço MAC de uma interface de subrede pode ser descoberto a

partir do endereço IP, utilizando o ARP, para IPv4, ou o NDP, para IPv6. Em redes de banda

larga, tais como a Ethernet, o endereço MAC identifica cada nó de forma única e permite que

quadros sejam assinalados para servidores específicos. A camada de enlace do sistema TCP/IP

e do modelo OSI são baseadas neste princípio, sendo que as camadas de nível superior se

apóiam nela para produzir e gerenciar redes mais complexas. [14]

2.3 ARP

É um protocolo usado para determinar o endereço da camada de enlace de rede (ou

endereço físico MAC) a partir do seu endereço de camada de rede (IP). É uma função vital em

LANs e também para roteamento de trafego baseado em endereços IP.

O ARP utiliza um formato de mensagens simples que contém um requerimento de

identificação de endereço. O tamanho da mensagem ARP depende dos tamanhos dos

endereços das camadas superiores e inferiores.

Este protocolo foi desenvolvido para o IPv4, sendo que o seu equivalente para o IPv6,

o NDP, não será abordado neste trabalho porque o PIC não o utiliza. [15]

2.4 IP

É o protocolo usado para a comunicação de dados através de uma rede interligada de

troca de pacotes de informação. O IP é o protocolo primário na camada de rede e possui a

tarefa de entregar os pacotes do servidor de origem para o destinatário baseando-se somente

nos seus endereços. Para este propósito o IP define métodos de endereçamento e estruturas

para encapsulamento de datagramas.

Provavelmente os aspectos mais completos do IP são o endereçamento IP e o

roteamento. Endereçamento refere-se a como os endereços IP são distribuídos e como as

subredes são classificadas e agrupadas. Roteamento IP é definido como o encaminhamento

dos pacotes IP. [16] [26]

2.5 ICMP

É um dos protocolos principais do protocolo de internet e é utilizado para fornecer

relatórios de informações entre computadores conectados em uma rede para dizer, por

exemplo, que um destinatário não pode ser alcançado ou que um determinado serviço está

indisponível no momento.

O ICMP depende do IP para realizar suas tarefas mas o seu propósito difere dos

protocolos de transmissão, tais como TCP e UDP, porque tipicamente não é utilizado para o

envio ou recebimento de dados entre sistemas. As mensagens ICMP podem ser geradas em

resposta a erros de datagramas IP e podem ser utilizadas pelos usuários da rede em funções

como “ping” e “tracert”. [17]

2.6 TCP

É um dos protocolos principais nos quais se assenta a internet, sendo um dos dois

componentes de referência do mesmo (TCP/IP). O IP gerencia as transmissões de baixo nível

de computador para computador enquanto a mensagem trilha o seu caminho pela internet. Já

o TCP opera em um nível mais alto, preocupado apenas com um sistema de duas pontas finais,

como por exemplo, um navegador web e um servidor web.

O TCP provê uma transmissão confiável e ordenada de um conjunto de dados de um

programa em um computador para outro programa em outro computador. Suas aplicações

são as mais variadas, como, por exemplo, email e transferência de arquivos.

A camada, além de outras tarefas de gerenciamento, controla o tamanho e o fluxo dos

pacotes de dados, bem como um controle sobre o congestionamento de tráfego de rede. Ela

também representa uma camada intermediária, fazendo a comunicação entre as camadas de

nível mais alto (os aplicativos em si) e as camadas de nível mais baixo (que neste caso seria o

IP). [18] [25]

2.7 DHCP

O DHCP é um protocolo de internet que dinamicamente distribui os endereços IP para

os clientes conectados em a um determinado segmento de rede de uma LAN. Os endereços IP

são providos por um servidor gerindo este sistema de rede. [19]

Dependendo a aplicação, o servidor pode alocar os IPs de três formas distintas:

• Atribuição manual – Existe uma tabela que associa um determinado endereço MAC

com um endereço IP já pré-programado pelo administrador de rede. Por

conseqüência, apenas um número limitado de clientes MAC podem receber as

configurações do servidor.

• Atribuição automática – O cliente obtém o endereço dentro de um universo de

endereços disponíveis especificados pelo administrador.

• Atribuição dinâmica – O único método que permite o reutilizo de endereços IP.

Quando um computador se conecta a rede, ele deve solicitar um endereço

caracterizado por um tempo de vida. Quando o computador for desligado, este tempo

de vida eventualmente se esgotará e o endereço IP outrora ocupado estará livre. Se o

computador for re-conectado a rede é possível que ele volte com outro IP.

2.8 HTTP

O HTTP é um protocolo de comunicação da camada de aplicação do modelo OSI, que é

utilizado para comunicação com as páginas web.

Utilizando o modelo cliente-servidor, o HTTP é baseado na topologia de requisição e

resposta. O cliente (o requerente) estabelece uma conexão com um servidor enviando uma

requisição contendo identificadores e a versão do protocolo.

A comunicação entre os clientes e os servidores é feita através de mensagens. O

cliente envia uma mensagem de requisição de um recurso e o servidor retorna uma resposta.

Além disso são definidos oito métodos para indicar a ação a ser realizada por cada recurso

específico. [20] [28] As funções são:

• GET – Solicita, integral ou parcialmente, algum recurso ou informação

• HEAD – Solicita os cabeçalhos de algum recurso

• POST – Envia dados para serem processados pelo recurso indicado

• PUT – Envia um determinado recurso

• DELETE – Exclui um determinado recurso

• TRACE – Ecoa uma solicitação para fins de depuração

• OPTIONS – Recupera os métodos HTTP aceitos pelo servidor

• CONNECT – Utilizado para criar, por exemplo, uma conexão segura

2.9 HTML

É uma linguagem de programação utilizada para criar páginas web. É um método no

qual se pode criar documentos estruturados, utilizando estruturas semânticas tais como

cabeçalhos, parágrafos e listas. Ela permite que imagens e objetos sejam inseridos numa

página possibilitando assim uma maior interatividade da mesma.

Os arquivos HTML são arquivos escritos em ASCII, o que permite que sejam criados em

qualquer editor de texto apesar da existência de editores específicos.

Existem diferenças entre os diversos clientes web, de forma que nem todas as

marcações e seus correspondentes recursos são suportados simultaneamente por todos eles.

Sendo assim, quando um cliente não entende uma determinada marcação, ele simplesmente a

ignora.

A estrutura do HTML é baseada em etiquetas, sendo que as principais são:

• <html> – Define o início do documento HTML.

• <head> – Define o cabeçalho do documento, portando informações sobre o mesmo.

• <body> – Define o corpo do documento, ou seja, o conteúdo principal

Todo documento deve ser identificado como HTML (<html> e </html>), ter uma área

de cabeçalho (<head> e </head>) com o nome para o documento (<title> e </title>), um título

principal e uma área definida como corpo (<body> e </body>) do conteúdo do documento,

como no exemplo a seguir: [21]

<html> <head> <title> Exemplo de HTML </title> </head> <body> <h1> Primeiro nível de cabeçalho </h1> Bem-vindo ao HTML <p>Este é o primeiro parágrafo <p>Este é o segundo </body> </html>

2.10 MICROCONTROLADOR PIC

Neste projeto foi utilizado o microcontrolador PIC18F66J65, que pertence à família

PIC18F97J60. Este modelo foi escolhido de acordo com os critérios estabelecidos no capítulo

3.1, “Escolha da topologia do circuito”. O dispositivo possui as seguintes características

principais: [1]

• 64 pinos, com 39 pinos de entrada e saída mais 11 conversores analógico-digitais

• Memória RAM de 3808 Bytes e memória flash de 96 KB

• Comunicação SPI / I²C, EUSART

• Oscilador secundário para RTC

• Comparadores e saídas PWM

• Módulo integrado Ethernet

o 10 Mbps

o Buffer de recepção / transmissão de 8 KB

o 2 LEDs indicadores de atividade

Na figura Figura 1 segue um diagrama com a descrição completa dos pinos do

Microchip PIC18F66J65.

Figura 1 – PIC18F66J65

Fonte – Datasheet do PIC18F66J65 [1]

Abaixo, na Tabela 1, segue uma descrição da utilização de todos os pinos do

PIC18F66J65:

Pino Função Utilização

1 RE1 / P2C Não utilizado

2 RE0 / P2D LED de teste

3 RB0 / INT0 / FLT0 LED de teste

4 RB1 / INT1 LED de teste

5 RB2 / INT2 LED de teste

6 RB3 / INT3 LED de teste

7 MCLR Reinicialização

8 RG4 / CCP5 / P1D Não utilizado

9 VSS Terra

10 VDDCORE / VCAP Alimentação do núcleo do PIC (2,5 V)

11 RF7 / SS1 Não utilizado

12 RF6 / AN11 Não utilizado

13 RF5 / AN10 / CVREF Não utilizado

14 RF4 / AN9 Não utilizado

15 RF3 / AN8 Não utilizado

16 RF2 / AN7 / C1OUT Não utilizado

17 RF1 / AN6 / C2OUT Não utilizado

18 ENVREG Aterrado, regulador interno de tensão desabilitado

19 AVDD 3,3 V

20 AVSS Terra

21 RA3 / AN3 / VREF+ Não utilizado

22 RA2 / AN2 / VREF- Não utilizado

23 RA1 / AN1 / LEDB LED Ethernet

24 RA0 / AN0 / LEDA LED Ethernet

25 VSS Terra

26 VDD 3,3 V

27 RA5 / AN4 Não utilizado

28 RA4 / T0CKI Não utilizado

29 RC1 / T1OSI / ECCP2 / P2A Oscilador para RTC

30 RC0 / T1OSO / T13CKI Oscilador para RTC

31 RC6 / TX1 / CK1 Não utilizado

32 RC7 / RX1 / DT1 Não utilizado

33 RC2 / ECCP1 / P1A Não utilizado

34 RC3 / SCK1 / SCL1 Não utilizado

35 RC4 / SDI1 / SDA1 Não utilizado

36 RC5 / SDO1 Não utilizado

37 RB7 / KBI3 / PGD Pino de gravação

38 VDD 3,3 V

39 OSC1 / CLKI Oscilador principal

40 OSC2 / CLKO Oscilador principal

41 VSS Terra

42 RB6 / KBI2 / PGC Pino de gravação

43 RB5 / KBI1 Não utilizado

44 RB4 / KBI0 Botão 1

45 VSSRX Terra

46 TPIN- Ethernet – Entrada diferencial -

47 TPIN+ Ethernet – Entrada diferencial +

48 VDDRX 3,3 V

49 VDDTX 3,3 V

50 TPOUT- Ethernet – Saída diferencial -

51 TPOUT+ Ethernet – Saída diferencial +

52 VSSTX Terra

53 RBIAS Resistência de 2,26 kΩ

54 VDDPLL 3,3 V

55 VSSPLL Terra

56 VSS Terra

57 VDD 3,3 V

58 RD2 / CCP4 / P3D Não utilizado

59 RD1 / ECCP3 / P3A Futuras aplicações – Expansão

60 RD0 / P1B Futuras aplicações – Expansão

61 RE5 / P1C Futuras aplicações – Expansão

62 RE4 / P3B Futuras aplicações – Expansão

63 RE3 / P3C Futuras aplicações – Expansão

64 RE2 / P2B Futuras aplicações – Expansão Tabela 1 – Pinos do PIC18F66J65

2.10.1 ARQUITETURA

2.10.1.1 Arquitetura do PIC

O circuito integrado PIC é um microcontrolador fabricado pela Microchip, que possui

todos os circuitos e periféricos necessários para a existência de um sistema digital programável

autônomo.

O dispositivo utiliza a arquitetura interna “Harvard”, que se caracteriza pela utilização

de dois barramentos internos, um para o tráfego de dados e outro para o tráfego de

instruções. Isto implica que, enquanto uma ação está sendo executada, a próxima já pode ser

buscada. Este paralelismo permite uma velocidade muito maior na execução de instruções em

geral.

O PIC utiliza uma arquitetura de comandos denominada RISC, que é caracterizada por

um conjunto de instruções reduzido, sendo que cada instrução possui um mesmo tempo de

execução reduzido.

2.10.1.2 Arquitetura do módulo Ethernet

Todos os membros da família PIC18F97J60 possuem um módulo Ethernet integrado,

incluindo implementações tanto dos módulos PHY quanto MAC, sendo que, para ser usado,

são necessários apenas dois transformadores de pulso e alguns componentes passivos, como

está representado na Figura 2.

Figura 2 – Esquema de ligação física do módulo Ethernet

Fonte – Datasheet do PIC18F66J65 [1]

O módulo atende a todas as especificações da IEEE 802.3 para conectividade 10-BaseT

utilizando redes de pares trançados. Também existe um módulo DMA interno para uma maior

taxa de transferência de dados e cálculos de soma de verificação de IP assistidos por hardware.

Dois LEDs estão disponíveis para indicação de conectividade e atividade. A Figura 3 representa

um diagrama de blocos do módulo Ethernet presente no dispositivo.

Figura 3 – Diagrama de blocos do módulo Ethernet

Fonte – Datasheet do PIC18F66J65 [1]

Como está representado na Figura 3, o módulo Ethernet é composto de cinco partes

principais:

1. O módulo transdutor PHY que codifica e decodifica os dados analógicos presentes na

interface de pares trançados e os envia ou os recebe da rede

2. O módulo MAC que implementa a lógica MAC, conforme a IEEE 802.3, para controlar o

PHY

3. Um buffer independente de 8 KB para armazenamento de pacotes que foram

recebidos e que estão para serem transmitidos

4. Um árbitro para estabelecer o acesso para o buffer quando pedidos são feitos do

processador central do microcontrolador, da DMA ou dos blocos de transmissão ou

recepção

5. A interface de registradores que funciona como um interpretador de comandos e

sinais internos entre o módulo e os SFRs do microcontrolador

2.10.2 BIBLIOTECA “MICROCHIP TCP/IP STACK”

Assim como o modelo de referência TCP/IP, o “Microchip TCP/IP Stack” divide a pilha

TCP/IP em múltiplos níveis, como está exemplificado na Figura 4. Os códigos fonte para cada

uma das camadas estão em arquivos separados, enquanto as APIs são definidas através de

cabeçalhos a serem incluídos no código fonte do programa. Diferentemente do modelo de

referência TCP/IP, muitas das camadas implementadas do “Microchip TCP/IP Stack” acessam

diretamente uma ou mais camadas que não estão necessariamente diretamente abaixo dela

mesma.

Figura 4 – Comparação entre os modelos TCP/IP de referência e Microchip

Fonte – Application Notes AN833 [2]

O “Microchip TCP/IP Stack” é implementado como uma pilha “viva”, ou seja, algumas

das camadas devem ser capazes de operar em algum tempo específico de forma assíncrona.

Para ser capaz de atender este requisito e ainda manter uma relativa independência da

aplicação principal que a utiliza, é usada uma técnica conhecida chamada de “cooperação

multitarefa”. Neste tipo de sistema existe mais de uma tarefa, sendo que cada uma delas faz o

seu trabalho e retorna o controle para que assim a próxima tarefa possa ser concluída. Neste

contexto, “StackTask” e “ARPTask” são tarefas cooperativas.

Vale ressaltar que o “Microchip TCP/IP Stack” não possui todos os módulos que

normalmente estão presentes em uma pilha TCP/IP. Apesar de eles não estarem presentes,

eles podem ser implementados como um módulo separado, caso isto se faça necessário.

Para este projeto está sendo utilizada a versão 5.10 da biblioteca “Microchip TCP/IP

Stack”, que está disponível na página da Microchip [6]. Abaixo segue uma breve descrição de

como funciona cada uma das camadas presentes no sistema, segundo AN833 [2].

2.10.2.1 Camada MAC

A pilha utiliza a própria SRAM presente no NIC como um buffer de armazenamento até

que um módulo de nível superior o leia. Ele também faz os cálculos de soma de verificação

necessários para o IP no próprio buffer da SRAM da NIC. Além do buffer FIFO, que é gerenciado

pelo próprio NIC, a camada MAC ainda gerencia a sua própria fila de transmissão. Usando esta

fila, o usuário pode transmitir uma mensagem e pedir para que o MAC não a exclua,

permitindo assim, caso seja necessário, que a mensagem possa ser retransmitida. O usuário

pode especificar o tamanho do buffer de transmissão, fila de transmissão e fila de recebimento

através de definições presentes em código na linguagem de programação C. [2]

2.10.2.2 Camada ARP

A camada ARP do “Microchip TCP/IP Stack” é implementada a partir de dois módulos,

o ARP e o ARPTask. O ARP, executado pelo arquivo “ARP.c”, cria as primitivas do ARP. O

ARPTask, executado pelo arquivo “ARPTask.c”, utiliza por sua vez as primitivas e fornece os

serviços ARP completos.

O ARPTask é implementado como um máquina de estados cooperativos, respondendo

aos pedidos do ARP do servidor remoto. Ele também mantém um cachê de um nível para

armazenar as respostas do ARP e retornar a um nível mais alto quando o momento for

oportuno. O ARPTask não implementa um mecanismo de repetição, então as camadas

superiores ou aplicativos devem detectar condições de tempo de transmissão expirado e

responder de acordo.

O módulo ARPTask opera em dois modos, o modo “servidor” e o modo

“servidor/cliente”. No modo “servidor”, o código referente às solicitações do ARP não são

compiladas porque o servidor precisa apenas responder as solicitações ARP. Devido a

necessidade de gerar as solicitações ARP, no modo “servidor/cliente” a porção do código que

gera as solicitações é habilitada e compilada. Geralmente, se a pilha é usada para aplicações

com algum tipo de servidor (tal como servidores HTTP ou servidores FTP), o ARPTask deve ser

compilado no modo servidor para se reduzir o tamanho de memória ocupada pelo código. [2]

2.10.2.3 Camada IP

A camada IP no “Microchip TCP/IP Stack” é implementada através do arquivo “IP.c”. O

arquivo de cabeçalho “IP.h” define os serviços providos pela camada.

Nesta arquitetura, a camada IP é passiva, ou seja, ela não responde a pacotes de dados

IP. Ao invés disso, camadas de níveis mais altos (por exemplo, o TCP) usam os datagramas IPs

para fazer o gerenciamento e posteriormente interpretar e realizar as ações apropriadas.

A especificação do protocolo IP requer que o servidor local crie um identificador único

para cada pacote transmitido por ele. O identificador permite que, por exemplo, a camada TCP

identifique pacotes, reordene-os caso necessário e descarte os duplicados. A camada IP do

“Microchip TCP/IP Stack” possui uma variável de 16 bits para rastrear identificadores de

pacotes. [2]

2.10.2.4 Camada TCP

A camada TCP do “Microchip TCP/IP Stack” é implementada pelo arquivo “TCP.c”. O

arquivo de cabeçalho “TCP.h” define os serviços providos pela camada. Nesta arquitetura, a

camada TCP é uma camada ativa. Ela busca pacotes TCP no buffer de armazenamento e

responde para o servidor remoto de acordo com a máquina de estados TCP. O módulo TCP

também é implementado como uma tarefa cooperativa, permitindo a realização de tarefas

automaticamente sem que a aplicação principal precise tomar conhecimento delas.

O “TCP.h” disponibiliza os serviços de soquete TCP e esconde os manipuladores de

pacotes TCP de quem os chamou. O número de soquetes é limitado apenas pela memória

disponível e pelo compilador utilizado. Com mais de um soquete, aplicações de alto nível

podem manter conexões TCP múltiplas e simultâneas e, além disso, pode haver mais de uma

aplicação utilizando esta camada. Cada soquete utiliza aproximadamente 36 bytes e cada

soquete adicional aumenta o tempo total de processamento da camada TCP.

A camada TCP do “Microchip TCP/IP Stack” possui a maioria das máquinas de estado

propostas pela RFC793 [25]. Ele também possui implementado a tentativa automática de re-

envio, bem como operações temporizadas. No caso de uma tentativa automática de re-envio,

cada soquete do buffer de transmissão fica reservado enquanto um sinal de “recebido” do

servidor remoto for detectado. Este tipo de design cria de maneira eficaz uma janela de

transmissão para um segmento TCP. [2]

2.10.2.5 Servidor HTTP Microchip

O servidor HTTP é implementado como uma tarefa cooperativa que coexiste com o

“Microchip TCP/IP Stack” e o aplicativo principal do usuário. O servidor em si é implementado

através do arquivo fonte “http.c”.

O servidor HTTP incorpora as seguintes funções principais:

• Suporte a múltiplas conexões HTTP

• Contém um sistema simples de arquivos (MPFS)

• Suporta páginas web alocadas tanto na memória interna de programa quanto em uma

memória EEPROM serial externa

• Inclui um programa para computadores para criar imagens MPFS a partir de um

diretório dado

• Suporte ao método HTTP “GET” (outros métodos também podem ser adicionados)

• Suporte a um CGI modificado para invocar funções predefinidas de dentro do browser

remoto

• Suporta geração de conteúdo de páginas web dinâmicas

Também é necessário gerar páginas web e depois inserí-las em uma imagem em

formato compatível para armazenamento, conforme Figura 5. Para o servidor HTTP do

“Microchip TCP/IP Stack”, este formato é o MPFS. Caso seja necessário o armazenamento das

páginas web em uma memória externa, algum método de programação deve ser incluído na

aplicação, especialmente se é esperado que o conteúdo da mesma possa mudar.

Figura 5 – Diagrama de implementação de um servidor HTTP em um microcontrolador PIC

Fonte – Arquivo de ajuda da biblioteca “Microchip TCP/IP Stack” [6]

O servidor HTTP utiliza o arquivo “index.htm” como página web padrão. Se um cliente

remoto (no caso o navegador) acessar o servidor HTTP pelo seu endereço IP ou apenas pelo

nome do domínio, a página que será exibida é a “index.htm”. Isto requer que todos os

aplicativos incluam um arquivo chamado “index.htm” como parte da imagem MPFS. Se

necessário, o nome deste padrão pode ser alterado mudando a definição do compilador

HTTP_DEFAULT_FILE_STRING, localizado no arquivo “http.c”.

O servidor HTTP faz uso de vários módulos, tais como TCP, StackTask, IP, ICMP, MAC e

Tick. Além destes, outros arquivos auxiliares também são importantes para a implementação

de um servidor HTTP com a biblioteca “Microchip TCP/IP Stack”. Os principais são:

• “MainDemo” – Descreve a rotina principal gravada no microcontrolador – Função

“Main” na linguagem de programação C

• “TCPIPConfig” – Permite a configuração de quais módulos serão utilizados na

aplicação, que neste caso são: TCP/IP, ARP, ICMP, DHCP, ICMP e HTTP2

• “HardwareProfile” – Arquivo onde são feitas as definições dos pinos bem como a dos

bits de configuração do microcontrolador, sendo que nesta a aplicação o PIC está

configurado para utilizar a pilha PLL interna, a freqüência de clock do núcleo é de

41,67 MHz, com o Watchdog desabilitado

• “CustomHTTPApp” – Descreve as respostas do servidor para as diversas solicitações

dos clientes

• “MPFSImg2” – Contém as páginas HTML feitas para inserção das mesmas na memória

do PIC

2.10.2.6 Gerenciador de Pilha

O “Microchip TCP/IP Stack” é uma coleção de diferentes módulos. Alguns módulos, tais

como IP, TCP, UDP e ICMP, devem ser chamados quando um pacote correspondente chegar.

Para ser usado, deve-se seguir uma rotina para se assegurar que os módulos serão chamados

em momentos apropriados. A tarefa de gerenciamento dos módulos da pilha é a mesma,

independente da lógica de programação do aplicativo principal.

Para não sobrecarregar o aplicativo principal com a tarefa do gerenciamento dos

módulos individuais, o “Microchip TCP/IP Stack” possui um uma camada especial de aplicação,

o “StackTask”, ou o gerenciador de pilha. Este módulo é implementado através do arquivo

fonte “StackTsk.c”. O StackTask é implementado como uma tarefa cooperativa,ou seja, quando

é dado o tempo de processamento, ele controla a camada MAC para a validação de pacotes de

dados. Quando um é recebido, ele é decodificado e direcionado para o módulo apropriado

para o seu processamento.

É importante ressaltar que o gerenciador de pilha não faz parte do “Microchip TCP/IP

Stack”. Ele é fornecido juntamente com a pilha para que o aplicativo principal não precise fazer

todo o gerenciamento dos módulos, além das suas próprias tarefas. [2]

2.10.2.7 Programa monitor

Para o seu correto funcionamento, o aplicativo principal deve chamar as funções

previamente implementadas pela biblioteca “Microchip TPC/IP Stack” em uma determinada

seqüência. O esquema a seguir demonstra, de forma simplificada, quais as principais funções

que devem ser chamadas e em qual ordem.

A rotina principal escrita no microcontrolador é descrita no arquivo “MainDemo.c”.

Inicialmente são feitas algumas inicializações antes da entrada do programa na rotina

monitora.

As inicializações feitas são as seguintes:

• InitializeBoard() – Definição do estado inicial dos LEDs de teste, configuração do uso da

PLL interna, habilitação do bit de interrupção global

• TickInit() – Inicialização do modulo “Tick”, que é um contador que faz uso do TIMER 1

para contagem de tempo desde micro-segundos até anos, conforme a configuração

feita

• MPFSInit() – Inicializa acesso a memórias externas se necessário

• InitAppConfig() – Inicialização das variáveis de rede com os valores previamente

configurados no arquivo “TCPIPConfig”

• StackInit() – A biblioteca faz uso de um gerenciador para que os módulos sejam

chamados no momento apropriado e, no caso particular desta aplicação, são

chamadas as seguintes funções de inicialização:

o MacInit() – Esta função faz a inicialização e configuração necessárias para o

funcionamento da camada física do modulo Ethernet presente

o ARPInit() – Inicializa o módulo ARP

o TCPInit() – Inicialização dos buffers de memória e de todas as soquetes como

fechadas

o DHCPInit() – Utilizando-se o DHCP, a placa é iniciada em modo de configuração

para obtenção dos parâmetros de rede

o HTTPInit() – Coloca a máquina de estado para as conexões e as soquetes em

escuta, sendo que as soquetes são abertas na porta HTTP em modo servidor

TCP

• Botao_Init() – Habilitação da interrupção “PORTB Interrupt-on-Change”, para uso do

botão em uma interrupção

Na rotina monitora “While(1)” são realizadas, principalmente, as seguintes tarefas:

• LED monitor – O LED0 é piscado com o auxilio do Tick e LED1 é acionado por

interrupção do botão 1 e desligado após 4 segundos

• StackTask() – Esta função verifica a chegada de novos pacotes e os direciona para o

módulo apropriado, sendo chamada repetidamente para que as respostas sejam dadas

o mais rápido possível e, sendo assim, conforme o tipo do pacote são chamadas as

funções “ARPProcess” ou “ICMPProcess” ou “TCPProcess”

o DHCPTask() – Esta função realiza tarefas periódicas necessárias ao módulo

DHCP, tais como o envio e o recebimento de mensagens envolvendo a

obtenção ou manutenção das configurações de rede

o TCPTick() – Tarefas TCP relativas a tempo (retransmissão, envio do ACK,

fechamento de conexão, entre outros)

o ARPProcess() – Processa os pacotes ARP recebidos, analisando-os e

processando-os se estes pacotes ARP forem uma resposta a alguma solicitação

da placa ou se são algum outro tipo de solicitação

o ICMPProcess() – Processa pacotes ICMP do buffer de recepção, sendo passado

como parâmetro o solicitante e gerando o eco de resposta para solicitações do

comando ping

o TCPProcess() – Processa pacotes TCP recebidos

• StackApplication() – Esta função também deve ser chamada periodicamente para

garantir respostas rápidas, chamando as aplicações implementadas sendo que, para

tal, são chamadas as seguintes funções:

o HTTPServer() – Realiza tarefas periódicas para o módulo HTTP, verificando as

conexões abertas se não existe nenhuma tarefa pendente, devendo ser

chamada periodicamente para que todas as conexões abertas ou novas sejam

atendidas em um tempo razoável, sendo que. para estas ações a função

chama outra função “HTTPProcess()”, que processa e envia as respostas

o DiscoveryTask() – Envio de pacotes UDP para a porta 30303 quando o

protótipo recebeu um IP através do DHCP

• AnnounceIP() – Envio de pacotes UDP broadcast para a porta 30303 quando o

protótipo recebeu um IP por DHCP

Abaixo segue, na Figura 6, um fluxograma simplificado do funcionamento do programa

monitor implementado no PIC.

Figura 6 – Fluxograma do programa monitor

3 METODOLOGIA

A proposta do trabalho é permitir aos usuários uma maneira de, através de um

computador conectado à internet, comandar dispositivos e verificar o status de outros, por

exemplo, os aparatos de iluminação presentes na casa do utilizador. Para tanto deve ser

desenvolvido um dispositivo controlador, que deve estar conectado a uma rede de dados e,

através dela, permitir que o usuário final comande e monitore o sistema alvo, que é o sistema

que se espera monitorar e controlar. Para a presente aplicação tratam-se de LEDs e botões.

Para fins de teste e confirmação de funcionamento, este sistema pode ser conectado a uma

rede gerenciada por um Switch e monitorada com um computador, como está exemplificado

na Figura 7.

Figura 7 – Esquema de funcionamento proposto no presente trabalho

3.1 ESCOLHA DA TOPOLOGIA DO CIRCUITO

Para a confecção de um protótipo de um dispositivo controlador haviam alguns pontos

que deveriam ser estudados em relação à topologia do circuito. A escolha fundamental do uso

do PIC18F66J65 foi feita logo no início do projeto, porque o uso de um microcontrolador em

conjunto com um módulo Ethernet externo é uma solução mais cara e representa uma fonte a

mais de possíveis problemas entre a interface do modulo com o microcontrolador.

A segunda decisão fundamental foi a escolha do uso da própria memória interna do

PIC para o armazenamento das paginas HTML, o que foi possível por se tratar de um PIC com

uma grande quantidade de memória interna disponível (96 KB). O projeto permite a

implementação somente de páginas web simples, sem arquivos ou imagens grandes, porém

mesmo sem estes recursos é perfeitamente possível a demonstração do funcionamento do

módulo.

O PIC18F66J65 é disponível apenas no encapsulamento TQFP de 64 pinos com 0,5 mm

de passo entre os pinos. Por conveniência foi utilizada uma placa de conversão do padrão de

encapsulamento TQFP para o padrão de encapsulamento DIP, facilitando assim todo o

processo de corrosão e solda.

O conector RJ45 escolhido foi o MAG45. Este conector cumpre com as especificações

descritas no datasheet do PIC para conexão e uso do modulo Ethernet, pois contém os

transformadores de desacoplamento necessários internamente. A Figura 8 representa o

diagrama interno de conexão do MAG45.

Figura 8 – Diagrama interno do conector RJ45 MAG45

Fonte – Datasheet do MAG45

A topologia do circuito foi definida com base nas especificações de funcionamento do

microcontrolador pelo seu datasheet. Com a topologia e os componentes principais definidos

foi possível então começar a definição do esquemático que seria utilizado para a confecção do

protótipo propriamente dito.

3.2 CONFECÇÃO DA PLACA

Foi utilizado o programa EAGLE para realizar a confecção das placas de circuito

impresso durante o projeto. Além da placa principal, também foi necessária a confecção de

outra placa para fins de regulação de tensão, porque o protótipo precisa ser alimentado em

níveis de tensão específicos.

3.2.1 PLACA PRINCIPAL

Através do software de confecção de placas de circuito impresso EAGLE inicialmente

fez-se o projeto da placa de circuito integrado. Como foi utilizada uma placa de conversão do

padrão de encapsulamento TQFP 64 pinos para o padrão de encapsulamento DIP e este foi

feito “sobre medida”, também foi preciso criar um componente no EAGLE com as dimensões

corretas do mesmo, conforme Figura 9 e Figura 10.

Figura 9 – Conversor TQFP 64 pinos DIP

Figura 10 – Componente do conversor TQFP DIP em ambiente EAGLE

O esquemático completo proposto, vide Figura 11, foi planejado para ser utilizado

tanto para a gravação quanto para a utilização do projeto em funcionamento. O esquemático

contempla os componentes externos necessários para o funcionamento do modulo Ethernet e

do núcleo de processamento do PIC, além de LEDs indicativos e botões.

Figura 11 – Esquemático do circuito da placa principal

Fonte – Datasheet do PIC18F66J65 [1]

Na Figura 11 acima estão numerados os seguintes componentes:

1. ICSP (Amarelo) – Conectores para a programação do microcontrolador

2. LEDs (Roxo) – Utilizados na depuração do código e simulação de acionamentos

3. RESET (Alaranjado) – Botão de reinicialização conectado ao pino MCLR do PIC

4. RJ45 (Vermelho) – Conector RJ45 para aplicações Ethernet

5. Oscilador (Verde escuro) – Oscilador do PIC de 25 MHz

6. Botão 1 (Verde claro) – Botão utilizado para simular saídas da placa

7. LEDs (Azul) – Indicadores de status e transmissão/recepção de pacotes

Com o esquemático pronto partiu-se para o desenvolvimento da placa. Tanto para

diminuir o efeito de ruídos e perturbações na placa quanto para facilitar a corrosão, optou-se

pela utilização de uma malha de terra. A Figura 12 mostra a versão definitiva da placa.

Figura 12 – Layout da placa principal

A Tabela 2 apresenta a listagem completa dos componentes que foram utilizados na

placa principal.

Componente Quantidade

PIC18F66J65 1

Conector MAG45 1

Capacitor cerâmico 0,1 µF 11

Capacitor de tântalo de 10 µF 1

LED 3 mm Verde 7

Resistor ¼ W de 180 Ω 7

Resistor ¼ W de 4,7 kΩ 1

Resistor ¼ W de 1 kΩ 1

Resistor ¼ W de 10 kΩ 1

Resistor ¼ W de 470 Ω 1

Oscilador de cristal 32 kHz 1

Capacitor cerâmico 27 pF 2

Capacitor cerâmico 33 pF 2

Oscilador cristal 25 MHz 1

Resistor SMD 49,9 Ω 4

Indutor SMD 60 Ω 1

Resistor SMD 1 kΩ 1

Resistor SMD 1,26 kΩ 1

Placa conversora TQFP64 DIP 1

Barra de contatos macho 50 pinos 2

Barra de contatos fêmea 20 pinos 4

Jump de 2 contatos 1

Botão de contato normalmente aberto 2

Par macho / fêmea para conector de alimentação 3 pinos 1

Cabo de silicone preto 1 metro

Cabo de silicone vermelho 1 metro Tabela 2 – Lista de componentes da placa principal

3.2.2 PLACA REGULADORA DE TENSÃO

A segunda placa de circuito impresso a ser confeccionada foi a placa reguladora de

tensão. Esta placa fornece dois níveis de tensão para a placa principal, sendo que um dos

níveis é de 2,5 V, utilizado na alimentação do núcleo do microcontrolador, e o outro de 3,3 V,

para o restante da placa.

Os níveis de tensão necessários foram obtidos com o auxílio do regulador de tensão

LM317 com o encapsulamento TO-220, que possibilita a dissipação de até 20 W, permitindo

assim o fornecimento de correntes de até 1,5 A, suprindo assim com folga as necessidades do

projeto. De acordo com o datasheet do LM317, a tensão de entrada suportada vai de 1,2 V até

25 V e a variação da tensão de saída é obtida com a alteração da relação de resistências ligadas

ao pino ADJ, como esquematizado na Figura 13.

Figura 13 – Esquemático da placa reguladora de tensão

Fonte – Datasheet do regulador de tensão LM317

O resultado final da placa reguladora de tensão está mostrado na Figura 14.

Figura 14 – Versão final da placa reguladora de tensão

A Tabela 3 mostra a lista completa dos componentes utilizados na confecção da placa

reguladora de tensão.

Componente Quantidade

Borne 2 contatos 1

Capacitor cerâmico 0,1 µF 2

Regulador de tensão LM317 TO-220 2

Resistor ¼ W 220 Ω 3

Resistor ¼ W 330 Ω 1

Resistor ¼ W 30 Ω 1

Capacitor eletrolítico 22 µF 2

Dissipador de calor 1 Tabela 3 – Lista de componentes da placa reguladora

Como um dos intuitos do projeto era o de construir um protótipo que pudesse ser

ligado diretamente a uma tomada comum e os níveis de tensão de entrada do LM317 são

incompatíveis com a tensão presente na rede de distribuição de energia, foi utilizada uma

fonte retificadora que opera com 127 V e 220 V e os reduz para 12 V.

Por motivos econômicos esta fonte reguladora foi reaproveitada de um aparelho

antigo que um dos integrantes da equipe possuía.

3.2.3 PROCESSO DE CORROSÃO

Primeiramente foi corroída a placa principal e posteriormente a placa reguladora de

tensão. Para a corrosão das placas foi utilizado o método descrito pelo professor Dr. Ewaldo

Luiz De Mattos Mehl [7]. Os materiais necessários para o processo são:

• Um PC com o programa EAGLE

• Uma impressora laser para impressão da matriz

• Um ferro de passar roupas sem vapor

• A placa de circuito impresso cortada nas dimensões desejadas

• Uma folha de filme tipo poliéster, glossy paper ou couché

• Uma caneta do tipo permanente

• Fita crepe

• Percloreto de ferro em pó ou líquido

• Recipientes de plástico

• Um pedaço de palha de aço

• Detergente de cozinha

• Papel-toalha

• Água

Primeiramente no programa EAGLE devem ser selecionados as seguintes camadas para

a impressão da matriz: “16-Bottom”, “17-Pads”, “18-Vias” e “20-Dimension”. A impressão deve

ser feita em uma impressora laser e pode ser feita na escala 1:1. Optou-se pela utilização do

papel couché, utilizando a face mais lisa para o lado da impressão.

O próximo passo é a limpeza da placa a ser corroída com o auxílio de palha de aço para

a retirada do óxido presente. Após esta limpeza a placa deve ser lavada com detergente em

água corrente e secada com papel-toalha.

Com o auxilio da fita crepe deve-se fixar a placa em uma superfície plana de madeira

juntamente com o papel couché impresso devidamente posicionado e, com o ferro de passar

roupa, aquecê-la uniformemente por no mínimo 5 minutos. Depois com a placa já fria, para

facilitar a retirada do papel que fica grudado na placa, pode-se mergulhá-la em água com

detergente e secá-la preferencialmente com papel-toalha. Com a solução com percloreto de

ferro preparada, deve-se mergulhar a placa até que todo o cobre seja corroído.

Por fim a tinta que restou na placa pode ser retirada com thinner e a placa já pode ser

furada para receber os componentes. Uma proteção adicional pode ser feita com a aplicação

de um verniz feito com breu na placa.

3.3 MÉTODOS PARA TESTE DE REDES DE COMPUTADORES

3.3.1 PROMPT DE COMANDO DO MICROSOFT WINDOWS

Inicialmente foram utilizados alguns comandos básicos de redes de computadores

presentes na ferramenta do prompt de comando do Microsoft Windows. Estes comandos

permitem ao seu usuário uma visão do status geral da rede na qual o computador utilizado

está conectado, bem como quais dispositivos estão conectados a ela, além de outras

funcionalidades adicionais.

Os principais comandos utilizados foram:

• arp – Exibe e modifica as tabelas de conversão de endereços IP para endereços físicos

MAC utilizadas pelo ARP

• getmac – Permite a visualização dos endereços MACs dos adaptadores de redes que

estão em um determinado sistema

• ping – Permite verificação se um dispositivo está ativo tentando estabelecer alguma

comunicação com o mesmo, utilizando o protocolo ICMP

• tracert – Processo de rastreamento de rota, ou seja, a obtenção do caminho que um

determinado pacote de dados atravessa numa rede de computadores até chegar em

seu destino

3.3.2 WIRESHARK

Em conjunto com outras ferramentas, foi utilizado o software Wireshark para a

verificação da rede na qual estava conectado o protótipo. O Wireshark é um programa que

analisa o tráfego de rede, organizando-o por protocolos, permitindo ainda a utilização de

filtros. Sendo assim, é então possível observar o tráfego de dados de uma rede e saber as

informações sobre os pacotes que entram e saem do computador.

Colocando o protótipo e um computador conectados a uma mesma rede, com o auxílio

do Wireshark, é feito o monitoramento da rede em questão enquanto os dispositivos tentam a

comunicação entre si. Com isto é possível saber se os dispositivos estão efetivamente

tentando realizar alguma comunicação ou se existe algum problema na rede.

4 RESULTADOS

Terminada a fase de definição dos conceitos e tecnologias que seriam utilizados no

projeto, iniciou-se a fase de construção do protótipo propriamente dito. Primeiramente foi

feito o desenvolvimento da placa de circuito impresso, seguido dos testes na mesma. Foram

constatados alguns problemas que foram solucionados conforme os tópicos subseqüentes.

Após diversos testes foi constatado que o PIC que estava sendo utilizado

primeiramente estava danificado. Após a substituição do mesmo, o protótipo passou a

funcionar de forma integral, sendo reconhecido perfeitamente nas redes em que foi testado.

Nos tópicos seguintes será feito o detalhamento de cada uma das etapas que foram

necessárias até a obtenção do protótipo funcional.

4.1 PLACAS DE CIRCUITO IMPRESSO

Para a realização do projeto foram feitas duas placas de circuito impresso, sendo que

uma é a placa principal, contendo o PIC e todos os componentes necessários para o bom

funcionamento do mesmo bem como do módulo Ethernet, e outra é a placa reguladora de

tensão, com a finalidade de fornecer os níveis de tensão necessários para o funcionamento do

conjunto.

A placa reguladora de tensão pode ser alimentada com valores de tensão que variam

de 1,2 VDC até 25 VDC aproximadamente e, por este motivo, foi utilizada uma fonte reguladora

de tensão externa que converte 127 VAC ou 220 VAC em 12 VDC, possibilitando assim que o

sistema possa ser ligado em qualquer tomada residencial comum. A Figura 15 mostra o

resultado final, as duas placas juntamente com a fonte de tensão externa.

Figura 15 – Componentes do projeto

Nos tópicos subseqüentes serão detalhados os processos e a problemática envolvida

na confecção de cada uma das placas que compõem o sistema controlador desenvolvido.

4.1.1 PLACA PRINCIPAL

Com o auxílio do graduando Marcos Vinicius Lopes Paixão, o PIC foi soldado na placa

conversora utilizando-se um soprador térmico. Logo em seguida os contatos foram testados

com um multímetro e conferidos com um microscópio ótico para uma melhor visualização dos

mesmos.

Após o processo de corrosão e de solda dos componentes na placa como descrito no

capítulo 3.2.3, a mesma foi conectada ao gravador de microcontroladores. Ocorria, porém, um

erro na identificação do PIC pelo gravador, ou seja, o gravador não conseguia reconhecer o

dispositivo que estava conectado a ele. A possibilidade de algum problema do próprio

gravador foi descartada após teste de gravação de outros PICs, teste este realizado com

sucesso. O PIC18F66J65, contudo, continuava a não ser identificado pelo gravador. As possíveis

causas levantadas foram:

• O PIC estar queimado

• Problema na alimentação do circuito

• Erro no layout da placa

• Solda fria

Primeiramente foram trabalhadas as possíveis soluções mais simples. Foi feita a

verificação da alimentação e troca do cabo, por este ser muito longo e suscetível a auto-

indução. Também se fez a troca do capacitor conectado no pino de alimentação do núcleo do

microcontrolador por um mais adequado de baixa resistência feito de tântalo, como era

indicado pelo datasheet do PIC.

Mesmo com todas as medidas tomadas, o PIC funcionou poucas vezes de forma

instável e intermitente. Com o intuito de resolver o problema algumas soldas foram feitas, mas

a solução efetiva foi desabilitar o regulador interno de tensão do PIC com a conexão do pino

ENVREG ao terra do circuito e, logo em seguida, fazendo a alimentação direta do núcleo do

PIC, utilizando 2,5 V no pino VCORE do microcontrolador.

A Figura 16 mostra a placa principal finalizada.

Figura 16 – Placa principal do protótipo

4.1.2 PLACA REGULADORA DE TENSÃO

A placa principal inicialmente seria alimentada somente com 3,3 V, mas devido a um

problema com o regulador de tensão interno do microcontrolador, uma placa reguladora de

tensão teve que ser montada para fornecer, além dos 3,3 V inicialmente necessários, os 2,5 V

para alimentação do núcleo do PIC.

A placa foi confeccionada conforme instruído no capítulo 3.2.3 e o resultado final está

mostrado na Figura 17.

Figura 17 – Placa reguladora de tensão

4.2 TESTE DE FUNCIONAMENTO DA PLACA PRINCIPAL

Para garantir que o conjunto estivesse funcionando corretamente antes de testar o

modulo Ethernet, foi feito um teste simples com o protótipo desconectado de qualquer rede.

O teste consistia em fazer o microcontrolador piscar apenas um LED. Este teste por mais trivial

que pareça permite testar o correto funcionamento do oscilador, das vias de alimentação, das

vias de gravação e do funcionamento do núcleo do microcontrolador em si. Com este teste foi

possível a identificação e a correção do problema da alimentação do núcleo do

microcontrolador com a placa reguladora de tensão.

4.3 PÁGINA HTML

Foi feita uma página HTML básica para a verificação da funcionalidade do protótipo.

Esta página mostra o estado das saídas do microcontrolador, que para fins de demonstração

de conceito estão ligados a LEDs e de possíveis entradas simuladas pelo botão 1 presente na

placa.

Durante a criação da página foi utilizado o “Microchip Page Preview”, que é uma

ferramenta disponibilizada pela própria Microchip. O Page Preview faz a visualização do

próprio HTML, permitindo a visualização de como será a página carregada no PIC, o que não é

possível diretamente com um navegador comum por causa da existência de variáveis

dinâmicas nas páginas que serão utilizadas pelo microcontrolador. Como descrito no capítulo

2.10.2.5, as páginas HTML são carregadas na memória interna do PIC no formato MPFS com o

auxílio da ferramenta MPFS2 distribuída gratuitamente, também pela Microchip.

A Figura 18 mostra a página principal do servidor HTML proposto.

Figura 18 – Página HTML a ser no protótipo

Na página inicial existe um link para a página na Universidade Federal do Paraná, que

fica localizado no logo da universidade, no canto superior esquerdo da página. Na coluna

localizada na parte esquerda existe também um menu para acesso a outras páginas HTML

carregadas no protótipo. No canto superior direito encontra-se um campo que permite a

visualização e alteração de LEDs e monitoramento do botão 1 da placa. As demais páginas são:

• PIC18F66J65 – Explicação básica do microcontrolador utilizado

• Biblioteca Microchip TCP/IP Stack – Explicação breve da biblioteca utilizada

• Teste da função GET – Página que ilustra o uso desta função HTML (necessita

autenticação)

• Autenticação – Permite o acesso a páginas restritas e protegidas

• Configuração de rede – Permite a visualização das configurações atuais de rede

(necessita autenticação)

O monitoramento dos LEDs na página inicial é feita através de um javascript. O mesmo

trabalha em loop, constantemente atualizando o valor do estado dos LEDs e do botão.

Para evitar problemas de compatibilidade entre os navegadores atualmente

disponíveis no mercado, a página foi desenvolvida sem utilizar caracteres especiais, por

exemplo, letras com acentos e cedilha.

4.4 TESTE DA BIBLIOTECA “MICROCHIP TCP/IP STACK”

No inicio do projeto a versão disponível da biblioteca era a versão 5.0. Durante as

primeiras tentativas de adaptação da biblioteca para utilização com o PIC18F66J65, ocorreram

muitos problemas na compilação da mesma. A solução veio logo em seguida com a versão 5.10

da biblioteca. Esta versão não apresenta problemas que eram comuns na versão anterior.

A biblioteca foi utilizada para a implementação de um servidor HTTP. Para tal foram

devidamente configurados os arquivos “MainDemo.c”, “TCPIPConfig.h”, “CustomHTTPApp.c”,

“Hardwareprofile.h” e foram carregadas as paginas HTM na memória do PIC no arquivo

“MPFSImg2.c”. A Figura 19 mostra o resultado da compilação da biblioteca "Microchip TCP/IP

Stack" com o compilador C18 em ambiente MPLAB.

Figura 19 – Compilação da biblioteca Microchip TCP/IP Stack

4.4.1 TESTE DA BIBLIOTECA ATRAVÉS DA LINHA DE COMANDOS

Com a biblioteca compilada, juntamente com as placas prontas e devidamente

testadas, foi iniciada a fase de testes com a biblioteca em funcionamento. Os testes foram

feitos com a conexão do PIC a uma rede com um servidor DHCP habilitado. O switch presente

na rede utilizada para os testes possui LEDs indicativos para cada porta de comunicação, assim

quando existe um dispositivo conectado a ele o LED respectivo é acionado sempre que existe a

troca de pacotes.

Nos primeiros testes com todos os módulos do programa que iriam ser utilizados, logo

após a conexão do protótipo à rede, os LEDs indicativos do PIC não foram acionados porém o

LED do switch correspondente a porta em que o PIC estava ligado foi acionado e piscou

algumas vezes. Durante este teste foram utilizados algumas vezes funções da linha de

comandos do Windows, como o “ping” e “arp -a”, para a verificação da conectividade do PIC

com a rede, que infelizmente não pode ser comprovada.

Posteriormente trabalhando com a hipótese de que poderia ser algum problema em

algum módulo específico do programa, foram feitas diversas compilações da biblioteca

habilitando e desabilitando alguns módulos. O primeiro destes testes foi utilizando IP fixo, com

somente o bloco ICMP habilitado. O teste foi feito e o PIC não pode ser encontrado na rede. O

segundo teste foi similar ao primeiro, mas com DHCP habilitado. O resultado também foi

similar ao primeiro teste, ou seja, não foi possível detectar o protótipo na rede.

4.4.2 TESTE COM O WIRESHARK

Foram feitos testes também com o PIC conectado ao switch da rede, monitorando-a

com o auxílio do software Wireshark. Neste teste foi repetida a metodologia aplicada nos

testes anteriores, ou seja, foram habilitados e desabilitados alguns módulos do programa, e,

com o auxilio de comandos de rede como o “ping”, foram feitos os testes, porém sem obter

êxito.

O Wireshark foi utilizado para verificar se o pacote de resposta do ping estava

chegando ou não, pois mesmo que o protótipo estivesse conectado a rede existe a

possibilidade de haver algum erro de compreensão entre o computador e a resposta fornecida

pelo PIC, resultando em uma não verificação da conectividade. Com o Wireshark foi

constatado um não envio de resposta por parte do PIC.

Em um segundo momento foi colocado outro computador na rede para ver qual seria

o comportamento do sistema. Como este outro computador funciona corretamente houve

troca de pacotes entre os computadores, fato este que foi identificado pelo Wireshark. Este

teste também confirmou que o endereço do outro computador foi atribuído automaticamente

por DHCP, pois foi possível a visualização da troca de pacotes DHCP no momento da atribuição

do endereço.

O ultimo teste desta série consistiu em fazer com que um determinado LED piscasse

cada vez que a função “StackTask()” fosse chamada e que outro LED piscasse cada vez que a

função “HTTPServer()” fosse utilizada. Para as duas funções foi verificado que de fato elas

estão sendo chamadas constantemente durante a execução da rotina principal como deveria

ser.

4.4.3 TESTE DOS COMPONENTES ETHERNET DA PLACA PRINCIPAL

Durante a execução dos testes anteriores é valido ressaltar que as soldas dos

componentes externos necessários para o funcionamento do módulo Ethernet foram

revisadas. Foi feita também uma nova via de alimentação para os módulos RX e TX Ethernet,

porque havia uma suspeita de que perdas ôhmicas na trilha fossem as causadoras dos

problemas da placa. Porém, mesmo após estas verificações o comportamento do sistema se

manteve o mesmo.

Como o regulador de tensão interno do microcontrolador apresentou problemas foi

levantada a possibilidade de o microcontrolador ter sido danificado com as altas temperaturas

as quais o PIC foi exposto por um longo período de tempo durante o processo de soldagem

com o soprador térmico. Por motivos de segurança foram comprados 2 PICs idênticos,

permitindo assim a substituição do primeiro por outro PIC. Um novo método utilizado para a

soldagem, que difere do primeiro por utilizar um ferro de solda, foi o sugerido pelo graduando

Walter Roberto Godefroid Steiger.

O método consiste apenas em passar pasta de solda nos contatos e com o estanho

fixar os pinos do CI na placa, curto-circuitando-os. O excesso de solda é posteriormente

retirado com o auxilio da pasta de solda na ponta do próprio ferro de solda. Por ser corrosiva,

a pasta facilita a soldagem e faz com que o estanho fique apenas nos contatos. Após o final do

processo a pasta de solda deve ser retirada com álcool etílico.

Comprovando as suspeitas após a solda do PIC reserva, o protótipo foi reconhecido na

rede. O LED que indica conectividade, tanto do switch quanto do PIC, se mantiveram ligados e

houve a troca de pacotes normalmente. Uma hipótese levantada foi a de o novo PIC não

precisar ser alimentado com dois níveis de tensão diferentes porque o seu regulador interno

de tensão poderia estar funcionando. Esta hipótese, entretanto, não foi testada porque para

se habilitar ou desabilitar o regulador interno de tensão do PIC são necessárias alterações na

parte física do protótipo que não foram feitas.

O primeiro teste com o novo microcontrolador foi o de habilitar os módulos ICMP e

DHCP. Através de funções especiais do prompt de comando foi feita a comprovação do correto

funcionamento do protótipo, conforme a Figura 20. Em conjunto com o prompt, foi utilizar o

Wireshark para monitorar as respostas do PIC. A Figura 21 ilustra a troca de pacotes que foi

monitorada durante o teste.

Figura 20 – Teste através do prompt de comando do Windows

Figura 21 - Monitoramento do funcionamento do PIC com o Wireshark

Após alguns outros testes complementares o módulo HTTP foi implementado e

também funcionou corretamente. O teste foi feito nos navegadores Internet Explorer 8.0 e

Mozilla Firefox versão 3.5.5. Para acessar o site é precisar escrever o endereço IP atual do

protótipo em um navegador e a página ‘index.htm’ é automaticamente carregada.

4.4.4 RESULTADO FINAL

Através da página é possível a visualização e alteração do estado dos LEDs da placa. O

botão 1, presente na placa de circuito impresso, aciona o LED0 e este por sua vez é desativado

somente após 4 segundos. Como o estado do protótipo é monitorado “ao vivo”, é possível

também monitorar o estado do LED0 e do botão 1 correspondente, conforme mostrado na

Figura 22.

Figura 22 – Página HTML funcional carregada no protótipo

O servidor web possui várias potencialidades. Ela permite ao usuário a visualização e

alteração online do estado de dispositivos conectados ao microcontrolador, que para efeito de

demonstração de conceito foram LEDs.

Em um produto final, estes dispositivos seriam sensores espalhados pela residência.

Estes sensores monitorariam tanto o estado dos aparelhos eletrodomésticos quanto as

condições ambiente. Poderiam existir atuadores que, fazendo uso dos dados recolhidos pelos

sensores, acionados por um programa monitor ou pelo usuário, poderiam tomar medidas

preventivas remotamente. Por se tratar de um sistema privado, este acesso deve ser através

de algum tipo de conexão segura, como por exemplo, o HTTPS.

Embora o servidor web possua as potencialidades citadas, a sua aplicação fica limitada

ao número de dispositivos que podem ser monitorados ou acionados, devido à quantidade de

pinos disponíveis no PIC. Criando-se módulos extras responsáveis pelo sensoramento e

atuação e, desenvolvendo um sistema de comunicação dos mesmos com uma espécie de

servidor do sistema, responsável apenas pela comunicação do mesmo com a rede externa, é

possível criar um sistema complexo no qual o servidor é apenas a interface de comunicação

com a rede externa.

5 CONCLUSÃO

Neste trabalho foi desenvolvido um protótipo de um sistema para controle e

monitoramento remoto de dispositivos em uma residência. Este tema envolveu conceitos de

todas as áreas da Engenharia Elétrica: a Eletrônica, a Eletrotécnica e as Telecomunicações.

Foram utilizados conhecimentos específicos de cada área de forma integrada, de modo a

idealizar o conceito de um dispositivo capaz de realizar acionamentos de forma remota.

O foco do protótipo desenvolvido foi principalmente a demonstração de conceitos. Por

este motivo não houve uma preocupação com o desenvolvimento de módulos específicos para

acionamentos nem de comunicação entre dois ou mais módulos. Foi necessário um

aprofundamento nos protocolos padrões da pilha TCP/IP para compreender o funcionamento

da biblioteca “Microchip TCP/IP Stack”, na qual o presente trabalho se baseou principalmente.

Desde o início do projeto foram utilizados diversos softwares e ferramentas

computacionais, tanto na fase de projeto e confecção do protótipo quanto na fase de testes. O

nível de conhecimento e experiência adquiridos proporcionaram um aprendizado de grande

importância nas áreas estudadas, que com certeza acrescentarão muito nas nossas futuras

vidas profissionais.

Desde a fase inicial de prototipagem, o projeto passou por algumas alterações mínimas

em seu escopo, sendo assim possível o cumprimento das metas originais. Foi desenvolvido

com sucesso um protótipo funcional, autônomo, ou seja, independente de um computador e

ao mesmo tempo conectável a uma rede de dados. Também foi carregada uma página HTML

no PIC e, através dela, foi possível comandar e monitorar entradas e saídas do sistema criado.

Com mais tempo será possível expandir as aplicações da placa. Fazendo uso de

memórias externas será possível carregar páginas HTML mais elaboradas e, portanto, capazes

de realizar mais funções. Também com a confecção de módulos extras em conjunto com um

sistema de comunicação entre os módulos, será possível criar um sistema capaz de gerenciar

grandes ambientes sem muitos problemas.

5.1 PERSPECTIVAS

O protótipo possui um grande potencial que pode ser explorado a fim de viabilizar a

sua implementação comercial. Para tal são necessárias algumas melhorias, dentro das quais se

destacam:

• Sistema de comunicação entre o servidor HTTP e outros módulos de acionamentos, a

fim de possibilitar a expansão do sistema caso necessário

• Agendamento de tarefas

o Despertador

o Desligamento programado

• Incorporar a placa principal com a fonte

• Sistema de navegação segura – HTTPS

• Uso de uma pequena tela LCD para visualização de dados eventualmente enviados

pelo usuário

O protótipo também tem potencial para ser usado como módulo de comunicação em

um sistema complexo. Neste ambiente o protótipo desenvolvido poderia ser utilizado

especificamente como módulo de comunicação via Ethernet do sistema. Neste sentido

existem inúmeras aplicações possíveis envolvendo coleta e envio de dados pela Internet. Para

facilitar sua utilização pode também ser feito o uso de sistemas de DNS dinâmico.

6 REFERÊNCIAS BIBLIOGRÁFICAS

[1] MICROCHIP. PIC18F97J60 Family Data Sheet. Disponível em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39762e.pdf>. Acesso em: 22 de novembro de 2009.

[2] RAJBHARTI, Nilesh. AN833 – Microchip TCP/IP Stack Application Note. Disponível em: <http://ww1.microchip.com/downloads/en/AppNotes/00833c.pdf>. Acesso em: 22 de novembro de 2009.

[3] MICROCHIP. Site da Microchip. Disponível em: <http://www.microchip.com>. Acesso em: 22 de novembro de 2009.

[4]MICROCHIP. Forum Microchip TCP/IP Stack. Disponível em: <http://www.microchip.com/forums/tt.aspx?forumid=171>. Acesso em: 22 de novembro de 2009.

[5]MICROCHIP. TCP/IP Design Centers Home Page. Disponível em: <http://www.microchip.com/TCPIP>. Acesso em: 22 de novembro de 2009.

[6] MICROCHIP. Microchip TCP/IP Stack. Disponível em: <http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en026442>. Acesso em: 22 de novembro de 2009.

[7] MEHL, Ewaldo Luiz de Mattos. Projeto de Circuitos Impressos usando o software EAGLE. Disponível em: <http://www.eletr.ufpr.br/mehl/pci/poliester.html>. Acesso em: 22 de novembro de 2009.

[8]Tutorial HTML. Disponível em: <http://www.frhost.com.br/central/dl.php?type=d&id=17>. Acesso em: 22 de novembro de 2009.

[9] OLIVEIRA, Cliceu Buture de. Apostila Eagle 4x. Disponível em: <http://www.eletronica.org/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=54&ttitle=Apostila_do_Eagle_4x>. Acesso em: 22 de novembro de 2009.

[10] PASTRO, Ademar Luiz. Apostila de Microcontroladores. Apostila da disciplina TE124 – Microcontroladores – UFPR, Curitiba. 2009.

[11] TYCO ELETRONIC. Mag45 – RJ45 with Integrated Magnetics. Disponível em: <http://www.tycoelectronics.com/catalog/pn/pt/6605759-1>. Acesso em: 22 de novembro de 2009.

[12] NATIONAL SEMICONDUCTOR. LM317 3-Terminal Adjustable Regulator. Disponível em: <http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS009063.PDF>. Acesso em: 22 de novembro de 2009.

[13] WIKIPEDIA. Ethernet. Disponível em: <http://en.wikipedia.org/wiki/Ethernet>. Acesso em: 22 de novembro de 2009.

[14] WIKIPEDIA. MAC. Disponível em: <http://en.wikipedia.org/wiki/MAC_address>. Acesso em: 22 de novembro de 2009.

[15] WIKIPEDIA. Adress Resolution Protocol. Disponível em: <http://en.wikipedia.org/wiki/Address_Resolution_Protocol>. Acesso em: 22 de novembro de 2009.

[16]WIKIPEDIA. Internet Protocol. Disponível em: <http://en.wikipedia.org/wiki/Internet_Protocol>. Acesso em: 22 de novembro de 2009.

[17] WIKIPEDIA. Internet Control Message Protocol. Disponível em:<http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol>. Acesso em: 22 de novembro de 2009.

[18] WIKIPEDIA. Transmission Control Protocol. Disponível em: <http://en.wikipedia.org/wiki/Transmission_Control_Protocol>. Acesso em: 22 de novembro de 2009.

[19] WIKIPEDIA. Dynamic Host Configurarion Protocol. Disponível em: <http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol>. Acesso em: 22 de novembro de 2009.

[20] WIKIPEDIA. Hypertext Transfer Protocol. Disponível em: <http://en.wikipedia.org/wiki/Http>. Acesso em: 22 de novembro de 2009.

[21]WIKIPEDIA. HTML. Disponível em: <http://en.wikipedia.org/wiki/HTML>. Acesso em: 22 de novembro de 2009.

[22] ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 14724: informação e documentação: trabalhos acadêmicos: apresentação. Rio de Janeiro, 2002.

[23] UNISO. Manual de Normalização de Apresentação de Teses, Dissertações e Trabalhos de Conclusão de Curso (TCC) da Universidade de Sorocaba. Disponível em: <http://www.scribd.com/doc/4076862/ABNT-Manual-I>. Acesso em: 22 de novembro de 2009.

[24] WIKIPEDIA. Twisted Pair. Disponível em: <http://en.wikipedia.org/wiki/Twisted_pair>. Acesso em: 22 de novembro de 2009.

[25] RFC 793 – Transmission Control Protocol. Disponível em: <http://www.faqs.org/rfcs/rfc793.html>. Acesso em: 22 de novembro de 2009.

[26] RFC 791 – Internet Protocol. Disponível em: <http://www.faqs.org/rfcs/rfc791.html>. Acesso em: 22 de novembro de 2009.

[27] RFC 826 – Ethernet Address Resolution Protocol. Disponível em: <http://www.faqs.org/rfcs/rfc826.html>. Acesso em: 22 de novembro de 2009.

[28] RFC 2616 – Hypertext Transfer Protocol. Disponível em: <http://www.faqs.org/rfcs/rfc2616.html>. Acesso em: 22 de novembro de 2009.

7 ANEXOS

ANEXO A – CRONOGRAMA DO PROJETO

Segue abaixo a Tabela 4 com o cronograma das atividades desenvolvidas durante o

presente projeto de graduação.

Mês / 2009 Atividade

Agosto Apresentação da proposta do projeto

Estudo dos microcontroladores disponíveis

Definição dos componentes necessários para a confecção de um sistema autônomo

Setembro Definição do layout da placa de circuito impresso

Confecção da placa principal

Testes iniciais “off-line” da placa principal

Outubro Solução dos problemas da placa principal

Apresentação parcial do projeto

Confecção da placa reguladora de tensão

Testes “off-line” com o sistema completo

Inicio do relatório escrito

Novembro Compilação da biblioteca “Microchip TCP/IP Stack”

Testes iniciais “on-line” do protótipo

Solução dos problemas do protótipo

Término do relatório escrito

Dezembro Correções finais do relatório escrito

Apresentação final do projeto Tabela 4 – Cronograma do projeto

ANEXO B – CONFIGURAÇÃO E UTILIZAÇÃO DA PILHA

O sistema de multitarefas cooperativas permite que o aplicativo principal execute suas

próprias tarefas sem precisar gerenciar a pilha TCP/IP simultaneamente. Partindo deste

pressuposto é necessário que todos os aplicativos que utilizam o “Microchip TCP/IP Stack”

sejam escritos utilizando um padrão de multitarefas cooperativas. Para tanto, porém, algumas

configurações iniciais devem ser respeitadas. [2]

Para facilitar o processo de configuração, a pilha usa as definições presentes nos

compiladores da linguagem de programação ‘C’. Para habilitar, desabilitar ou alterar algum

parâmetro em particular estas definições devem ser alterados, sendo que grande parte delas

estão no arquivo de cabeçalho “StackTsk.h”. Outras definições devem ser feitas em arquivos

mostrados de acordo com a Tabela 5, mostrada abaixo.

Define Valores Usados por Propósito

CLOCK_FREQ (compiler.h)

Freqüência do oscilador [Hz]

Tick.c Define a freqüência do oscilador do sistema para determinar o valor do contador do Tick

TICKS_PER_SECONDS 10 – 255 Tick.c Para calcular um segundo

TICK_PRESCALE_VALUE 2, 4, 8, 16, 32, 64, 128, 256

Tick.c Determinar o valor do contador do Tick

MPFS_USE_PGRM N/A MP File System (MPFS.c)

Usar a memória de programa para o arquivamento da MPFS

MPFS_USE_EEPROM N/A MPFS.c Usar memória EEPROM externa para o arquivamento da MPFS

MPFS_RESERVE_BLOCK 0 – 255 MPFS.c Número de bytes reservados antes do arquivamento da MPFS começar

EEPROM_CONTROL Código de controle dos

dados externos da EEPROM

MPFS.c Para endereçar dados em uma EEPROM externa

STACK_USE_ICMP N/A StackTsk.c Utilizar ICMP

STACK_USE_SLIP N/A SLIP.c Utilizar SLIP

STACK_USE_IP_GLEANING N/A StackTsk.c Utilizar IP Gleaning

STACK_USE_DHCP N/A DHCP.c StackTsk.c

Utilizar DHCP

STACK_USE_FTP_SERVER N/A FTP.c Utilizar o servidor FTP

STACK_USE_TCP N/A TCP.c StackTsk.c

Utilizar TCP. Este módulo será automaticamente habilitado quando ao menos um nível superior requerer o TCP.

STACK_USE_UDP N/A UDP.c StackTsk.c

Utilizar UDP. Este módulo será automaticamente habilitado quando ao menos um nível superior requerer o UDP.

STACK_CLIENT_MODE N/A ARP.c TCP.c

Códigos relativos ao cliente serão habilitados

TCP_NO_WAIT_FOR_ACK N/A TCP.c O TCP esperará pela mensagem ACK antes de transmitir um novo pacote de dados

MY_DEFAUT_IP_ADDR_BYTE? MY_DEFAUT_MASK_BYTE? MY_DEFAUT_GATE_BYTE? MY_DEFAUT_MAC_BYTE?

0 – 255 Aplicativo do usuário

Define os valores padrão do IP, MAC, portas de ligação e máscara de subrede. Os valores padrão são: 10.10.5.15 para endereços IP; 00:04:A3:00:00:00 para MAC; 10.10.5.15 para porta de ligação; 255.255.255.0 para máscara de subrede.

MY_IP_BYTE? MY_MASK_BYTE? MY_GATE_BYTE? MY_MAC_BYTE?

0 – 255 MAC.c ARP.c

DHCP.c Aplicativo do

usuário

Valores atuais do IP, MAC, portas de ligação e máscara de subrede definidas pelo aplicativo. Se o DHCP estiver habilitado, os valores refletem a configuração atual do servidor DHCP.

MAX_SOCKETS 1 – 253 TCP.c Para definir o número total de soquetes suportados (limitados pela RAM disponível). O tempo de compilação é verificado para se ter certeza que existam soquetes suficientes para a aplicação.

MAX_UDP_SOCKETS 1 – 254 UDP.c Para definir o número total de soquetes suportados (limitados pela RAM disponível). O tempo de compilação é verificado para se ter certeza que existam soquetes suficientes para a aplicação.

MAC_TX_BUFFER_SIZE 201 – 1500 TCP.c MAC.c

Para definir o tamanho do buffer de transmissão

MAX_TX_BUFFER_COUNT 1 – 255 MAC.c Para definir o número total de buffers de transmissão. Este número é limitado pelo tamanho do buffer do MAC disponível.

MAX_HTTP_CONNECTIONS 1 – 255 HTTP.c Para definir o número máximo de conexões HTTP permitidas

MPFS_WRITE_PAGE_SIZE (MPFS.h)

1 – 255 MPFS.c Para definir o tamanho máximo da página para a mídia atual de armazenamento do MPFS

FTP_USER_MANE_LEN (FTP.h)

1 – 31 FTP.c Para definir o tamanho máximo da string do nome do usuário do FTP

MAX_HTTP_ARGS (HTTP.c)

1 – 31 HTTP.c Para definir o número máximo de formulários HTML

MAX_HTML_CMD_LEN (HTTP.c)

1 – 128 HTTP.c Para definir o comprimento máximo da string URL do formulário HTML

Tabela 5 – Arquivos para configuração da pilha TCP/IP

Fonte – Application Notes AN833 [2]

Os arquivos contidos na tabela seguinte apresentam uma visão geral completa de

todas as funções disponíveis nos módulos “Microchip TCP/IP Stack”, servidores HTTP e FTP,

DHCP e “IP Gleaning”.

Como cada módulo presente na pilha possui o seu próprio arquivo, deve-se ter certeza

que foram inclusos todos os arquivos certos no projeto para uma correta compilação. A lista

completa dos módulos e arquivos necessários está na Tabela 6.

Módulo Arquivos necessários Propósito

MAC MAC.c Delay.c

Camada MAC

SLIP SLIP.c MAC para SLIP

ARP ARP.c ARPTask.c MAC.c ou SLIP.c Helpers.c

Protocolo de resolução de endereços

IP IP.c MAC.c ou SLIP.c Helpers.c

Protocolo de Internet

ICMP ICMP.c StackTsk.c IP.c MAC.c ou SLIP.c Helpers.c

Protocolo de mensagens de controle de internet

TCP StackTsk.c TCP.c IP.c MAC.c ou SLIP.c Helpers.c Tick.c

Protocolo de controle de transmissão

UDP StackTsk.c UDP.c IP.c MAC.c ou SLIP.c Helpers.c

Protocolo de datagrama de usuário

Stack Manager StackTsk.c TCP.c IP.c ICMP.c ARPTsk.c ARP.c MAC.c ou SLIP.c Tick.c Helpers.c

Gerenciador de pilha (Stack Manager, função “StackTask”), que coordena os outros módulos “Microchip TCP/IP Stack”

HTTP Server HTTP.c TCP.c IP.c MAC.c ou SLIP.c Helpers.c Tick.c MPFS.c XEEPROM.c

Servidor HTTP

DHCP Client DHCP.c UDP.c IP.c MAC.c Helpers.c Tick.c

Cliente DHCP

IP Gleaning StackTsk.c ARP.c ARPTask.c ICMP.c MAC.c ou SLIP.c

Apenas para configurar os endereços IP

FTP Server FTP.c TCP.c IP.c MAC.c

Servidor FTP

Tabela 6 – Lista dos módulos e arquivos necessários para compilação da biblioteca

Fonte – Application Notes AN833 [2]

ANEXO C – APIS

O “Microchip TCP/IP Stack” consiste de vários módulos. Para se utilizar estes módulos,

o usuário deve entender o seu propósito bem como os seus APIs. Abaixo segue uma breve

descrição de cada um dos APIs para cada módulo utilizado neste projeto. [2]

CAMADA MAC

Função Descrição

MACInit Inicializa a camada MAC, bem como inicializa o buffer interno e reinicia o NIC para um estado conhecido

MACIsTxReady Indica se pelo menos um buffer de transmissão do MAC está livre ou não

MACGetHeader Verifica o buffer de recepção do MAC, se algum pacote for encontrado, a função retorna as informações do servidor remoto e as informações do pacote de dados

MACGet Retorna o próximo byte de uma transmissão ativa ou do buffer de recepção

MACGetArray Busca um array de bytes na transmissão ativa ou no buffer de recepção

MACDiscardRx Descarta os dados do buffer de recepção ativo e o marca como livre

MACPutReader Monta o header do MAC e o carrega no buffer de transmissão ativo

MACPut Carrega um conjunto de dados em um buffer ativo de transmissão ou recepção

MACPutArray Escreve uma array de bytes de dados em um buffer ativo de transmissão ou recepção

MACFlush Marca o buffer ativo de transmissão como pronto para transmissão

MACDiscardTx Descarta os dados do buffer de transmissão e o marca como livre

MACSetRxBuffer Indica o local de acesso para o buffer ativo de recepção

MACSetTxBuffer Indica o local de acesso para o buffer de transmissão e marca este mesmo buffer como ativo

MACReserveTxBuffer Reserva um dado buffer de transmissão e o torna “inacessível”. Esta função é útil para a camada TCP onde uma mensagem deve ser enfileirada até que seja devidamente reconhecida pelo servidor remoto

MACGetFreeRxSize Retorna o valor total de memória livre disponível no buffer de recepção para futuros pacotes de dados

MACGetRxBuffer Retorna o identificador do buffer de recepção atual

MACGetTxBuffer Retorna o identificador do buffer de transmissão atual Tabela 7 – Funções da camada MAC

CAMADA ARP

Função Descrição

ARPIsTxReady Uma macro que chama a função MACIsTxReady em seguida

ARPGet Busca os pacotes ARP completos e retorna as informações necessárias

ARPPut Carrega o buffer do MAC com um pacote ARP válido

ARPInit Inicializa a máquina de estados ARPTask e a prepara para gerenciar as solicitações e respostas do ARP

ARPResolve Envia uma solicitação ARP para o servidor remoto

ARPIsResolved Verifica a memória cachê interna e retorna informações de endereço do servidor correspondente

Tabela 8 – Funções da camada ARP

CAMADA IP

Função Descrição

IPIsTxReady Macro que por sua vez chama a função “MACIsTxReady”

IPSetTxBuffer Uma macro que permite a camadas de nível mais alto definir o ponteiro de acesso ao buffer de transmissão. Esta macro leva em consideração o cabeçalho do IP antes de chamar a função “MACSetTxBuffer”

IPPutHeader Monta um cabeçalho IP válido e o carrega no buffer de transmissão ativo

IPPutArray Carrega um array de bytes no buffer de transmissão ativo

IPGetHeader Busca o cabeçalho do IP no buffer de transmissão ativo e o valida

IPGetArray Busca um array de bytes do buffer ativo de transmissão ou de recepção

IPSetRxBuffer Permite que uma camada de nível mais alto defina o ponteiro de acesso ao buffer de recepção. Esta macro leva em consideração o cabeçalho do IP antes de chamar a função “MACSetRxBuffer”

Tabela 9 – Funções da camada IP

CAMADA TCP

Função Descrição

TCPInit Inicializa a máquina de estados TCP e a prepara para conexões TCP múltiplas

TCPListen Designa um dos soquetes disponíveis para escutar uma determinada porta TCP

TCPConnect Inicia a requisição de comunicação com o servidor remoto numa determinada porta remota

TCPIsConnected Determina se um determinado soquete está conectado ao servidor remoto ou não

TCPDisconnect Faz a requisição ao servidor remoto para desconexão

TCPIsPutReady Determina se o soquete está pronto para transmitir. Um soquete está pronto para transmitir quando está conectado a um servidor remoto e o buffer de transmissão está vazio

TCPPut Carrega um byte de dados no buffer de transmissão para um determinado soquete

TCPFlush Marca um determinado soquete de um buffer de transmissão como pronto para transmissão

TCPIsGetReady Determina se um determinado soquete contém dados recebidos

TCPGet Busca e pega um byte de dados de um determinado soquete de um buffer de recepção

TCPGetArray Busca e pega um array de dados de um determinado soquete de um buffer de recepção

TCPDiscard Libera o buffer de recepção associado com um determinado soquete

TCPProcess Funciona como “TCPTask”. A função procura e busca um pacote TCP já recebido e executa a máquina de estados TCP para soquetes correspondentes. Esta função deve ser chamada apenas quando um pacote TCP for recebido

TCPTick Funciona como um outro “TCPTask” para completar o TCPProcess. Esta função verifica as condições de time-out para todos os soquetes e tenta recuperá-las a partir deles

Tabela 10 – Funções da camada TCP

PÁGINA HTTP

Função Descrição

HTTPGetVar Quando o servidor HTTP encontra a string ‘%xx’ (o ‘%’ serve como caractere de controle e o ‘xx’ é uma variável identificadora de dois dígitos) em uma página CGI que está sendo servida, o servidor chama esta função. Esta função é implementada pelo aplicativo principal do usuário e é usada para transferir o status de variáveis específicas para o HTTP

HTTPExecCmd Quando o servidor HTTP recebe o método GET com mais de um parâmetro, ele deve chamar esta função. Esta função é implementada pelo aplicativo principal e ela deve decodificar o código do método dado e tomar as devidas ações. Estas ações podem ser desde dar um novo nome a uma página web ou realizar alguma tarefa relacionada com as entradas ou saídas do sistema

Tabela 11 – Funções da página HTTP

ANEXO D – SISTEMA DE ARQUIVOS MPFS

O servidor HTTP da Microchip utiliza um sistema de arquivos simples para o

armazenamento de páginas web. A imagem MPFS pode ser armazenada tanto na própria

memória de programa do microcontrolador quanto em uma memória EEPROM externa. O

MPFS segue um tipo de formato especial para o armazenamento de múltiplos arquivos em

uma dada memória, como exemplificado na Figura 23.

Figura 23 – Esquemático do sistema de armazenamento de arquivos MPFS

Fonte – Application Notes AN833 [2]

O MPFS utiliza nomes pequenos de arquivos no formato “8 + 3” (8 bytes para o nome

do arquivo e mais 3 bytes para a extensão, ou NNNNNNNN.EEE). O endereço de 16 bits dá

início ao primeiro bloco de dados. Todos os nomes de arquivo são registrados em caixa alta,

para assim tornar a comparação entre nomes de arquivos mais fácil.

Existe um programa para PCs, disponibilizado pela Microchip, chamado “MPFS Image

Builder” (MPFS.exe). Este programa pode ser utilizado para criar as imagens MPFS necessárias

para se carregar uma página web no microcontrolador a partir de uma série de arquivos.

Dependendo de onde as imagens vão ser armazenadas, o usuário tem a opção de gerar um

arquivo ‘C’ ou um arquivo binário representando a imagem MPFS.

Antes de a imagem MPFS ser construída, é necessário que a página web seja criada e

todos os arquivos sejam salvos em um único diretório. Se as imagem MPFS for armazenada na

memória de programa interna do microcontrolador, então o arquivo ‘C’ deve ser incluído junto

com a biblioteca. Se ao invés a imagem for armazenada em uma memória EEPROM externa, o

arquivo binário deve ser carregado nela. [2]

ANEXO E – FERRAMENTAS COMPUTACIONAIS UTILIZADAS

EAGLE

O programa EAGLE é uma ferramenta para a realização do roteamento de placas de

circuito impresso. O programa está disponível tanto para Windows quanto para Linux,

destacando-se pela facilidade de utilização e pela existência de uma versão gratuita. Na versão

gratuita podem ser utilizadas apenas duas camadas, sendo suficiente para a maioria das

aplicações. Outra limitação é o tamanho da placa, que também para a maioria das aplicações

não é um fator limitante.

Alem de possuir uma vasta biblioteca de componentes e circuitos integrados, o EAGLE

também apresenta uma grande facilidade de criação de novos componentes, bem como as

opções de roteamento da placa. Com esquemático do circuito, baseando-se nas opções de

roteamento e número de camadas o software se mostra muito eficiente na confecção de

placas de circuito impresso.

Figura 24 – Interface do programa EAGLE

MICROCHIP MPLAB

Durante todo o projeto a programação do PIC foi feita em ambiente MPLAB. A decisão

pela utilização do MPLAB no projeto foi feita pela facilidade que esta escolha representaria,

tendo em vista que a biblioteca “Microchip TCP/IP Stack” é compatível com o compilador C18,

da própria Microchip.

O MPLAB é um compilador projetado para fazer a programação dos

microcontroladores da família PIC. Sendo fornecida pelo próprio fabricante, este programa é

perfeitamente compatível com qualquer um destes dispositivos, tornando-o assim ideal para a

maioria das aplicações.

Figura 25 – Interface do programa MPLAB

PICKIT 2 PROGRAMMER

Para a gravação durante o projeto foi utilizado o gravador / depurador PICkit 2. A

comunicação USB é compatível com o padrão USB 2.0. A alimentação do PIC que será gravado

pode ser feita através da porta USB de computadores de mesa e laptop ou através de fonte

externa. Existe a possibilidade de conexão à placa alvo através de um conector de 5 vias ICSP.

O programador pode ser utilizado com dispositivos da família PIC10F, 12F, 16F, 18F é

24F, além das famílias dsPIC30 e dsPIC33, com valores de alimentação que variam de 2,5 V até

5,0 V.

O PICkit 2 é compatível com os seguintes sistemas operacionais: Windows 2000 service

pack 4, Windows XP service pack 3, Windows Vista, LINUX e MAC.

Figura 26 – Gravador de microcontroladores PIC PICkit 2

MICROCHIP MPFS GENERATOR

O “Microchip MPFS Generator” é uma ferramenta para projetos envolvendo a

biblioteca “Microchip TCP/IP Stack”. Ela permite a criação de arquivos imagem para serem

incluídos e gravados na memória interna do PIC ou em memórias EEPROM externas.

A ferramenta faz uso do arquivo ‘HTTPPrint.h’, presente no projeto MPLAB da

biblioteca, para o uso de variáveis dinâmicas na página HTML.

Figura 27 – Gerador de imagens MPFS

MICROCHIP PAGE PREVIEW

O “Microchip Page Preview” é uma ferramenta disponibilizada pela própria Microchip,

que permite a pré-visualização de páginas HTML. A vantagem da utilização desta ferramenta

está no fato de ela mostrar um resultado funcional da página web. Devido ao uso de variáveis

dinâmicas e de cabeçalhos e rodapés fixos, se a página HTML for aberta diretamente “off-line”

em um navegador ela não será devidamente visualizada. O Page Preview busca e abre o

cabeçalho/rodapé mostrando o seu conteúdo corretamente e, para as variáveis dinâmicas, é

mostrado o valor padrão das mesmas.

O programa visualiza as páginas HTML no seu formato padrão, não sendo necessário

nenhum tipo de conversão de formato.

Figura 28 – Interface do Microchip Page Preview

MCHPDETECT

Fornecido pela Microchip, este programa possui o intuito de identificar o endereço IP

atual de algum sistema que utilize a biblioteca “Microchip TCP/IP Stack” logo após este sistema

receber um endereço por DHCP.

O protótipo é programado para enviar um pacote UDP broadcast para a porta 30303.

Sendo assim, o programa monitora os pacotes recebidos nesta porta e, quando um pacote é

recebido, o programa automaticamente retorna o IP atual e o endereço MAC do remetente.

Figura 29 – Software MCHPDetect

WIRESHARK

O Wireshark é um programa que analisa o tráfego de rede, organizando-o por

protocolos. Uma das facilidades é a utilização de filtros por endereço IP, que auxilia no

acompanhamento da seqüência de envio dos pacotes de dados em redes com vários

elementos. Sendo assim, é possível monitorar o tráfego de dados de uma rede em diferentes

protocolos.

Com este programa é possível fazer a verificação dos pacotes que são enviados e

recebidos quando, por exemplo, for dado o comando “ping” no Microsoft Windows ou ainda

quando um novo dispositivo entrar na rede.

Figura 30 – Interface do programa Wireshark