2
() ( 2.1 )
Em que F{g(t)} a Transformada de Fourier de g(t) e |F{g(t)}|
2
a DEP do pulso g(t),
representada por S(f).
importante observar que, no mundo real, todo canal tem banda finita e com isso, este pulso,
consequentemente, ficaria limitado em banda. Isto no tempo corresponde a um espalhamento do
pulso (alargamento), que a principal causa da IIS- Interferncia Inter-Simblica (Coimbra &
Maria Lopes Passeri de Almeida, 1991). No entanto, mesmo limitada pelo canal, esta banda
muito grande para ser trafegada no espao e certamente interfere em outros sinais.
O que feito na prtica a formatao do pulso por meio do filtro cosseno levantado. Este filtro,
alm de limitar o pulso em uma banda praticvel dentro do espectro disponvel, por conta de
algumas propriedades especiais, tambm elimina a IIS entre os smbolos. (Coimbra & Maria
Lopes Passeri de Almeida, 1991).
Esta filtragem no distorce o sinal de forma agressiva, pois levando em conta que a energia do
sinal est praticamente toda concentrada nas baixas frequncias conforme a Figura 2.5.1, as
outras frequncias que so eliminadas so aquelas que pouco contribuem na caracterizao do
sinal.
Um valor importante na caracterizao de um pulso formatado a banda que ele ocupada. Para
um pulso retangular, a banda ocupada igual a R= 1/T em pulsos RZ - retorna a zero (j que no
foi considerada a frao negativa do espectro), onde T o tempo de durao do pulso e R a
taxa de pulsos. Ou seja, a banda ocupada por um pulso retangular formatado em Banda Base
igual a:
= [] ( 2.2 )
Apesar da DEP de um pulso retangular seguir a forma de uma Sinc, em um primeiro momento
no se pode afirmar que isso vale para o sinal que chega ao modulador, visto que por conta do
mapeamento em nveis realizado pelo codificados do sistema de modulao, este sinal consiste
de um trem de pulsos g(t) com duas ou mais amplitudes que alternam de forma aleatria a cada
instante.
12
Para encontrar a DEP de um trem de pulsos aleatrios, necessrio utilizar alguns conceitos do
estudo de processos estocsticos, no qual possvel determinar que a densidade espectral de
potncia de um sinal aleatrio igual Transformada de Fourier da funo de auto-correlao
do sinal (Leon-Garcia, 2008). O que se conclui que a DEP para uma sequncia binria aleatria
com pulsos () equiprovveis equivalente a DEP de um pulso de durao T como em (2.1)
(Guimares D. , 2009). Sendo assim:
()
=
|{()}|
2
( 2.3 )
De posse desta informao, agora s resta transladar os sinais em banda base para suas
respectivas posies no espectro. Um mtodo simples de se fazer isto consiste em compor o sinal
em BP- Banda passante a partir do sinal em banda base, conforme (Guimares & Souza, 2012).
Como ser visto a mais a frente, um sinal digital em banda passante pode ser expresso por meio
da Equao (2.4), em que as funes seno e cosseno so bases ortonormais, e
() e
()
constituem a componente de fase e quadratura respectivamente que so sinais em banda base
que dependem linearmente do sinal modulante (Guimares & Souza, 2012).
() =
() (2
) +
() (2
) ( 2.4 )
Seja
() a DEP de
() e
() a DEP de
() =
1
4
[
) +
( +
)] ( 2.5 )
Utilizando o resultado de (2.3) em (2.5), pode-se determinar a DEP do sinal digital modulado.
Quantitativamente, o valor da banda de um sinal digital modulado segue o raciocnio da Equao
(2.2). No entanto, como o sinal foi deslocado no espectro, agora, se considera todo o lbulo
principal do sinal, ou seja:
= 2 [] ( 2.6 )
Alm da DEP, outra representao muito til para uma completa compreenso dos sinais em
banda passante a representao geomtrica dos sinais no plano euclidiano. Um rigor terico
seria exigido para demonstrar esta representao, porm, com o intuito de prover os conceitos
necessrios para o entendimento deste trabalho, alguns pontos sero discutidos de forma mais
direta, sem uma deduo prvia.
13
Antes de tudo importante relembrar a Equao (2.4).
() =
() cos(2
) +
()sen (2
)
Nesta equao nota-se que no sinal s(t) a, a componente de fase e quadratura multiplicada pela
funo seno e cosseno respectivamente. Pela teoria dos sinais, pode-se afirmar que um sinal pode
ser representado geometricamente desde que ele seja formado por uma base ortonormal como na
lgebra linear (Strang, 2009). Partindo do princpio de que as funes seno e cosseno so
ortogonais, pois a integral do produto delas se anula em um determinado intervalo, que no caso
da famlia de funes trigonomtricas est compreendido entre o valor 0 e 2, possvel obter
uma base ortonormal com estas funes apenas com a simples normalizao de cada uma delas
pelo valor . Com esta adequao, a integral do o produto destas funes no intervalo de 0
2 igual a um, condio imposta s funes ortonormais.
A Equao (2.4) pode ser remontada da seguinte forma:
() =
()
1
() +
()
2
() ( 2.7 )
Onde
11
00
11
01
11
10
11
11
15
Na Tabela (2.1), cada smbolo QPSK carrega dois bits de informao, sendo assim, a durao de
um smbolo QPSK ser o dobro da durao de um bit de entrada, ou seja, tem-se uma taxa de
smbolos igual a metade da taxa de bits de entrada. Esta uma das principais caractersticas da
modulao tipo M-PSK, pois possvel confinar elevadas taxas de transmisso em bandas
reduzidas.
Da Equao (2.6), a banda de um sinal em banda passante igual a 2R, significando que, ao
entrar com um taxa R1 em um modulador QPSK, obtm-se na sada uma taxa de smbolos R1/2
para ser transmitida. Logo, a banda ocupada ser igual a:
= 2
1
2
=
1
( 2.8 )
Este clculo pode ser generalizado para uma modulao M-PSK onde:
= 2
= 2 ( 2.9 )
Outro parmetro importante na representao de sinais no espao euclidiano a energia
relacionada a um vetor-sinal que pode ser obtida por meio da Equao (2.10) (Guimares D. ,
2009).
=
()
2
0
( 2.10 )
O comprimento de um vetor-sinal igual a e representa a potncia agregada ao smbolo de
uma dada modulao.
2.6 Tcnicas de Modulao nos Padres 802.11
Na famlia de padres 802.11, foram utilizadas vrias modulaes ao longo da evoluo das
geraes, onde estas foram sendo substitudas com o objetivo de se alcanar maior robustez
contra o rudo e maiores taxas dentro do espectro disponvel.
Originalmente o padro 802.11 possua trs abordagens diferentes sobre as tcnicas de
modulao:
16
Modulao GFSK- Modulao Gaussiana por Deslocamento de Frequncia (Gaussian
Frequency Shift Keying), com tcnicas de espalhamento FHSS - Espalhamento Espectral
por Salto de Frequncia (Frequency Hopping Spread Sprectum).
Modulaes DQPSK- Modulao binria e diferencial por deslocamento de fase
(Differential Quaternary Phase-Shift Keying) ou DBPSK - Modulao quaternria e
diferencial por deslocamento de fase (Differential Binary Phase Shift Keying) com tcnicas
de espalhamento DSSS - Espalhamento Espectral por Sequncia Direta (Direct Sequence
Spread Sprectum).
Uso de feixes infravermelho para o trfego de dados
As trs tcnicas operavam na banda de 2,4Ghz e suportavam taxas de transmisso de
1Mbps e 2Mbps, que constituam as taxas standard na especificao original.
A tcnica de infravermelho no foi muito difundida, e atualmente seu uso muito restrito. Como
ela foge ao escopo deste trabalho, no ser abordada.
Modulao GFSK
A modulao GFSK com tcnica de espalhamento FHSS consiste na utilizao de saltos
pseudoaleatrios nas frequncias utilizadas na modulao FSK. Ao invs de se utilizar duas
frequncias pr-definidas para transmitir o bits 0 ou 1, as frequncia utilizadas so variadas de
acordo com uma sequncia pseudoaleatria gerada por um cdigo PN- pseudo- rudo (Pseudo-
Noise). Com isso, o sinal adquire uma melhor imunidade a rudos. A modulao 2-GFSK
utilizada para taxas de 1Mbps enquanto que 4GFSK utilizada para taxa de 2Mbps em um canal
de 1MHz, totalizando 75 sub-canais na banda de 2,4GHz. O GFSK similar ao FSK, porem
utiliza pulsos gaussianos ao invs de senoidais.
Por ser menos eficiente que as tcnicas que o sucederam, o uso do FHSS foi praticamente
descontinuado, e no ser abordado em detalhes neste trabalho.
Modulao DBPSK e DQPSK com espalhamento DSSS
As modulaes DBPSK e DQPSK so tcnicas de modulao que utilizam a fase das portadoras
para transmitir a informao. Nas primeiras geraes do padro 802.11, alm da modulao
17
DBPSK ou DQPSK, o sinal a ser transmitido era submetido a um tipo de espalhamento espectral
conhecido por DSSS. Esta tcnica realiza um espalhamento da energia do sinal (DEP) em uma
banda mais extensa como na Figura 2.6.1. Isto obtido a partir da utilizao de uma sequncia
aleatria de bits com uma taxa muito superior taxa do sinal de entrada. A sequncia utilizada
no padro original 802.11 chamada Backer, onde esta constituda por 11-chips (bits pseudo-
aleatrio) de comprimento. Assim como no FHSS, o espalhamento faz com que o sinal
transmitido seja mais robusto a interferncias, pois ele possui uma baixa correlao com o rudo.
Em uma interpretao mais simplista, pode-se dizer que as componentes de frequncia que
compem o rudo so iguais a uma pequena parcela das frequncias que compem o sinal
espalhado. Nesta tcnica, para cada smbolo de informao temos 11 chips de redundncia de
forma que ao entrar com uma taxa de 1MSps no espalhador obteremos na sada uma taxa de 11
MSps. Por conta disto, utiliza-se o modulador BPSK para taxas de 1Mbps e QPSK para taxas de
2 Mbps com a finalidade de manter o sinal dentro da banda de 22MHz especificada pelo padro
802.11. Por fim, as modulaes DBPSK e DQPSK ainda fazem uso da tcnica de diferenciao,
que faz com que os feixes de dados sejam codificados em funo da mudana de fase da portadora
e no em relao fase absoluta da mesma. Este processo torna o sinal imune ambiguidade de
fase muito comum em receptores com recuperao de portadora suprimida.
Figura 2.6.1: Tcnica de espalhamento por sequencia direta
18
Padro 802.11b e o espalhamento CCK
Objetivando otimizar a utilizao do espectro, obtendo taxas ainda mais elevadas, o padro
802.11 evoluiu para uma nova gerao chamada 802.11b.
Como foi visto, o padro 802.11 DSSS utilizava uma sequncia de 11 chips para realizar o
espalhamento espectral. Com isto, para cada smbolo de informao obtm-se 11 chips de
redundncia. A nova gerao 802.11b buscou se manter dentro do padro original de
22MHz/canal, porm utilizando o espectro de forma mais eficiente. No padro original, as taxas
de bits por sequncia eram de 1 bit/sequncia ou 2 bits/ sequncia. Neste novo padro, as taxas
foram elevadas para 4 bits/ sequncia ou 8 bits/ sequncia. Isto foi possvel a partir da utilizao
de outra sequncia de espalhamento conhecida como CCK- chaveamento de cdigo
complementar (Complementary Code keying).
A ideia do CCK realizar o espalhamento por meio de sequncias complexas ortogonais. Para
isto, foi utilizado um cdigo de espalhamento composto por 8 chips complexos, onde neste
cdigo, estes os 8 chips carregam a informao de 4 bits ou 8 bits. Os smbolos CCK so enviados
a uma taxa de 11Mchips/s para ocupar uma banda de 22MHz. Onde a cada 4Mbits ou 8Mbits de
informao so enviados a cada 8 Mchips. Sendo assim, cada 11Mchips/s recebe 1,375MHz*
4bits que i igual a 5,5Mbps ou 1,375MHz* 8bits igual a 11Mbps que so as taxas de entrada
suportadas neste padro.
A tcnica CCK calcula o cdigo de espalhamento em duas etapas: primeiramente, os oito bits
so agrupados em pares, ou seja, so criados quatro dibits para calcular quatro ngulos ou fases
a
partir de um mapeamento seguindo a Tabela 2.2 O ngulo
) + (, 2) ( 2.11 )
19
Tabela 2.2: Mapeamento de dibits para ngulos da modulao CCK
Tabela 2.3: Mapeamento de ngulos dentro dos chips complexos
A segunda etapa consiste em utilizar s quatro fases para calcular os 8 chips complexos que
seguem a Tabela 2.3. Feito isto, estes chips poderiam ser modulados por um modulador QPSK e
depois transmitidos dentro do canal do AP. O diferencial desta tcnica para a DSSS que os
chips, alm de espalhar o sinal, tambm transportam informao em sua fase.
A verso 5,5Mbps CCK calculada de forma anloga a verso 11Mbps CCK , exceto pelo fato
de usar 4 chips para calcular as quatro fases
2
= (3 ) + /2 ( 2.12 )
3
= 0 ( 2.13 )
4
= (4 ) ( 2.14 )
20
Na prtica, a codificao utilizado a codificao DQPSK e, com isso, o processo acima
realizado de uma maneira um pouco diferente, mas segue o mesmo princpio.
Primeiramente, as formulas da Tabela 2.3 devem ser modificas, onde
eliminado, de forma
que cada chip seja funo apenas de
. O smbolo
que ser espalhado gerado por um codificador DQPSK, onde este obtido a partir da diferena
de fase entre
do smbolo atual e
() =
() +
() ( 2.15 )
Estes smbolos so multiplicados pelas exponenciais complexas
e posteriormente
somados para gerar o sinal OFDM em banda base. Na prtica, estas exponenciais so obtidas
pela multiplicao das componentes em fase por uma portadora cossenoidal e a componente em
quadratura por uma portadora senoidal. Uma translao para banda passante pode ser feita
multiplicando o sinal OFDM por uma outra exponencial complexa
, onde fc a frequncia
central do sinal OFDM.
Sendo assim, o sinal OFDM em banda base poderia ser obtido pela seguinte equao:
() =
1
=0
=
1
=0
, 0 < ( 2.16 )
Em que,
() = {
2
, 0 <
0,
( 2.17 )
Para que no haja interferncia entre os sinais multiplexados, estes sinais devem ser ortogonais
entre si no intervalo do smbolo OFDM. Isto alcanado a partir do momento que o espaamento
entre as portadoras seja igual 1/T ou mltiplo inteiros de um 1/T, lembrando que T o intervalo
de durao de um smbolo OFDM.
Em sistemas reais, processos como o da figura 2.13 tornam-se proibitivos, pois demandariam
mltiplos osciladores com uma alta preciso. Na prtica, esta configurao de ortogonalidade
24
facilmente alcanada, utilizando-se uma IFFT - Transformada Rpida de Fourier Inversa (Invertse
Fast Fourier Transform) para multiplexao e FFT - Transformada Rpida de Fourier (Fast Fourier
Transform) para demultiplexao. A Figura 2.6.6 demonstra um transmissor OFDM utilizado
IFFT.
Figura 2.6.6: Modulao OFDM via IFFT (Guimares & Souza, 2012)
Os bits com altas taxas so mapeados em smbolos complexos de acordo com a modulao que
cada sub portadora ir utilizar. Estes Nc smbolos so paralelizados com uma durao T e
posteriormente so amostrados pelo operador IFFT. Por fim, estas amostras so serializadas e
um intervalo de guarda Tg introduzido ao final desta stream. Este intervalo introduz uma folga
entre os smbolos OFDM, reforando ainda mais a robustez do sinal contra a IIS. Para ser
transmitida, esta stream convertida para um sinal analgico e deslocada para a frequncia
desejada.
A demonstrao de como a IFFT est diretamente relacionada com a Equao (2.15) e envolve
procedimentos simples, mas que fogem ao escopo deste trabalho. A DEP de um sinal OFDM
tambm pode ser obtida a partir de (2.15). Ela corresponde modulao de portadoras ortogonais
por pulsos retangulares de durao T. A DEP de uma nica sub-portadora modulada centrada na
frequncia f0 dada por (Guimares D. , 2009)
() = {|
|
2
}
2
[(
0
)] ( 2.18 )
Onde {|
.
Como o espaamento entre as sub-portadoras igual a 1/T, a DEP de um sinal OFDM dado
por:
() = {|
|
2
}
2
[(
0
/)]
1
=0
( 2.19 )
Sendo assim, a DEP de um sinal OFDM pode ser representada pela sequncia de Sincs espaadas
por valores mltiplos de 1/T, como mostrada na Figura 2.6.7.
25
Figura 2.6.7: DEP sinal OFDM (Guimares & Souza, 2012)
Deste ponto em diante possvel entender como os valores da Tabela 2.4 foram encontrados.
Como exemplo, ser calculada a taxa de entrada de 6Mbps a partir dos parmetros definidos na
Tabela 2.4. O nmero total de subportadores em um smbolo OFDM no padro 802.11a so 64,
porm, somente 52 so utilizadas. Destas 52, 4 so subportadoras para pilotos restando apenas
48 subportaddoras para o trfego efetivo de dados. Assim como no padro 802.11b, o espectro
de 5GHz tambm foi dividido em canais, porm no caso do 802.1a os canais devem possuir
20MHz. Sendo assim, j que todas as subportadora possuem o mesmo tamanho de banda e
considerando que valor de espaamento entre as subportadoras igual ao tamanho da banda (para
no ocorra superposio), o comprimento da banda de cada subportadora igual a 20MHz/64=
312,5KHz. Sabendo que o tempo de um smbolo OFDM igual a 1/(espaamento entre as
subportadoras) ento:
=
1
312,5
= 3,2 ( 2.20 )
Introduzindo um intervalo de guarda igual , (IEEE , 2012), chega-se a um valor total de
durao de smbolo igual .
Portanto, a taxa de smbolo OFDM com intervalo de guarda igual a:
=
1
4
= 250 ( 2.21 )
Onde se l o nmero de Smbolos OFDM por segundo.
Para calcular o nmero de bits por smbolo, ou seja, quantos bits um nico smbolo OFDM
capaz de carregar, primeiramente, observa-se qual tipo de modulao em cada subportadora. No
exemplo proposto, foi usada uma modulao BPSK que, como j foi demonstrado, pode carregar
1bit/smbolo. Logo:
Bit/SmboloOFDM= (N de subportadoras de dados) * (Bit/Subportadoras) ( 2.22 )
26
Ento:
Bit/SmboloOFDM = 48 *1 =48 bits
Note que o nmero de bits que cada smbolo recebe sempre equivalente ao tipo de modulao
usada em cada subportadora, de forma que em cada intervalo de smbolo OFDM sempre haja 48
smbolos da modulao utilizada.
Por conta da codificao FEC, os dados de informao que efetivamente so transmitidos seguem
a proporo da coluna Taxa de codificao (coding Rate), ou seja, a taxa de entrada suportada
para o exemplo em questo ser de 24 bits de informao (48 bits multiplicado por um bit rate
igual a ). Logo:
R= 250k*24= 6Mbps como era esperado.
importante notar que, neste exemplo, cada subportadora carrega 0,5 bit de informao e 0,5 de
redundncia FEC.
Padro 802.11g
O padro 802.11g foi criado com o objetivo de agregar em uma s tecnologia um alto
desempenho e a compatibilidade com o padro 802.11b.
Nesta configurao, clientes que possuem dispositivos Wireless 802.11b so capazes de ingressar
em uma rede 802.11g com taxas de 5,5Mbps ou 11Mbps. Em contrapartida, clientes com
dispositivos 802.11g so capazes de alcanar as mesmas taxas alcanadas pelo padro 802.11a,
pois a modulao operante deste padro o OFDM, porm adaptado para operar na banda de
2,4GHz.
Sendo assim, todos os conceitos apresentados para as geraes anteriores so validos neste novo
padro, de forma que, quando um STA portando a tecnologia 802.11b ingressa em uma rede
802.11g, a modulao utilizada ser a CCK com taxas de 5,5Mbps ou 11Mbps, como j foi
demonstrado. Se um dispositivo com tecnologia 802.11g encontra um rede 802.11g, a tcnica
operante a OFDM e as taxas podem alcanar 54Mbps.
Alm disso, ambos os padres podem compartilhar um mesmo canal a partir de um AP 802.11g,
porm sobre a pena de uma reduo no desempenho da rede. Isto ocorre, pois para que ambas as
tecnologias convivam em um mesmo canal de forma coordenada, foi desenvolvido um
mecanismo de proteo nos APs que demandam certa quantidade de recursos da rede (Broadcom
27
, 2003). Isto necessrio, pois um rdio 802.11b incapaz de perceber se o canal est sendo
usado por um transmissor OFDM. O mecanismo de proteo impede que clientes 802.11b
transmitam indevidamente caso o canal esteja sendo usado por um STA 802.11g. Os dispositivos
802.11g continuam transmitindo nas mesmas taxas, porm quando existem dispositivos de
diferentes padres na mesma rede, o AP transmite pequenas mensagens 802.11b para os STAs
802.11b pedindo para estes clientes aguardarem por um certo perodo, pois existe um cliente
802.11g usando o canal. Estas mensagens acabam gerando um trafego de sinalizao, que reduz
o desempenho de dados. Dependendo do mecanismo utilizado, as taxas 802.11g podem ficar
truncadas em valor prximos de 15Mbps (Broadcom , 2003). Apesar desta sensvel queda, as
taxas ainda assim permanecem acima da sua predecessora 802.11b.
Padro 802.11n e 802.11ac
A evoluo do padro segue buscando maiores taxas de operao. Hoje, possvel encontrar
dispositivos capazes de alcanar 600Mbps utilizando o padro 802.11n, que se baseia na tcnica
MIMO - mltiplas entradas e mltiplas sadas (Multiple-input and multiple-output) a partir de duas
ou mais antenas separadas no espao ou at mesmo elevadas taxas de 1,3Gbps utilizando o mais
recente padro homologado pela Wi-Fi Aliance: o 802.11ac .
O padro 802.11n pode operar com canais de 20MHz ou 40MHz nas bandas de 2,4GHz ou 5GHz.
Porm neste padro, para se alcanar taxas superiores aos padres anteriores, mandatria a
utilizao de duas ou mais antenas na banda de 5GHz. Quando utilizamos um AP 802.11n em
sua configurao bsica (uma antena na banda de 2,4GHz), as tcnicas utilizadas so as mesmas
apresentadas no padro 802.11g, onde ocorre um pequeno aumento de 8Mbps nas taxa de dados
por conta do nmero de subportadoras utilizadas neste padro, que passam de 48 para 52
subportadoras para o trfego efetivo de dados.
Quanto ao padro 802.11ac, por ainda ser muito recente, sua utilizao muito restrita.
Como neste trabalho no sero utilizados equipamentos com mais de uma antena, e no sero
monitorados dispositivos operando na banda de 5GHz, estes dois padres no sero abordados
com mais detalhes.
At aqui, foram abordados todos os padres espectrais de modulao especificados para as
tecnologias correntes da famlia de padres 802.11. O prximo subtpico faz uma breve
28
abordagem na camada de enlace do padro 802.11 para entender como mltiplos usurios podem
compartilhar um mesmo canal em um nico AP.
2.7 Protocolo CSMA-CA
A transmisso Wireless pode ser definida como uma transmisso ponto a ponto, onde a cada
instante existe um transmissor e um receptor se comunicando dentro de um canal, ou seja, se
mais de uma transmisso ocorrer ao mesmo tempo, elas iro se interferir dentro deste canal.
Sendo assim, foi necessrio o desenvolvimento de um mecanismo que gerenciasse a utilizao
do canal pelos seus diversos usurios a fim de minimizar a ocorrncia de colises.
Nas redes de computadores, o trfego dito em rajada. Assim, uma estao gera trfego durante
pouco tempo, mas quando o faz, necessita de muitos recursos de rede. Devido a esta
caracterstica, um mtodo de alocao fixa como o TDMA- Acesso Mltiplo por Diviso de
Tempo (Time Division Multiple Acces) no seria uma boa soluo. Uma soluo seria utilizar uma
alocao dinmica do canal por meio de acesso aleatrio. No entanto, neste tipo de abordagem,
existe a possibilidade de ocorrncia de colises, que ocorre quando duas estaes tentam
transmitir ao mesmo tempo. Como normalmente as redes Wireless so redes de curta distncia,
comparado ao tempo de transmisso de um pacote, possvel que uma estao sinta o meio antes
de transmitir, evitando assim uma coliso. O protocolo que atende a estes requisitos chamado
CSMA-CA- Acesso Mltiplo com Verificao de Portadora e com Preveno de Coliso (Carrier
Sense Multiple Access with Collision Avoidance). Ele dito com deteco de portadora, pois, antes
de uma transmisso, os dispositivos da rede procuram saber se o canal est sendo utilizado e s
transmite se ele estiver livre, diferente do protocolo utilizado em redes cabeadas CSMA/CD -
Acesso Mltiplo com Deteco de Portadora com Deteco de Coliso (Carrier Sense Multiple
Access with Collision Detectio), que capaz de detectar uma coliso durante a transmisso. O
CSMA-CA capaz apenas de evitar uma coliso com uma certa probabilidade, pois em redes
sem fio seria muito oneroso fazer com que as estaes tenham a capacidade de transmitir e escutar
o canal simultaneamente. E mesmo que isso fosse implementado, o meio de transmisso deste
tipo de rede guarda caractersticas peculiares que dificulta que uma STA perceba uma
transmisso realizada por uma outra STA como ser visto no exemplo a seguir.
Suponha duas STAs desejem transmitir para um AP ao mesmo tempo. Devido a obstculos
fsicos, possvel que as ondas eletromagnticas sejam bloqueadas em uma direo, evitando
que as STAs se percebam. Alm disso, o desvanecimento em RF pode fazer com que uma
29
mquina esteja fora do alcance da outra como ilustrando na Figura 2.7.1 e na Figura 2.7.2. Este
problema conhecido como terminal escondido.
Figura 2.7.1: Terminal escondido por obstculo
Figura 2.7.2: Terminal escondido por desvanecimento
Para resolver estas questes, o padro 802.11 especificou mecanismos de camada de controle de
acesso ao meio (MAC) , onde a pea fundamental nesta camada chamado de DCF- funo de
coordenao distribuda (Distributed Coordination Function) (Hargreaves, 2003). O DCF baseado
em um esquema de acesso aleatrio usando deteco de portadoras. Neste tipo de mecanismo,
sempre que uma STA precisa transmitir, ela antes monitora a atividade do canal. Caso ele esteja
ocioso por um perodo maior que o intervalo DIFS- Espaamento Interquadros Distribudo
(Distributed Interframe Space), a estao transmite o quadro, caso contrrio, ela monitora o canal
at que este esteja ocioso por um perodo DIFS e ento inicia um contador de durao aleatria
(backoff) antes de transmitir para minimizar a probabilidade de coliso.
30
Como uma estao no pode transmitir e escutar ao mesmo tempo, para saber se uma coliso
ocorreu, um ACK confirmao de recebimento (Acknowledgement) transmitido pela estao
receptora logo aps um perodo SIFS Espaamento Curto Interquadros (Short Interframe Space)
sempre que um pacote recebido sem erros. Se aps um perodo de timeout ACK, no ocorrer
nenhuma confirmao, a estao transmissora sabe que ocorreu uma coliso e uma retransmisso
do pacote agendada.
Uma outra forma de operao na camada de controle chamada modo de reserva. Neste modo,
se o transmissor sentir que o canal est ocioso por um tempo igual a DIFS seguindo as regras de
backoff descritas anteriormente, aos invs de transmitir seus dados teis, ele envia um quadro de
reserva RTS- Solicitao de Envio (Reservation Request) contendo a durao do pacote de dados
que ser transmitido. Se a estao de destino receber corretamente, ela espera por um tempo SIFS
e envia um quadro chamado CTS Pronto para Envio (Clear-To-Send) sinalizando que a estao
origem pode enviar os dados, aps um perodo SIFS. Terminado este perodo a estao que
recebeu o CTS inicia a transmisso.
Tanto o RTS como o CTS carregam a informao sobre o tamanho do payload que ser
transmitido, sendo assim, como o canal conserva as caracterstica de difuso, todas as estaes
recebem estes quadros e podem utiliza-lo para saber por quanto tempo o canal ir permanecer
ocupado. Este controle feito por meio do NAV -vetor de alocao de rede (Network Allocation
Vector). Desta forma, as estaes que aguardam, no precisam ficar escutando o canal a todo
instante.
Pode-se observar que operao em modo de reserva otimiza o processo de alocao do canal,
pois se ocorrer uma coliso, o pacote perdido ser curto (ser apenas o pacote RTS). Alm disso,
ele resolve o problema de terminal escondido, pois mesmo que uma estao no receba o RTS
transmitido por uma estao escondida, certamente ela ir receber o CTS enviado pelo AP.
31
3 Fonte de Rudo na Banda 2,4GHz e Metodologia
de Mitigao da Interferncia Co-Canal
O captulo 2 caracterizou de forma integral um sinal 802.11 dentro da banda no licenciada
2,4GHz. Sendo assim, utilizando-se um analisador de espectro torna-se fcil reconhecer este
sinal e saber qual o canal usado na comunicao.
Neste captulo, so apresentados alguns padres de rudo comuns na banda de 2,4GHz e quais
as metodologias de mitigao da interferncia co-canal mais usadas. Tambm apresentado
um breve histrico sobre o projeto SciFi e de como feito o gerenciamento dos APs, afim de
diminuir a interferncia co-canal de forma automatizada. Este capitulo importante, pois ser
demonstrado como o rudo tem influncia direta nas taxas de transmisso praticada entre um
transmissor e um receptor 802.11.
3.1 Fontes de Rudo na Banda 2.4GHz em Redes 802.11
Apesar das redes Wireless serem a utilizao mais conhecida para o espectro no licenciada
de 2,4GHz, uma diversidade dispositivos tambm compartilham esta banda. Tem-se como
exemplo a tecnologia Bluetooth, fornos micro-ondas, sensores de movimento, telefones sem
fio, dentre muitos outros.
A utilizao do espectro por parte destes dispositivos pode ser encarada pelas redes 802.11
como uma fonte de rudo, uma vez que eles sero captados pelo receptor e podem fazer com
que as informaes que esto sendo trocadas na rede sejam distorcidas e interpretadas de
forma incorreta. Nas Figura 3.1.1, Figura 3.1.2, Figura 3.1.3 e Figura 3.1.4, esto
exemplificados algumas fontes de rudo e como normalmente eles se distribuem no espectro.
a) Interferncia de Fornos micro-ondas.
Como podemos ver, um forno micro-ondas cria formas semelhante a montes, distorcendo a
curvatura dos sinais que se encontram entre o dcimo e o dcimo primeiro canal. Um
comportamento bem tpico deste tipo de interferncia possvel de ser observado quando se
32
analisa a interferncia durante um intervalo de tempo, pois normalmente a presena destas
raias espectrais perduram de 1 a 5 minutos que tempo habitual de utilizao deste
dispositivo.
Figura 3.1.1: Interferncia de Forno micro-ondas (MetaGeek, 2013)
b) Sensores de movimento
Como pode ser visto na Figura 3.1.2, a assinatura de um sensor de movimento consiste em
um sinal de banda estreita, e marcado por um nico pico.
Figura 3.1.2: Interferncia de sensores de movimento (MetaGeek, 2013)
33
c) Cmeras de segurana sem fio
Um caracterstica deste tipo de equipamento a presena de 3 picos sequenciais de grande
potncia no espectro. Este tipo de dispositivo utiliza o espectro continuamente.
Figura 3.1.3: Interferncia de cmera de segurana sem fio (MetaGeek, 2013)
34
d) Dispositivos Bluetooth
O Bluetooth utiliza a banda de 2,4GHZ com saltos em vrias frequncias por conta da
modulao utilizada (FHSS). Este tipo de sinal, apesar de poluir toda a faixa do espectro,
dificilmente causa severa interferncias nos sinais Wireless.
Figura 3.1.4: Interferncia de dispositivo Bluetooth (MetaGeek, 2013)
3.2 Interferncia Co-Canal e Projetos de Plano de Canais
A ICC- Interferncia Co-Canal, sem sombra de dvidas, a maior causadora de perda de
desempenho em redes Wireless.
Como foi visto, um canal 802.11 foi projetado para receber apenas um transmissor e um
receptor por vez. O que ocorre que, muitas da vezes, dois APs so configurados para utilizar
um mesmo canal ou canais que se superpem no espectro, de forma que determinados pontos
na rea de cobertura do sinal destes APs se tornam uma regio de intensa disputa pelo canal,
onde APs constituem-se em uma fonte de interferncia mtua.
O plano de frequncias de 2,4GHz possui 13 canais, sendo que apenas trs no se superpem
no espectro: o canal 1,6 e 11. O objetivo ao se projetar um plano de canais consiste em
posicionar sistematicamente APs configurados para um destes trs canais de forma que
pontos de acesso adjacentes nunca trabalhem em um mesmo canal. Esta disposio pode ser
observada na Figura 3.2.1
35
Figura 3.2.1: Plano de canais 802.11b&g (Cisco B.2004)
evidente que APs que utilizam o mesmo canal, mesmo que distantes, acabam se
interferindo. No entanto, se o nvel do sinal interferente suficientemente baixo, ele pode ser
considerado um rudo de fundo tendo pouca influncia sobre o sinal interferido.
Normalmente, so definidas trs regies dentro da cobertura de um AP: Regio de associao
(Association Range), regio de disputa (Contention Range) e rudo de fundo (Noise Floor)
(Aerohive, 2012).
Figura 3.2.2: Regies de operao em um AP (Aerohive, 2012)
36
Se entre dois APs trabalhando em um mesmo canal existir uma regio de interseo onde o
nvel do sinal de cobertura de ambos estiverem entre -67dBm -85dBm, isto significa que
existe uma regio de disputa e consequentemente haver ICC. Sendo assim, necessrio
encontrar a distncia certa ente os APs de forma que a regio de -85dBm de um AP no
tangencie a regio de -85dBm do outro, como est demonstrado na Figura 3.2.3.
Figura 3.2.3: Interferncia Co-Canal (Aerohive, 2012)
3.3 Projeto SciFi
Um exemplo interessante para o controle da ICC o projeto SciFi, desenvolvido na
Universidade Federal Fluminense. Neste projeto, utilizando APs de baixo custo e software
livre, foi possvel desenvolver um sistema de integrao entre os APs utilizados em uma rede,
de forma a automatizar o controle da ICC. Alm disso, ele realiza um balanceamento de carga
nestes APs, onde possvel que um AP absorva a carga de outro.
O controlador SciFi atua na configurao dos APs em duas frentes:
Um seletor de canais permite que um canal de operao seja escolhido em cada ponto de
acesso de forma que no ocorra a ICC.
A potncia de transmisso pode ser alterada em cada ponto de acesso, reduzindo o alcance
de um dado AP e impedindo a intercesso entre a cobertura de dois APs que operam em
um mesmo canal.
37
Este gerenciamento obtido a partir de um controle centralizado que possui uma viso
completa de toda rede. Na Figura 3.3.1 encontra-se a topologia proposta neste projeto (Balbi,
et al., 2012).
Figura 3.3.1: Topologia da rede SciFi (Balbi, et al., 2012)
3.4 Estudo do Rudo no Plano Euclidiano de Sinais
Neste subtpico, utilizando conceitos sobre constelaes de sinais, demonstrada a
influncia do rudo na recuperao do sinal transmitido. A princpio, intuitivo pensar que,
pelo fato do rudo presente no canal distorcer o sinal transmitido, o receptor ir
constantemente requisitar uma retransmisso dos dados, fazendo com que a velocidade de
conexo percebida pela usurio receptor seja mais lenta.
De fato, existe uma relao entre o nvel de rudo do ambiente e as taxas de dados alcanadas
em um AP, porm esta queda na velocidade no causada pelo rudo de forma direta, e sim
porque, o transmissor ao perceber que um nmero predefinidos pacotes no foram recebidos
corretamente, inicia alguns procedimentos de proteo, onde o mais importante consiste em
comutar o sistema para um tipo de modulao com menos smbolos (Mathieu Lacage &
urletti, 2004). Este procedimento certamente ir reduzir a BER-taxa erro de bit (Bit Error Rate)
38
dentro deste canal, mas tambm ir comprometer as taxas de transmisso praticadas entre o
transmissor e o receptor.
Para entender o porqu desta relao, primeiramente ser visto como realizado o processo
de deciso dos bits que so demodulados pelo receptor.
No processo de deciso, o receptor basicamente compara o nvel dos smbolos recebidos com
os nveis de referncia que ele possui. Ou seja, os smbolos resgatados pelo receptor passam
por um bloco chamado decisor, que possui regies de tolerncia, onde cada smbolo pode
excursionar livremente sem que o sistema incorra em erro. Se um dado smbolo chegar com
um nvel muito alterado, ao ponto de exceder esta tolerncia, o decisor ir se decidir por um
smbolo diferente do transmitido, cometendo um erro.
Agora, considere que o canal utilizado para transmitir este smbolo seja um canal AWGN-
Rudo Branco Gaussiano Aditivo (Additive White Gaussian Noise), possvel provar que esta
distoro ser causada pelo acrscimo de rudo durante a passagem do smbolo pelo canal.
Com o apoio da representao geomtrica dos sinais, pode-se considerar um rudo branco W
que somado ao vetor sinal. Sendo assim, para um smbolo S11 encontra-se um vetor
resultante que segue a Figura 3.4.1
Figura 3.4.1: Representao do rudo no plano euclidiano de sinais
39
Observe que o smbolo foi desviado de sua posio original, agora imagine que a regra que
o decisor QPSK ir obedecer seja como segue:
Se um smbolo recuperado estiver localizado na regio do primeiro quadrante do plano, o
decisor se decidir pelo smbolo S11. Porm, se o smbolo estiver localizado no segundo
quadrante, ele se decidir pelo smbolo S21 e assim sucessivamente para os outros smbolos.
Sendo assim, dependendo do tamanho e da direo do vetor W, o smbolo pode ultrapassar
os limites do quadrante ao qual ele pertence, e com isso, o decisor ir se decidir por um
smbolo errado. Note que o smbolo da Figura 3.4.1 s pode variar uma unidade de distncia
na vertical e na horizontal para no invadir a fronteira dos dois outros quadrantes mais
prximos (o segundo e o quarto), sendo que apara invadir o quadrante mais distante ele teria
que variar uma distncia maior que 2 (o terceiro). Sendo assim, existe uma alta
probabilidade do smbolo S11 ser confundido com os smbolos S-11 e S1-1 e uma probabilidade
menor de ser confundido com o smbolo S-1-1. Esta probabilidade cai sensivelmente se
utilizarmos uma modulao BPSK mantendo a potncia dos smbolos. Isto porque para o
caso do BPSK, existe apenas duas regies separadas pelo eixo
2
. A soma das probabilidades
de erro para este timo caso bem menor.
Fica claro porque as taxas de bit caem quando so detectados sucessveis erros na transmisso
dos quadros: o transmissor procura utilizar uma modulao com menos smbolos com o
intuito de expandir a regio de deciso dos seus smbolos.
No prximo capitulo, ser discutido como foi concebida a ideia para observao das
variaes do espectro e das taxas de dados e quais as ferramentas foram escolhidas para sua
implementao.
40
4 Softwares para Monitorao da Banda 2,5GHz e
as Taxas de Dados de Pontos de Acesso.
Utilizar instrumentos capazes de observar o espectro fundamental para se ter um melhor
entendimento sobre o comportamento da rede, principalmente no que diz respeito as taxas de
dados vigentes a cada instante.
Diante de tudo o que foi exposto nos Captulos 1 e 2, e de posse destes instrumentos, foi
possvel desenvolver, neste trabalho, aplicaes de aquisio e processamento de dados com
o intuito relacionar a atividade do espectro com as variaes das taxas de dados em um canal
e, com isto, identificar potenciais fontes de interferncia em redes Wireless.
Basicamente, foram desenvolvidas trs aplicaes:
1. O primeiro software buscou capturar dados sobre a atividade do espectro na banda
2,4GHz fornecidos por um analisador de espectro de baixo custo, inserindo uma
varivel tempo em cada conjunto de amostras e armazenado este dados em um banco
para um processamento off-line.
2. O segundo software buscou monitorar a variao das taxas de dados no tempo
praticada em um AP a partir da aquisio de dados de um software j desenvolvido e
armazenar estes dados neste mesmo banco de dados para o processamento off-line.
3. A terceira aplicao na verdade consiste em um conjunto de macros que iro processar
os dados armazenados no banco, a fim de organiz-los, gerar grficos e relatrios a
respeito do comportamento do espectro em relao a taxa de dados em um rea
atendida por um AP especfico.
41
4.1 Software para Monitorao da Atividade do espectro No
Licenciado 2,4GHz.
A primeira etapa do desenvolvimento consistiu em encontrar um equipamento de mercado de
baixo custo, que pudesse ser integrado a um software de desenvolvimento pessoal, a fim de no
depender dos recursos oferecidos pelo software proprietrio do equipamento. Isto porque a
aplicao fornecida junto com o hardware limita sobremaneira a manipulao dos dados. Alm
disso, os resultados das medies precisariam ser arquivados em banco, e dificilmente este
recurso seria disponibilizado de forma gratuita.
O hardware para medio do espectro que foi utilizado neste trabalho pode ser considerado um
analisador de espectro de baixo custo, podendo ser encontrado no mercado por menos de 100
Dlares. O Airview2 Ext, produzido pela empresa UBIQUIRI Network, trabalha dentro da faixa
ISM 2,4GHz, realizando uma varredura neste espectro em passos de 500KHz comeando pela
frequncia de 2,399GHz at a frequncia de 2,485GHz. A cada ciclo de 260ms so
disponibilizadas potncias acima de -94dBm de 173 raias espectrais. Estes dados so serialmente
enviados para um PC por meio da interface USB, afim de serem processados pelo software
proprietrio que deve estar instalado na mquina.
Conhecendo a formatao e como os dados so enviados para o computador, foi possvel captur-
los interceptando a porta serial utilizada pelo equipamento dentro do sistema operacional onde
foram instalados os drives do hardware. A aplicao que realiza esta aquisio foi desenvolvida
sobre a plataforma Windows, utilizando a IDE-Ambiente de Desenvolvimento Integrado
(Integrated Development Environment) Visual Studio 2013.
Tanto o sistema operacional como a IDE, foram escolhidos levando em conta a familiaridade
com estes ambientes, visto que o Airview tambm pode ser utilizado sobre plataforma Linux.
O IDE Visual Studio 2013 oferece inmeras facilidades para o desenvolvimento de aplicaes
robustas e de forma prtica, onde em um mesmo ambiente possvel trabalhar com vrias
linguagens. Neste trabalho, foram utilizadas duas linguagens: o C++ e o C#, alm de alguns
mecanismos de integrao a banco de dados nativos IDE visual Studio.
42
O banco de dados utilizado foi o Sql server 2012, onde por meio de classes, APIs- Interface de
Programao de Aplicativos (Application Programming Interface) e ferramentas wizard
disponibilizadas pela IDE, foi possvel realizar conexes ao banco de forma rpida e eficiente.
A primeira aplicao foi escrita em C++ puro e C++/CLI com objetivo de compactar o nmero
de linhas de cdigo em alguns trechos do algoritmo. Na Figura 4.1.1 est ilustrado como foi
estruturado o primeiro cdigo para aquisio e armazenamento dos dados do Airview.
Figura 4.1.1: Diagrama em blocos do programa de aquisio de dados Airview
A dinmica deste algoritmo bem simples: inicialmente, atravs da interface do usurio
possvel inserir o intervalo de amostragem dos dados em uma caixa de texto. Ao clicar no boto
iniciar, o cdigo recolhe este parmetro e envia para um novo processo criado para se dedicar
exclusivamente a aquisio e armazenamento de dados.
Assim que os dados so recebido no cdigo por meio de uma conexo serial, eles so formatados
com o intuito de eliminar algumas informaes inteis para nossa aplicao. Na sequncia, eles
so separados em pequenas sub-strings a fim de serem corretamente armazenado no banco. Um
43
campo de data e hora do sistema includo para servir como referncia para consultas ao banco
de dados e tambm para o processamento que ser realizado pelo Excel.
Aps esta formatao, os dados so efetivamente armazenados. Este ciclo permanece
indefinidamente, at que o usurio por meio do boto encerrar interrompa o lao e feche o
programa. Na Figura 4.1.2 pode-se observar a interface do usurio para esta aplicao DEP-Wifi.
Figura 4.1.2: Interface do usurio da aplicao de aquisio e armazenamento dos dados do Airview
Um detalhamento mais denso sobre esta aplicao pode ser encontrado nos cdigos comentados
do Apndice A.
4.2 Software para Monitorao das Variaes nas Taxas de
Dados em um Canal de um Ponto de Acesso
Nesta segunda frente do projeto, buscou-se observar as variaes das taxas de dados atrelada a
um determinado canal gerado por um AP ao longo de um intervalo de tempo. Para isto foi
desenvolvido uma aplicao que utilize as funcionalidade de um outro programa que j realiza
este tipo de mtrica para armazenar estes dados devidamente formatados em um banco de dados.
Um programa muito utilizado para aferir as taxas de dados em uma conexo TCP - Protocolo de
44
Controle de Transmisso (Transmission Control Protocol) ou UDP- Protocolo de Datagramas do
Usuiros (User Datagram Protocol) o Iperf (Gates, Tirumala, Dugan, & Gibbs, 2003).
O Iperf um programa gratuito que pode ser encontrado em verses para plataforma Linux e
Windows. Este programa, alm de medir as taxas de dados TCP e UDP durante em um intervalo
tempo, ele tambm capaz de medir o jitter e a perda de pacotes em uma conexo UDP. O Iperf
sempre trabalha com um par cliente-servidor, onde a partir destes, gerado artificialmente um
trfego totalmente parametrizado de forma que possvel saber como a rede est se comporta ao
longo do tempo.
Neste trabalho, os dados armazenado correspondem aos dados medidos pelo servidor Iperf. A
seguir foram discriminados os parmetro de configurao do servidor e do cliente Iperf .
Cliente Iperf:
-c 192.168.1.100 u -i 1 -p 5001 -f k -t 10
O argumento c remete ao fato desta mquina est no papel do cliente, e por conta disto, o
segundo parmetro recebeu o endereo IP do servidor com o qual ela ir interagir. No terceiro
parmetro definiu-se que o protocolo vigente o UDP (trabalhando com o protocolo TCP este
parmetro pode ser omitido). O parmetro i define o intervalo em segundo em que sero
geradas as medies. O parmetro p define a porta que ser utilizada para conexo. O quinto
parmetro faz com que os valores medidos sejam representados com uma ordem de grandeza
especifica (K para Kilo, M para Mega e etc..). E por ltimo, o parmetro t fixa por quanto
tempo o trfego de dados ser observado.
Servidor Iperf
-s u -i 1 -f k
As configuraes do servidor so praticamente iguais a do cliente, diferindo apenas pelo fato de
se utilizar a letra s no primeiro parmetro para configurar a mquina como servidor, e por no
ser necessrio informar um endereo IP.
Como o intuito deste trabalho no medir desempenho da rede em um valor absoluto, e sim,
como ela varia em funo da atividade do espectro, no ser apresentado um estudo comparativo
entre os valores de taxa de dados medidos pelo iperf e os requisitos de velocidade de trfego
especificado para cada BSS.
45
Para o desenvolvimento deste segundo programa, foi utilizada a linguagem C# por prover
ferramentas um pouco mais simples que o C++, porm eficientes para atender as necessidades
desta segunda aplicao. A proposta central deste algoritmo interagir com a linha de comando
a fim de desviar o fluxo de dados que nativamente no Iperf destinado sada padro, ou seja, o
monitor, para um bloco formatador e por fim para o nosso banco de dados.
Figura 4.2.1: Diagrama em blocos do programa de aquisio de dados Iperf
A abordagem desta aplicao segue uma linha diferente do programa desenvolvido para
aquisio dados do Airview. Neste segundo caso, foram utilizadas as caractersticas inerentes a
implementao da aplicao Iperf que por definio s envia as mtricas armazenadas durante a
execuo do programa no momento em que ele encerrado. neste instante (quando o programa
encerrado) que aplicao desenvolvida desviar o fluxo de dados do Iperf, para um bloco
formatador e para o banco de dados. Na Figura 4.1.2 pode-se observar a interface do usurio para
esta aplicao
.
46
Figura 4.2.2: interface do usurio da aplicao de aquisio e armazenamento dos dados do Iperf
Maiores detalhes sobre o cdigo podem ser consultados no Apndice B.
4.3 O Excel como Ferramenta de Processamento de Dados e
o VBA
O ltimo ponto abordado neste capitulo direcionado ao conjunto de macros desenvolvido para
processar os dados adquiridos pelas aplicaes de aquisio de dados.
O ambiente de desenvolvimento destas macros, bem conhecido por muitos usurios da
plataforma Windows, porm, na maior parte dos casos, subutilizado ficando restrito aos
recursos bsicos disponveis na interface da janela principal.
O Microsoft Office Excel um editor de planilhas produzido pela Microsoft, que desde 1993 tem
includo em seu ambiente de desenvolvimento o VBA , uma linguagem de programao baseada
no Visual Basic que possibilita a automatizao de tarefas no Excel a partir de funes definidas
pelo usurio (Jelen & Syrstad, 2012). O VBA um complemento poderoso para o aplicativo,
pois possibilita a manipulao rpida de um grande volume de dados. Em verses posteriores, o
Excel inclui a gravao de macros para produzir cdigos VBA que replicam aes do usurio.
Isto permitiu uma maior agilidade no desenvolvimento das macros.
47
Nas Figura 4.3.1s e 4.3.2, esto estruturadas as abas do arquivo modelo criado para receber os
valores importados do banco de dados, a fim de gerar os relatrios sobre as variaes das taxas
de dados ao longo do tempo e a atividade do espectro.
Figura 4.3.1 Aba Cadastro do arquivo modelo para gerao de relatrios
:
Figura 4.3.2: Abas de introduo de dados para gerao de relatrios
A aba cadastro possui campos onde sero inseridas as informaes sobre local de realizao da
pesquisa, a data e o horrio das medies, algumas informaes referentes ao AP observado e a
configurao da mquina utilizada nos testes.
A tabela Objetos entre AP e STA foi includa com o objetivo de disponibilizar uma descrio
completa do ambiente sobre medio. Estas informaes podero ser teis na interpretao dos
resultados apresentados pelo Excel.
48
Na aba Dados Iperf, encontra-se a tabela que recebe os dados capturados pela aplicao
Serve_Iperf, enquanto a aba DEP recebe os dados capturados pela aplicao DEP Wifi.
A estes dados so aplicados quatro macros:
1. A primeira macro formata os dados sobre a DEP do espectro no licenciado 2,4GHz a
partir da 173 amostras das raias espectrais obtidas pela aplicao DEP-Wifi. Estas
frequncias so inseridas no eixo x de cada grfico a partir do valor de 2,399GHz at o
valor de 2,485GHz. No eixo y esto as potncias de cada amostra expressa em dBm. Estes
dados sero utilizadas na gerao de grficos de mltiplas sries. Alm disso, este
algoritmo formata os dados recuperados da aplicao Iperf Serve contendo as variaes
das taxas de dados no intervalo de observao a fim de gerar um grfico de mdias mveis
das taxas de dados. Por fim, para cada grupo de dados, criada uma tabela dinmica que
possui uma grande variedade de filtros, onde podero ser realizadas consultas em funo
de uma data, um horrio especfico ou em um intervalo de tempo e a cada nova consulta
os grficos so alterados dinamicamente. Estas tabelas podem ser observadas nos
exemplos da Figura 4.3.3 e Figura 4.3.4.
2. A segunda macro realiza um processamento sobre a variao das taxas de dados em
funo do tempo e plota um grfico com a mdia mvel sobre as 10 ltimas amostras. A
ideia central suavizar as flutuaes aleatrias e evidenciar variao tendenciosas
ocasionadas por interferncias externas de acordo com os dados representativos no
exemplo da Figura 4.3.5.
3. A terceira macro gera um grfico contendo a superposio do conjunto de potncias
recuperados do Airview a cada intervalo de amostragem. Este grfico oferece uma viso
completa sobre a atividade do espectro durante todo o perodo de observao. No entanto,
este perodo pode ser modificado a partir dos filtros adicionados ao campo data e hora
conforme o exemplos da Figura 4.3.6.
4. A quarta macro gera um segundo grfico contendo as potncias com maiores frequncias
de repetio ao longo do tempo. Este grfico pode ser modificado para fornecer relatrios
mais limpos, pois desconsideram interferncias que surgem em eventuais instantes
49
durante o perodo de observao. Isto til quando queremos identificar o sinal dos APs
que se encontram na regio sobre medio. O nmero de potncia de maior frequncia de
repetio pode ser aumentado com o intudo de fornecer um grfico com mais riqueza de
detalhes como mostrado no exemplo da Figura 4.3.7.
Figura 4.3.3: Exemplo de filtros para dados sobre a taxa de dados gerados pelo Iperf
50
Figura 4.3.4: Exemplo de filtros para dados sobre a DEP gerados pelo Airview
Figura 4.3.5: Aba Grficos com exemplo de mdia mvel das amostras da taxas de dados praticada entre o Cliente-
Servidor Iperf no canal do AP sobre observao
51
Figura 4.3.6: Aba Grficos com exemplo de superposio de todas as amostras do espectro 2,4GHz em um intervalo de
tempo
Figura 4.3.7: Aba Grficos com exemplo de raiais espectrais com maior frequncia de repetio ao longo de todo o
intervalo de observao
Para mais detalhes sobre os scripts desenvolvidos para o processamento dos dados, consultar
apndice C.
52
5 Metodologia de Pesquisa de Campo
Neste captulo, so documentados alguns ensaios realizados com as ferramentas desenvolvidas
neste trabalho, portanto, so realizadas medies em ambiente contaminado por rudo conhecido.
Alm disso, so apresentados os procedimento utilizados para realizao da pesquisa de campo
na Universidade Federal Fluminense, sobre os APs associados ao projeto SciFi.
5.1 Ensaios Realizados na Presena de Interferncia
conhecida
Todas medies foram realizada utilizando o protocolo TCP da aplicao Iperf Server, sendo
assim, no ser definida uma taxa de dados especfica, sempre lembrando que neste trabalhos
no estamos medindo o desempenho da rede de forma quantitativa e sim com ela varia em relao
a atividade do espectro.
a) Interferncias de forno micro-ondas
Estas medies foram realizadas em um ambiente indoor, iniciada s 20:57:50 at s 21:01:40,
onde s 20:59 um forno micro-ondas trabalhando na frequncia de 2,45GHz durante um
minuto. Um STA rodando a aplicao Iperf Server e DEP-Wifi foi posicionado 4,5 metros
do forno micro-ondas. Um segundo STA rodando aplicao Cliente Iperf foi posicionado com
as mesmas distncias conforme a Figura 5.1.1.
53
Figura 5.1.1: Layout de equipamentos no ensaio com interferncia de forno micro-ondas
Na Figura 5.1.2 observado a variao da taxa de dados neste intervalo de observao.
Figura 5.1.2: Mdia mvel das amostras da taxas de dados praticada entre o Cliente-Servidor Iperf no canal do AP sobre
observao
54
A partir da Figura 5.1.2, fica evidente o intervalo onde ocorreu a interferncia. Entre o horrio
de 21:00hs e 21:01hs ocorreu sensveis oscilaes nas taxas de dados do canal gerado pelo AP
em que a mquina com o programa Iperf Server estava registrada.
Utilizando os filtros condicionais da aba contendo os dados sobre a atividade espectral do
canal em questo, possvel isolar dois intervalos: Um onde as mdias das taxas de dados
esto relativamente estveis (por exemplo entre 20:59hs e 21:00hs), e o intervalo onde as
variaes so mais expressivas. Assim, foi possvel evidenciar o rudo causado pelo forno
micro-ondas que introduziram produziu um acumulo de energia interferente principalmente
entre as frequncias de raias espectrais sobre o canal em questo conforme as Figuras Figura
5.1.3 e Figura 5.1.4.
Na Figura 5.1.5 possvel observar a forma do canal aps o algoritmo que elimina fontes de
rudo intermitentes.
Figura 5.1.3: Valores medidos sem interferncia de rudo do forno micro-ondas.
55
Figura 5.1.4: Valores medidos com interferncia de rudo do forno micro-ondas.
Figura 5.1.5: Valores com raiais espectrais de maior frequncia de repetio em todo o intervalo de observao.
56
b) Interferncia Co-Canal
Para a observao da ICC, foram utilizados dois APs separados por uma distncia de 8 metros,
sendo que ambos foram posicionado em um mesmo cmodos.
O procedimento foi feito da seguinte forma:
Um primeiro AP A foi configurado para trabalhar no canal 8, onde na rede deste AP
foram inseridas duas mquinas rodando a aplicao de monitorao das taxas de dados
no canal e a atividade no espectro 2,4GHZ.
Um segundo AP interferente foi configurado para trabalhar no canal 6 de forma que
ocorra a superposio com o canal observado. Neste AP, existem dois clientes que
entre 19:21e 19:22 permaneceram ociosos na rede. A parti das 19:22 estas mquinas
comearam a utilizam intensamente a rede realizando mltiplos downloads a uma taxa
mdia de 130Kb/s.
A partir da 19:23 o AP interferente desligado.
Na Figura 5.1.6 observado o layout com as posies dos equipamentos utilizados no
experimento.
Figura 5.1.6: Layout de ensaio com configurao de APs em interferncia co-canal
57
Nas Figura 5.1.7Figura 5.1.8, Figura 5.1.9 e Figura 5.1.10, encontram-se os grficos referentes
a estas medies.
Figura 5.1.7: Mdia mvel das amostras da taxas de dados praticada entre o Cliente-Servidor Iperf no canal do AP sobre
observao
Figura 5.1.8: Valores medidos com interferncia co-canal.
58
Figura 5.1.9: Valores medidos sem interferncia co-canal.
Figura 5.1.10: Valores com maior frequncia de repetio em todo o intervalo de observao.
interessante notar que durante o intervalo de 19:21e 19:22 as taxas de dados oscilaram
de forma acentuada caracterizando a ICC conforme as Figura 5.1.77Figura 5.1.88, porem
durante o intervalo de maior utilizao da rede por parte do canal interferente (19:22
19:23), as taxas de dados do canal sob observao praticamente se anulam. Quando o
canal interferente desligado s 19:23 como observado na Figura 5.1.99 as taxas de
dados se estabilizam.
59
Na Figura 5.1.10 possvel observar mais facilmente a superposio dos dois canais.
O padro de modulao utilizado no canal tambm pode ser facilmente identificado a
partir da DEP de cada sinal. Nos ensaios realizados no captulo 5 o modelo de AP
utilizado foi o TL-WR340, onde para o padro 802.11b so suportadas as modulaes
DSSS e CCK. Neste tipos de modulao as formas observadas so mais arredondadas,
onde a transio de potncia entre as frequncias centrais do sinal e as frequncias da
borda acontece de forma suave acompanhando a forma de uma Sinc.
J na Figura 5.1.11 podemos observar um exemplo de sinal OFDM a partir do padro
802.11g. Por conta do agrupamento de subportadoras com uma banda reduzida, um sinal
OFDM possui um formato mais retangular, onde o decrscimo de potncia entre as
frequncias no centrais do sinal e as da borda ocorre de forma mais abrupta. Este
resultado possui grande semelhana com Figura 2.6.7 que remonta um sinal OFDM a
partir da Equao (2.16).
Figura 5.1.11: DEP de um sinal 802.11g com modulao OFDM
5.2 Pesquisa de Campo em reas Atendidas pelos Pontos de
Acesso da Rede SciFi
Neste tpico, so registrado alguns grupos de dados obtidos na pesquisa de campo feita em
ambiente indoor e outdoor dentro do campus da Praia Vermelha-UFF. Foram medidos pontos
de acesso atendidos pelo sistema de controle SciFi utilizando a metodologia apresentadas no
ensaios do subtpico 5.2. Dentro deste contexto, atentou-se para possveis ocorrncias de
significativas interferncias co-canal.
60
Para uma das pontas de monitorao da taxa de dados foi utilizado um Netbook positivo com
placa Wireless 802.11b/g, rodando a aplicao cliente do Iperf. Na outra ponta do sistema foi
utilizado um ultrabook Dell, rodando as aplicaes para aquisio de dados do Airview e
tambm a do servidor Iperf. Na Figura 5.2.1 possvel observar a disposio dos
equipamentos utilizados nesta medio.
Figura 5.2.1: Sistema de medio montado na rea externa da biblioteca de engenharia Campus Praia Vermelha-UFF
Com o intuito de observar o comportamento do espectro em ambientes com layouts distintos,
foram realizadas duas medies no campus.
1) 2 andar do bloco D (indoor)
2) rea externa da biblioteca da engenharia (outdoor)
61
Na Figura 5.2.2 e Figura 5.2.3, possvel observar disposio dos obstculos de maior relevncia
para o sinal dos APs sobre medio.
Figura 5.2.2: Localizao do AP indoor observado no Bloco D Campus Praia Vermelha-UFF
62
Figura 5.2.3: Localizao AP outdoor observado na biblioteca de Engenharia - Campus Praia Vermelha-UFF
Para cada um dos locais, foram gerados arquivos XLS onde foram inseridos todos os dados
referentes a cada AP conforme o formulrio da Figura 4.3.1 e Figura 4.3.2. O perodo de
observao foi de 2 horas para cada ponto de acesso, gerando um total de 7200 amostras para os
dados sobre o espectro e 7200 amostras sobre as taxas de dados.
As Figura 5.2.4, Figura 5.2.5, Figura 5.2.6 e Figura 5.2.7 referem-se ao AP localizado no 2 andar
do bloco D, onde entre horrio de 13:43 13:46 foram registradas sensveis variaes nas taxas
de dados. Observando o espectro durante uma janela de relativa estabilidade nas taxas de dados
e comparando com o intervalo onde ocorreram as variaes, possvel identificar alteraes no
espectro em torno da frequncia de 2,453 GHz. Pelo padro espectral no h como afirmar qual
a origem da interferncia. Porm, a partir de um perodo de observao mais extenso possvel
constatar com que frequncia ele ocorre. Caso ele seja recorrente, seria vivel utilizar o dcimo
terceiro canal ao invs do dcimo primeiro j que a banda onde ocorreu o rudo est
compreendida entre 2,451GHz e 2,457G.
Na Figura 5.2.7 encontra-se o grfico com as raias espectrais com maior frequncia de repetio
durante todo o intervalo de observao.
63
Figura 5.2.4: Grfico com variao das taxas de dados praticada entre o Cliente-Servidor Iperf no canal do AP observado no
2 andar do bloco D
Figura 5.2.5: Grfico com atividade espectral na regio atendida pelo AP no 2 andar do bloco D no intervalo sem
interferncia
64
Figura 5.2.6: Grfico com atividade espectral na regio atendida pelo AP no 2 andar do bloco D no intervalo com
interferncia
Figura 5.2.7: Grfico com elementos com maior frequncia de repetio na regio atendida pelo AP no 2 andar do bloco D
A partir da medies realizadas na regio coberta pelo AP outdoor localizado na rea externa da
biblioteca de engenharia, ficou constatado que o ambiente externo extremamente ruidoso. Isto
dificultou a identificao de um padro especfico de rudo. No apndice D esto registrados os
grficos referentes s medies realizadas na rea externa a biblioteca de engenharia.
65
6 Concluso
A partir dos ensaios realizados na sesso 5.2, foi possvel constatar que de fato as aplicaes
desenvolvidas neste trabalho so capazes correlacionar a atividade do espectro no licenciado
2,4GHz com as variaes das taxas de dados dentro do canal observado. Alm disso, os dados
obtidos no captulo 5 se mostraram coerentes com toda a teoria desenvolvida ao longo dos
captulos que o precederam.
As ferramentas desenvolvidas em VBA para o processamento dos dados facilitaram
sobremaneira a interpretao dos mesmos, permitindo uma anlise criteriosa para um grande
volume de dados.
Por conta da disponibilidade de horrio, no foi possvel uma pesquisa de campo com um maior
nvel de acurcia, visto que as medies realizadas no fim de semana impediram que o ambiente
medido ficasse exposto aos nveis de rudo e interferncias, tpicos nos dias de semana por conta
da grande circulao de pessoas portando inmeros equipamentos que utilizam a faixa de 2,4
GHz. Alm disso, o perodo de observao de duas horas um perodo pouco representativo e
nos fornece uma base de dados insuficiente para uma anlise mais completa do comportamento
espectral da regio.
Em resumo, apesar de no ter havido tempo hbil para uma maior aquisio de dados, possvel
afirmar que as aplicaes desenvolvidas neste trabalho mostraram-se teis para a monitorao
espectral em pontos de acesso 802.11.
Na sesso 6.2, apresentada algumas propostas para trabalhos futuros, visando o aprimoramento
das ferramentas desenvolvidas.
66
6.1 Trabalhos Futuros
A partir das dificuldades e necessidades observadas durante a pesquisa de campo, a seguir, sero
enumeradas algumas propostas para trabalhos futuros com o intuito de otimizar as medies e
expandir a aplicao das ferramentas desenvolvidas:
a) Integrao entre aplicaes DEP-Wifi e Serv_Iperf. O objetivo desta integrao seria
eliminar a necessidade de trabalhar com duas aplicao separadas, visto que isto foi um
fator complicador para manter o sincronismos no horrio das duas aplicaes, onde uma
aplicao acaba possuindo mais amostras do que a outra.
b) Gerao automtica de relatrios Excel. Atualmente, a exportao dos dadas do banco de
dados para Excel feito de forma manual. Alm disso, ainda necessrio uma ao do
usurio para executar as macros de gerao de relatrios. A ideia seria, automatizar este
processo, onde a partir da aplicao principal o usurio capaz de gerar os relatrios e
grficos do Excel.
c) Observao do espectro 5GHz. Como foi visto, a evoluo do padro 802.11 tende utilizar
cada vez mais o espectro 5Ghz. Para um projeto futuro, seria interessante extrapolar as
funcionalidades oferecidas pelas aplicaes desenvolvidas neste trabalho para uma anlise
do espectro 5GHz. Para isto, seria necessrio utilizao de um outro analisador de espectro
capaz de cobrir esta faixa.
67
Apndice A
1. Cdigo da Aplicao DEP- Wifi
FORM_TCC_V2.cpp
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
//FORM_TCC_V2 ^ obj = gcnew FORM_TCC_V2();// aloca objeto da classe form por meio
do construtor
//Thread ^ Thread1 = gcnew Thread(gcnew ThreadStart(obj,
&FORM_TCC_V2::airview_banco));// cria thread para rodar a funo airview_banco que contem
loop infinito de coleta e armazenamento dos dados
//Thread1->Start();
Application::Run(gcnew FORM_TCC_V2());// exibi window form
return 0;
}
FORM_TCC_V2.h
#pragma once
#include<Windows.h>//para incluir funes para coletar dados seriais e hora do sistema
#include<string>// para utilizar objetos string
#include <tchar.h>//incluir operador "_T"
namespace TCC_UFF_V2 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Threading;// para incluir a classe thread no cdigo
public ref class FORM_TCC_V2 : public System::Windows::Forms::Form
68
{
public: static int tempo_amostra;
public:
FORM_TCC_V2(void)
{
InitializeComponent();
this->button1->Enabled = false;
this->progressBar1->MarqueeAnimationSpeed = 0;
}
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::ProgressBar^ progressBar1;
private: System::Windows::Forms::Label^ label1;
private: System::Data::SqlClient::SqlCommand^ sqlCommand1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Button^ button2;
private: System::Data::SqlClient::SqlCommand^ sqlSelectCommand1;
private: System::Data::SqlClient::SqlConnection^ sqlConnection1;
private: System::Data::SqlClient::SqlCommand^ sqlInsertCommand1;
private: System::Data::SqlClient::SqlDataAdapter^ sqlDataAdapter1;
//*********************************implementao para coleta e armazenamento de dados
public: static int encerrar = 1;
public: void Airview_banco(){// funo implementada para coletar e armazenar os dados do
Airview em um banco sql server
char output[2000];
DWORD bytes_read = 0;
DWORD bytes_written = 0;
HANDLE comport = NULL;
DCB comSettings;
COMMTIMEOUTS CommTimeouts;
comport = CreateFile(_T("\\\\.\\COM6"), GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);// abrir conexo com a porta serial COM3, porta que o Airview
utiliza para despejar dados na mquina
CommTimeouts.ReadIntervalTimeout = 0;// parmetros de conexo serial
CommTimeouts.ReadTotalTimeoutMultiplier = 0;// parmetros de conexo serial
CommTimeouts.ReadTotalTimeoutConstant = 0;// parmetros de conexo serial
CommTimeouts.WriteTotalTimeoutMultiplier = 0;// parmetros de conexo serial
CommTimeouts.WriteTotalTimeoutConstant = 0;// parmetros de conexo serial
69
SetCommTimeouts(comport, &CommTimeouts);// associa parmetros acima definidos varivel
comport
GetCommState(comport, &comSettings);
comSettings.BaudRate = 115200;//9600;// taxa da porta serial de 115200 bit/s
comSettings.StopBits = ONESTOPBIT;
comSettings.ByteSize = 8;// dados enviados de 8 bytes
comSettings.Parity = NOPARITY;// sem paridade
comSettings.fParity = FALSE;
SetCommState(comport, &comSettings);// associa configuraes sobre a porta serial acima
definidas a varivel comport
int status1 = WriteFile(comport, "init\n", strlen("init\n"), &bytes_written, NULL);//
envia string que inicializa dispositivo Airview
if (status1 == 0)
MessageBox::Show("\n erro de escrita\n");// controle de erro de escrita
WriteFile(comport, "bs\n", strlen("bs\n"), &bytes_written, NULL);// envia string que
inicia a "big scan" das 173 amostras do espectro
SYSTEMTIME str_t; // declara objeto da classe systemtime
GetLocalTime(&str_t);//recebe hora e minuto atual
int tempo_aux1 = str_t.wSecond + str_t.wMinute * 60 + str_t.wHour * 3600;// calcula o
nmero de segundos totais
char * pch;
char * aux_strtok;
String ^ aux1;
String ^ aux2;
std::string dados;
int freq = 1;
while (freq <= 175){ // cria uma string para ser passada a varivel sqlCommand1 onde ser
executado o query INSERT INTO. Este query ir armazenar os
//dados dentro dos campos que so identificados pelas strings
@P1, @P2,...
aux1 = aux1 + "," + "@P" + freq.ToString();
freq = freq + 1;
}
aux1 = aux1->Remove(0, 1);// remove a vrgula no final da string para no gerar erro na
execuo do query
this->sqlConnection1->Open();// abre conexo com o banco
this->sqlCommand1->Connection = this->sqlConnection1;// atribui a conexo criada pelo o
wizard do controle sqladapter ao controle sqlcommand1 anexado ao form
this->sqlCommand1->CommandText = "INSERT INTO Table_freq VALUES (" + aux1 + ")";//
armazena comando query insert
70
this->sqlCommand1->CommandType = CommandType::Text;
while (encerrar){// ao pressionar boto "parar" do formulrio a varivel esttica
"encerrar" ser zerada, e o loop de recuperao e armazenamento dos dados ser quebrado,
com isso o processo onde se encontra o loop
// liberado. O programa continua a executar a funo principal main() e chega ao final
onde todas as variveis do cdigo so destrudas.
int status2 = ReadFile(comport, output, sizeof(output), &bytes_read, NULL);// l a porta
serial
if (status2 == 0)
MessageBox::Show("\n erro de leitura\n"); // controle de erro de leitura
GetLocalTime(&str_t);// recebe hora atual
int tempo_aux2 = str_t.wSecond + str_t.wMinute * 60 + str_t.wHour * 3600;// calcula o
nmero de segundos totais
if (tempo_aux2 == 0)// controle do tempo de amostragem ao virar o dia (00:00 horas)
tempo_aux1 = tempo_aux1 - 86400;
if (tempo_aux2 - tempo_aux1 >= tempo_amostra){// se passou o tempo de amostragem, entra
no if
tempo_aux1 = tempo_aux2;// vaiveis para controle do tempo de amostragem
dados = output;// faz uma converso do tipo char* para string
int posit = dados.find("scan|0,");// trata os dados recebidos pela porta serial para que
seja armazenada adequadamente no banco. Busca o primeiro marcador scan|0 na stream de
dados recebidas
dados.erase(0, posit + 7);// elimina o marcador scan|0 e tudo antes deste.
posit = dados.find("scan|0,");// Busca o segundo marcador scan|0 na stream de dados
recebida
if (posit == -1)// para tratar erro caso no consiga achar segundo marcador. Fora uma
nova coleta de dados iniciando o loop
continue;
dados.erase(posit, dados.length());// se encontrou o segundo marcador, apaga o marcado e
tudo oque vem depois dele
//aps este tratamento teremos um string apenas com 173 amostras separadas por espaos
pch = strtok_s((char*)dados.c_str(), " ", &aux_strtok);// prepara a string "dados" para
ser quebrada em sub-string a cada marcador " " (espao)
freq = 1;
this->sqlCommand1->Parameters->Clear();// limpa o ltimo comando (query) sql
while (freq <= 173){
aux2 = "@P" + freq.ToString();// prepara uma string que identificar o campo na tabela a
ser preenchido.
71
this->sqlCommand1->Parameters->Add(aux2, SqlDbType::Int, 10)->Value = gcnew
String(pch);// armazena o dado referente a uma frequncia
pch = strtok_s(NULL, " ", &aux_strtok);// prepara a prxima sub string para ser armazenada
freq = freq + 1;
}
this->sqlCommand1->Parameters->Add("@P174", SqlDbType::Char, 20)->Value =
str_t.wDay.ToString("D2") + "/" + str_t.wMonth.ToString("D2") + "/" +
str_t.wYear.ToString();// armazena a data do grupo de frequncias medidas
this->sqlCommand1->Parameters->Add("@P175", SqlDbType::Char, 20)->Value =
str_t.wHour.ToString("D2") + ":" + str_t.wMinute.ToString("D2") + ":" +
str_t.wSecond.ToString("D2");// armazena a hora do grupo de frequncias medidas
this->sqlCommand1->ExecuteNonQuery(); // executa o query
}
}
CloseHandle(comport);//fecha a porta serial
this->sqlConnection1->Close();// fecha a conexo com o banco
MessageBox::Show("A coleta de dados foi encerrada");
Application::Exit();// encerra o windows form
}
(Implementao realizada pelo wizard C++ visual Studio para construir formulrio)
private: System::Void FORM_TCC_V2_FormClosing(System::Object^ sender,
System::Windows::Forms::FormClosingEventArgs^ e) {
encerrar = 0;// encerra o loop de coleta e armazenamento de dados
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
encerrar = 0;// encerra o loop de coleta e armazenamento de dados
this->progressBar1->MarqueeAnimationSpeed = 0;
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
72
if (this->textBox1->Text->Length > 0){// confirma se textbox foi preenchido
tempo_amostra = Convert::ToInt32(this->textBox1->Text);// intervalo de amostragem
recolhido do textBox do formulrio
FORM_TCC_V2 ^ obj = gcnew FORM_TCC_V2();// aloca objeto da classe form por meio do
construtor
Thread ^ Thread1 = gcnew Thread(gcnew ThreadStart(obj, &FORM_TCC_V2::airview_banco));//
cria thread para rodar a funo airview_banco() que contm o loop de coleta e armazenamento
dos dados
Thread1->Start();// inicia o processo
this->progressBar1->MarqueeAnimationSpeed = 100;// controla a velocidade da barra de
progresso marquee do formulrio
this->button1->Enabled = true;// para controlar acesso aos botes do formulrio
this->button2->Enabled = false;
}
else
MessageBox::Show("Valor de amostragem invlido!");
}
};
}
73
Apndice B
1. Cdigo da Aplicao Server-Iperf
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace ensaio_cs_1
{
public partial class Form1 : Form
{
public string iperf_cmd;
public static string iperf_amostra;
public static int protocol;
public static TimeSpan t1;
public Form1(){
InitializeComponent();
button1.Enabled = false;// inicializa controle de acesso de botes
progressBar1.MarqueeAnimationSpeed = 0;// barra de progresso marquee parada no incio
label1.Visible = false;// label de status invisvel no incio da aplicao
public void iperf_prog(){
StreamWriter escrita_cmd;// objeto que se tornar nova entrada padro para cmd do windosws
StreamReader leitura_cmd;// objeto que se tornar nova sada padro para cmd do windosws
Process p= new Process();
ProcessStartInfo Cmd = new ProcessStartInfo("cmd");// inicia em novo processo o programa
"linha de comando windows"
Cmd.UseShellExecute = false;
Cmd.RedirectStandardInput = true;// altera dispositivo de entrada padro (teclado)
Cmd.RedirectStandardOutput = true;//altera dispositivo de sada padro (monitor)
74
Cmd.CreateNoWindow = true;// impede que janela cmd aparea
p.StartInfo = Cmd;// atribui recurso de entrada e sada do processo "cmd" ao processo "p"
p.Start();// inicia processo
escrita_cmd = p.StandardInput;// define a o objeto escrita_cmd como nova entrada padro
de cmd
escrita_cmd.AutoFlush = true;// limpa buffer de entrada
leitura_cmd = p.StandardOutput;// define a o objeto leitura_cmd como nova entrada padro
de cmd
int count = 1;
TimeSpan t2 = TimeSpan.Parse("00:00:0" + iperf_amostra.ToString());// define unidade de
incremento para simular o horrio de cada valor medido a partir de valor de amostragem
recolhido de texBox.
TimeSpan t3;
if (protocol==10)//----------- -------UDP ( bloco executado quando usurio optar pelo
protocolo UDP a partir dos radios buttons
{
iperf_cmd = "iperf\\iperf.exe -s -u -P 0 -i " + iperf_amostra + " -p 5001 -f k";// monta
string que ser passada a linha de comando para parametrizar e executar o iperf
escrita_cmd.WriteLine(iperf_cmd); // passa string a linha de comando via nova entrada
padro. Neste momento o cdigo fica esperando o termino de execuo do Iperf para recolher
os dados que ele enviaria para tela. Isso ir acontecer quando matamos o processo do Iperf
escrita_cmd.Close();// fecha entrada padro escrita_cmd.
string aux = leitura_cmd.ReadToEnd();// recolhe todos os dados enviados a tela
if (aux.IndexOf("port 5001 connected") > 0)// se cliente se conectou com servidor, a
string recolhida da tela conter a sub-string "port 5001 connect"
{
aux = aux.Remove(0, aux.IndexOf("0.0- "+iperf_amostra+".0 sec"));// formata a string
recolhida da tela para que ela possa ser adequadamente enviada ao banco de dados segundo
seus campos
int check = 0;
aux = aux.Replace(" ", " ");// como comentrio anterior
aux = aux.Replace(" ", " ");// como comentrio anterior
aux = aux.Replace(" ", " ");// como comentrio anterior
aux = aux.Replace(" ", " ");// como comentrio anterior
aux = aux.Replace("- ", "-");// como comentrio anterior
aux = aux.Replace("/", "");// como comentrio anterior
75
sqlConnection1.Open();// abre conexo com banco
sqlCommand1.Connection = sqlConnection1;// define sobre qual banco ser aplicado os
comandos subsequentes
sqlCommand1.CommandText = "INSERT INTO Table_iperf
(Transfer,Bandwidth,Jitter,Lost,Total_datagram,Data,Hora,Protocol) VALUES
(@F1,@F2,@F3,@F4,@F5,@F6,@F7,@F8)";// passa ao objeto sqlcommand1 a correlao entre os
campos do banco e as variveis auxiliares @F1,@F2, etc
string[] split = aux.Split(new Char[] { ' ', '\n' });// quebra string em sub-strings
foreach (string s in split)// percorre cada sub-string
{
foreach (char c in s)
{
if (!Char.IsDigit(c) && !(c == '.'))// ativa flag check=1 caso sub-string no seja numrica
check = 1;
}
if (check == 0)
{
sqlCommand1.Parameters.AddWithValue("@F"+count.ToString(),s);// inclui sub-string
numrica no banco de acordo com varivel auxiliar
count++;
}
else
check = 0;// zera flag check para avaliar nova sub-string
if (count == 6)
{
sqlCommand1.Parameters.AddWithValue("@F6", DateTime.Now.Day.ToString() + "/" +
DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString());// inclui data a
cada medio
t3 = t1.Add(t2);// incrementa tempo de amostragem
t1 = t3;
sqlCommand1.Parameters.AddWithValue("@F7",t3.ToString());// inclui hora a cada medio
sqlCommand1.Parameters.AddWithValue("@F8", "UDP");// inclui protocolo escolhido por
usurio
sqlCommand1.ExecuteNonQuery();
sqlCommand1.Parameters.Clear();
count= 1;
}
}
76
MessageBox.Show("Dados enviados para Banco!");// confirma que dados foram enviado com
sucesso
}
Else
MessageBox.Show("Cliente est inativo");// sinaliza que no foi encontrada sub-string
"port 5001 connecte" no foi encontrada, ou seja, no houve conexo entre cliente-servidor
}
else if (protocol==20)//--------------- ------------TCP (os procedimento realizados no
bloco abaixo so idnticos ao bloco UDP)
{
iperf_cmd = "iperf\\iperf.exe -s -P 0 -i " + iperf_amostra + " -p 5001 -f k";
escrita_cmd.WriteLine(iperf_cmd);
escrita_cmd.Close();
string aux = leitura_cmd.ReadToEnd();
if (aux.IndexOf("port 5001 connected") > 0)
{
aux = aux.Remove(0, aux.IndexOf("0.0- "+ iperf_amostra+".0 sec"));
int check = 0;
aux = aux.Replace(" ", " ");
aux = aux.Replace(" ", " ");
aux = aux.Replace(" ", " ");
aux = aux.Replace(" ", " ");
aux = aux.Replace("/", "");
aux = aux.Replace("- ", "-");
sqlConnection1.Open();
sqlCommand1.Connection = sqlConnection1;
sqlCommand1.CommandText = "INSERT INTO Table_iperf
(Transfer,Bandwidth,Jitter,Lost,Total_datagram,Data,Hora,Protocol ) VALUES
(@F1,@F2,@F3,@F4,@F5,@F6,@F7,@F8)";
string[] split = aux.Split(new Char[] { ' ', '\n' });
foreach (string s in split)
{
foreach (char c in s)
{
if (!Char.IsDigit(c) && !(c == '.'))
check = 1;
}
if (check == 0){
77
sqlCommand1.Parameters.AddWithValue("@F" + count.ToString(), s);
count++;
}
Else
check = 0;
if (count == 3)
{
sqlCommand1.Parameters.AddWithValue("@F3", " ");
sqlCommand1.Parameters.AddWithValue("@F4", " ");
sqlCommand1.Parameters.AddWithValue("@F5", " ");
sqlCommand1.Parameters.AddWithValue("@F6", DateTime.Now.Day.ToString() + "/" +
DateTime.Now.Month.ToString() + "/" + DateTime.Now.Year.ToString());
t3 = t1.Add(t2);
t1 = t3;
sqlCommand1.Parameters.AddWithValue("@F7", t3.ToString());
sqlCommand1.Parameters.AddWithValue("@F8", "TCP");
sqlCommand1.ExecuteNonQuery();
sqlCommand1.Parameters.Clear();
count = 1;
}
}
MessageBox.Show("Dados enviados para Banco!");
}
else
MessageBox.Show("Cliente est inativo");
}
sqlConnection1.Close();
leitura_cmd.Close();
}
private void Form1_Load(object sender, EventArgs e){
}
private void button1_Click(object sender, EventArgs e)// ao efetuada quando pressionamos
o boto salvar
{
StreamWriter escrita_cmd;// declara objeto da classe StreamWriter que ser utilizada como
a nova entrada padro
ProcessStartInfo Cmd = new ProcessStartInfo("cmd");// incia em novo processo o programa
"linha de comando windows"
78
Cmd.UseShellExecute = false;
Cmd.RedirectStandardInput = true;// altera dispositivo de entrada padro (teclado)
Cmd.RedirectStandardOutput = true;//altera dispositivo de sada padro (monitor)
Cmd.CreateNoWindow = true;// impede que janela cmd aparea
Process p = new Process();// cria um novo processo
p.StartInfo = Cmd;// atribui recurso de entrada e sada do processo "cmd" ao processo "p"
p.Start();// inicia processo
escrita_cmd = p.StandardInput;// define a o objeto escrita_cmd como nova entrada padro
de cmd
escrita_cmd.AutoFlush = true;// limpa buffer de entrada
escrita_cmd.WriteLine("taskkill /f /im iperf.exe /t");// passa comando a cmd para matar
processo iperf, afim de permitir que aplicao TCC_iperf_v1 siga seu curso
escrita_cmd.Close();// encerra entrada de comandos via objeto escrita_cmd
button2.Enabled = true;// controle de acesso de botes
button1.Enabled = false;// controle de acesso de botes
progressBar1.MarqueeAnimationSpeed = 0;// para barra de progresso
label1.Text = "Server parado!";// muda label
}
private void button2_Click(object sender, EventArgs e)// ao efetuada quando pressionamos
o boto "run"
{
int k=0;
if(textBox1.Text.Length<=0){// impede que programa inicie sem valores de amostragem
MessageBox.Show("Entrada de amostragem incorreta");
k=1;
}
foreach (char c in textBox1.Text)
{
if (!Char.IsDigit(c)) { // impede que programa inicie com valores de amostragem no
numricos
MessageBox.Show("Entrada de amostragem incorreta");
k=1;
}
}
if (k == 0)
{
if (radioButton1.Checked)// passa ao bloco principal do programa ( funo iperf_prog())
a opo de protocolo do usurio a partir dos radio buttons
protocol = 10;
else
{
protocol = 20;
79
}
iperf_amostra = textBox1.Text;// recolhe valor de amostragem do textBox
progressBar1.MarqueeAnimationSpeed = 100;// define velocidade da barra de espera
label1.Text = "Server escutando...";// muda texto do label presente no formulrio
label1.Visible = true;// torna label visvel
button1.Enabled = true;// controla o acesso aos botes do formulrio
button2.Enabled = false;// controla o acesso aos botes do formulrio
t1 = TimeSpan.Parse(DateTime.Now.ToString("HH:mm:ss"));// recolhe hora atual para simular
relgio quando programa for encerrado
Form1 obj = new Form1();
Thread prog = new Thread(new ThreadStart(obj.iperf_prog));// executa funo iperf_prog em
um novo processo
prog.Start();// inicia processo
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)// ao efetuada
quando pressionamos o boto "x"
{
StreamWriter escrita_cmd;// declara objeto da classe StreamWriter que ser utilizada como
a nova entrada padro
ProcessStartInfo Cmd = new ProcessStartInfo("cmd");// inicia em novo processo o programa
"linha de comando windows"
Cmd.UseShellExecute = false;
Cmd.RedirectStandardInput = true;// altera dispositivo de entrada padro (teclado)
Cmd.RedirectStandardOutput = true; //altera dispositivo de sada padro (monitor)
Cmd.CreateNoWindow = true;// impede que janela cmd aparea
Process p = new Process();// cria um novo processo
p.StartInfo = Cmd;// atribui recurso de entrada e sada do processo "cmd" ao processo "p"
p.Start();
escrita_cmd = p.StandardInput; // define a o objeto escrita_cmd como nova entrada padro
de cmd
escrita_cmd.AutoFlush = true;// limpa buffer de entrada
escrita_cmd.WriteLine("taskkill /f /im iperf.exe /t");// passa comando a cmd para matar
processo iperf, afim de permitir que aplicao TCC_iperf_v1 siga seu curso
escrita_cmd.Close();// encerra entrada de comandos via objeto escrita_cmd
}
}
}
80
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ensaio_cs_1
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());// inicia formulrio
}
}
}
81
Apndice C
1. Script Macro Formata_dados
Sub Formata_dados()
Application.ScreenUpdating = False ' criao das abas de dados auxiliares e da aba grficos
Sheets(3).Select
Cells.Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Sheets(4).Select
Sheets(4).Name = "DadosG1"
Range("A1").Select
ActiveSheet.Paste
Sheets.Add After:=ActiveSheet
Sheets(5).Select
Sheets(5).Name = "DadosG2A"
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets.Add After:=ActiveSheet
Sheets(6).Select
Sheets(6).Name = "DadosG2B"
Sheets.Add After:=ActiveSheet
Sheets(7).Select
Sheets(7).Name = "Grficos"
'Dados_iperf*********************Formatao dos dados para gerar grfico com taxas de
dados
82
Sheets(2).Select
num_lin = Application.WorksheetFunction.CountA(Columns(1))
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(num_lin, 8)), ,
xlYes).Name = "Tab_Iperf" ' criando tabela a partir dos dados inseridos
With ActiveSheet.ListObjects("Tab_Iperf").Sort ' organiza valores de hora de forma
crescente
.SortFields.Clear
.SortFields.Add Key:=Range("Tab_Iperf[Time]"), SortOn:=xlSortOnValues,
Order:=xlAscending, DataOption:=xlSortNormal
Apply
End With
'DadosG1*************************Formatao de dados para gera grfico com superposio
de todas amostras espectrais
Sheets(4).Select
num_lin = Application.WorksheetFunction.CountA(Columns(1)) 'calcula nmero de elementos
no nulos da coluna A
For i = 1 To 350 Step 2 'percorre tabela adaptada para grfico
Range(Cells(1, i), Cells(num_lin, i + 174)).Cut Cells(1, i + 1) ' primeira parte da tabela
adaptada para grfico.
' coloca coluna vazia entre colunas da tabela original
Range(Cells(2, i), Cells(num_lin, i)).Value = Cells(1, i + 1).Value ' preenche coluna
vazia com elemento de cabealho de cada coluna contendo valor de frequncia observada
Application.StatusBar = "Processando DadosG1. " & Format(i / 350, "0.0%") & " Concludo"
' insere percentual de processamento realizado na barra de status do Excel
Next i
"Tab_DadosG1" ' criando tabela
'DadosG2A***********************Formatao dos dados de apoio para gerar grfico com
elementos (potncias) com maior frequncia de repetio em cada raia espectral
Sheets(5).Select
83
num_lin = Application.WorksheetFunction.CountA(Columns(1)) 'calcula nmero de elementos
no nulos da coluna A
col_G2B = 1
aux_maior_freq_repet = 0
For i = 1 To 519 Step 3 'percorre tabela adaptada para grfico
Range(Cells(1, i), Cells(num_lin, i + 518)).Cut Cells(1, i + 2) ' primeira parte da tabela
adptada para grfico.
' coloca coluna vazia entre colunas da tabela original
Range(Cells(2, i + 2), Cells(num_lin, i + 2)).Select
Selection.Copy
Cells(2, i).Select
ActiveSheet.Paste ' cola valore espaado de 3 colunas
Range(Cells(2, i), Cells(num_lin, i)).RemoveDuplicates Columns:=1, Header:=xlNo 'remove
valores duplicados nesta coluna, para ser utilizada pela frmula de frequncia de repetio
num_lin_freq_repet = Application.WorksheetFunction.CountA(Columns(i))
If num_lin_freq_repet > aux_maior_freq_repet Then
aux_maior_freq_repet = num_lin_freq_repet ' obtm o raia espectral com maior nmero de
potncia distintas
End If
Dim rng As Range
Set rng = Range(Cells(2, i + 1), Cells(num_lin_freq_repet + 1, i + 1))
rng.Select
Selection.FormulaArray = "=FREQUENCY(RC[1]:R[" & num_lin & "]C[1],RC[-1]:R[" &
num_lin_freq_repet & "]C[-1])"
' Aplica a frmula de frequncia de repetio em cada raia espectral. OBS: esta funo
sempre reserva um linha para elementos com 0 frequncia
'DadosG2B *****************Formatao dos dados que efetivamente vo gerar grfico com
elementos (potncias) com maior frequncia de repetio em cada raia espectral
Worksheets(6).Cells(1, col_G2B).Value = "freq_espec"
Worksheets(6).Cells(1, col_G2B + 1).Value = "Potncia"
84
Worksheets(6).Cells(1, col_G2B + 2).Value = "freq_rept"
For n = 1 To num_lin_freq_repet
Worksheets(6).Cells(n + 1, col_G2B).Value = Cells(1, i + 2).Value ' soma-se 1 a n para
compensar cabealho de colunas
Worksheets(6).Cells(n + 1, col_G2B + 1).Value = Cells(n + 1, i).Value ' como no comentrio
anterior
Worksheets(6).Cells(n + 1, col_G2B + 2).Value = Cells(n + 1, i + 1).Value ' como no
comentrio anterior
Next n
With Worksheets(6).Sort ' organiza valores contendo as frequncias de repetio de forma
decrescente
.SortFields.Clear
.SortFields.AddKey:=Range(Worksheets(6).Cells(2,col_G2B+2),
Worksheets(6).Cells(num_lin_freq_repet + 1, col_G2B + 2)), SortOn:=xlSortOnValues,
Order:=xlDescending, DataOption:=xlSortNormal
.SetRangeRange(Worksheets(6).Cells(1,col_G2B+ 1), Worksheets(6).Cells(num_lin_freq_repet
+ 1, col_G2B + 2))
.Apply
End With
col_G2B = col_G2B + 3
Application.CutCopyMode = False
Application.StatusBar = "Processando DadosG2A e DadosG2b. " & Format(i / 519, "0.0%") &
" Concludo"
Next i
Sheets(6).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(aux_maior_freq_repet +
1, 519)), , xlYes).Name = "Tab_DadosG2B" ' criando tabela a partir dos dados inseridos
Application.StatusBar = "Processamento 100.0% Concludo"
85
Application.ScreenUpdating = True
End Sub
2. Script Macro Grfico1
Sub Grafico1()
Sheets(3).Select
num_lin = Application.WorksheetFunction.CountA(Columns(1)) 'conta o nmero de elementos
no nulos na coluna A
Set myRange = Range(Cells(2, 1), Cells(num_lin, 173)) 'seleciona todos os elementos da
sub-tabela
var_max = Application.WorksheetFunction.Max(myRange) ' chama a funo mximo e encontra
maior elemento da sub-tabela
var_min = Application.WorksheetFunction.Min(myRange) 'anlogo a funo anterior
Sheets(7).Select ' seleciono pasta de trabalho vazia, para no estourar o limite de series
(colunas) suportadas pelo grfico
ActiveSheet.Shapes.AddChart(, Range("B4").Left, Range("B4").Top, 1300, 500).Select 'cria,
define posio (relativa a B4) e tamanho (pontos) ativa chart criado para receber os
dados
With ActiveChart ' aes sobre o chart ativo
.ChartType = xlXYScatter ' seleciona o tipo de grfico (dispersivo)
86
k = 1 ' varivel auxiliar para percorrer as sries do grfico
For i = 1 To 350 Step 2 ' loop que percorrer a tabela formatada para se adequar ao grfico
.SeriesCollection.NewSeries.Name = "=""DEP""" ' nome das sries
.SeriesCollection(k).XValues = "=DadosG1!" & Worksheets(4).Cells(2, i).Address(True,
True) & ":" & Worksheets(4).Cells(num_lin, i).Address(True, True)
'constri a string para incluir dados no chart. As clulas possuem um prefixo
'Workshets(Plan1), pois os dados esto na pasta plan1, e o plano ativo o plan3
'por conta da diretiva Sheets("Plan3").Select. Esta linha preenche o eixo-y
.SeriesCollection(k).Values = "=DadosG1!" & Worksheets(4).Cells(2, i + 1).Address(True,
True) & ":" & Worksheets(4).Cells(num_lin, i + 1).Address(True, True) ' de forma anloga
preenche o eixo x
k = k + 1
Next i
With .Axes(xlValue) ' formata o max e min do eixo y
.MaximumScale = var_max
.MinimumScale = var_min
End With
.Axes(xlCategory).MinimumScale = 2399 ' formata o max do eixo x
.Axes(xlCategory).MaximumScale = 2485 ' formata o min do eixo x
.Axes(xlCategory).TickLabelPosition = xlLow ' coloca o eixo x na base do grfico
.Axes(xlCategory).HasMinorGridlines = False ' desativa a grade densa do eixo x
.Axes(xlValue).HasMajorGridlines = True ' ativa a grade expea do eixo y
.Axes(xlValue).HasMinorGridlines = False ' desativa a grade densa do eixo y
.HasLegend = False ' desativa legenda
.ChartArea.Select
.ClearToMatchStyle
.ChartStyle = 245
.ChartColor = 14
87
.Axes(xlCategory).MajorUnit = 2 ' define mtrica de espaamento no eixo x
.Axes(xlValue).MajorUnit = 2 ' define mtrica de espaamento no eixo y
.Axes(xlCategory, xlPrimary).HasTitle = True ' cria ttulo para eixo x
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Frequncia [KHz]"
.Axes(xlValue, xlPrimary).HasTitle = True ' cria ttulo para eixo y
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlValue, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Potncia [dBm]"
End With
End Sub
3. Script Macro Grfico2
Sub Grafico2()
Sheets(3).Select 'seleciona a pasta de trabalho 2 para realizar os procedimento abaixo
soble os elementos desta pasta
num_lin = Application.WorksheetFunction.CountA(Columns(1)) 'conta o nmero de elementos
no nulos na coluna A
Set myRange = Range(Cells(2, 1), Cells(num_lin, 173)) 'seleciona todos os elementos da
sub-tabela
var_min = Application.WorksheetFunction.Min(myRange) 'anlogo a funo anterior
aux_var_max = -200 ' -200 um valor bem menor que escala de sensibilidade do equipameto,
escolhemos este valor para que ele seja o valor de inicializao da varivel que entrar
na condicional que procura o melhor valor de mximo para escala do grfico
Sheets(7).Select ' seleciono pasta de trabalho vazia, para no estourar o limite de sries
(colunas) suportadas pelo o grfico
88
ActiveSheet.Shapes.AddChart(, Range("B39").Left, Range("B39").Top, 1300, 500).Select
'cria ativa chart que receber os dados
With ActiveChart ' aes sobre o chart ativo
.ChartType = xlXYScatter ' seleciona o tipo de grfico (dispersivo)
k = 1 ' varivel auxiliar para percorrer as series do grfico
For i = 1 To 519 Step 3
num_lin_freq_rep = 5 ' se queremos as (n+1) maiores frequncias de repetio nos elementos
de cada raia espectral
'num_lin_freq_rep = WorksheetFunction.CountA(Worksheets(6).Columns(i)) ' se queremos
todas as frequncias de repetio
.SeriesCollection.NewSeries.Name = "=""DEP2""" ' nome das sries
.SeriesCollection(k).XValues = "=DadosG2B!" & Worksheets(6).Cells(2, i).Address & ":" &
Worksheets(6).Cells(num_lin_freq_rep, i).Address 'atribui a string com endereo das
clulas que possuem os dados que representaro a coordenada x dos pontos do grfico.
.SeriesCollection(k).Values = "=DadosG2B!" & Worksheets(6).Cells(2, i + 1).Address & ":"
& Worksheets(6).Cells(num_lin_freq_rep, i + 1).Address 'atribui a string com endereo das
clulas que possuem os dados que representaro a coordenada y dos pontos do grfico.
For m = 1 To num_lin_freq_rep - 1
If Worksheets(6).Cells(m + 1, i + 1).Value > aux_var_max Then ' encontra melhor valor max
para eixo y baseado no maior valor de potncia encontrado em todas as frequncias
espectrais
var_max = aux_var_max
aux_var_max = Worksheets(6).Cells(m + 1, i + 1).Value
End If
Next m
k = k + 1
89
Next i
With .Axes(xlValue) ' formata o max e min do eixo y
.MaximumScale = var_max + 20 ' soma-se um valor para expandir o valor da escala no eixo
y, afim de proporcionar uma melhor visualizao
'.MinimumScale = var_min ' menor valor absoluto
.MinimumScale = -95 ' fora o grfico no exibir valores abaixo de -95dBm (valores
irrelevantes)
End With
.Axes(xlCategory).MinimumScale = 2399 ' formata o max do eixo x
.Axes(xlCategory).MaximumScale = 2485 ' formata o min do eixo x
.Axes(xlCategory).TickLabelPosition = xlLow ' coloca o eixo x na base do grfico
.Axes(xlCategory).HasMinorGridlines = False ' desativa a grade densa do eixo x
.Axes(xlValue).HasMajorGridlines = True ' ativa a grade expea do eixo y
.Axes(xlValue).HasMinorGridlines = False ' desativa a grade densa do eixo y
.HasLegend = False ' desativa legenda
.ChartArea.Select
.ClearToMatchStyle
.ChartStyle = 245 ' muda estilo do grfico
.ChartColor = 14
.Axes(xlCategory).MajorUnit = 2
.Axes(xlValue).MajorUnit = 2
.Axes(xlCategory, xlPrimary).HasTitle = True ' insere e formata ttulo no eixo x
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Frequncia [KHz]"
.Axes(xlValue, xlPrimary).HasTitle = True ' insere e formata ttulo no eixo y
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlValue, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Potncia [dBm]"
90
End With
End Sub
4. Script Macro Grfico3
Sub Grafico3()
Sheets(2).Select
num_lin = Application.WorksheetFunction.CountA(Columns(2))
Sheets(7).Select
ActiveSheet.Shapes.AddChart(, Range("B75").Left, Range("B75").Top, 1300, 500).Select
With ActiveChart
.ChartType = xlXYScatter
.SeriesCollection.NewSeries.Name = "=""Iperf""" ' nome da srie
.SeriesCollection(1).XValues = "=Dados_Iperf!" & Worksheets(2).Cells(2, 7).Address & ":"
& Worksheets(2).Cells(num_lin, 7).Address ' adiciona horrios ao eixo x
.SeriesCollection(1).Values = "=Dados_Iperf!" & Worksheets(2).Cells(2, 2).Address & ":"
& Worksheets(2).Cells(num_lin, 2).Address 'adiciona taxas de dados ao eixo y
.Axes(xlCategory).TickLabelPosition = xlLow ' coloca o eixo x na base do grfico
.FullSeriesCollection(1).Trendlines.Add
.FullSeriesCollection(1).Trendlines(1).Select
91
With Selection
.Type = xlMovingAvg 'adiciona mdia varivel aos pontos do grfico
.Period = 10 ' define mdia varivel para os ltimos 10 pontos
End With
.Axes(xlCategory).HasMinorGridlines = True ' desativa a grade densa do eixo x
.Axes(xlValue).HasMajorGridlines = True ' ativa a grade expea do eixo y
.Axes(xlValue).HasMinorGridlines = True ' desativa a grade densa do eixo y
.HasLegend = False ' desativa legenda
.ChartArea.Select
.ClearToMatchStyle
.ChartStyle = 245 ' muda estilo do grfico
.ChartColor = 14
.Axes(xlCategory, xlPrimary).HasTitle = True ' insere e formata ttulo no eixo x
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Bandwith [Kbps]"
.Axes(xlValue, xlPrimary).HasTitle = True ' insere e formata ttulo no eixo y
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlValue, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Horrio"
End With
End Sub
92
Apndice D
1. Medies Realizadas na rea Externa da Biblioteca de
engenharia
Figura D1: Grfico com variao das taxas de dados obtidas pela aplicao Iperf server contendo as taxas de dados
praticada entre o Cliente-Servidor Iperf no canal do AP na rea externa da biblioteca de Engenharia do Campus Praia
Vermelha-UFF
Figura D2: Grfico com atividade espectral na regio atendida pelo AP na rea externa da biblioteca de Engenharia
biblioteca de Engenharia do Campus Praia Vermelha-UFF
93
Figura D3: Grfico com raiais espectrais com maior frequncia de repetio na regio atendida pelo AP da rea externa da
biblioteca de engenharia
94
Referncias Bibliogrficas
Agilent, T. (2007). RF Testing of WLAN Products. Fonte:
http://cp.literature.agilent.com/litweb/pdf/5988-3762EN.pdf
Aerohive, N. (2012). High-Density Wi-Fi Design Principles. Fonte:
http://www.aerohive.com/pdfs/Aerohive-Whitepaper-Hi-Density%20Principles.pdf
Alliance, W. ((2013)). Organization. Acesso em 13 de 01 de 2014, disponvel em http://www.wi-
fi.org/about/organization
Balbi, H., Souza, F., Carrano, R., Schara , L., Albuquerque, C., Saade, D., & Nascimento, L.
(2012). SciFi Sistema de Controle Inteligente para Redes sem Fio . Niteri. Fonte:
http://www.midiacom.uff.br/~helgadb/ManualDoControlador.pdf
Broadcom , C. (2003). IEEE 802.11g - The New Mainstream Wireless LAN Standard. Fonte:
http://www.dell.com/downloads/global/shared/broadcom_802_11_g.pdf
CGI.br. (2012). TIC DOMICLIOS e USURIOS 2011. Acesso em 2 de 2014, disponvel em
http://cetic.br/usuarios/tic/2011-total-brasil/index.htm
Cisco. (2013). visual-networking-index-vni. Fonte: VNI:
http://www.cisco.com/c/en/us/solutions/service-provider/visual-networking-index-
vni/index.html
Coimbra, E. T., & Maria Lopes Passeri de Almeida, L. (1991). Curso Bsico de Rdio Digital.
Fernandes, I. (2006). Wi-Fi-Arquitetura. Acesso em 1 de 2014, disponvel em
http://paginas.fe.up.pt/~ee99207/Tecnologias/WLAN/wi-fig.html
Gates, M., Tirumala, A., Dugan, J., & Gibbs, K. (2003). Iperf User Docs.
Guimares, D. (2009). Digital Transmission. Verlag: Springer Verlag.
Guimares, D. A., & Souza, R. A. (2012). Transmisso Digital - Princpios e Aplicao. So
Paulo: rica.
Hargreaves, E. (2003). O protocolo CSMA-CA e o padro IEEE 802.11. Rio de Janeiro. Fonte:
http://www.garf.coppe.ufrj.br/PDFs/csma_ca_eduardo.pdf
95
Henty, B. E. (2001). A Brief Tutorial on the PHY and MAC layers of the IEEE 802.11b Standard.
Fonte: http://www.eirp.org/~henty/webtut.pdf
IEEE , C. (2012). Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY)
Specifications. New York. Fonte: file:///C:/Users/ALAN/Downloads/802.11-2012.pdf
Jelen, B., & Syrstad, T. (2012). VBA e Macros: Microsoft Excel 2010. Rio de Janeiro: Alta Books.
Jr., P. R. (2003). Wireless OFDM Systems Wireless OFDM Systems. Oklahoma. Fonte:
http://signal.ece.utexas.edu/~arslan/courses/realtime/lectures/20_OFDM/lecture20.pdf
Ke-LinDuandM.N.S.Swamy. (2010). Wireless Communication Systems. NewYork,: Cambridge
University Press. Fonte:
http://my.safaribooksonline.com/book/networking/wireless/9780511717741/8dot8-
frequency-hopping-spread-
spectrum/882_fhss_versus_dsss#X2ludGVybmFsX0J2ZGVwRmxhc2hSZWFkZXI/eG
1saWQ9OTc4MDUxMTcxNzc0MS9paWk=
Lathi, B. P. (2007). Sinais e Sistemas Lineares (Segunda ed.). New York: ARTMED -
BOOKMAN.
Leon-Garcia, A. (2008). Probability, Statistics, and Random Processes for Electrical
Engineering (Third ed.). Toronto: Pearson. Fonte:
http://www.ebah.com.br/content/ABAAAfIX8AJ/leon-garcia
Lima, L. (2013). Ser o fim do congestionamento dos celulares? Abranet, 16-17.
Mathieu Lacage, M. H., & urletti, T. T. (2004). IEEE 802.11 Rate Adaptation: A Practical
Approach. Sophia Antipolis. Fonte: http://cutebugs.net/files/mswim04.pdf
MetaGeek. (2013). Interference Identification Guide. Fonte: http://www.valadis.nl/blog/wp-
content/uploads/2013/03/Interference-Identification-Guide.pdf
Pearson, B. (2000). Complementary Code Keying Made Simple. Fonte:
http://www.eetasia.com/ARTICLES/2001MAY/2001MAY25_NTEK_DSP_AN.PDF
Portes de Albuquerque, M., & Albuquerque, M. P. (2004). Anlise de Imagens e Viso
Computacional. Fonte:
http://www.cbpf.br/cat/pdsi/aulas_html/V%20Escola%20CBPF%20Aula01%20vFinal4
_arquivos/frame.htm
96
Reginaldo Ferreira, A. C. (2010). REDES DE COMPUTADORES -Redes Wireless . Fonte:
http://www.topgyn.com.br/estudenet/albums/escola/aprendizado/Saiba-tudo-sobre-
redes-wireless
RODRIGUES. (2006). WIFI & SCURIT. Acesso em 01 de 2014, disponvel em http://reseau-
wifi.blogspot.com.br/
Strang, G. (2009). Introduction to Linear Agebra. New York: Cambridge Press.
Wang, N. (2013). Ser o fim do congestionamento dos celulares? Abranet, 16-17.