sistema embarcado com acesso sem-fio · com recursos de hardware capazes de trabalhar com sistemas...

54
EDUARDO MALTAURO NICKEL WILLIAM KUHL SVOBODA MARQUES BESSA SISTEMA EMBARCADO COM ACESSO SEM-FIO Monografia apresentada à disciplina de Projeto de Graduação como requisito para a conclusão do Curso de Engenharia Elétrica, Setor de Tecnologia, Departamento de Engenharia Elétrica, Universidade Federal do Paraná. Orientador: Prof.° Eduardo Parente Ribeiro CURITIBA 2010

Upload: lediep

Post on 09-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

EDUARDO MALTAURO NICKEL

WILLIAM KUHL SVOBODA MARQUES BESSA

SISTEMA EMBARCADO COM ACESSO SEM-FIO

Monografia apresentada à disciplina de Projeto de Graduação como requisito para a conclusão do Curso de Engenharia Elétrica, Setor de Tecnologia, Departamento de Engenharia Elétrica, Universidade Federal do Paraná. Orientador: Prof.° Eduardo Parente Ribeiro

CURITIBA 2010

SUMÁRIO

LISTA DE SIGLAS ........................................................................................... i

RESUMO .................................................................................................... iv

1 INTRODUÇÃO ........................................................................................... 1

1.1 Objetivo .................................................................................................... 1

2 FUNDAMENTAÇÃO ................................................................................... 3

2.1 Hardware .................................................................................................. 3

2.1.1 Microprocessador ............................................................................. 3

2.1.2 Memória RAM ................................................................................... 4

2.1.3 Memória Flash ................................................................................... 4

2.1.4 Interface USB ..................................................................................... 5

2.1.5 Interface Serial .................................................................................. 5

2.1.6 Interface Ethernet ............................................................................. 6

2.1.7 Rede Sem-Fio IEEE 802.11 ................................................................. 7

2.1.8 Mini PCI ............................................................................................. 7

2.1.9 SDIO ................................................................................................... 8

2.1.10 GPIO ................................................................................................. 8

2.2 Software ................................................................................................... 9

2.2.1 Linux .................................................................................................. 9

2.2.2 Distribuições Linux .......................................................................... 10

2.2.2.1 OpenWRT ................................................................................. 11

2.2.2.2 DD-WRT .................................................................................... 11

2.2.2.3 Tomato ..................................................................................... 12

2.2.3 Impressão ........................................................................................ 13

2.2.3.1 LPR ............................................................................................ 13

2.2.3.2 CUPS ......................................................................................... 13

2.2.4 Compartilhamento de Arquivos ...................................................... 14

2.2.4.1 Samba ....................................................................................... 14

2.2.5 Servidor Web ................................................................................... 14

2.2.5.1 httpd e BusyBox ....................................................................... 15

2.2.5.2 Lighttpd .................................................................................... 16

2.2.5.3 uhttpd ....................................................................................... 16

2.2.6 Gerenciadores de Transferência de arquivos ................................. 16

2.2.6.1 Ctorrent .................................................................................... 17

2.2.6.2 Transmission ............................................................................. 17

2.2.6.3 wget .......................................................................................... 18

2.2.6.4 Pure-FTPd ................................................................................. 18

2.2.7 Firewall ............................................................................................ 18

2.2.7.1 Iptables ..................................................................................... 19

3. METODOLOGIA...................................................................................... 20

3.1 Seleção do Hardware ............................................................................. 20

3.1.1 Ubiquiti RouterStation PRO ............................................................. 21

3.2 Seleção da Distribuição Linux ................................................................. 24

3.3 Funcionamento do sistema .................................................................... 24

3.4 Software ................................................................................................. 26

3.4.1 OpenWRT ........................................................................................ 26

3.4.2 Rede ................................................................................................. 27

3.4.2.1 Ethernet .................................................................................... 27

3.4.2.2 Rede Sem-Fio IEEE 802.11 ........................................................ 28

3.4.3 Firewall ............................................................................................ 29

3.2.4 Servidor Web ................................................................................... 29

3.2.5 Servidor FTP ..................................................................................... 29

3.2.6 Suporte a USB .................................................................................. 30

3.2.7 Armazenamento .............................................................................. 31

3.2.8 Câmera ............................................................................................ 31

3.2.9 BitTorrent ........................................................................................ 32

3.2.10 Samba ............................................................................................ 33

3.2.11 Impressão ...................................................................................... 33

3.2.12 GPIO ............................................................................................... 34

3.2.13 Interface Gráfica ............................................................................ 35

4. RESULTADOS ......................................................................................... 36

5. CONCLUSÃO .......................................................................................... 41

REFERÊNCIAS ............................................................................................ 43

i

LISTA DE SIGLAS

AC – Alternate Current – Corrente Alternada

ARM – Advanced RISC Machine – Máquina RISC Avançada

BSD – Berkeley Software Distribution – Distribuição de Software Berkeley

CGI – Common Gateway Interface – Interface de Gateway comum

CIFS – Common Internet File System – Sistema de arquivo comum da Internet

CPU – Central Processing Unit – Unidade de Processamento Central

CUPS – Common Unix Printing System– Sistema de Impressão Unix Comum

DC – Direct Current – Corrente Contínua

Daemon – Disk and Execution Monitor – Monitor de Disco e Execução

DDR – Double Data Rate – Taxa de Transferência Dobrada

DHCP – Dynamic Host Configuration Protocol – Protocolo de Configuração Dinâmica de

Endereços de Rede

DNS – Domain Name Service – Serviço de Nome de Domínios

EEPROM – Electrically-Erasable Programmable Read-Only Memory – Memória de

leitura programável e apagável eletricamente

EHCI – Extended Host Controller Interface – Interface Controladora do Host Estendido

EIA – Electronics Industries Association – Associação da Indústria Eletrônica

ESD – Electrostatic Discharge – Descarga Eletrostática

EXT3 – Third Extended File System – Sistema de Arquivo Extendido Três

Fast CGI– Fast Common Gateway Interface– Interface rápida de Gateway comum

FTP – File Transfer Protocol – Protocolo de Transferência de Arquivos

Gbps – Giga bits per second – Giga bits por segundo

GPIO – General Purpose Input / Output – Entrada/Saída de Finalidades Gerais

GPL – General Public License – Licença Pública Geral

GPS – Global Positioning system – Sistema de posicionamento global

HCI – Host Controller Interface – Interface Controladora do Computador

HD – Hard Drive – Disco Rígido

HTTP – Hypertext Transfer Protocol – Protocolo de Transferência de Hipertexto

IBM – Internacional Business Machines

IEEE – Institute of Electrical and Electronics Engineers – Instituto de Engenheiros

Eletricistas e Eletrônicos

IMAP – Internet Message Access Protocol – Protocolo de Acesso a mensagens da

Internet

IP – Internet Protocol – Protocolo Internet

JFFS2 – Journaling Flash File System – Sistema de Arquivo Flash Journaling

LAN – Local Area Network – Rede de Área Local

LPR – Line Printer Remote – Impressora Remota em Linha

ii

MAC – Media Access Control – Controle de Acesso ao Meio

MB – Mega Bytes – Mega Bytes

Mbps – Mega bits per second – Mega bits por segundo

MIPS – Microprocessor Without Interlocked Pipeline Stages – Microprocessador Sem

Estágios Interligados de Pipeline

MSC – Mass Storage Class – Classe de Armazenamento de Massa

NTFS – New Technology File System – Nova Tecnologia de Sistemas de Arquivo

OHCI – Open Host Contoller Interface – Interface Controladora do Host Aberta

OS – Operational System – Sistema Operacional

OSI – Open Systems Interconnection – Interconexão de Sistemas Abertos

PC – Personal Computer – Computador Pessoal

PCI – Peripheral Communication Interface – Interface de comunicação de periféricos

PDA – Personal Digital Assistant – Assistente Digital Pessoal

PHP – Hypertext Preprocessor – Pré–Processador de Hipertexto

POE – Power Over Ethernet – Energia Sobre Ethernet

RAM – Random Access Memory – Memória de Acesso Aleatório

RS-232 – Recommended Standard 232 – Padrão Recomendado 232

SD – Secure Digital – Digital Seguro

SDIO – Secure Digital Input / Output – Entrada/Saída Digital Segura

PLC – Power Line Communication – Comunicação por Linha de Energia

SMB – Server Message Block – Bloco de mensagem de servidor

SOHO – Small Office / Home Office – Pequeno Escritório / Escritório em Casa

SPI – Serial Peripheral Interface – Interface Serial de Periféricos

Spool – Simultaneous Peripheral Operation Online – Operação Simultânea de

Periféricos em Linha

SquashFS – Squash File System – Sistema de Arquivo Squash

SSH – Secure Shell – Shell Seguro

TB – Tera Byte – Tera Byte

TCP – Transmission Control Protocol – Protocolo de Controle de Transmissão

TELNET – Telecommunication Network – Rede de telecomunicação

TFTP – Trivial File Transfer Protocol – Protocolo de Transferência de arquivos trivial

UCI – Unified Configuration Interface – Interface de Configuração Unificada

UHCI – Universal Host Contoller Interface – Interface Controladora do Host Universal

UMS – Universal Mass Storage – Armazenamento de Massa Universal

URL – Uniform Resource Locator – Localizador Padrão de Recursos

USB – Universal Serial Bus – Barramento Serial Universal

UVC – USB Video Class – Classe de Vídeo USB

VFAT – Virtual File Allocation Table – Tabela de Alocação de Arquivos Virtual

VLAN – Virtual Local Area Network – Rede de Area Local Virtual

WAN – Wide Area Network – Rede de área alargada

Wi-Fi – Wireless Fidelity – Fidelidade Sem–Fio

iii

WNIC – Wireless Network Interface Card – Cartão de Interface à Rede Sem–Fio

WLAN – Wireless Local Area Network – Rede de Área Local Sem–Fio

WPA – Wi-Fi Protected Access – Acesso Protegido ao Wi-Fi

WRT – Wireless Receiver/Transmitter – Transmissor/Receptor Sem–fio

XHCI – Extensible Host Contoller Interface – Interface Controladora do Host Extensível

iv

RESUMO

Com a redução dos custos e da conseqüente popularização dos dispositivos

conectados em rede, torna-se interessante buscar novas possibilidades de

aproveitamento destes equipamentos para diversas funções. Este projeto visa

desenvolver, a partir de um hardware genérico de roteamento sem-fio, um

equipamento multifuncional para atender a diversas necessidades em um ambiente

residencial ou pequeno escritório. Para isso, foram implementadas as funções de

maior necessidade neste tipo de ambiente, como serviços de compartilhamento de

arquivos e impressoras, rede sem-fio, monitoramento com câmera, roteamento e

armazenamento de arquivos. No geral, a solução apresentada obteve resultados

satisfatórios dentro das possibilidades do equipamento, porém necessitando de

pequenas melhorias. Desta forma, verificou-se que este tipo de sistema foi capaz de

realizar todas as funções propostas, valorizando e aumentando a funcionalidade de um

sistema sem-fio embarcado.

1

1 INTRODUÇÃO

As redes sem-fio ou wireless, especialmente as redes baseadas no padrão IEEE

802.11, estão se tornando cada vez mais populares, principalmente devido à

popularização dos computadores portáteis como: notebooks, laptops, netbooks e

smartphones. Outro fator que ajuda a difundir ainda mais esse padrão de rede sem-fio

é a sua facilidade de instalação e configuração, que não necessita de cabos e demanda

menos equipamentos de infra-estrutura.

Sendo assim, os roteadores sem-fio, que são os equipamentos responsáveis

pelo funcionamento das redes wireless em uma LAN podem ser capazes de realizar

diversas tarefas que vão além de disponibilizar o sinal eletro-magnético e fazer o

roteamento dos pacotes IP (Internet Protocol). Esses equipamentos, usualmente, vêm

com recursos de hardware capazes de trabalhar com sistemas operacionais baseados

em Linux e com interfaces de comunicação que vão além do padrão Ethernet e do IEEE

802.11 (Wi-Fi). Os roteadores sem-fio, dependendo do fabricante e do modelo, muitas

vezes apresentam diversas conexões, como Serial, USB (Universal Serial Bus) e GPIO

(General Purpose Input/Output). Desta forma, contando com as conexões extras, com

um sistema operacional flexível e com recursos de hardware suficientes, é possível

aproveitar melhor o equipamento fazendo com que os rotadores wireless funcionem

como equipamentos multifuncionais, com capacidade para controlar os mais variados

dispositivos externos, mantendo a sua função original de roteador.

1.1 Objetivo

O objetivo principal deste projeto é demonstrar com o conceito de se utilizar

um sistema embarcado com acesso sem-fio e equipamentos multifuncionais,

procurando novas funções que esses dispositivos eletrônicos podem realizar.

Considerando isso, pretende-se desenvolver a partir de um equipamento comercial

que suporte o sistema operacional Linux embarcado, que tenha interfaces extras de

comunicação e requisitos de hardware, um roteador sem-fio multifuncional capaz

realizar as seguintes funções extras: servidor de arquivos para a rede local, servidor de

2

impressão, interface de configuração através de um navegador de Internet,

gerenciador de arquivos, streaming de mídia, servidor de transferência de arquivos

(downloads) e disponibilizar imagens a partir de uma câmera de vídeo (webcam).

Este trabalho está estruturado da seguinte forma. Primeiramente é

desenvolvida a fundamentação, onde estão embasadas as escolhas do hardware

(roteador comercial) e da distribuição do sistema operacional Linux embarcado. Em

seguida, está desenvolvida a metodologia do projeto, onde está explicado como

ocorreu o seu desenvolvimento e, também, é feita uma explicação geral do

funcionamento do sistema. Neste momento, verificam-se também os recursos

necessários e as configurações feitas para o seu desenvolvimento. A seguir, existe um

capítulo de resultados obtidos onde, a partir do que foi realizado na metodologia e na

fundamentação, são demonstrados os dados obtidos após o desenvolvimento do

dispositivo. Finalmente, a conclusão, onde são analisados os resultados, verificando-se

se eles condizem com o objetivo. Além disso, são analisadas as deficiências do projeto

e melhorias que podem ser feitas, conjuntamente com uma abordagem sobre futuros

projetos que podem ser realizados a partir dos estudos realizados neste projeto.

3

2 FUNDAMENTAÇÃO

Inicialmente, a realização deste projeto ocorre pela seleção dos seus sistemas

básicos: o roteador sem-fio propriamente dito (hardware) e a distribuição Linux que

será embarcada e desenvolvida (software) nesse roteador. Assim, deve-se levar em

consideração que o sistema embarcado tem requisitos básicos tanto de hardware

quanto de software para que ele possa ser desenvolvido [42], considerando, inclusive,

as novas funções propostas nesse projeto.

2.1 Hardware

A partir dessas considerações e outras pesquisas, foram determinadas as

necessidades de hardware para que o roteador sem-fio multifuncional funcione com

desempenho adequado. Então, estabeleceu-se que o sistema deveria ter os seguintes

requisitos básicos:

Microprocessador com freqüência de operação maior que 300 MHz;

Memória RAM (Random Access Memory) com capacidade superior a 32MB;

Memória Flash com 16 MB (Mega Bytes) ou mais;

Interfaces de Comunicação: USB, Ethernet, Serial (DB9), Mini PCI, Rede Sem-Fio

IEEE 802.11, SD Card e GPIO (General Purpose Input/Output).

2.1.1 Microprocessador

O microprocessador é um circuito integrado que é responsável pela execução

das instruções de cálculo e tomadas de decisões do sistema, de maneira que todos os

computadores e equipamentos eletrônicos o utilizam para executar suas funções [38].

Então, este é o principal componente do sistema de hardware, pois ele controla a

velocidade geral do sistema. Portanto, esse elemento do sistema é vital para que o

equipamento tenha um bom desempenho geral.

A escolha do parâmetro de freqüência de processamento acima de 300 MHz

se justifica devido à maior capacidade de processamento necessária para realizar as

4

funções extras. Em uma pesquisa feita, verificou-se que os roteadores sem-fio básicos

usualmente utilizam processadores da arquitetura MIPS (microprocessor without

interlocked pipeline stages) de 32 bits com freqüência entre 125 e 200 MHz. Sendo

assim, estimou-se que um processador de 300 MHz seria suficiente para atender a

demanda do sistema multifuncional.

2.1.2 Memória RAM

A memória RAM (Random Access Memory) é a memória volátil de um sistema

computadorizado, ou seja, ela preserva as informações gravadas enquanto estiver

sendo energizada [39]. Este tipo de memória permite que os dados gravados sejam

acessados em qualquer ordem (at random). Logo, a memória RAM é utilizada em

operações que necessitam de grande velocidade de leitura e escrita e que não

necessitam ser armazenadas no sistema após o seu desligamento.

O dimensionamento da memória RAM do sistema foi estabelecido com

quantidade superior a 32 MB, para que o sistema tenha a capacidade de gerenciar

todo o sistema operacional e os demais softwares necessários a partir da RAM, tendo

melhor desempenho.

2.1.3 Memória Flash

A memória Flash é um tipo específico de memória da família EEPROM

(Electrically-Erasable Programmable Read-Only Memory) desenvolvido pela Toshiba

[40]. Este tipo de memória pode ser escrita ou apagada eletricamente por diversas

vezes, preservando as informações mesmo sem estar ligada a uma fonte de

alimentação. O diferencial das memórias Flash é que elas são programadas em blocos

de dados, ganhando em velocidade de escrita e leitura. Então, justamente nesse

espaço de memória é que os sistemas embarcados armazenam seu sistema base, ou

sistema operacional.

A quantidade de memória Flash de 16 MB foi estimada como mínimo

necessário para que o sistema pudesse atender a todas as funções extras. Isso ocorre,

porque as distribuições Linux para sistemas embarcados existentes atualmente,

utilizam algo em torno de 8 MB de espaço. Desta forma, com o sistema sendo

5

multifuncional mais espaço seria necessário para que as novas aplicações fossem

instaladas e desenvolvidas. Vale lembrar que este tipo de memória também é utilizado

nos dispositivos de armazenamento portáteis, conhecidos como Flash Drive.

2.1.4 Interface USB

O padrão de comunicação USB (Universal Serial Bus) é um tipo de conexão

externa plug and play (ligar e usar), que estabelece a comunicação de um computador

com periféricos sem a necessidade de reinicializar o sistema [57]. O USB estabelece a

comunicação na forma serial, um bit de cada vez, e pode atingir velocidade de até 480

Mbps. Este padrão ficou muito popular, pois facilitou muito a configuração de

dispositivos externos ao computador, fazendo com que usuários sem experiência

fossem capazes de instalar um novo periférico no sistema sem maiores dificuldades.

Assim, é fundamental que o roteador sem-fio tenha seu controlador, com

pelo menos um conector físico USB para que seja possível fazer a comunicação com

dispositivos externos, como, por exemplo, uma câmera (webcam) ou um dispositivo de

armazenamento de informação. Desta forma, a conexão USB é quem influirá

indiretamente para que o roteador sem-fio se torne multifuncional.

2.1.5 Interface Serial

A interface serial ou porta serial, também conhecida como RS-232 é um

padrão de comunicação utilizado para conectar periféricos e outros equipamentos de

hardware a um computador [35]. No padrão serial, os bits são transferidos em série ou

sem fila, sendo um bit de dado transferido de cada vez. O RS-232 foi padronizado em

1969 pela EIA (Eletronics Industries Association), definindo principalmente as

características elétricas e mecânicas para que funcione a comunicação. Apesar deste

tipo de comunicação ser relativamente antigo, ele vem resistindo até os dias de hoje

devido à sua simplicidade e confiabilidade.

Definiu-se, então, que o hardware do sistema embarcado poderia ter esta

interface para que fosse possível ligar outros periféricos, aumentando a característica

multifuncional do equipamento. Além disso, esta interface pode ser utilizada para

6

fazer a comunicação via terminal, já que o terminal via interface serial facilita o

trabalho quando ocorrem erros de configuração no roteador.

2.1.6 Interface Ethernet

Ethernet é um padrão de comunicação para redes locais (LAN - Local Area

Network) baseado no envio de pacotes de dados [31]. O padrão define o tipo de

cabeamento e conectores, sinais elétricos para a camada física da rede, o formato de

pacotes e os protocolos para a camada de controle de acesso ao meio (MAC - Media

Access Control) do modelo OSI (Open Systems Interconnection). O Ethernet foi

normatizado pelo IEEE (Institute of Electrical and Electronic Engineers) como IEEE

802.3. Nos anos 90, o modelo IEEE 802.3 se tornou a tecnologia de redes de

computadores mais difundida no mundo.

Diversas normas regem o padrão IEEE 802.3. As normas mais utilizadas são a

IEEE 802.3u e IEEE 802.3ab. A norma 802.3u, ou Fast Ethernet, regula os links de

comunicação utilizando cabos de par trançado categoria 5 (CAT 5) à velocidade de 100

Mbit/s. O Gigabit Ethernet, ou 802.3ab, determina as especificações para a

comunicação através de cabos de par trançado à velocidade de 1000 Mbps (ou 1

Gbps). Vale lembrar, a norma IEEE 802.3af, também conhecida como POE (Power Over

Ethernet), que torna possível o fornecimento de até 25,5W de potência à até 48V em

corrente contínua através do cabo de par trançado categoria 5 ou superior [41].

Devido a sua popularidade, a maioria dos roteadores no mercado utiliza este

padrão de comunicação para redes locais, assim como os computadores. Então, para

este projeto, determinou-se que o roteador sem-fio tenha, pelo menos, uma interface

Ethernet para WAN (Wide Area Network) e duas LAN. A interface WAN é necessária,

pois é ela quem recebe e envia sinais (ou os pacotes IP) para outra rede como, por

exemplo, a Internet. As interfaces físicas LAN são necessárias para que os

computadores que não se comunicam pela rede sem-fio também possam ser

abrangidos.

7

2.1.7 Rede Sem-Fio IEEE 802.11

A norma IEEE 802.11, que define os padrões para comunicação sem-fio em

uma rede local (WLAN – Wireless Local Area Network), também é conhecida como Wi-

Fi (wireless fidelity) ou popularmente chamada de wireless [34]. A família 802.11 inclui

as técnicas de modulação que utilizam o mesmo protocolo básico para comunicação.

Os protocolos mais populares são o 802.11b, 802.11g e 802.11n. As diferenças entre

esses protocolos passam pelos tipos de modulação, largura de banda do canal e a

freqüência utilizada para estabelecer a comunicação entre os dispositivos da rede,

determinando a velocidade de conexão.

As velocidades máximas de conexão da norma IEEE 802.11 variam de acordo

com o padrão utilizado. Para os padrões IEEE 802.11a e IEEE 802.11g a velocidade

máxima de conexão é de 54 Mbps, operando à freqüência de 5 GHz e 2,4 GHz,

respectivamente. Já o padrão IEEE 802.11b opera à velocidade é de 11 Mbps e o IEEE

802.11n é opera em 150 Mbps, ambos à freqüência de 2,4 GHz.

As redes sem-fio, pelo fato de estarem abertas, necessitam do uso de

sistemas de segurança que controlam o acesso à rede. A segurança nas redes sem-fio é

feita utilizando canais de comunicação criptografados, que podem ser acessados

através de uma chave de criptografia escolhida pelo administrador da rede.

Neste projeto é fundamental a utilização da comunicação pela rede sem-fio

802.11, já que essa é a proposta principal de um roteador wireless. Então, é necessário

que o rádio que disponibiliza a rede sem-fio suporte protocolos de comunicação mais

populares, sendo eles o 802.11b e 802.11 g. Além disso, o rádio deve possuir protocolo

de criptografia de segurança da rede, utilizando protocolos de segurança confiáveis

como WPA (Wi-Fi Protected Access) e WPA2.

2.1.8 Mini PCI

A interface de comunicação Mini PCI [23] é uma implementação alternativa

do padrão PCI (Peripheral Component Interconnect). O padrão PCI é utilizado para

conectar periféricos em computadores baseados na arquitetura IBM PC. A

comunicação via PCI se dá na forma de barramento, ou seja, todos os dispositivos são

ligados no mesmo canal de comunicação. Além disso, o esta interface oferece taxas de

8

transferência de dados suficientemente grandes para uma grande variedade de

dispositivos. Então, como o próprio nome indica o Mini PCI é uma espécie de

miniaturização física do PCI, tendo as placas Mini PCI menores dimensões. O Mini PCI

surgiu para que este tipo de comunicação pudesse ser usado em dispositivos

eletrônicos de pequenas dimensões, como é o caso dos roteadores sem-fio.

No projeto do roteador sem-fio multifuncional, existem diversos dispositivos

que poderiam utilizar a conexão Mini PCI. A placa de rede sem-fio, ou WNIC (Wireless

Network Interface Card), é o dispositivo que certamente utilizará esta interface. A

vantagem de utilizar uma WNIC é que com ela pode-se escolher um modelo mais

específico de rádio, determinando-se, por exemplo, parâmetros como potência do

sinal emitido, tipos de modulação e outras opções do padrão de redes sem-fio IEEE

802.11.

2.1.9 SDIO

O cartão de memória SD (SD Card ou Secure Digital Card) é um formato de

memória não-volátil fabricado com memória do tipo Flash, desenvolvida

especificamente para o uso em dispositivos portáteis [55]. Este formato de

armazenamento é amplamente utilizado atualmente em câmeras digitais, netbooks,

PDAs, telefones celulares, aparelhos GPS e consoles de vídeo-game. Atualmente os

cartões SD tem capacidade de armazenamento entre alguns Mega Bytes até 2 Tera

Bytes, dependendo do tipo de cartão SD.

Para o sistema embarcado com acesso sem-fio, verificou-se que a necessidade

de uma interface SDIO (Secure Digital Input / Output). Contando com uma interface

SDIO, o dispositivo tem a vantagem de poder ler cartões de câmeras fotográficas

digitais, podendo disponibilizar essas informações para a rede. Além disso, é possível

utilizar um cartão SD como um “disco local” do roteador sem fio, ampliando o espaço

para armazenamento de programas e desocupando a interface USB.

2.1.10 GPIO

GPIO é o acrônimo de General Purpose Input/Output [2]. Esta interface é

utilizada em alguns dispositivos para que o microprocessador ou micro-controlador

9

tenha uma ou mais conexões para fazer o comando de dispositivos externos ou

periféricos. A GPIO pode funcionar como uma entrada, para ler sinais digitais de outros

circuitos, ou como saída, para controlar ou sinalizar outros dispositivos. Fisicamente, o

GPIO é freqüentemente arranjado em portas formadas por grupos de oito, que

normalmente possui pinos multipropósitos configuráveis como entradas ou saídas.

Para este projeto, é interessante que o dispositivo tenha interface GPIO. Esta

interface, como o próprio nome indica como sendo de “finalidades gerais”, seria muito

útil para fazer o acionamento de aparelhos externos ao roteador, podendo servir, por

exemplo, para fazer a automatização residencial.

2.2 Software

Após a determinação do hardware do sistema embarcado, pesquisou-se por

quais sistemas operacionais (ou firmwares) seriam compatíveis com o dispositivo

escolhido. Sendo assim, verificou-se que os sistemas operacionais para este tipo de

aplicação são baseados em núcleos GNU/Linux. Então, procurou-se uma distribuição

deste sistema operacional que fosse compatível com o hardware e que melhor se

adaptasse às necessidades do projeto.

2.2.1 Linux

O Linux é um núcleo ou kernel em que um sistema operacional é estruturado

[37]. O sistema operacional é um conjunto de programas que fazem interface entre o

usuário e o computador, sendo o responsável pelo gerenciamento de recursos e

periféricos (como memória, discos, arquivos, impressoras), interpretação de

mensagens e a execução de programas.

O sistema Linux foi desenvolvido em 1991, pelo então universitário finlandês

Linus Torvalds. O código fonte do Linux é aberto e está disponível sob licença GPL

(General Public License) para qualquer pessoa que o utilizar, estudar, modificar e

distribuir de acordo com os termos da licença. Desta forma, após a sua aparição,

devido à sua flexibilidade de desenvolvimento e por ser de código aberto, o Linux

passou a ter diversas distribuições, organizadas por diversos grupos pelo mundo.

10

Neste projeto, será utilizado um sistema operacional baseado em kernel Linux

para fazer o funcionamento do hardware. Após a realização de pesquisa na Internet,

várias distribuições Linux foram encontradas para sistemas embarcados.

2.2.2 Distribuições Linux

Uma Distribuição Linux (ou “distro”) é um sistema operacional baseado no

kernel Linux e um conjunto variável de outros aplicativos [37]. Esta coleção de

software livre e não-livre é criada e mantida por indivíduos, grupos e organizações de

todo o mundo, incluindo o grupo Linux. As distribuições do Linux ficaram populares na

segunda metade dos anos 90, como uma alternativa livre em relação aos sistemas

operacionais Microsoft Windows e Apple MacOS. Como o Linux e a maior parte dos

softwares incluídos em distribuições são livres, qualquer organização ou indivíduo

pode criar e disponibilizar a sua própria distribuição.

Para sistemas embarcados, existe uma infinidade de distribuições específicas.

O sitio DistroWatch indica algumas delas [5], sendo elas listadas a seguir:

• BlueCat Linux • DIET-PC • ELinOS • eLux • EMC • emKnoppix • iMedia • KaeilOS • KaufKauf Slim Linux • LEAF • LynxOS RTOS

• MediaBoxOS • Metrowerks • MontaVista Linux • OpenWrt • Pico/Linux • RTLinux • TimeSys • TinyOS • uClinux • Voyage Linux

Como uma das intenções deste projeto é fazer o desenvolvimento do sistema

embarcado utilizando um sistema Linux de código aberto, serão descritas aquelas

distribuições que são mais conhecidas e desenvolvidas para trabalhar com sistemas de

roteamento sem-fio. Então, a seguir são apresentadas as distribuições OpenWRT, DD-

WRT e Tomato.

11

2.2.2.1 OpenWRT

A distribuição Linux denominada OpenWRT é desenvolvida principalmente

para ser instalada em sistemas embarcados, especialmente em roteadores residenciais

[14]. O nome OpenWRT surgiu do WRT a partir do nome dos roteadores sem-fio da

Cisco da linha Linksys WRT54G. A sigla WRT é o acrônimo de Wireless Router

Technology (Tecnologia de Roteador Sem-Fio), e Open vêm do inglês e significa aberto.

Então, o nome OpenWRT significa algo como “Tecnologia de Roteador Sem-Fio

Aberta”. Ou seja, significa a abertura do sistema para o seu desenvolvimento livre, sem

depender do firmware desenvolvido pelo seu fabricante.

Sendo construído em cima de um kernel Linux, o OpenWRT atualmente

contém uma coleção em crescimento de diversos pacotes de software para

incrementar as suas funcionalidades. Para desenvolver o sistema, inicialmente utiliza-

se uma interface de linha de comando, via interface serial, SSH ou TELNET. Entretanto,

o OpenWRT também possibilita o desenvolvimento de interface gráfica GUI (Graphical

User Interface).

Atualmente, o projeto está com bom nível de desenvolvimento e trás muitas

possibilidades de aplicação, sendo apenas limitado pelas capacidades do hardware

onde o sistema está embarcado. Além disso, esta distribuição Linux suporta uma

grande variedade de roteadores e sistemas de desenvolvimento, com diversas

capacidades. A comunidade do projeto OpenWRT conta uma boa base de apoio

baseada em Fórums, Wiki e no próprio sitio.

Uma das principais vantagens da distribuição consiste na ferramenta opkg,

um leve sistema de gerenciamento de pacotes que possui um vasto repositório

mantido e disponibilizado pelo projeto OpenWRT e OpenEmbedded. Este repositório

que visa facilitar a aquisição e atualização de pacotes de softwares disponíveis para a

plataforma.

2.2.2.2 DD-WRT

O DD-WRT é outro projeto de desenvolvimento de um sistema operacional de

código aberto baseado em Linux, construído para uma grande variedade de roteadores

sem-fio e sistemas embarcados [9]. O nome DD-WRT também tem origem na sigla

12

WRT do nome do roteador WRT54G da Cisco, já que eles foram os primeiros

suportados pelo sistema. Não foi encontrado o significado oficial da sigla DD no nome

da distribuição.

A ênfase principal do DD-WRT é prover a maior facilidade de utilização e ao

mesmo tempo suportar uma grande quantidade de funcionalidades e plataformas de

hardware. Esta distribuição Linux já vem instalada com interface gráfica operada via

navegador Web que pode ser facilmente configurada. Além disso, o sistema é

desenvolvido com foco na sua velocidade e estabilidade. Aliado a isso, o DD-WRT

possibilita a adição de novos recursos que não são suportados originalmente pelo

firmware do fabricante do roteador.

A grande comunidade de usuários também dá suporte ao desenvolvimento do

DD-WRT. Graças a isso, os potencias problemas no sistema podem ser detectados

rapidamente e corrigidos no menor tempo possível. O DD-WRT também conta com

Fórum, Wiki e site próprio mantidos pela comunidade de desenvolvimento.

Apesar de se basear em código aberto, a comunidade DD-WRT também

disponibiliza plataformas para uso comercial que dependem de licença paga. As

versões comerciais possibilitam a configuração infra-estruturas de rede mais confiáveis

e poderosas.

2.2.2.3 Tomato

O firmware Tomato é uma distribuição baseada em Linux gratuita para

roteadores sem-fio [25]. Os modelos de roteadores suportados são aqueles fabricados

com chipset do fabricante Broadcom. A principal característica desta distribuição é o

fato dela ser leve e simples, estando direcionada para estabilidade, velocidade e

eficiência. A grande vantagem deste sistema operacional é o fato de ele ter uma

interface Web de fácil utilização, que conta com diversos controles extras para a rede,

como gráfico de controle de banda, controle de conexões e outras.

Entretanto, pelo fato da distribuição Tomato não contar com uma grande

variedade de roteadores suportados, ele não é muito popular. Portanto, não conta

com uma grande comunidade para auxiliar o seu desenvolvimento e dar suporte ao

projeto. Desta forma, a documentação para fazer o desenvolvimento desta

13

distribuição é limitada, assim como os pacotes de software para adicionar funções não

suportadas pelo firmware original dos roteadores.

Especificamente para o projeto de um sistema embarcado sem-fio com multi-

funções, esta distribuição não se apresenta como a mais indicada. Isso se deve,

principalmente, ao fato de que ela não conta com suporte ao armazenamento de

arquivos por interface USB e SDIO, que fazem parte da base deste projeto.

2.2.3 Impressão

Uma das propostas deste projeto é que o sistema embarcado sem-fio

funcione como um servidor se impressão. Sendo assim, a seguir estão descritos alguns

utilitários que serão necessários para desenvolver esta função.

2.2.3.1 LPR

O LPR é um protocolo de rede usado em muitos sistemas operacionais

baseados em sistemas Unix para enviar trabalhos para as filas de impressão [51]. O

nome LPR, que deriva do termo em inglês Line Printer Remote, se tornou muito

utilizado para uma variedade de impressoras. Assim, este protocolo permite o

gerenciamento de filas de impressão em rede, sendo utilizado para integrar sistemas

de impressão Linux/Microsoft.

O protocolo de rede LPR será útil neste projeto para fazer o

compartilhamento da impressora USB na rede, tornando possível qualquer

computador da rede, que tenha autorização, utilizar a impressora.

2.2.3.2 CUPS

O CUPS, acrônimo de Common Unix Printing System, é um sistema de

impressão para sistemas operacionais tipo Unix que torna possível que um

computador ligado em rede atue como um servidor de impressão [29]. Um

computador rodando o CUPS pode receber pedidos de impressão de computadores

clientes, processando esses pedidos em encaminhando para a impressora apropriada.

O CUPS é capaz de ser um spooler (armazenador de tarefas) de impressão,

um escalonador, um filtro que converte a informação a ser impressa para um formato

14

que a impressora compreenda. Também, ele envia as informações para o dispositivo

de impressão.

No sistema embarcado, o CUPS servirá para fazer o gerenciamento dos

trabalhos de impressão feitos pelos computadores ligados na rede.

2.2.4 Compartilhamento de Arquivos

Outro objetivo a ser alcançado neste projeto é fazer o compartilhamento de

arquivos na rede local. A intenção é fazer com que os arquivos gravados nos

dispositivos de armazenamento que estejam ligados no sistema sejam disponibilizados

para os computadores da rede. É necessário, portanto, utilizar um programa servidor

para fazer toda comunicação necessária para o compartilhamento dos arquivos.

2.2.4.1 Samba

O Samba é um software gratuito baseado no protocolo de comunicação de

rede SMB/CIFS (Server Message Block / Common Internet File System) [54]. Este

software proporciona serviços de compartilhamento de arquivos e impressoras em

uma rede do tipo LAN baseada em servidores UNIX, como o GNU/Linux, Solaris, MacOS

e outros. Além disso, o Samba é capaz de fazer o compartilhamento em rede com

maioria dos sistemas da Microsoft. Desta maneira, este programa é capaz fazer

trabalhar em rede integrando computadores com diversos sistemas operacionais.

Então, a utilização do Samba para realizar o compartilhamento dos arquivos é

fundamental para o projeto do sistema embarcado, pois com este programa será

possível compartilhar os arquivos dos dispositivos de armazenamento com toda rede,

com a vantagem fazer compartilhamento com a maioria dos sistemas operacionais

existentes do mercado. Desta forma, o sistema embarcado com acesso sem-fio pode

se tornar um servidor com muita versatilidade.

2.2.5 Servidor Web

Outra função do sistema embarcado é funcionar como um Servidor Web (Web

Server). Um Servidor Web, também chamado servidor http, pode ser referido como o

computador ou o programa que torna possível disponibilizar conteúdo na Internet

[43]. Muitas pessoas confundem um Web Server como sendo apenas o computador,

15

mas neste caso ele é um programa de computador que gerencia os pedidos de clientes

(geralmente navegadores) feitos através do protocolo HTTP (Hypertext Transfer

Protocol). O uso mais comum dos Servidores Web é fazer a hospedagem de páginas na

Internet, porém existem diversas outras aplicações.

Os Servidores Web usam o protocolo FastCGI (Fast Common Gateway

Interface) para fazer a comunicação com aplicativos externos. O protocolo FastCGI

define como as informações são passadas entre o servidor Web e um aplicativo

FastCGI externo, com o objetivo de otimizar a comunicação entre o Web Server e os

programas CGI, permitindo ao servidor trabalhar com mais pedidos de uma vez.

Então, para fazer o funcionamento da interface de configuração do sistema

embarcado (interface web), será necessário fazer a escolha de um programa servidor

web dentre os vários disponíveis.

2.2.5.1 httpd e BusyBox

O BusyBox é um pacote de aplicativos UNIX que combina versões reduzidas de

vários utilitários em um único arquivo executável, pelo fato de ser um arquivo binário

multi-chamadas [46]. Hoje o BusyBox é vastamente utilizado em dispositivos com

kernel Linux por sua flexibilidade e tamanho reduzido, podendo ser usado desde

pontos de acesso, computadores mais simples e até mesmo celulares.

O httpd é um programa de computador que funciona como servidor web,

sendo seu nome é o acrônimo de Hypertext Transfer Protocol Deamon [49]. O termo

Deamon é o acrônimo de Disk and Execution Monitor, e tem como função ser

aplicativo que roda em background, ou seja, sem ser controlado diretamente pelo

usuário, com o propósito de responder a requisições de rede, atividades de hardware,

ou outros programas. Portanto, o httpd é um interpretador de requisições HTTP

básico, que faz parte do BusyBox e foi desenvolvido para ter performance otimizada,

alta segurança e utilizar recursos mínimos do sistema em que está funcionando. Então,

o httpd é uma das possíveis soluções para fazer o servidor web funcionar no sistema

embarcado.

16

2.2.5.2 Lighttpd

Um programa alternativo para funcionar como Web Server é o Lighttpd. Este

software é de código aberto (gratuito), sendo otimizado para ambientes onde a

velocidade é mais importante, mas mantendo os padrões, segurança e flexibilidade

[36]. Sendo assim, este programa utiliza pouca memória e possui melhor

gerenciamento de CPU, se comparado às outras soluções.

Além disso, o Lighttpd possui opções de alto nível como CGI, FastCGI, PHP

(Hypertext Preprocessor), SSL(Secure Sockets Layer) e outras. Por isso, este programa é

concorrente direto de servidores consagrados como o Apache, sendo às vezes mais

eficiente e tornou-se muito popular. Sendo assim, o Lighttpd se torna umas das

melhores soluções para ser o servidor web do sistema embarcado.

2.2.5.3 uhttpd

O uhttpd (micro httpd) é um servidor HTTP muito pequeno, implementado em

cerca de 150 linhas de código [1]. Por ser muito simples, este programa apresenta

alguns problemas como baixo desempenho, poucos recursos e apresenta algumas

vulnerabilidades. Entretanto, ele realiza todas as funções básicas de um HTTP Server e

para páginas web com pouco tráfego ele se apresenta como uma solução razoável.

2.2.6 Gerenciadores de Transferência de arquivos

A transferência de arquivos, ou do Inglês download, em redes de

computadores envolve normalmente o acesso a sistemas de arquivos remotos,

existindo protocolos específicos para fazer essa operação. Assim, programas de

computadores específicos gerenciam as transferências de arquivos usando estes

protocolos, sendo os mais utilizados: FTP, HTTP e BitTorrent.

Para cada modo de transferência de arquivo existe uma infinidade de

utilitários que fazem o gerenciamento e a troca dos arquivos. Para o projeto do

sistema embarcado sem-fio, é fundamental ter programas que gerenciem o download

dos arquivos para os protocolos mais comuns, para que o sistema seja flexível.

17

2.2.6.1 Ctorrent

O BitTorrent é um protocolo de rede que permite ao usuário realizar

download de arquivos [28]. Esse protocolo introduziu o conceito de partilhar o que já

foi transferido, melhorando o desempenho. Na rede BitTorrent os arquivos são

fracionados em pedaços em ordem aleatória, que podem ser reconstituídos para

formar o arquivo final. O sistema aperfeiçoa o desempenho de rede, uma vez que

todos partilham pedaços entre si, não sobrecarregando um servidor central. De tal

modo que quanto mais utilizadores entram para descarregar um determinado arquivo,

mais largura de banda se torna disponível. Estima-se que o protocolo BitTorrent tenha

seja responsável por pelo menos 35% dos dados transferidos na Internet em todo o

mundo.

O CTorrent é um programa cliente para ambiente Linux da rede BitTorrent,

sendo desenvolvido em linguagem C++ para consumir poucos recursos do computador

ter alta performance [3]. Este cliente Torrent possui boa performance de download,

boa regulagem do uso de banda e realiza decisões estratégicas sobre os pedidos de

downloads. Entretanto, a sua interface com o usuário é difícil de usar e apresenta

alguns erros.

2.2.6.2 Transmission

O Transmission é outra opção de cliente da rede BitTorrent que tem suporte

na distribuição OpenWRT [44]. Este cliente da rede BitTorrent é um software com

licença livre e de código aberto. Este programa é leve e simples, com interface gráfica

intuitiva e muito funcional. O Transmission roda em sistemas Linux, Mac OS, Solaris e

FreeBSD.

Além de realizar as funções básicas de um cliente Torrent, o Transmission tem

a vantagem de ter suporte ao protocolo de criptografia, fazendo a transferência dos

arquivos de modo ofuscado na rede, não sendo detectado pelos servidores, evitando o

traffic shaping (controle de banda). Além disso, o Transmission faz uma interface web

própria, podendo ser controlado remotamente.

18

2.2.6.3 wget

O wget é um software livre que tem como função fazer a transferência de

arquivos através da Internet, utilizando o protocolo TCP/IP [45]. O seu nome surge de

world wide web e get. Este programa é um cliente que suporta os protocolos de

transferência de arquivo HTTP e FTP, que são os mais utilizados na Internet. Sendo

desenvolvido em linguagem C, o Wget funciona em qualquer sistema baseado em

UNIX.

2.2.6.4 Pure-FTPd

O FTP (File Transfer Protocol) é um protocolo de rede de computadores

padrão, utilizado para enviar arquivos de um computador para outro em uma rede

baseada em TCP/IP [33]. O protocolo FTP é construído na arquitetura cliente-servidor,

utilizando as conexões de controle e de dados separadamente na comunicação. Além

disso, o FTP pode fazer a autenticação de usuários. Apesar de inicialmente ter sido

utilizado através de linha de comando existem clientes FTP que são feitos com

interface gráfica.

O programa Pure-FTPd é um servidor FTP gratuito muito pequeno e de fácil

utilização. Ele foi desenvolvido para utilizar menos recursos do que outros servidores,

sendo menor e ao mesmo tempo muito seguro [53]. O Pure-FTPd suporta os

comandos e recursos mais usados do FTP, deixando de lado tudo que não é necessário

ou inseguro. Este servidor funciona em uma grande variedade de sistemas

operacionais baseados em UNIX, como Linux, OpenBSD, FreeBSD e outros.

2.2.7 Firewall

Um Firewall, em português muro contra-fogo, é a parte de um computador ou

rede que é desenvolvida para bloquear acessos não autorizados, comunicações

autorizadas [32]. O Firewall é um dispositivo configurado para permitir ou negar

transmissões de rede, baseado em uma lista de regras e outros critérios.

Um sistema de Firewall pode ser feito em hardware ou software, ou a

combinação de ambos, sendo freqüentemente utilizados para prevenir que usuários

não autorizados acessem as redes privadas ligadas à Internet, principalmente as

19

Intranets. Existem diversas técnicas para fazer um Firewall, que podem ser feitas por

filtro de pacotes IP, filtro de aplicações, filtro de protocolo de rede ou filtro de

mensagens (Proxy).

2.2.7.1 Iptables

O Iptables é um aplicativo que permite o administrador do sistema configurar

e controlar as tabelas do firewall do kernel Linux, suas categorias (chains) e regras que

estão armazenadas [50]. É importante dizer que no GNU/Linux a filtragem de pacotes

está desenvolvida diretamente no kernel.

Elevados privilégios são necessários para operar o Iptables no Linux, sendo

necessário o usuário root para funcionar. O Iptables é uma ferramenta de edição da

tabela de filtragem de pacotes, ou seja, com ele pode analisar o cabeçalho (header) do

pacote e tomar decisões sobre os seus destinos.

20

3. METODOLOGIA

3.1 Seleção do Hardware

A escolha da plataforma de hardware para o desenvolvimento do sistema

embarcado ocorreu levando em conta diversos fatores. Os principais fatores para fazer

a opção, entre os mais diversos modelos de roteadores sem-fio comerciais e

plataformas de desenvolvimento existentes no mercado, foram:

1. Compatibilidade da plataforma com as distribuições Linux;

2. Atendimento os requisitos mínimos de hardware;

3. Disponibilidade de compra do equipamento no mercado brasileiro.

Após realizar pesquisas na Internet por modelos de roteadores sem-fio

comerciais ou por plataformas de desenvolvimento, alguns modelos foram verificados

com possibilidade de atender as demandas tanto de software quanto de hardware.

Assim, os modelos que suportavam pelo menos uma distribuição Linux citada foram

organizados na Tabela 1, que avalia as características de hardware, o preço e a

disponibilidade no mercado nacional. A cotação do Dólar Americano (U$) utilizado

para obter o total em Real Brasileiro (R$) foi de R$ 1,77 (um real e setenta e sete

centavos) para cada Dólar Americano.

Tabela 1: Tabela para escolha do hardware para o projeto.

Plataforma Arquitetura Freqüência Memória

(MB) Acessórios Requisitos

Preço (U$)

FRETE (U$)

IMPOSTO (U$)

Total

ASUS

WL-500GP MIPS 266 MHz

08 Flash 32 RAM

2 USB; Mini PCI; 5 Ethernet; 802.11

a/b/g SD Card;

$ 65,00

$ 40,00

$ 80,00 R$

297,36

TP-LINK TL-

WR1043ND MIPS 400 MHz

08 Flash 32 RAM

1 USB; 5 Gigabit ; 802.11 b/g/n

SD Card $ -

$ -

$ - R$

210,00

* Compra direto no

Brasil

Ubiquiti RouterStation

MIPS 680 MHz 16 Flash 64 RAM

1 USB; 3 Mini PCI; 1 Ethernet

Fonte; Rádio 802.11

MiniPCI; SD Card;

$ -

$ -

$ - R$

215,00 * Compra direto no

Brasil

Ubiquiti

RouterStation PRO

MIPS 680 MHz 16 Flash 128 RAM

1 USB; 3 Mini PCI; 4 Gigabit; SD Card

DB9 (Serial);

Fonte; Rádio 802.11

Mini PCI.

$ -

$ -

$ - R$

230,00 * Compra direto no

Brasil

Beagle Board ARM 620 MHz 128 RAM 256 Flash

HDMI; S-Vídeo; Audio; USB;

PowerVR; DB9

Rádio 802.11 USB

$ 149,00

$ 30,00

$ 80,00 R$

506,93

Beagle Board

XM ARM 1 GHz

0 Flash 512 RAM

HDMI; SD/MMC; S-Vídeo; Audio;

DB9; USB.

Rádio 802.11 USB

$ 179,00

$ 30,00

$ 80,00 R$

591,89

21

O fator disponibilidade de compra do equipamento no Brasil foi muito

importante na escolha do equipamento. Isso ocorre porque quando é necessário fazer

a importação o preço final aumenta muito devido à carga tributária (Imposto de

Importação) que incide neste tipo de transação e o frete para o Brasil. Além disso, o

tempo necessário para o equipamento chegar também conta bastante.

Os modelos Beagle Board, Beagle Board XM, Asus WL-500GP ficaram caros

devido a não disponibilidade dos produtos no Brasil. Além do mais, o modelo da marca

Asus não atendia totalmente aos requisitos de hardware do projeto por ter 8 MB de

memória flash e 266 MHz de freqüência de processamento.

Dentre os modelos disponíveis no mercado nacional, RouterStation,

RouterStation PRO e o TP-LINK TL-WR1043ND, verificamos que o modelo da marca TP-

LINK não atendia ao requisito de quantidade de memória flash, contando com 8 Mega

Bytes. Também, este modelo não possui interface de comunicação Serial pronta (DB9)

e SD Card.

Portanto, a escolha ficou entre os modelos da plataforma de desenvolvimento

RouterStation. Comparando os dois modelos da Ubiquiti, verifica-se que o os dois

modelos tem o mesmo processador MIPS de 680 MHz e contam com a mesma

quantidade de memória flash. Também, os dois modelos contam com uma porta USB,

três slots Mini PCI e necessitam de um rádio compatível com IEEE 802.11 Mini PCI. Os

diferenciais do RouterStation PRO são o fato de ter 128 MB de memória RAM, 4 portas

Gigabit Ethernet (1000 Mbps), SDIO e conector para interface Serial DB9.

Levando em conta as características de hardware citadas e a pequena

diferença de preço entre os modelos da Ubiquiti, foi escolhido para fazer o

desenvolvimento do projeto o modelo Ubiquiti RouterStation PRO.

3.1.1 Ubiquiti RouterStation PRO

A seguir é feita uma descrição mais aprofundada do hardware da plataforma

de desenvolvimento selecionada para o projeto do sistema multifuncional embarcado.

As especificações técnicas do RouterStation PRO estão listadas, conforme segue:

Compatível com IEEE 802.3af 48V (POE - Power Over Ethernet);

4 Portas Gigabit Ethernet (Switch);

22

128 MB DDR RAM;

16 MB Flash SPI;

1 Porta USB 2.0;

Cartão de memória SD (SD Card) J6 – SDIO;

CPU MIPS® 24Kc™ 680 MHz, com opção para overclock à 800 MHz;

Proteção ESD (electrostatic - discharge) para aplicações industriais;

3 Slots (conexões) Mini PCI tipo IIIA;

Conector DB9/RS232 integrado;

Acesso fácil a todos os sinais GPIO;

Conector (Power Jack) 48V DC integrado (J502);

Vem de fábrica com OpenWRT Kamikaze;

Faixa de tensão de alimentação: 40V à 56V DC;

o Utilizar níveis de tensão altos é recomendável, já que utilizará

menos corrente;

o A potência típica consumida é de 3W com o sistema parado e

sem rádios 802.11, 5W com um rádio e 7W com tráfego de

1000 Mbps sendo processado;

o O conector RJ45 “J1” é para a WAN e compatível com o IEEE

802.3af (Power Over Ethernet);

o Suporta até 25W de potência pelo POE.

A figura 1 apresenta a imagem da visão superior da RouterStation PRO, onde

pode-se observar alguns conectores característicos como o DB9/RS-232, USB, conector

de alimentação (Power Jack), as portas Ethernet e dois slots Mini PCI.

23

Figura 1: Visão superior da Ubiquiti RouterStation PRO

Já a figura 2 apresenta a imagem da visão inferior (parte de baixo) da

RouterStation PRO, onde pode-se observar alguns conectores característicos como o

DB9/RS-232, SDIO e um slot Mini PCI. Também se observa os chips de memória,

processador e demais controladores do sistema.

Figura 2: Visão inferior (de parte de baixo) da Ubiquiti RouterStation PRO.

Na figura três está apresentada a imagem da visão do painel frontal da

RouterStation PRO, em que verificam-se os conectores externos do dispositivo, sendo

eles da esquerda para a direita: 4 portas Gigabit Ethernet, SDIO, Power Jack, USB 2.0 e

RS232/DB9.

24

Figura 3: Visão do painel frontal da Ubiquiti RouterStation PRO.

3.2 Seleção da Distribuição Linux

Feita a escolha do hardware para o desenvolvimento do projeto, verificou-se

que o modelo Ubiquiti RouterStation PRO não é compatível com a distribuição Linux

Tomato. Como visto anteriormente, o firmware Tomato suporta apenas sistemas com

processadores Broadcom, e o RouterStation PRO utiliza o processador da marca

Atheros. Além disso, o Tomato não suporta armazenamento pela interface USB e não

tem uma variedade de pacotes de software para realizar o objetivo deste projeto.

Assim, restaram as distribuições OpenWRT e DD-WRT, que são compatíveis

com a plataforma de desenvolvimento estabelecida. Vale ressaltar aqui que o

firmware DD-WRT é baseado no kernel do OpenWRT. Então, na verdade, o DD-WRT é

uma versão do OpenWRT com algumas melhorias, principalmente de interface gráfica,

para se tornar comercial. Desta forma, a distribuição DD-WRT acabou tendo um

desenvolvimento mais limitado, não tendo atualizações tão freqüentes se comparado

ao OpenWRT, devido a menor comunidade de desenvolvedores. A comunidade de

desenvolvedores do OpenWRT é maior e tem mais documentação disponível na

Internet a respeito do seu desenvolvimento em relação à outra distribuição. Também,

por ser de código totalmente aberto, pode-se dizer que o OpenWRT é mais

personalizável.

Levando em consideração os argumentos citados acima, a distribuição Linux

escolhida para ser utilizada no hardware do sistema embarcado de acesso sem-fio foi a

OpenWRT na sua versão mais recente, denominada OpenWRT 10.03 Backfire.

3.3 Funcionamento do sistema

O RouterStation PRO será alimentado através da rede elétrica (127/220V AC).

Um injetor POE, que converte a energia da rede elétrica para a tensão de 48V DC,

enviará a energia para o dispositivo através da interface WAN, utilizando Power Over

25

Ethernet. Também, através da interface WAN o sistema embarcado estará ligado a

uma rede externa, como por exemplo, a Internet.

A comunicação pela interface serial funcionará utilizando um cabo DB9

fêmea-fêmea que é ligado no conector DB9 do RouterStation PRO e no DB9 do

computador com suporte a esta interface. Se o computador não possuir a porta serial,

alternativamente, pode-se utilizando um conversor RS232 – USB.

Na interface SDIO o cartão de memória SD é ligado diretamente no slot. Já na

interface Mini PCI, é ligada placa com o Rádio com suporte ao IEEE 802.11 que se

comunicará com qualquer computador ou dispositivo móvel que tenham esta

interface. Através da interface LAN, também poderão ser ligados outros computadores

com suporte à Rede padrão Ethernet ou outros dispositivos de rede como Hubs e

Switches.

Pela porta USB, estarão ligados outros periféricos como Pen Drives, HD

externo, Impressora e Webcam. Para ligar todos estes dispositivos em uma única

porta, será utilizado um Hub USB, que é um concentrador que tem a função expandir o

número de portas USB.

A figura 4 mostra um diagrama de ligação das interfaces de comunicação do

RouterStation PRO.

Figura 4: Diagrama de ligação do RouterStation PRO

26

Desta maneira, verifica-se que para fazer o funcionamento do dispositivo são

necessários mais equipamentos, além do próprio RouterStation PRO. Abaixo, estão

listados os equipamentos necessários para funcionar o sistema.

Ubiquiti RouterStation PRO

Injetor POE

Hub USB 2.0

Rádio Mini PCI 802.11 a/b/g/n

Cabo serial Fêmea-Fêmea e/ou conversor RS232-USB

Pen Drive ou HD Externo (USB)

Webcam

Impressora

Cabos par trançado (Patch Cable EIA 568A-B) com conectores

Cartão SD

3.4 Software

3.4.1 OpenWRT

A instalação do OpenWRT pode ser dividia em duas etapas, a primeira para

obtenção da imagem e a segunda para a sua instalação no equipamento.

A obtenção da imagem apresenta três possibilidades: a obtenção de uma

imagem padrão já compilada em formato binário para o seu equipamento alvo, o uso

de um ambiente minimalista pré-compilado ou, então, a possibilidade de compilar a

imagem a partir do código fonte. Cada opção apresenta níveis diferentes de

customização que permitem adequar e reduzir o tamanho da imagem conforme a sua

necessidade.

A opção escolhida foi a de utilizar uma imagem já compilada para a

RouterStation PRO, pois permitiria uma maior segurança quanto ao funcionamento na

mesma, uma vez que esta imagem já esta aprovada pelo projeto OpenWRT. Também,

até este momento não eram de conhecimento todos os módulos necessários para o

desenvolvimento do sistema.

27

Desta maneira, foi efetuada a transferência do arquivo de imagem referente

ao modelo em uso na página da distribuição na Internet. Uma vez de posse da imagem

correta pode-se proceder para a etapa de transferência da imagem para o

equipamento.

Para isto, foi colocado o equipamento em modo de atualização, reiniciando o

aparelho com o botão Reset até que o LED RF permaneça aceso. Desta maneira, foi

possível enviar a imagem a ele utilizando o TFTP pela interface LAN.

Após alguns minutos os LEDs se estabilizam indicando fim do processo e

depois de reiniciado o aparelho, a instalação esta pronta para uso.

Para fazer a instalação dos programas necessários, foi utilizada a ferramenta

de gerenciamento de pacotes (espaço do usuário) e módulos (kernel) chamado opkg.

Este aplicativo é utilizado em linha de comando, através do seguinte formato:

# opkg [opção] [nome do pacote]

As opções de comando podem ser para instalar (install), remover (remove),

atualizar a lista de pacotes disponíveis (update), atualizar um pacote específico

(upgrade), listar os pacotes disponíveis (list) e os já instalados (list-installed). Por

exemplo, para instalar o pacote cups e listar os pacotes instalados no sistema, os

seguintes comandos podem ser utilizados:

# opkg install cups

# opkg list-installed

Vale ressaltar que quando se utiliza o opkg para instalar um pacote ou

módulo, ele obtém os dados para instalação da Internet através de um sistema de

repositório. Após obter as informações, o opkg instala o modulo (ou pacote) e o

configura no modo padrão. Dependendo do aplicativo que foi instalado o opkg já o

deixa habilitado por padrão, ou seja, inicia o serviço na inicialização do sistema.

3.4.2 Rede

3.4.2.1 Ethernet

As interfaces de rede foram detectadas automaticamente pelo kernel e, por

meio do aplicativo ifconfig foi possível verificar quais estão disponíveis. A configuração

das interfaces foi realizada através do arquivo /etc/config/network. Nele são

fornecidos os parâmetros de identificação da interface, o nome a ser atribuído a ela, o

28

esquema de endereçamento e suas variáveis, como por exemplo, se a mesma utiliza

DHCP ou então possui uma atribuição estática com valores de IP, gateway, mascara de

rede e DNS pré-definidos.

Abaixo um exemplo de configuração estática ilustrativa para a interface

externa com seus devidos parâmetros.

config 'interface' 'wan'

option 'ifname' 'eth0'

option 'proto' 'static'

option 'netmask' '255.255.255.224'

option 'ipaddr' '200.17.220.156'

option 'gateway' '200.17.220.158'

option 'dns' '200.17.220.129'

Exemplo de configuração de interface e suas variáveis.

Neste local também é possível expressar como elas se relacionam, definindo

VLANs e pontes.

Uma vez realizada a configuração, as mudanças são realizadas reiniciando a

interface através dos comandos ifdown e ifup ou, então, com o próprio ifconfig.

Caso seja optada por uma atribuição dinâmica (DHCP) a solicitação de

endereço é automaticamente feita ao reiniciar a interface, mas pode ser realizada

manualmente com o comando dhclient.

3.4.2.2 Rede Sem-Fio IEEE 802.11

As interfaces sem fio diferem das interfaces ethernet pelo fato de serem

configuradas em um arquivo aparte. Caso sejam detectadas pelo comando ifconfig, no

arquivo /etc/config/wireless é possível configurá-las juntamente com seus dispositivos

e definir todos os parâmetros necessários de rede e radio como modo, SSID,

criptografia, chaves, canais.

Abaixo um exemplo de configuração para um dispositivo em modo 802.11g /

802.11n e uma rede, que no caso esta em ponte com a interface LAN.

config 'wifi-device' 'radio0'

option 'type' 'mac80211'

option 'channel' '10'

option 'macaddr' '00:0c:42:64:a8:82'

option 'hwmode' '11ng'

option 'htmode' 'HT20'

option 'disabled' '0'

config 'wifi-iface'

option 'device' 'radio0'

option 'network' 'lan'

29

option 'mode' 'ap'

option 'ssid' 'Nickel&Bessa@Openwrt_Back'

option 'key' 'routerstation'

option 'encryption' 'psk2'

3.4.3 Firewall

Baseado em iptables o mesmo possui suas regras carregadas inicialmente

através de um script carregado na inicialização localizado em /etc/firewall.user . As

Alterações podem ser feitas por meio da interface gráfica, que permite ao usuário

definir politicas de acesso a outros usuários ou conteúdos, incluindo redirecionamento

de portas.

Nele também é realizado o compartilhamento da conexão através da função

mascaramento que pode ser expressa por:

/sbin/iptables -t nat -I POSTROUTING -o eth0 -j

MASQUERADE

3.2.4 Servidor Web

Uma vez que foi feita a opção pelo servidor Lighttpd devido a sua boa

flexibilidade e, também, pelo fato de permitir o uso do PHP em modo FastCGI, realiza-

se a sua configuração da seguinte maneira.

Instala-se o pacote lighttpd através do gerenciador opkg. A configuração do

servidor é feita no arquivo /etc/lighttpd/lighttpd.conf, onde pode-se definir a porta em

operação, o diretório de documentos bem como a configuração dos módulos, inclusive

do FastCGI e hospedeiros virtuais (vhosts).

É neste arquivo em que são concatenadas as configurações de páginas

adicionais inseridas pelo usuário através da interface gráfica.

$HTTP["host"] =~ "(^|\.)nixcraft\.com$" {

server.document-root = "/home/lighttpd/nixcraft.com/http"

server.errorlog = "/var/log/lighttpd/nixcraft/error.log"

accesslog.filename = "/var/log/lighttpd/nixcraft/access.log"

server.error-handler-404 = "/e404.php"

}

Exemplo de Vhost adicionado

3.2.5 Servidor FTP

Para fazer o suporte à transferência de arquivos pelo protocolo FTP é

necessário instalar um servidor, sendo assim, foi instalado o aplicativo Pure-FTPd. Para

30

fazer a sua instalação foi utilizando o gerenciador de pacotes opkg, através do pacote

de pure-ftpd.

Instalado o Pure-FTPd, a sua configuração pode ser feita através do arquivo de

configurações localizado em /etc/config/pure-ftpd. Neste arquivo podem ser

configurados parâmetros como a porta de funcionamento do serviço, fazer a

habilitação do servidor, senha, nome de usuário e outros. Um exemplo genérico de

configuração de ser vista a seguir:

config pure-ftpd

option port '21'

option noanonymous '1'

option chrooteveryone '1'

option maxclientsperip '10'

option maxclientsnumber '4'

option peruserlimits '3:4'

option umask '133:022'

option authentication 'unix'

option enabled '1'

3.2.6 Suporte a USB

O suporte ao barramento USB é realizado por diferentes módulos conforme a

implementação da interface do controlador (HCI).

São eles:

kmod-usb-core - Comum a todas as implementações.

kmod-usb-ohci - Compaq's Open Host Controller Interface. - USB1.0 / USB1.1

kmod-usb-uhci - Intel's Universal Host Controller Interface. - USB1.0 / USB1.1

kmod-usb2 - Extended Host Controller Interface - EHCI - USB2.0

Ambos podem ser instalados utilizando opkg conforme a necessidade dos

dispositivos a serem utilizados.

Tal desmembramento surge pelo fato do desenvolvimento de dois modelos

para o controlador USB nas versões 1.0 e 1.1. Um é proprietário oriundo da parceria

entre Intel e Via, visando um hardware mais simples porem com um driver mais

robusto chamado UHCI. O outro chamado OHCI, apoiado pela Compaq, Microsoft e

National Semicondutores, visa repassar maior parte do esforço para o controlador em

si, e não para a CPU através do driver. Tal divergência de modelos foi unificada com o

padrão EHCI para o padrão USB 2.0 e continua atualmente para o padrão USB 3.0 com

o modelo XHCI. Por ser experimental não esta disponível em repositórios para opkg o

31

modulo de suporte ao novo modelo, porem caso seja necessário, o suporte ainda

experimental a XHCI é disponível por meio da compilação das fontes do kernel 2.6.35

ou superiores disponível no sitio da distribuição.

Para averiguar o correto funcionamento foram utilizadas as ferramentas lsusb

para listar os dispositivos e dmesg para analisar as ocorrências.

3.2.7 Armazenamento

A instalação do suporte a mídia removível é realizada com o auxilio do módulo

kmod-usb-storage, responsável pelo USB mass storage device class, (USB

MSC ou UMS) conjunto de protocolos estipulados pelo USB Implementers Forum (USB

IF) para transferência de arquivos. Em geral, os dispositivos de armazenamento

utilizam sistemas de arquivos diferentes do utilizado pela partição do sistema da

RouterStation PRO (SquashFS ou JFFS2). Sendo assim, deve-se instalar o suporte aos

sistemas de arquivos mais populares, como o VFAT (kmod-fs-vfat), NTFS (kmod-fs-

ntfs), e EXT3 (kmod-fs-ext3).

Um detalhe importante foi eliminar os possíveis erros que poderiam impedir o

acesso aos dispositivos e arquivos devido a utilização de caracteres de línguas

estrangeiras por meio da instalação do suporte geral (kmod-nls-base), de caracteres

americanos (kmod-nls-cp437), europeus (kmod-nls-cp850) e um conjunto latino

(kmod-nls-iso8859-1).

A montagem dos dispositivos foi baseada na execução de montagem e

desmontagem do dispositivo pelo usuário a partir da interface gráfica. O comando que

faz a desmontagem do dispositivo conectado é o umount, enquanto o comando que

faz a montagem é o mount. Esta operação é realizada automaticamente na

inicialização devido a prévia inclusão dos comandos citados em um script de

inicialização disponível em /etc/init.d/fstab.

3.2.8 Câmera

Uma vez com o barramento USB operacional, o suporte a câmera é feito

através do módulo kmod-video-uvc, responsável pela implementação da USB video

device class (UVC). O UVC define padrões de leitura para dispositivos de vídeo e

32

permite que dispositivos de diferentes fabricantes com o mesmo identificador possam

ser utilizados da mesma forma, agindo de forma similar a um driver genérico.

A maioria das Webcams, atualmente, apresentam-se compatíveis com UVC

não só pela facilidade de uso, uma vez que não dependem de driver especifico, mas

também por ser um requisito para a obtenção de logos de compatibilidade como

exemplo para Windows Vista e 7.

A aplicação escolhida para a captura de imagem é o mjpg-streamer, que esta

disponível no opkg e tem como principais vantagens o seu tamanho reduzido, 69.507

bytes, a possibilidade de salvar as imagens ou então transmiti-las pela internet. Além

disso, o mjpg-streamer tem bom desempenho, não consumindo excessivamente CPU.

3.2.9 BitTorrent

Configuradas as interfaces de rede, já podem instalados e configurados os

aplicativos de transferência de arquivos. Para fazer a troca de arquivos com a rede

BitTorrent foi escolhido o aplicativo Transmission. Para instalá-lo foi utilizado o

repositório de arquivos opkg, sendo instalados os pacotes transmission-daemon e

transmission-web. O transmission-daemon é o pacote do aplicativo básico, enquanto

que o transmission-web adiciona o suporte à interface gráfica via navegador da

Internet.

O arquivo de configuração deste programa fica em /etc/config/transmission.

Neste arquivo, entre outros parâmetros, pode-se alterar os parâmetros de limites de

velocidade de recebimento e envio de arquivos, ativar criptografia, alterar o local onde

os arquivos serão gravados, número máximo de conexões e outros.

Para interagir com o Transmission, existe a interface via navegador de

Internet. Pode-se acessar esta interface colocando no número de IP do computador

onde ele está instalado, seguido da porta número 9091, por exemplo,

200.17.220.156:9091. Nesta interface gráfica, pode ser feita algumas configurações de

parâmetros e fazer a descarga dos arquivos, selecionando um arquivo de extensão

.torrent do computador ou colocando a URL (endereço) do arquivo na internet.

33

3.2.10 Samba

O compartilhamento de arquivos, assim como as demais funções, pode ser

desenvolvido no sistema através de pacotes, neste caso o samba3. Após ser instalado

utilizando o opkg, o sistema oferece duas opções de configuração.

A primeira é o arquivo /etc/config/samba que utiliza a notação padrão da

Unified Configuration Interface (UCI), um sistema de configuração que visa substituir

uma série de shell scripts independentes por um conjunto bem definido de parâmetros

organizados de forma hierárquica.

Já a segunda é o tradicional arquivo de configuração do samba em

/etc/samba/smb.conf. Neles devem ser indicados os parâmetros como o grupo de

trabalho, as definições dos compartilhamentos e o sistema de impressão caso seja

utilizado.

[HP3745]

comment = HP Deskjet 3745

printable = yes

path = /var/spool/cups

public= yes

guest ok= yes

printer admin= root

exemplo de compartilhamento de impressora no smb.conf

config sambashare

option 'name' 'pendrive'

option 'path' '/mnt/pendrive'

option 'read_only' 'no'

option 'guest_ok' 'yes'

option 'browseable' 'yes'

exemplo de compartilhamento de diretorio no

/etc/conf/samba

3.2.11 Impressão

Para o sistema de impressão ser reconhecido é necessário um módulo

chamado kmod-usb-printer, que é responsável por adicionar suporte a impressoras

USB no kernel. Uma vez instalado, foram utilizadas duas abordagens para o

gerenciamento de impressões.

A primeira, mais simples, é baseada em um daemon de impressão sem fila

com base no protocolo AppSocket, cuja função é repassar qualquer dado recebido em

sua porta de escuta para a porta de impressora correspondente. Esta solução pode ser

facilmente implementada através da instalação do pacote p910nd. Assim, para a sua

34

configuração é necessário apenas do endereço da impressora no arquivo

/etc/config/p910nd sob o item option device.

Já a segunda opção é utilizar o sistema CUPS, que é padrão em ambiente

Linux, que permite o uso de fila e também funciona como servidor de impressão. Para

sua instalação é utilizado o pacote cups e a configuração arquivo /etc/cups/cupsd.conf,

onde podemos definir as permissões. No arquivo localizado no caminho

/etc/cups/printers.conf são adicionadas as impressoras em si, através da criação de

uma seção do tipo printer e o parâmetro device-URI associado a ela.

Para utilizar as impressoras em máquinas clientes, pode-se simplesmente

instalar os dispositivos de impressão como impressoras locais, e após fornecer o

modelo e driver, endereçar para porta TCP/IP padrão número 9100 para o caso do

p910nd, ou então para o CUPS a “porta da Internet” número 631 com a respectiva URL

da impressora.

3.2.12 GPIO

Optou-se por fazer o uso do GPIO no espaço do usuário, o que torna sua

utilização mais prática, ao custo de uma maior limitação da freqüência de operação,

fato perfeitamente aceitável dada a aplicação. Para isto, foi utilizada a interface GPIO

SYSFS, cuja função é exportar um GPIO pré-definido, e não utilizado pelos drivers do

kernel para o sistema de arquivos, disponibilizando o mesmo no diretório

/sys/class/gpio.

O endereçamento dos pinos na RouterStation PRO é iniciado em 0 e estão

disponíveis para uso genérico das linhas de GPIO 0 a 7, exceto GPIO 2, que é utilizada

pelo sistema para o LED RF.

Para fazer a utilização desta porta é simples. Quando o sistema é inicializado

todos os pinos estão em posse do kernel, não sendo exibidos no sysfs. Para liberá-los é

necessário indicar o pino no pseudo-arquivo export. Isto irá resultar na criação do

pseudo-arquivo para o pino sob o diretório /sys/class/gpio/gpioN, onde N é o numero

do pino.

Em seguida define-se a direção, saída ou entrada, e valor, alto ou baixo. Pull-

ups e Pull-downs são definidos através de jumpers físicos paralelos a porta.

35

Terminando seu uso é possível liberar o pino novamente ao kernel com a

função unexport, fazendo que suas referências em /sys/class/gpio sejam removidas.

$ echo 9 > /sys/class/gpio/export

$ echo out > /sys/class/gpio/gpio16/direction

$ echo 1 > /sys/class/gpio/gpio16/value

$ echo 9 > /sys/class/gpio/unexport

Exemplo de uso do pino gpio 9

3.2.13 Interface Gráfica

Para fazer a interface de controle do sistema embarcado, optamos por

elaborar uma interface web, tendo como principal vantagem o fato de ser acessível de

qualquer dispositivo com navegador, seja ele computador, celular, televisor e outros.

Sua estrutura visual segue o modelo de roteadores para uso em pequenos escritórios e

residências (SOHO), atualmente comercializados.

A estruturação lógica consiste na divisão de partes do layout em diferentes

arquivos escritos em linguagem PHP, com um arquivo central representando a página

solicitada e fazendo a inclusão dos módulos referentes ao item solicitado, bem como

seus estilos pré-definidos.

template_config_wan.php

|- inclui: template_2_estilos_locais.php

| |-inclui: imgs/estilos.css

|- inclui: template_4_menu_superior.php

|- inclui: template_5_menu_lateral_config.php

|- < corpo da seção configuração wan >

|- inclui: template_6_barra_dir.php

|- inclui: template_7_footer.php

Exemplo de estruturação dos arquivos

Pelo fato do PHP ser uma linguagem interpretada no servidor, é possível se

construir páginas dinâmicas que expressam o estado das configurações atuais do

sistema embarcado, através de saídas HTML. Isto possibilita que as alterações feitas

pelo usuário sejam postadas novamente na página PHP, que as valida e repassa ao

sistema por meio de comandos em shell através das funções php_exec e shell_exec.

A parte dinâmica executada pelo cliente fica a cargo de scripts Java, e já que

são característicos de cada página não podem ser centralizados em um único arquivo

para serem inclusos.

36

4. RESULTADOS

A instalação do sistema operacional OpenWRT 10.03 Backfire ocorreu

normalmente. Na figura 5, visualiza-se a interface via terminal do sistema, com a

primeira de apresentação após a instalação, através do SSH.

Figura 5: Tela de apresentação inicial do terminal SSH do OpenWRT.

Após a configuração das interfaces de rede do sistema, verificou-se o

funcionamento da conexão com Internet e do dispositivo em rede sem-fio. Todas essas

interfaces funcionaram dentro das expectativas. Na figura 6, visualiza-se uma tela com

a rede sem-fio conectada em um computador com o sistema operacional Microsoft

Windows 7. Nesta imagem, podem ser notados os parâmetros da rede sem-fio, como:

SSID, Tipo de Rádio, Criptografia de segurança e nível de sinal.

Figura 6: Tela com parâmetros da conexão de rede sem-fio estabelecida.

37

Configurada a rede, foi feita a instalação do servidor FTP, que funcionou sem

maiores dificuldades. Na figura 7 pode-se visualizar uma conexão via terminal SSH ao

servidor FTP da RouterStation Pro, que está disponível pelo IP 200.17.220.156.

Figura 7: Conexão ao Servidor FTP.

A configuração da interface USB foi um sucesso, com os dispositivos

funcionando corretamente. Na figura 7, pode ser percebido o funcionamento da

interface com um dispositivo de memória Flash com capacidade de 3,8 GB conectado

no sistema em /dev/sdb1 e montado em /mnt/pendrive.

Figura 8: Dispositivo de armazenamento.

A transferência de arquivos via protocolo BitTorrent funcionou

adequadamente utilizando o aplicativo Transmission. A figura 7 mostra uma tela com a

interface gráfica em um navegador da Internet, recebendo um arquivo de outros

computadores da rede BitTorrent.

38

Figura 9: Interface Gráfica do Transmission.

O funcionamento do compartilhamento de arquivos na rede através do

Samba ocorreu dentro das expectativas, sendo compartilhado na rede o dispositivo de

armazenamento USB e a impressora. A figura 10 mostra um computador acessando os

compartilhamentos disponíveis no OpenWRT, através do sistema operacional

Windows 7.

Figura 10: Compartilhamento com o Samba visto em um PC com Windows 7.

A câmera ligada na interface USB funcionou utilizando o aplicativo mjpg-

streamer. A figura 9 mostra uma imagem capturada do dispositivo com a resolução de

640x480.

39

Figura 11: Imagem capturada da Câmera Ligada a interface USB.

As duas soluções para os serviços de impressão trouxeram resultados. A

solução pelo aplicativo pn910nd se apresentou funcional, com a desvantagem de não

funcionar como spool (fila) de impressão. Entretanto, a alternativa utilizando o CUPS

apresentou melhores resultados, com a vantagem do spool e gerenciamento da fila de

impressão. A imagem da figura 12 mostra uma tela capturada em um computador com

o sistema operacional Windows 7 detectando a impressora ligada na rede, via CUPS

no endereço http://200.17.220.156:631.

Figura 12: Imagem capturada com a impressora disponível para impressão na rede.

A interface do sistema via navegador web foi desenvolvida para o controle e

visualização dos seguintes itens:

Rede: WAN, LAN, WLAN, Storage, Web-Server, Samba, Torrent, Camera

e Firewall.

Media: Camera e Torrent

Tools: Terminal, Iptables e Boot

40

Status: Network Rules, Interfaces e System Summary

Os arquivos da página estão localizados no caminho /www. A imagem da

figura 13 mostra a página inicial da interface via navegador de Internet do sistema

embarcado.

Figura 13: Página inicial da interface via navegador de Internet do sistema embarcado

41

5. CONCLUSÃO

Neste trabalho ficou evidenciada toda a potencialidade e diversidade de

aplicações de um sistema embarcado baseado em um hardware genérico, utilizando

uma plataforma de código aberto.

As características que podem ser destacadas do sistema proposto são a

flexibilidade, podendo vir a atender às mais diversas necessidades. Também, o custo

do sistema é relativamente baixo, principalmente se for considerado os benefícios que

ele apresenta, agregado a o fato de utilizar softwares gratuitos. Além disso, para uma

grande variedade de aplicações, esta solução apresenta um melhor aproveitamento

energético, graças ao seu baixo consumo de energia, evitando problemas de

ociosidade e super-dimensionamento.

Entretanto, em algumas aplicações o sistema ainda apresenta algumas

limitações que necessitam de melhorias. A velocidade de acesso aos dispositivos de

armazenamento pode apresentar falta de desempenho para gravar os arquivos de

tamanho muito grande, especialmente no caso de transferência de arquivos como

BitTorrent. Também, o sistema apresentou compatibilidade limitada aos dispositivos

de impressão da marca HP, que é uma das utilizadas hoje em dia. Além disso, caso a

demanda por recursos das aplicações tenham um crescimento grande, a necessidade

de expansão pode vir a prejudicar o custo benefício da solução.

A interface gráfica pode ter seus recursos e usabilidade aperfeiçoados com

mais tempo de trabalho. O serviço de streaming de vídeo pode ser melhorado com

uma câmera com melhor suporte às funções de compactação de vídeo, permitindo

melhor desempenho e uma redução do consumo de processamento da CPU.

Como possibilidade a ser desenvolvida no futuro para este tipo de

abordagem, verificou-se que este tipo de sistema embarcado pode ser utilizado para

fazer a automatização residencial através da interface GPIO, combinada com a

comunicação PLC (Power Line Communication). Outra aplicação pode ser o

aproveitamento da baixa potência consumida pelo sistema para fazer estações de

42

repetição de redes sem-fio utilizando energia solar, especialmente para lugares de

difícil acesso.

Desta maneira, foi verificado neste projeto que as mais diversas funções

podem ser realizadas em um dispositivo desenvolvido. Além de funcionar como um

Roteador sem-fio convencional, este sistema demonstrou ser capaz de realizar todas

as funções propostas, valorizando e aumentando a funcionalidade do sistema

embarcado.

43

REFERÊNCIAS

[1] ACME Laboratories. micro_httpd. Disponível em: <http://www.acme.com/software/micro_httpd/>. Acesso em: 02 Dez. 2010 [2] Baryshkov,D. GPIO Interfaces. Disponível em: <http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/gpio.txt;hb=HEAD>. Acesso em: 06 dez 2010 [3] Enhanced CTorrent, 2008. Enhanced CTorrent. Disponível em: <http://www.rahul.net/dholmes/ctorrent/>. Acesso em: 02 Dez. 2010 [4] Hacking Roomba. Low-cost On-board Linux, Vision, Wi-Fi, and more for the Roomba Robotics Base. Disponível em: <http://hackingroomba.com/wp-ontent/uploads/2007/01/fs09kurtt.pdf>. Acesso em: 02 dez. 2010 [5] Ladislav Bodnar, 2010. Embedded Linux Distributions. Disponível em: <http://distrowatch.com/dwres.php?resource=links#embed >. Acesso em: 02 Dez. 2010 [6] Macsat. Tutorials for OpenWrt and Olegs Firmware. Disponível em: <http://www.macsat.com/oldguides>. Acesso em: 02 dez. 2010 [7] Macsat. LIGHTTPD WITH PHP5 TUTORIAL. Disponível em: <http://www.macsat.com/oldguides/pdf/OpenWrt_Lighttpd.pdf>. Acesso em: 02 dez. 2010 [8] MIPS Technlogies, Inc.,2009. MIPS Linux Starter Kit for the RouterStation Pro Disponível em: <204.232.190.4/media/files/MD00686-2B-LINUX-GTS-01.00.pdf>. Acesso em: 02 dez. 2010 [9] NewMedia-NET. www.dd-wrt.com | Unleash Your Router. Disponível em: <http://www.dd-wrt.com/site/index>. Acesso em: 02 Dez. 2010 [10] OpenWRT. Dropbear configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/dropbear >. Acesso em: 02 dez. 2010 [11] OpenWRT. Fstab Configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/fstab>. Acesso em: 02 dez. 2010 [11] OpenWRT (Forum). HOWTO RouterStation Pro install wireless cards. Disponível em: <https://forum.openwrt.org/viewtopic.php?id=24682>. Acesso em: 02 dez. 2010

44

[13] OpenWRT. Network configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/network >. Acesso em: 02 dez. 2010 [14] OpenWRT. OpenWrt. Disponível em: <http://openwrt.org>. Acesso em: 02 dez. 2010 [15] OpenWRT. OpenWrt Wiki - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org>. Acesso em: 02 dez. 2010 [16] OpenWRT. Opkg package manager - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/techref/opkg>. Acesso em: 02 dez. 2010 [17] OpenWRT. Pure-FTPd Configuration- OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/pure-ftpd>. Acesso em: 02 dez. 2010 [18] OpenWRT. Samba Configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/samba >. Acesso em: 02 dez. 2010 [19] OpenWRT. System configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/system>. Acesso em: 02 dez. 2010 [20] OpenWRT. Table of Hardware- OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/toh/start>>. Acesso em: 02 dez. 2010 [21] OpenWRT. Transmission configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/transmission>. Acesso em: 02 dez. 2010 [22] OpenWRT. Wireless configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/wireless>. Acesso em: 02 dez. 2010 [23] PCI-SIG. Mini-PCI. Disponível em: <http://www.pcisig.com/specifications/conventional/mini_pci/>. Acesso em: 03 dez. 2010 [24] Stoeveken,T. MJPG-Streamer. Disponível em: <http://www.sourceforge.net/projects/mjpg-streamer>. Acesso em: 06 dez. 2010 [25] Tomato. Tomato Firmware | polarcloud.com. Disponível em: <http://www.polarcloud.com/tomato>. Acesso em: 02 dez. 2010 [26] Ubiquiti Networks, Inc. RouterStation | Ubiquiti Networks, Inc.. Disponível em: <http://www.ubnt.com/routerstation>. Acesso em: 02 dez. 2010 [27] Ubiquiti Networks, Inc. RouterStation Pro | Ubiquiti Networks, Inc.. Disponível em: http://www.ubnt.com/rspro>. Acesso em: 02 dez. 2010

45

[28] Wikipédia. BitTorrent. Disponível em: <http://pt.wikipedia.org/wiki/BitTorrent>. Acesso em: 03 Dez. 2010 [29] Wikipédia. CUPS. Disponível em: <http://pt.wikipedia.org/wiki/CUPS>. Acesso em: 02 Dez. 2010 [30] Wikipédia. Daemon (aplicativo para computadores). Disponível em: <http://pt.wikipedia.org/wiki/Daemon_(aplicativo_para_computadores)>. Acesso em: 02 Dez. 2010 [31] Wikipédia. Ethernet. Disponível em: <http://pt.wikipedia.org/wiki/Ethernet>. Acesso em: 02 dez 2010 [32] Wikipédia. Firewall. Disponível em: <http://pt.wikipedia.org/wiki/Firewall >. Acesso em: 02 Dez. 2010 [33] Wikipédia. File Transfer Protocol. Disponível em: <http://pt.wikipedia.org/wiki/File_Transfer_Protocol>. Acesso em: 02 Dez. 2010 [34] Wikipédia. IEEE 802.11. Disponível em: <http://pt.wikipedia.org/wiki/IEEE_802.11>. Acesso em: 02 Dez. 2010 [35] Wikipédia. Interface serial. Disponível em: <http://pt.wikipedia.org/wiki/Interface_serial >. Acesso em: 02 dez 2010 [36] Wikipédia. lighttpd. Disponível em: < http://pt.wikipedia.org/wiki/Lighttpd>. Acesso em: 02 Dez. 2010 [37] Wikipédia. Linux. Disponível em: <http://pt.wikipedia.org/wiki/Linux>. Acesso em: 02 Dez. 2010 [38] Wikipédia. Microprocessador. Disponível em: <http://pt.wikipedia.org/wiki/Microprocessador>. Acesso em: 02 dez. 2010 [39] Wikipédia. Memória RAM. Disponível em: <http://pt.wikipedia.org/wiki/Memória_RAM>. Acesso em: 02 dez. 2010 [40] Wikipédia. Memória flash. Disponível em: <http://pt.wikipedia.org/wiki/Memória_flash>. Acesso em: 02 dez 2010 [41] Wikipédia. Power Over Ethernet. Disponível em: <http://pt.wikipedia.org/wiki/Power_Over_Ethernet>. Acesso em: 02 Dez. 2010 [42] Wikipédia. Sistema Embarcado. Disponível em: <http://pt.wikipedia.org/wiki/Sistema_embarcado>. Acesso em 03 Dez. 2010

46

[43] Wikipédia. Servidor web. Disponível em: <http://pt.wikipedia.org/wiki/Servidor_web>. Acesso em: 02 Dez. 2010 [44] Wikipédia. Transmission. Disponível em: < http://pt.wikipedia.org/wiki/Transmission>. Acesso em: 02 Dez. 2010 [45] Wikipédia. Wget. Disponível em: <http://pt.wikipedia.org/wiki/Wget>. Acesso em: 02 Dez. 2010 [46] Wikipedia. BusyBox. Disponível em: <http://en.wikipedia.org/wiki/BusyBox>. Acesso em: 04 Dez. 2010 [47] Wikipedia. DD-WRT. Disponível em: <http://en.wikipedia.org/wiki/DD-WRT>. Acesso em: 02 Dez. 2010 [48] Wikipedia. General Purpose Input/Output. Disponível em: <http://en.wikipedia.org/wiki/General_Purpose_Input/Output>. Acesso em: 02 Dez. 2010 [49] Wikipedia. Httpd. Disponível em: <http://en.wikipedia.org/wiki/Httpd>. Acesso em: 02 Dez. 2010 [50] Wikipedia. iptables. Disponível em: <http://en.wikipedia.org/wiki/Iptables>. Acesso em: 02 Dez. 2010 [51] Wikipedia. Line Printer Daemon protocol. Disponível em: <http://en.wikipedia.org/wiki/Line_Printer_Daemon_protocol >. Acesso em: 02 Dez. 2010 [52] Wikipedi. OpenWrt. Disponível em: <http://en.wikipedia.org/wiki/OpenWrt>. Acesso em: 02 Dez. 2010 [53] Wikipedia. Pure-FTPd. Disponível em: <http://en.wikipedia.org/wiki/Pure-FTPd>. Acesso em: 02 Dez. 2010 [54] Wikipedia. Samba (software). Disponível em: <http://en.wikipedia.org/wiki/Samba_(software)>. Acesso em: 02 Dez. 2010 [55] Wikipedia. Secure Digital. Disponível em: <http://en.wikipedia.org/wiki/Secure_Digital>. Acesso em: 02 Dez. 2010 [56] Wikipedia. Tomato (firmware). Disponível em: <http://en.wikipedia.org/wiki/Tomato_(firmware)>. Acesso em: 02 Dez. 2010 [57] Wikipedia. Universal Serial Bus. Disponível em: <http://en.wikipedia.org/wiki/Universal_Serial_Bus>. Acesso em: 02 dez 2010