• Nenhum resultado encontrado

Estudo e construção de seção de processamento para sinais recebidos de um tag RFID chipless

N/A
N/A
Protected

Academic year: 2021

Share "Estudo e construção de seção de processamento para sinais recebidos de um tag RFID chipless"

Copied!
66
0
0

Texto

(1)

Escola de Engenharia

Curso de Gradua¸

ao em Engenharia de

Telecomunica¸

oes

Nicollas Rodrigues de Oliveira

Estudo e constru¸c˜

ao de se¸c˜

ao de processamento para

sinais recebidos de um tag RFID chipless

Niter´

oi – RJ

2018

(2)

i Nicollas Rodrigues de Oliveira

Estudo e constru¸c˜ao de se¸c˜ao de processamento para sinais recebidos de um tag RFID chipless.

Trabalho de Conclus˜ao de Curso apresentado ao Curso de Gradua¸c˜ao em Engenharia de Teleco-munica¸c˜oes da Universidade Federal Fluminense, como requisito parcial para obten¸c˜ao do Grau de Engenheiro de Telecomunica¸c˜oes.

Orientadora: Profa. Dra. Jacqueline Silva Pereira

Niter´oi – RJ 2018

(3)
(4)

iii Nicollas Rodrigues de Oliveira

Estudo e constru¸c˜ao de se¸c˜ao de processamento para sinais recebidos de um tag RFID chipless

Trabalho de Conclus˜ao de Curso apresentado ao Curso de Gradua¸c˜ao em Engenharia de Teleco-munica¸c˜oes da Universidade Federal Fluminense, como requisito parcial para obten¸c˜ao do Grau de Engenheiro de Telecomunica¸c˜oes.

Aprovada em 12 de Dezembro de 2018.

BANCA EXAMINADORA

Profa. Dra. Jacqueline Silva Pereira - Orientadora

Universidade Federal Fluminense - UFF

Prof. Dr. Murilo Bresciani de Carvalho Universidade Federal Fluminense - UFF

Prof. Dr. Tadeu Nagashima Ferreira Universidade Federal Fluminense - UFF

Profa. Dra. Vanessa Przybylski Ribeiro Magri Souza

Universidade Federal Fluminense - UFF Niter´oi – RJ

(5)

Resumo

O presente trabalho refere-se ao desenvolvimento das etapas de recep¸c˜ao e proces-samento digital em um leitor RFID, para sinais oriundos de um tag chipless. Atualmente na Universidade Federal Fluminense, uma nova t´ecnica de fabrica¸c˜ao de tag est´a sendo testada, por´em n˜ao h´a leitores comerciais capacidados para identific´a-la. Visando suprir essa necessidade, foi desenvolvido no Raspberry Pi, um script na linguagem Python per-mitindo que o microprocessador implemente um banco de filtros digitais com o prop´osito de separar o sinal recebido em sub-bandas. Diante dessa separa¸c˜ao, torna-se poss´ıvel detectar e codificar em bits a presen¸ca, ou ausˆencia, de portadoras de RF em cada sub-banda. ´E esperado que tal trabalho desperte novas solu¸c˜oes que conduzam para a redu¸c˜ao dos custos de projetos relacionados a RFID.

(6)

v

Abstract

The present work refers to the development of digital reception and processing stages in an RFID reader for signals from a chipless tag. Currently at the Fluminense Federal University, a new tag fabrication technique is being tested, however there are no commercial readers capable of identifying it. In order to meet this need, a Python script was developed in Raspberry Pi, allowing the microprocessor to implement a digital filters bank for the purpose of separating the received signal into subbands. In view of this separation, it becomes possible to detect and encode in bits the presence or absence of RF carriers in each subband. It is expected that such work will awaken new solutions that lead to the reduction of the costs of projects related to RFID.

(7)

Agradecimentos

Gostaria de agradecer primeiramente a mim mesmo por ter me acompanhado du-rante toda minha trajet´oria na universidade e acredito que na vida tamb´em. Sem vocˆe, Nicollas este trabalho n˜ao seria conclu´ıdo.

Em segundo lugar, gostaria de agradecer a parte mais topster da minha fam´ılia – mam˜ae, vov´o, padrasto e irm˜aozinho – que, acredito eu, sabem que eu n˜ao me formei em telemarketing.

Gostaria de agradecer ao meu companheiro, namorado e monge, Eric, pelos in´ ume-ros ”Calma po***!” que me motivaram nos momentos de crise existencial pr´e-deadlines.

Agrade¸co imensamente a minha orientadora, Jacque, pelo suporte te´orico, emoci-onal e financeiro para completar essa jornada.

Quero agradecer a todos os meus pets (Jolie, Van Damme, Yuki e Windsor) pelas solicita¸c˜oes de carinho nas horas mais inoportunas.

Agrade¸co a todos os meus amigos que, por vezes, me distra´ıram nos momentos que precisava relaxar, e por mais vezes me distrairam nos momentos que precisava concentrar. Agrade¸co a maioria dos professores do departamento, principalmente aqueles que realmente est˜ao dispostos a ensinar.

Agrade¸co tamb´em a Judith, sua (complete a frase), sempre me auxiliando nos momentos de irrita¸c˜ao.

Gostaria de agradecer a vocˆe leitor querido, querida, por ter despendido seu tempo para ler este presente trabalho escrito `as custas de uma gastrite dizendo (”Oi sumido?”)

Gostaria de n˜ao agradecer a Raiane e a Karoliny.

(8)

Lista de Figuras

2.1 Placa de um Arduino UNO. . . 7

2.2 IDE do Arduino . . . 7

2.3 Placa do Raspberry Pi 3 B+, um das vers˜oes do Raspberry Pi . . . 8

3.1 Esquema geral do projeto . . . 10

3.2 Fluxograma das etapas no MATLAB . . . 11

3.3 Sinal de Entrada no Dom´ınio do Tempo . . . 12

3.4 Sinal de Entrada no Dom´ınio da Frequˆencia. . . 12

3.5 Sinal de Entrada e Filtro FIR no Dom´ınio da Frequˆencia. . . 13

3.6 Sinal Filtrado no Dom´ınio da Frequˆencia . . . 14

3.7 Print da linha de comando do MATLAB . . . 14

3.8 Esquema do Banco de Filtros em 2 N´ıveis . . . 15

3.9 Fluxograma da etapas no Arduino . . . 16

3.10 Forma de onda detectada . . . 17

3.11 Alerta dado na compila¸c˜ao . . . 18

3.12 Representa¸c˜ao linear da atenua¸c˜ao no Dom´ınio da Frequˆencia . . . 19

3.13 Atenua¸c˜ao em dB ao longo do espectro . . . 19

3.14 Recebimento incorreto de dados no MATLAB . . . 20

3.15 Fluxograma das etapas realizadas no Raspberry Pi . . . 22

3.16 Adapta¸c˜ao . . . 23

3.17 Sinal de entrada recebido . . . 24

3.18 Filtros gerados pelas fun¸c˜oes fir1() e firwin(). . . 25

3.19 Filtros passa-baixa e passa-alta e o sinal no Dom´ınio Espectral . . . 26

3.20 Sinal original filtrado pelo filtro passa-baixa. . . 26

3.21 Sinal original filtrado pelo filtro passa-alta . . . 27

(9)

4.1 Representa¸c˜ao temporal do sinal original adicionado ao ru´ıdo aleat´orio. . . 29 4.2 Representa¸c˜ao espectral do sinal original adicionado ao ru´ıdo aleat´orio. . . 30 4.3 Representa¸c˜ao espectral dos sinais de sa´ıda ap´os banco de filtros . . . 30 4.4 Print da linha de comando do Python . . . 31 4.5 Estat´ısticas de erros e acertos do decisor . . . 32

(10)

Sum´

ario

Resumo iv

Abstract v

Agradecimentos vi

Lista de Figuras viii

1 Introdu¸c˜ao 1

1.1 Motiva¸c˜ao . . . 2

1.2 Objetivos . . . 2

1.3 Roteiro dos Pr´oximos Cap´ıtulos . . . 2

2 Revis˜ao Bibliogr´afica 4 2.1 MATLAB . . . 4

2.2 Transformada de Fourier . . . 4

2.2.1 Algoritmos de Transformada R´apida de Fourier . . . 5

2.3 Processamento Digital de Sinais . . . 5

2.3.1 Filtros Digitais . . . 5 2.3.2 Banco de Filtros . . . 5 2.3.3 Identidade Nobre . . . 6 2.4 Microcontroladores . . . 6 2.4.1 Arduino . . . 6 2.5 Microprocessador . . . 8 2.5.1 Raspberry Pi . . . 8 2.6 Socket . . . 9 2.7 RFID . . . 9 ix

(11)

3 Desenvolvimento 10

3.1 MATLAB - Cria¸c˜ao do C´odigo Piloto . . . 11

3.1.1 Constru¸c˜ao do sinal de entrada . . . 11

3.1.2 Projeto do filtro . . . 13

3.1.3 Filtragem . . . 14

3.1.4 Busca e Reporte de Componentes . . . 14

3.1.5 Projeto do Banco de Filtros . . . 15

3.2 Arduino - C´odigo piloto em hardware . . . 16

3.2.1 Amostragem de um Sinal Externo . . . 17

3.2.2 Otimiza¸c˜ao da Capacidade de Armazenamento . . . 18

3.2.3 Importa¸c˜ao dos Coeficientes . . . 20

3.2.4 Filtragem . . . 21

3.3 Raspberry Pi . . . 21

3.3.1 Cria¸c˜ao e Estabelecimento da Conex˜ao . . . 23

3.3.2 Produ¸c˜ao e Envio do Sinal de Entrada . . . 23

3.3.3 Recebimento e Decodifica¸c˜ao do Sinal de Entrada . . . 24

3.3.4 Cria¸c˜ao dos Filtros . . . 25

3.3.5 Aplica¸c˜ao do Banco de Filtros . . . 26

4 Resultados 28 4.1 Adi¸c˜ao de um Ru´ıdo Aleat´orio . . . 28

4.2 Elabora¸c˜ao de um Decisor . . . 29

4.2.1 Produ¸c˜ao do C´odigo Bin´ario . . . 30

4.3 An´alise do SNR M´ınimo . . . 31

5 Conclus˜ao e Trabalhos Futuros 33 5.1 Conclus˜ao . . . 33

5.2 Sugest˜oes para Trabalhos Futuros . . . 34

A C´odigos 35 A.0.1 Script no MATLAB . . . 35

A.0.2 Script em Python implementado no Computador . . . 37

(12)

xi

B Tabelas 47

(13)

Cap´ıtulo 1

Introdu¸

ao

A identifica¸c˜ao f´ısica de um objeto ´e um ato t˜ao elementar para indiv´ıduos que os mesmos nem pensam em antes fazˆe-lo, muito menos executam um procedimento sis-tem´atico alternando entre a vis˜ao, audi¸c˜ao, olfato, paladar e o tato obrigatoriamente. Basicamente, os detalhes desse procedimento pessoal de reconhecimento dos objetos fi-cam a cargo de cada c´erebro, sendo imposs´ıvel assim ter sua l´ogica mapeada.

Todavia, contrariando as limita¸c˜oes humanas, como se poderia identificar a exis-tˆencia de um produto no interior de uma mala, sem utilizar nenhum desses cinco sentidos, estando a 10 metros da mala, em uma cˆomodo escuro, por exemplo. Uma das sa´ıdas para essa quest˜ao foi idealizada na Segunda Guerra Mundial, o sistema RFID – radio frequency identification [8].

Tal sistema funciona a partir da intera¸c˜ao por ondas eletromagn´eticas1 entre um

tag (etiqueta) – dispositivo identificador do objeto no qual foi implementado – e um leitor – respons´avel pelo interfaceamento com sistemas externos de processamento de dados [6] [19].

Com a populariza¸c˜ao dessa tecnologia, os sistemas RFID migraram de um campo exclusivamente militar e come¸caram a ser amplamente aproveitados em eventos despor-tivos, bibliotecas, ˆonibus e at´e na idenfica¸c˜ao animal. O aumento da produtividade e conveniˆencia associadas `a sua utiliza¸c˜ao nas atividades em geral, justifica o fato de ser uma das ´areas de pesquisa mais emergentes no ramo da telecomunica¸c˜oes [8].

(14)

2

1.1

Motiva¸

ao

O presente projeto nasceu do intento, cada vez mais frequente nesta gera¸c˜ao au-tomatizada, de se identificar pessoas, produtos e ve´ıculos, por´em de uma maneira r´apida e inovadora. A j´a consolidada tecnologia de c´odigo de barras, embora extremamente ba-rata, esbarra em algumas desvantagens como a baixa capacidade de armazenamento, n˜ao program´avel e a necessidade de contato. Assim, o diferencial da solu¸c˜ao proposta aqui concentra-se no fato de implementar uma identifica¸c˜ao autom´atica para tags sem chip compostos por uma antena de microfibra [4].

1.2

Objetivos

Este trabalho de conclus˜ao de curso tem como objetivo o desenvolvimento de uma se¸c˜ao de recep¸c˜ao e processamento de sinais refletidos por um tag, propiciando a extra¸c˜ao de um c´odigo contendo informa¸c˜oes sobre os sinais. Tal c´odigo deve ser essencialmente bin´ario e precisa expressar corretamente a existˆencia, ou n˜ao, de portadoras no sinal. Com a finalidade de alcan¸car o objetivo geral citado, ´e importante tra¸car os objetivos espec´ıficos sendo eles:

• Discernir qual equipamento ser´a respons´avel pelo processamento (Arduino, Rasp-berry Pi, DSP);

• Projetar uma estrutura capaz de identificar os sinais recebidos;

• Criar um script, embarcado no equipamento de processamento escolhido, que per-mita decidir se h´a ou n˜ao informa¸c˜ao relevante no sinal recebido.

1.3

Roteiro dos Pr´

oximos Cap´ıtulos

No cap´ıtulo 2, tem-se uma breve revis˜ao bibliogr´afica onde ser˜ao descritas as ferra-mentas te´oricas atrav´es dos conhecimentos registrados na literatura abordada e pesquisada sobre o assunto. Desta forma, espera-se que essas referˆencias de estudos possam apresen-tar o embasamento necess´ario, de forma sucinta, para a realiza¸c˜ao e entendimento do que ser´a apresentado nos cap´ıtulos seguintes deste trabalho.

(15)

O cap´ıtulo 3 permeia as trˆes plataformas de desenvolvimento do projeto (MATLAB, Arduino, Raspberry Pi), descrevendo suas etapas caracter´ısticas com o aux´ılio de gr´aficos e fluxogramas.

J´a no cap´ıtulo 4 s˜ao relatadas tarefas adicionais realizadas ap´os a pr´e-conclus˜ao do projeto, buscando dessa maneira aumentar a complexidade computacional do mesmo.

Por fim, no cap´ıtulo 5, apresentamos as conclus˜oes a respeito do que foi desen-volvido, assim como algumas sugest˜oes de otimiza¸c˜ao que podem ser realizadas de forma cont´ınua ao que est´a sendo apresentado.

(16)

Cap´ıtulo 2

Revis˜

ao Bibliogr´

afica

Neste cap´ıtulo, ser´a efetuada uma revis˜ao bibliogr´afica dos conceitos te´oricos fun-damentais para o completo entendimento do trabalho desenvolvido.

2.1

MATLAB

Embora concebido na d´ecada de 1970 como uma simples calculadora interativa de matrizes, atualmente o MATLAB R ´e um ambiente de computa¸c˜ao t´ecnico completo,

repleto de recursos matem´aticos e visuais distribu´ıdos nas suas 63 toolboxes. Aliado a uma pr´opria linguagem de programa¸c˜ao, acess´ıvel e de mesmo nome, tal software ´e capaz de executar desde an´alise num´erica convencional, processamento de sinais e plotagem de gr´aficos at´e a convers˜ao do algoritmo para outras linguagens (e.g. C/C++, HDL) [2] [3].

2.2

Transformada de Fourier

A transformada de Fourier em tempo discreto (DTFT), ou simplesmente, a trans-formada de Fourier de uma sequˆencia discreta no dom´ınio do tempo x[n] ´e compreendida como a representa¸c˜ao da dita sequˆencia em termos da sequˆencia exponencial complexa {e−jωn} onde ω ´e uma vari´avel de frequˆencia real. A representa¸c˜ao da DTFT de uma

sequˆencia, se existir, ´e ´unica e a sequˆencia original pode ser calculada a partir da sua DTFT atrav´es da opera¸c˜ao de transformada inversa (IDFT) [7].

(17)

2.2.1

Algoritmos de Transformada R´

apida de Fourier

O objetivo almejado por todos os algoritmos de Transformada R´apida de Fourier (FFT), ´e a redu¸c˜ao da esfor¸co computacional exigido para calcular a transformada de fourier direta e inversa. Estes algoritmos s˜ao capazes de decompor sucessivamente a computa¸c˜ao de N -pontos em computa¸c˜oes DFT de menores tamanhos e aproveitando-se da periodicidade e simetria dos n´umeros complexos. Tais decomposi¸c˜oes, se corretamente realizadas, podem promover a diminui¸c˜ao da quantidade de opera¸c˜oes para N log2N [7].

2.3

Processamento Digital de Sinais

Processamento Digital de Sinais (DSP) ´e um campo da ciˆencia inerente a manipu-la¸c˜ao de sinais provenientes do mundo real, anal´ogico, – vibra¸c˜oes s´ısmicas, ondas de som, imagens visuais – depois dos mesmos serem convertidos para a forma digital. Atrav´es de algoritmos, aplica¸coes matem´aticas e modelos especializados, DSP tornou poss´ıvel o desenvolvimento de diversas t´ecnicas, desde a filtragem de sinais, reconhecimento de fala, aprimoramento de imagem, compacta¸c˜ao de dados, at´e cria¸c˜ao de redes neurais [9].

2.3.1

Filtros Digitais

Apesar de tamb´em serem empregados na separa¸c˜ao e a restaura¸c˜ao de sinais assim como seu par anal´ogico, os filtros digitais podem deter um desempenho muito superior de-pendendo da situa¸c˜ao. Ao contr´ario de valores cont´ınuos, estes filtros capturam sequˆencia de n´umeros, como sinal de entrada, e produzem uma nova sequˆencia de n´umeros (o sinal de sa´ıda filtrado). Filtros digitais podem ser divididos em dois grandes grupos: os filtros de resposta ao impulso infinita (IIR) e os filtros de resposta ao impulso finita (FIR) [10] [9].

2.3.2

Banco de Filtros

Um banco de filtros consiste numa disposi¸c˜ao de filtros (IIR ou FIR) destinado a dividir o sinal original em canais (subbandas) adjacentes podendo ser, ou n˜ao, reconstru´ıdo ap´os os respectivos processamentos inviduais em cada subbanda. O n´umero de n´ıveis de um banco de filtros reflete na quantidade de canais do mesmo. Um banco de filtros de

(18)

6 dois canais, por exemplo, ´e geramente composto por um par de filtros complementares, sendo um passa-baixa e outro passa-alta [12].

2.3.3

Identidade Nobre

A identidade nobre baseia-se em um conjunto de seis identidades tipicamente usa-das para melhorar potencialmente a eficiˆencia de sistemas contendo filtros digitais e mu-dan¸cas na taxa de amostragem em cascata. Tais melhorias s˜ao alcan¸cadas por meio do deslocamento de upsamplers e downsamplers para posi¸c˜oes mais desej´aveis no sistema [12].

2.4

Microcontroladores

Chamados de system-on-a-chip (sistema-em-um-chip, em portuguˆes), os microcon-troladores n˜ao apenas desempenham tarefas espec´ıficas, mas tamb´em contˆem componentes integrados – mem´oria, temporizadores, pinos de entrada e sa´ıda (I/O). Suas vantagens es-t˜ao no baixo custo e consumo de energia, al´em da alta confiabilidade, ideais para sistemas embarcados que realizem fun¸c˜oes de monitoramento e controle [13].

2.4.1

Arduino

O Arduino ´e uma plataforma eletrˆonica open-source baseada no conceito de hard-ware e softhard-ware de f´acil utiliza¸c˜ao. Presente em diversos modelos, com diferentes tama-nhos, capacidades de armazenamento, velocidades de clock e n´umero de portas perif´ericas, o Arduino auxilia desde projetos simples at´e projetos cient´ıficos [15].

Em particular, o Arduino UNO ´e voltado para usu´arios iniciantes em eletrˆonica e pro-grama¸c˜ao. Como ilustrado na Figura 2.1, em sua placa est˜ao embutidos um chip AT-mega328P, conector USB, oscilador a cristal, conectores de alimenta¸c˜ao, pinos digitais de entrada/sa´ıda, entradas anal´ogicas [15].

(19)

Figura 2.1: Placa de um Arduino UNO.

Apesar de microcontroladores em geral compreenderem c´odigos de m´aquina (baixo n´ıvel), ´e poss´ıvel programar um kit Arduino a partir de uma linguagem de alto n´ıvel, semelhante `as linguagens de programac˜ao C e C++. Disponibilizado gratuitamente, um ambiente de desenvolvimento integrado (IDE), visto na Figura 2.2, possibilita a edi¸c˜ao do c´odigo, a sua compilac˜ao e armazenamento do c´odigo compilado na mem´oria SRAM (Static Random Access Memory) do microcontrolador. Um vez instalado, o c´odigo pode ent˜ao ser executado de forma independente [16].

(20)

8

2.5

Microprocessador

Tecnicamente, um microprocessador ´e compreendido como uma unidade central de processamento (CPU) miniaturizada de um computador, podendo assim ser programado e reprogramado para desempenhar m´ultiplas tarefas complexas simultaneamente. Dife-rentemente dos microcontroladores, os microprocessadores n˜ao s˜ao stand-alone, ou seja, necessitam de suporte de componentes externos para seu completo funcionamento, como mem´oria e dispositivos de entrada/sa´ıda [13].

2.5.1

Raspberry Pi

O Raspberry Pi, mostrado na Figura 2.3, ´e literalmente um computador de ta-manho reduzido, por´em repleto de funcionalidades em uma ´unica placa. Devido a sua variedade de recursos – Bluetooth/Wifi imbutidos, 40 pinos de entrada/sa´ıda (GPIO), conex˜oes USB, HDMI, LAN, sa´ıdas de ´audio e v´ıdeo composto – o Raspberry Pi ´e capaz de se conectar diretatamente com monitores, teclados, mouses e fones. Tudo isso ´e orques-trado por um processador Quad-core de 1.2GHz juntamente com o Raspbian, o sistema operacional (SO) padr˜ao baseado em Linux gravado discretamente no cart˜ao SD [17].

(21)

2.6

Socket

Definido como uma extremidade de comunica¸c˜ao entre computadores, um socket ´e especificado por um endere¸co IP concatenado com um n´umero de porta. Geralmente s˜ao adotados em arquitetura cliente-servidor. Nessa estrutura de aplica¸c˜ao distribu´ıda, o dito servidor monitora o recebimento de solicita¸c˜oes oriundas de clientes por determinada porta. Ao ser recebida, o servidor aceita uma conex˜ao proveniente do socket do cliente para complet´a-la [18].

2.7

RFID

RFID ´e o termo atribu´ıdo a um grupo de tecnologias empregadas na identifica¸c˜ao e rastreamento a distˆancia de objetos via radiofrequˆencia. Basicamente, um sistema RFID funciona a partir da intera¸c˜ao wireless entre um tag (etiqueta) – dispositivo identificador do objeto no qual foi implementado – e um leitor – considerado o c´erebro do RFID, realizando o interfaceamento com sistemas externos de processamento de dados [20].

Esta tecnologia em ascens˜ao pretende superar as lacunas de eficiˆencia deixadas pela tecnologia de c´odigo de barras, ou seja, aliar r´apida velocidade de leitura, baixo custo operacional, alta confiabilidade e capacidade e sobredudo suportar distˆancias maiores entre a etiqueta e o leitor [8].

As etiquetas RFID podem ser diferenciadas segundo sua forma de ativa¸c˜ao, sendo classificadas como passivas ou ativas. Estas designa¸c˜oes remetem `a necessidade da etiqueta ter (ou n˜ao) uma bateria interna para o seu funcionamento e transmiss˜ao de sinal. Em especial, por serem alimentadas eletricamente, as etiquetas ativas podem conter um chip interno para armazenar informa¸c˜oes [8].

O surgimento de tags essencialmente passivos culminou do interesse por sistemas mais baratos e contendo etiquetas flex´ıveis `a dobragem. Na ausˆencia de um chip, os tags passaram se comunicar com o leitor segundo o princ´ıpio de retrodifus˜ao [19].

(22)

Cap´ıtulo 3

Desenvolvimento

O projeto em sua totalidade trata-se de um leitor RFID para tags chipless o qual pode ser visualizado em 2 etapas complementares na Figura 3.1, a transmiss˜ao e recep¸c˜ao. Nesta primeira, j´a desenvolvida [5], um Arduino DUE (Ard. 1) foi configurado para gerar um par de sinais nas frequˆencias de 42 e 84 MHz. Estes sinais foram ent˜ao combinados e transladados at´e uma frequˆencia superior, de 900 MHz, usando um modulador. Posteri-ormente, o sinal combinado passou por um amplificador de potˆencia (AP) garantindo que um tag (etiqueta) receba, em n´ıveis aceit´aveis de intensidade, a informa¸c˜ao enviada pela antena TX. Caso o tag tenha sido configurado para refletir tais frequˆencias, ele imedia-tamente ir´a retransmitir o sinal combinado iniciando a etapa de recep¸c˜ao. Nesta etapa, o sinal captado pela antena RX sofre um tratamento oposto ao feito na transmiss˜ao, ou seja, passando pelo amplificador, demodulador e chegando finalmente a um equipamento de processamento.

Figura 3.1: Esquema geral do projeto

(23)

sinal refletido de modo a extrair informa¸c˜oes sobre as portadoras. Dentro do equipamento de processamento, o sinal ser´a submetido a uma codifica¸c˜ao, traduzindo a existˆencia, ou n˜ao, de portadoras em um c´odigo de identifica¸c˜ao bin´ario. Cada portadora ent˜ao ser´a representada em um algarismo significativo do dito c´odigo, sendo ”1” em caso de presen¸ca da mesma e ”0” em caso de ausˆencia. Os detalhes sobre o desenvolvimento de cada etapa do processamento dos sinais em banda base ser˜ao relatados nas pr´oximas sess˜oes.

3.1

MATLAB - Cria¸

ao do C´

odigo Piloto

Num ˆambito de testes, foi primeiramente constru´ıdo um script em MATLAB capaz simular a recep¸c˜ao de sinais por r´adio frequˆencia, em portadoras distintas, separ´a-los usando um processo de filtragem e reportar as frequˆencias remanescentes. Estas etapas, retratadas no Figura 3.2, acompanhadas pelos respectivos gr´aficos1 ser˜ao abordados a seguir.

Figura 3.2: Fluxograma das etapas no MATLAB

3.1.1

Constru¸

ao do sinal de entrada

Por quest˜oes de praticidade, como sinais senoidais no dom´ınio do tempo s˜ao repre-sentados por trem de impulsos peri´odicos na frequˆencia [21], estes foram escolhidos para

1Vale ressaltar que todos os gr´aficos doravantes no Dom´ınio da Frequˆencia tˆem seus eixos normalizados

(24)

12 compor o sinal de entrada. Nesse sentido, um sinal composto por dois cossenos com am-plitudes iguais e frequˆencias angulares distintas foi utilizado. Respeitando a condi¸c˜ao de Nyquist (Teorema da Amostragem) [7], foi adotada uma frequˆencia de amostragem (Fs)

de 200 Hz. A equa¸c˜ao 3.1 define matematicamente o sinal de entrada, em contrapartida, a Figura 3.3 exibe a representa¸c˜ao gr´afica do mesmo no dom´ınio do tempo:

x(t) = cos(2πω1t) + cos(2πω2t) (3.1)

onde ω1 = 10 Hz e ω2 = 40 Hz

Figura 3.3: Sinal de Entrada no Dom´ınio do Tempo

Aplicando a DTFT, deixa-se o dom´ınio do tempo e consegue-se plotar o sinal representado na Figura 3.4 no dom´ınio espectral.

(25)

3.1.2

Projeto do filtro

Embora a inten¸c˜ao de usar um filtro digital fosse concreta, era preciso antecipada-mente definir qual dos v´arios filtros dispon´ıveis na liteatura t´ecnica se adequaria melhor `

as necessidades do sistema: boa seletividade e fase linear. Em especial, o requisito de line-aridade de fase exclui a possibilidade do emprego dos filtros IIR (tais como Butterworth, Chebyshev ou El´ıptico), visto que os mesmos possuem fase n˜ao-linear [12].

Decidiu-se ent˜ao por um filtro FIR passa-baixa de ordem 51 cuja frequˆencia de corte (Fc) era 25 Hz2, permitindo somente a sele¸c˜ao da primeira componente de frequˆencia.

Para comprovar a perfeita adequa¸c˜ao do filtro a esse prop´osito, o sinal e o filtro foram sobrepostos na Figura 3.5.

Figura 3.5: Sinal de Entrada e Filtro FIR no Dom´ınio da Frequˆencia.

No pr´atica, o projeto do filtro FIR foi efetuado atrav´es do emprego da fun¸c˜ao fir1(). Esta ´e capaz de gerar coeficientes de filtros FIR baseados em janelas seguindo especifica¸c˜oes inseridas pelo usu´ario – ordem, frequˆencia(s) de corte, tipo do filtro (passa-baixa, passa-alta ou passa-faixa) [24].

Particularmente, a plotagem do filtro no dom´ınio espectral, vista na Figura 3.5, foi feita usando a fun¸c˜ao freqz() do MATLAB [25]. Essa fun¸c˜ao retorna a resposta em frequˆencia de um filtro digital, sob a condi¸c˜ao de represent´a-lo apenas no intervalo de 0 a 1 do espectro. Por isso, o espelhamento do filtro em altas frequencias n˜ao ´e percebido.

(26)

14

3.1.3

Filtragem

O processo de filtragem de um sinal, matematicamente representado pela opera¸c˜ao de convolu¸c˜ao, est´a fundamentado no Teorema da Convolu¸c˜ao [11]. Tal teorema expressa que a convolu¸c˜ao circular no dom´ınio temporal de duas sequˆencias discretas equivale `a multiplica¸c˜ao ponto a ponto das mesmas no dom´ınio espectral.

A opera¸c˜ao de multiplica¸c˜ao no dom´ınio da frequˆencia, para fins de filtragem, promove um ganho para frequˆencias localizadas dentro da banda de passagem do filtro em detrimento da atenua¸c˜ao daquelas localizadas na banda de rejei¸c˜ao do mesmo. A Figura 3.6 apresenta o resultado da convolu¸c˜ao do filtro FIR com sinal de entrada: um sinal de sa´ıda sem a componente de 40 Hz do sinal original.

Figura 3.6: Sinal Filtrado no Dom´ınio da Frequˆencia

3.1.4

Busca e Reporte de Componentes

Por ´ultimo, foi efetuando uma varredura em todo espectro a fim de detectar com-ponentes espectrais com magnitude maior do que um patamar estabelecido (no caso um valor de amplitude normalizada de 0.11). Havendo pelo menos uma, o c´odigo exibe uma mensagem como vista na Figura 3.7:

(27)

3.1.5

Projeto do Banco de Filtros

A aplica¸c˜ao de um banco de filtros aliada `as t´ecnicas de decomposi¸c˜ao polif´asica e identidade nobre [12] foi planejada, a princ´ıpio, para ocorrer somente no final do projeto. Todavia, teve-se que adiantar sua elabora¸c˜ao tendo em vista os problemas enfrentados pela falta de espa¸co de armazenamento no Arduino UNO, como detalhado na se¸c˜ao 3.2. Dessa maneira, antes de ser propriamente inclu´ıdo no c´odigo embarcado no Arduino UNO, um script no MATLAB, `a parte do c´odigo piloto, foi desenvolvido com o intuito de observar o passo-a-passo3 do projeto de um banco de filtros.

Em linhas gerais, o uso de um banco de filtros atrelado a t´ecnicas de processamento multitaxas promove uma redu¸c˜ao no n´umero de coeficientes para a cria¸c˜ao de um filtro, enquanto mant´em suas caracter´ısticas originais [12]. Dessa forma, os vetores usados no armazenamento do filtro FIR, poder˜ao ter seus tamanhos reduzidos (e.g. num banco de filtros de 2 canais diminui-se pela metade). Em todas as configura¸c˜oes foram usados os mesmos parˆametros:

X Filtro (H(z)): FIR passa-baixa; ordem 51; Frequˆencia de Corte de 30 Hz; Banda Passante de 0 – 29 Hz; Banda de Rejei¸c˜ao ω>40 Hz;

X Sinal de Entrada (x[n]): Fun¸c˜ao impulso4 (δ(x));

X Subamostagem ou downsample (M (z)): por um fator N igual a 2;

Figura 3.8: Esquema do Banco de Filtros em 2 N´ıveis

3Os passos iniciais desse processo de cria¸ao foram omitidos para dar mais dinamismo a descri¸ao do

presente trabalho.

4O emprego dessa fun¸ao foi meramente para se assegurar a correta execu¸ao da metodologia de

cria¸cao de um banco de filtros, visto que a convolu¸c˜ao do impulso com qualquer outra fun¸c˜ao, resulta na pr´opria fun¸c˜ao [21].

(28)

16 Na Figura 3.8, encontra-se a configura¸c˜ao implementada, uma filtragem por filtros polif´asicos atrelada `a t´ecnica de identidade nobre. Tal t´ecnica viabiliza o descarte de amostras em cada ramo antes mesmo da a¸c˜ao dos filtros, sem qualquer deforma¸c˜ao do sinal de sa´ıda e economizando espa¸co de armazenamento. Esta segunda caracter´ıstica ´e muito relevante para o uso de filtros no Arduino UNO, visto que, o mesmo tem seu desempenho negativamente afetado pela superocupa¸c˜ao da mem´oria.

3.2

Arduino - C´

odigo piloto em hardware

Esta se¸c˜ao aborda as m´ultiplas tentativas, maioritamente falhas, de reprodu¸c˜ao das tarefas apresentadas na se¸c˜ao 3.1 num microcontrolador como o Arduino UNO. Pretendia-se com isso, deixar o car´ater puramente virtual e compor realmente um programa embar-cado em um hardware, capaz de interagir com outros componentes externos. Etapas antes simuladas somente por programa¸c˜ao ser˜ao agora executadas com o equipamentos/m´odulos f´ısicos adicionais, dentre elas est˜ao:

• Leitura de um sinal de entrada externo (produzido por um gerador de sinais); • Cria¸c˜ao de um filtro FIR por meio dos coeficientes importados5 do MATLAB;

Na Figura 3.9, h´a um fluxograma contendo as etapas realizadas e/ou pretendidas no Arduino UNO. Estas naturalmente ser˜ao melhor entendidas nos pr´oximos t´opicos, onde os respectivos problemas, causas e resultados ser˜ao explicitados.

Figura 3.9: Fluxograma da etapas no Arduino

5Recurso empregado para contornar a limita¸ao de bibliotecas para Arduino voltadas para a cria¸ao

(29)

3.2.1

Amostragem de um Sinal Externo

Inicialmente, elaborou-se um c´odigo embarcado no Arduino UNO para verificar sua capacidade de interpretar sinais el´etricos, vindos de fontes externas como um gerador de fun¸c˜oes. Sabendo disto, uma das portas anal´ogicas do microcontrolador foi conectada diretamente ao gerador, o qual fornecia um sinal senoidal de 1 volt pico a pico com n´ıvel DC de 2 Volts. Ap´os a leitura de 400 amostras, estas eram mostradas no Serial Monitor6.

De posse dessas amostras, foi poss´ıvel plotar o gr´afico da Figura 3.10.

Figura 3.10: Forma de onda detectada

Analisando a Figura 3.10, identificaram-se dois grandes obst´aculos que impediram o completo sucesso desta etapa, sendo eles descritos nos itens a, b e c abaixo:

a) Taxa de Amostragem Limitada

Embora a fun¸c˜ao analogRead() do Arduino permita a leitura de valores anal´ogicos, h´a um delay significativo entre a execu¸c˜ao desse comando e a leitura propriamente dita. Segundo a pr´opria especifica¸c˜ao [23], a taxa m´axima de leitura e, consequentemente, de amostragem, ´e de 10.000 vezes por segundo, ou seja, 10 kHz. Isso implica a existˆencia de

6Basicamente uma janela de intera¸ao com o usu´ario dispon´ıvel na IDE do Arduino, permitindo desde

(30)

18 uma limita¸c˜ao f´ısica real para sinais com frequˆencias superiores `a 5 kHz, como desejado no projeto.

b) Erro no Mapeamento de Valores Anal´ogicos em Digitais

Segundo as especifica¸c˜oes da fun¸c˜ao analogRead(), valores de tens˜ao de entrada entre 0 e 5 Volts7 ao mapeados em valores inteiros entre 0 e 1023. Contudo, na Figura

3.10 ´e evidente o fenˆomeno de ceifagem ocasionado pela leitura de tens˜oes abaixo do n´ıvel DC de entrada . Tal fenˆomeno n˜ao era esperado em uma configura¸c˜ao com um n´ıvel DC devidamente aplicado.

c) Capacidade Limitada de Armazenamento

Durante a compila¸c˜ao do script, deparou-se com um aviso alertando que o consumo da mem´oria SRAM (onde as vari´aveis s˜ao criadas e manipuladas durante a execu¸c˜ao) atingiu 90%, como ilustra a Figura 3.11.

Tal porcentagem de ocupa¸c˜ao foi um reflexo do uso de vetores relativamente gran-des para os padr˜oes do Arduino (cerca de 400 posi¸c˜oes) no armazenamento dos valores vindos do gerador. Como alertado pelo pr´oprio software, operar pr´oximo `a capacidade m´ a-xima pode produzir erros inesperados, inviabilizando o correto funcionamento de alguns comandos.

A fim de contornar essa “sobrecarga”, principalmente se o processo de filtragem fosse futuramente empregado, come¸cou-se a pensar em aplicar a t´ecnica de decomposi¸c˜ao polif´asica (cf. Se¸c˜ao 3.1.5).

Figura 3.11: Alerta dado na compila¸c˜ao

3.2.2

Otimiza¸

ao da Capacidade de Armazenamento

Uma an´alise de otimiza¸c˜ao foi realizada com o prop´osito de conciliar a pouca capacidade de armazenamento interno com um processo de filtragem aceit´avel. Este

(31)

´

ultimo possui uma rela¸c˜ao direta com o n´umero de coeficientes que comp˜oem o filtro, portanto quanto maior o n´umero de coeficientes (ordem) do filtro mais preciso e seletivo o mesmo ser´a. Assim, para encontrar uma propor¸c˜ao ´otima entre essas duas vari´aveis, optou-se por simular, tamb´em no MATLAB, filtros FIR com diferentes ordens e avaliar qual seria o mais apropriado. Abaixo, encontram-se dois gr´aficos (Figuras 3.12 e 3.13) contendo a representa¸c˜ao no dom´ınio da frequˆencia de cada um dos filtros sobrepostos:

Figura 3.12: Representa¸c˜ao linear da atenua¸c˜ao no Dom´ınio da Frequˆencia

Figura 3.13: Atenua¸c˜ao em dB ao longo do espectro

Examinando como a ordem influencia a dura¸c˜ao do regime transit´orio dos filtros, concluiu-se que o mais indicado ´e um de ordem 25 aproximadamente. Este ent˜ao aliaria

(32)

20 tanto uma seletividade e atenua¸c˜ao aceit´aveis para a aplica¸c˜ao desejada, quanto uma diminui¸c˜ao de 50% no espa¸co necess´ario para guardar os coeficientes (se comparado com o c´odigo piloto em MATLAB).

3.2.3

Importa¸

ao dos Coeficientes

A par das restri¸c˜oes de processamento digital do Arduino, como a ausˆencia de bibliotecas e fun¸c˜oes aptas a criar filtros digitais, optou-se por ”terceirizar” essa tarefa. O objetivo ent˜ao tornou-se gerar o filtro FIR desejado no MATLAB e transferir seus coeficientes (em pacotes ou unitariamente) via comunica¸c˜ao serial para o Arduino. A principal dificuldade surgida nessa etapa ser´a detalhada a seguir:

Comunica¸c˜ao Serial entre Arduino e o MATLAB

Embora aparentasse ser uma a¸c˜ao simples, ocorreram incompatibilidades no n´ u-mero de bytes usados para representar alguns tipos de vari´aveis, sobretudo em valores float muito baixos8, por exemplo. Assim, valores enviados de uma plataforma para outra n˜ao

eram recebidos, acusando um aviso de time out, como visto na Figura 3.14. Esse obst´aculo na comunica¸c˜ao direta fez com que a transferˆencia dos dados fosse feita manualmente.

Figura 3.14: Recebimento incorreto de dados no MATLAB

(33)

3.2.4

Filtragem

Apesar de ser extremamente simples e autom´atica no MatLab (gra¸cas a fun¸c˜ao conv()), a convolu¸c˜ao no Arduino teria que ser criada sem aux´ılio de qualquer biblioteca. Estas n˜ao eram de fontes confi´aveis, apresentando resultados incoerentes. Nesse sentido, na tentativa de elaborar um algoritmo de convolu¸c˜ao deparou-se com as seguintes com-plica¸c˜oes:

• Problema da multiplica¸c˜ao de vetores de tamanhos distintos; ou

• L´ogica que funcionava somente para os primeiros valores, errando os demais. Os contratempos que impediram ou dificultaram a conclus˜ao de v´arias etapas exi-bidas no fluxograma da Figura 3.9, forneceram alguns ind´ıcios de que o Arduino UNO n˜ao era o equipamento de processamento mais apropriado para o projeto. Consequentemente, a fim de dar continuidade ao mesmo, julgou-se preciso migrar para uma solu¸c˜ao o qual suportasse um c´odigo mais robusto. Essa solu¸c˜ao foi o microprocessador Raspberry Pi.

3.3

Raspberry Pi

Ainda que se tenha entendido muito sobre limita¸c˜oes do Arduino UNO, seu em-prego demonstrou-se ineficiente na aplica¸c˜ao proposta para o sistema de RFID. Felizmente, a mudan¸ca para o Raspberry Pi trouxe muitos benef´ıcios, dentre eles:

1. Programa¸c˜ao em Python, uma linguagem com mais recursos; 2. Elevado poder de processamento;

3. Maior capacidade de armazenamento;

Nesse novo cen´ario, como ser´a dito nas se¸c˜oes subsequentes, foi desenvolvido um par de c´odigos complementares usando a linguagem Python. A id´eia b´asica, para fins de testes, era enviar um sinal de um computador e assim recebˆe-lo e posteriormente process´ a-lo dentro do microprocessador.

(34)

22

Figura 3.15: Fluxograma das etapas realizadas no Raspberry Pi

Todavia, antes de iniciarmos a descri¸c˜ao das etapas apresentadas na Figura 3.15, ´e fundamental esclarecer o porquˆe da utiliza¸c˜ao de dois c´odigos separados, um se compor-tando como um transmissor e outro como receptor.

Justificativa para o uso do Modelo Tx-Rx

O Raspberry n˜ao disp˜oe de pinos de entradas anal´ogicas. Em virtude dessa carˆ en-cia foi inien-ciado uma pesquisa com a finalidade de encontrar conversores anal´ogicos-digitais (A/D) para essa tarefa. Dentro das possibilidades financeiras e de tempo, foram selecio-nados os seguintes conversores, sendo eles:

• PCF8591 - Conversor A/D e D/A de 8-bit; • MCP300X - Conversor A/D de 10-bit;

Entretanto infelizmente, ao analisarmos as taxas de amostragem de ambos, descobriu-se que os valores eram muito inferiores ao m´ınimo exigido para detectar as portadoras originalmente idealizadas (42 e 84 MHz). Nos datasheets [27] [28] constam as seguintes frequˆencias de amostragem: 11,1 e 200 kHz respectivamente.

Por esta raz˜ao, optou-se por desviar momentaneamente9 da abordagem em RF

adaptando-a para uma em estrutura de redes de computadores (vide Figura 3.16).

(35)

Figura 3.16: Adapta¸c˜ao

3.3.1

Cria¸

ao e Estabelecimento da Conex˜

ao

Tudo ´e iniciado executando num computador o c´odigo tx pc.py, presente na integra no Apˆendice A. Este c´odigo foi programado para criar um socket e coloc´a-lo para ”escutar” uma porta espec´ıfica, aguardando solicita¸c˜oes de conex˜ao. Tal postura ´e comum em servidores.

Neste momento, o c´odigo rx rasp.py embarcado no Raspberry Pi j´a pode ser exe-cutado, criando tamb´em um socket. Ao contr´ario do seu antecessor esse c´odigo envia pedidos de conex˜ao atrav´es da mesma porta. Efetuado esses passos, pode-se considerar que ambas as plataformas est˜ao conectadas virtualmente, sendo pass´ıveis de receber e enviar mensagens entre si.

3.3.2

Produ¸

ao e Envio do Sinal de Entrada

Estando ambas as plataformas interfaceadas pelo socket, inicia-se ent˜ao no c´odigo tx pc.py a produ¸c˜ao do mesmo sinal de entrada expresso na equa¸c˜ao 3.1, n˜ao obstante fixando novas frequˆencias:

(36)

24 Diferentemente de vers˜oes anteriores, onde era permitido enviar dados desde que estejam no formato string, o Python 3.7 exige adicionalmente que os mesmos passem por uma codifica¸c˜ao bin´aria [14]: a UTF-8.

Em virtude da alta precis˜ao10 associada aos valores das amostras, o espa¸co de armazenamento do buffer usado no envio sofria um overflow, suportando no m´aximo 57 amostras do sinal de entrada. Sendo assim, o envio ´unico das 500 amostras foi fracionado em 10 vezes atrav´es de uma estrutura de repeti¸c˜ao (fun¸c˜ao while()).

3.3.3

Recebimento e Decodifica¸

ao do Sinal de Entrada

Igualmente, o c´odigo rx rasp.py embarcado no Raspberry foi programado para receber a sequˆencia de 10 envios por meio de outra fun¸c˜ao while(). Entre cada itera¸c˜ao do loop, os dados recebidos eram decodificados e reconvertidos em para o formato float.

Para provar a integridade do sinal recebido, foram plotadas sua representa¸c˜ao no tempo e na frequˆencia sendo mostrados nas Figuras 3.17a e 3.17b respectivamente.

(a) Dom´ınio do Tempo.

(b) Dom´ınio da Frequˆencia

Figura 3.17: Sinal de entrada recebido

(37)

3.3.4

Cria¸

ao dos Filtros

Durante a elabora¸c˜ao do c´odigo em Python no Raspberry Pi temia-se que a fun¸c˜ao geradora de coeficientes de um filtro FIR (firwin()) produzisse um filtro com caracter´ısticas bem divergentes das desejadas – como um possuindo regi˜ao de transi¸c˜ao prolongada.

• Compara¸c˜ao entre Fun¸c˜oes Geradoras de Filtros

Para verificar essa incerta equivalˆencia, os coeficientes gerados por cada uma das fun¸c˜oes – fir1() do MATLAB e firwin() do Python – sob os mesmos parˆametros11,

foram plotados num mesmo gr´afico a seguir usando a fun¸c˜ao freqz().

Figura 3.18: Filtros gerados pelas fun¸c˜oes fir1() e firwin().

Dada a Figura 3.18, ´e poss´ıvel perceber a equidade entre os dois filtros. Apesar do teste acima representar apenas um caso, essa rela¸c˜ao de semelhan¸ca se mant´em para outras configura¸c˜oes testadas (passa-alta, passa-faixa, etc).

Garantida a habilidade do Python criar filtros idˆenticos aos do MATLAB, projetou-se dois filtros complementares (mostrados na Figura 3.19) cujas caracter´ısticas s˜ao:

• 1o Filtro: Passa-baixa de ordem 50 cuja frequˆencia de corte superior era 50 Hz;

• 2o Filtro: Passa-alta de ordem 51 cuja frequˆencia de corte inferior era 50 Hz;

(38)

26

Figura 3.19: Filtros passa-baixa e passa-alta e o sinal no Dom´ınio Espectral

3.3.5

Aplica¸

ao do Banco de Filtros

Novamente, usou-se a fun¸c˜ao conv() para convoluir o sinal senoidal pelos filtros. Como esperado, o sinal original composto por um par de portadoras foi devidamente desmembrado em dois sinais filtrados (Figuras 3.20 e 3.21), cada um possuindo uma portadora.

(39)
(40)

Cap´ıtulo 4

Resultados

Conclu´ıdo com ˆexito as etapas primordiais do projeto de recep¸c˜ao e processamento, foi destinado um tempo para ampliar sua complexidade computacional e tornar os resul-tados mais condizentes com um cen´ario contendo um RFID real. Desse modo, as seguintes etapas/tarefas foram incorporadas `a estrutura do projeto:

4.1

Adi¸

ao de um Ru´ıdo Aleat´

orio

Em consequˆencia do ambiente virtual, os efeitos de um ru´ıdo foram fortemente mitigados. Sabendo que este vis˜ao otimista nunca simbolizaria a transmiss˜ao real em radiofrequˆencia, adicionou-se um ru´ıdo aleat´orio artificial ao sinal de entrada usando a fun¸c˜ao random.uniform() [26].

Particularmente, essa fun¸c˜ao retorna P valores aleat´orios, dentro de um limite m´ınimo e m´aximo, que juntos compoˆem o dito ru´ıdo. Tais limites foram produzidos em fun¸c˜ao dos valores m´aximo e min´ımo do sinal de entrada e tamb´em de uma vari´avel intitulada fator de corre¸c˜ao (Fcorr) como mostra as equa¸c˜oes 4.1 e 4.2.

Limitesup= xmax×Fcorr (4.1)

Limiteinf = xmin×Fcorr (4.2)

O fator de corre¸c˜ao foi a alternativa encontrada neste projeto para poder imprimir um certo ”controle” sobre a rela¸c˜ao sinal-ru´ıdo, visto que a fun¸c˜ao geradora de ru´ıdo n˜ao detinha esse grau de edi¸c˜ao.

(41)

4.2

Elabora¸

ao de um Decisor

O procedimento l´ogico por tr´as da implemementa¸c˜ao do decisor ´e bastante b´asico: calcular as potˆencias m´edias dos sinais e do ru´ıdo, e compar´a-las. Tal c´alculo, em espe-cial para sinais discretos, ´e feito usando o conceito de limite e o somat´orio das energias instantˆaneas de cada amostra [22].

Devido a caracter´ıstica n˜ao-determin´ıstica do ru´ıdo, seria muito vago calcular a potˆencia m´edia do mesmo baseado apenas em um exemplo de ru´ıdo aleat´orio. Assim, originou-se a id´eia de efetuar uma m´edia das potˆencias de 1000 ru´ıdos aleat´orios gerados dentro de um loop sobre as mesma condi¸c˜oes iniciais (mesmo n´umero de amostras e limites). Outrossim, em posse dos 3 valores de potˆencia1 (em dBm), estes s˜ao comparados

usando as estruturas condicionais elementais if() e else().

Novos gr´aficos de dom´ınio no tempo e da frequˆencia ser˜ao exibidos. Para exem-plificar o correto funcionamento do decisor alterou-se a forma de onda do sinal original, agora composto somente pela segunda portadora, conforme visto na equa¸c˜ao 4.3. ´E ´util frisar que o SNR2 relativo `as Figuras 4.1 a 4.3 foi de 2,92 dB.

x0(t) = cos(2πω2t) (4.3)

onde ω2 = 70 Hz

Figura 4.1: Representa¸c˜ao temporal do sinal original adicionado ao ru´ıdo aleat´orio.

1Potˆencias m´edias referentes ao: ru´ıdo, sinal filtrado pelo filtro passa-baixa e sinal filtrado pelo filtro

passa-alta.

(42)

30

Figura 4.2: Representa¸c˜ao espectral do sinal original adicionado ao ru´ıdo aleat´orio.

(a) Presen¸ca somente do ru´ıdo (b) Presen¸ca da Portadora 2

Figura 4.3: Representa¸c˜ao espectral dos sinais de sa´ıda ap´os banco de filtros

Uma breve observa¸c˜ao das Figuras 4.3a e 4.3b pode instruir sobre as consequˆencias de ter um sinal de entrada formado unicamente por uma fun¸c˜ao cosseno em alta frequˆencia: n˜ao h´a energia, e logicamente potˆencia, na por¸c˜ao de baixa frequˆencia. S´o restando ru´ıdo. Portanto, podemos antecipadamente deduzir que o c´odigo bin´ario gerado ser´a 01, sendo comprovado na pr´oxima imagem.

4.2.1

Produ¸

ao do C´

odigo Bin´

ario

Ao t´ermino do c´odigo rx rasp.py s˜ao exibidos na linha de comando (Figura 4.4) algumas informa¸c˜oes relativas a todo o processo, dentre elas o c´odigo bin´ario de sa´ıda. Este ´e produzido dentro do decisor segundo a seguinte regra:

(43)

• Caso a potˆencia do sinal filtrado pelo filtro passa-baixa seja maior que a potˆencia do ru´ıdo estabelecida, o primeiro3 bit ser´a 1. Caso contr´ario 0.

• Caso a potˆencia do sinal filtrado pelo filtro passa-alta seja maior que a potˆencia do ru´ıdo estabelecida, o segundo bit ser´a 1. Caso contr´ario 0.

Figura 4.4: Print da linha de comando do Python

Variando o n´umero de portadoras (entre 0, 1 e 2) presentes no sinal de entrada, temos a seguinte Tabela 4.1:

Tabela Verdade Sinal de Entrada

C´odigo Bin´ario Gerado Portadora 1 Portadora 2

Sim Sim 11

Sim N˜ao 10

N˜ao Sim 01

N˜ao N˜ao 00

Tabela 4.1: Tabela Verdade do decisor para at´e 2 portadoras

4.3

An´

alise do SNR M´ınimo

Conforme j´a comentado na se¸c˜ao 4.2, a aleatoridade do ru´ıdo dificulta para o de-cisor o estabelecimento de um limiar preciso entre o que s˜ao resqu´ıcios de ru´ıdo e o sinal

(44)

32 efetivamente. Nesse contexto, mostrou-se interessante avaliar qual a probabilidade de acerto do decisor em diferentes cen´arios e posteriormente estimar suas faixas de opera-¸c˜ao. Logo, foi realizado um estudo emp´ırico usando 3 fatores de corre¸c˜ao (Fcorr) que

reproduzissem SNRs elevados, medianos e baixos. • Fcorr =0,7 gerando SNRs elevados;

• Fcorr =0,75 gerando SNRs medianos;

• Fcorr =0,8 gerando SNRs baixos;

Realizados os testes num espa¸co amostral de 50 itera¸c˜oes para cada um dos cen´arios, todos detalhados no Apˆendice B, obteve-se o gr´afico de probabilidades exibido na Figura 4.5:

Figura 4.5: Estat´ısticas de erros e acertos do decisor

Com base na Figura 4.5, bem como nos SNRs m´ınimos e m´aximos do Apˆendice B, pode-se preencher a Tabela 4.2:

Faixas de SNR Confiabilidade do Decisor Entre 0,37 dB at´e 1,12 dB 34%

Entre 0,82 dB at´e 1,59 dB 56% Entre 1,6 dB at´e 2,39 dB 92%

(45)

Cap´ıtulo 5

Conclus˜

ao e Trabalhos Futuros

5.1

Conclus˜

ao

A respeito das considera¸c˜oes e resultados apresentados ao longo do desdobramento do presente trabalho, este cap´ıtulo concede coment´arios finais acerca dos principais pontos. Com a finalidade promover um melhor entendimento, o cap´ıtulo est´a organizado a partir de uma abordagem que fluir´a sobre os seguintes t´opicos:

• Evolu¸c˜ao do sistema;

• Faixa de opera¸c˜ao do decisor; • Perspectiva de escalabilidade;

O primeiro passo para o desenvolvimento do projeto foi dado atrav´es da cria¸c˜ao de um script piloto executando no Matlab. Neste ambiente de simula¸c˜ao, um sinal composto por um par de cossenos foi produzido virtualmente e depois filtrado por um filtro passa-baixa. Em seguida, uma varredura no espectro foi efetuada, buscando por frequˆencias acima de um limiar de amplitude estabelecido.

Seguro do correto funcionamento at´e ent˜ao, resolveu-se avan¸car para uma aborda-gem mais pr´atica: adaptar o dito script para o Arduino UNO. Entretanto, percebeu-se que o Arduino Uno, embora desempenhasse de forma muito eficiente tarefas de moni-toramento e controle, este n˜ao era indicado para tarefas que demandassem uma grande capacidade de armazenamento ou poder computacional.

Para dar sequˆencia ao projeto, optou-se por substituir o Arduino UNO (no papel do equipamento de processamento) por um Raspberry Pi. Tal mudan¸ca foi ben´efica a ponto

(46)

34 de reduzir radicalmente a dependˆencia at´e ent˜ao vinculada ao MATLAB, principalmente na plotagem de figuras e em c´alculos complexos. Sendo programado usando a linguagem Python, o microprocessador n˜ao somente suportou executar as mesmas etapas do script piloto, como tamb´em realizou algumas adicionais (como adi¸c˜ao de um ru´ıdo artificial e produ¸c˜ao de um c´odigo bin´ario a partir de um decisor).

Ao final ´e percept´ıvel o amadurecimento computacional sofrido pelo projeto. Houve de fato uma transi¸c˜ao de um ˆambito predominantemente ideal – script ´unico, sem interfe-rˆencias – para um ˆambito mais condizente com a realidade – script duais se comunicando, presen¸ca de ru´ıdo, preocupa¸c˜ao com a rela¸c˜ao sinal ru´ıdo.

Acerca das faixas de opera¸c˜ao obtidas ap´os a an´alise do SNR m´ınimo, pode-se concluir que: para preservar a acertividade do decisor ´e recomendado que sejam empre-gados os fatores de corre¸c˜ao menores ou iguais a 0,7. Para os demais fatores testados a confiabilidade do decisor foi muito degradada pela baixa rela¸c˜ao sinal ru´ıdo.

Adcionalmente, vale salientar que, da forma como foram constru´ıdos, os c´odigos tx pc.py e rx rasp.py s˜ao escal´aveis. Os mesmos podem ser tranquilamente reprograma-dos para se adaptarem a outros tipos, quantidades e frequˆencias de portadoras, bastando apenas usar filtros adequados.

5.2

Sugest˜

oes para Trabalhos Futuros

Seja por quest˜oes de custo financeiro ou pelo fator tempo, algumas otimiza¸c˜oes no sistema tiveram que ser adiadas. Essas possibilitar˜ao deixar o projeto mais seguro, operacional e ver´ıdico `as necessidades impostas. Dentre as sugest˜oes de aprimoramento est˜ao:

1. Desenvolvimento de uma interfa¸ce gr´afica usando o Tkinter [29], por exemplo; 2. Aquisi¸c˜ao de sinais reais – vindo de uma antena ou um gerador de sinais – atrav´es do

emprego de um conversor A/D cuja taxa de amostragem fosse acima da necess´aria; 3. Aperfei¸coamento do decisor, incorporando um banco de dados;

4. Modulariza¸c˜ao do script ;

(47)

Apˆ

endice A

odigos

A.0.1

Script no MATLAB

c l e a r a l l , c l o s e a l l N=500; f s = 2 0 0 ; T = 1/ f s ; n = 0 :N−1; t = n∗T ; L i m i t e = 0 . 1 1 ; %%%%%%%%%%%%% PARTE 1 %%%%%%%%%%%%%%%%% x = c o s ( 2 ∗ p i ∗10∗ t ) + c o s ( 2 ∗ p i ∗40∗ t ) ; comp=1: l e n g t h ( t ) ; f=comp∗2/ l e n g t h ( x ) ; f i g u r e p l o t ( f , x ) ; x l a b e l ( ’ Tempo ( s ) ’ ) ; y l a b e l ( ’ Magnitude ’ ) ; t i t l e ( ’ R e p r e s e n t a ¸c ˜a o Temporal ’ ) y l i m ( [ − 2 , 2 . 5 ] ) ; %%%%%%%%%%%%% PARTE 2 %%%%%%%%%%%%%%%%% 35

(48)

36 X= f f t ( x ) ; comp1=1: l e n g t h ( t ) ; f 1=comp1 ∗2/ l e n g t h (X) ; Xnorm=abs (X) ; Xnorm=Xnorm/norm ( Xnorm ) ; f i g u r e p l o t ( f 1 , Xnorm ) ; x l i m ( [ 0 , 1 ] ) ; x l a b e l ( ’ Frequ ˆe n c i a ( \ p i r a d s / amostra ) ’ ) y l a b e l ( ’ Magnitude ’ ) t i t l e ( ’ R e s p o s t a em Frequ ˆe n c i a X( \ omega ) ’ ) b1 = f i r 1 ( 5 0 , 0 . 2 5 , ’ low ’ ) ; y1 = conv ( b1 , x ) ; Xnorm=abs (X) ; Xnorm=Xnorm/norm ( Xnorm ) ; %n o r m a l i z a n d o o e i x o y %%%%%%%%%%%%% PARTE 3 %%%%%%%%%%%%%%%%% f i g u r e [ H, w]= f r e q z ( b1 , 1 ) ; p l o t ( f 1 , Xnorm ) ; x l a b e l ( ’ Frequ ˆe n c i a ( \ p i r a d s / amostra ) ’ ) y l a b e l ( ’ Magnitude ’ ) t i t l e ( ’ R e p r e s e n t a ¸c ˜a o E s p e c t r a l do S i n a l e do F i l t r o FIR ( Passa −Baixa ) ’ ) ; h o l d on p l o t (w/ p i , abs (H) , ’ r ’ ) ; l e g e n d ( ’ S i n a l de Entrada ’ , ’ F i l t r o FIR ’ ) %%%%%%%%%%%%% PARTE 4 %%%%%%%%%%%%%%%%% f i g u r e Y1= f f t ( y1 ) ;

(49)

comp2=1: l e n g t h (Y1) ; f 2=comp2 ∗2/ l e n g t h (Y1) ; Ynorm=abs (Y1) ; Ynorm=Ynorm/norm ( Ynorm ) ; p l o t ( f 2 , Ynorm ) ; x l a b e l ( ’ Frequ ˆe n c i a ( \ p i r a d s / amostra ) ’ ) y l a b e l ( ’ Magnitude ’ ) t i t l e ( ’ R e p r e s e n t a ¸c ˜a o E s p e c t r a l do S i n a l F i l t r a d o ’ ) ; c =1; f o r i = 1 : ( l e n g t h (Y1) / 2 ) i f Ynorm ( i )>=L i m i t e f r e q ( c )= f 2 ( i ) ; c=c +1; end end f r e q=f r e q ∗ 1 0 0 ; d i s p(’−−−−−−−−R e s u l t a d o −−−−−−−−’) ;

d i s p ( ’A magnitude nas s e g u i n t e s c o m p o n t e n t e s f r e q u e n c i a s f o i maior que o patamar e s t a b e l e c i d o : ’ ) ; d i s p ( f r e q )

A.0.2

Script em Python implementado no Computador

#s c r i p t t x p c . py %%%%%%%%%%%%% IN´ICIO %%%%%%%%%%%%%%%% #c o d i n g : u t f −8 i m p o r t numpy a s np from s c i p y i m p o r t s i g n a l i m p o r t s c i p y from t im e i m p o r t s l e e p i m p o r t t i me i m p o r t math i m p o r t o s

(50)

38 i m p o r t s o c k e t from t h r e a d i n g i m p o r t Thread d e f a c e i t a ( conn , ) : N = 5 0 0 ; f s = 2 0 0 ; T = 1/ f s ; n = np . a r a n g e ( 0 ,N−1 ,1) ; t = n∗T ; i n p u t v a l u e s = [ ] ; f o r i i n l i s t ( r a n g e ( l e n ( t ) ) ) :

#v a l u e s= math . c o s ( 2 ∗ math . p i ∗30∗ t [ i ] ) + math . c o s ( 2 ∗ math . p i ∗70∗ t [ i ] ) ; v a l u e s=math . c o s ( 2 ∗ math . p i ∗70∗ t [ i ] ) ; i n p u t v a l u e s . append ( s t r ( v a l u e s ) ) ; i n i c i o =0; f i m =49; i n c r e m e n t o =0; w h i l e True : s e p = ( ’@’ ) e n t r a d a=s e p . j o i n ( i n p u t v a l u e s [ ( i n i c i o +i n c r e m e n t o ) : ( f i m+ i n c r e m e n t o +1) ] ) conn . s e n d a l l ( e n t r a d a . e n c o d e ( ’ u t f −8 ’) ) s l e e p ( 4 ) i n c r e m e n t o=i n c r e m e n t o +50 i f ( f i m+i n c r e m e n t o )> 4 9 9 : b r e a k conn . c l o s e ( )

(51)

i f n a m e == ” m a i n ”: HOST = ’ ’

PORT = 50009

s = s o c k e t . s o c k e t ( s o c k e t . AF INET , s o c k e t .SOCK STREAM) s . b i n d ( (HOST, PORT) )

w h i l e ( 1 ) :

s . l i s t e n ( 1 )

conn , addr = s . a c c e p t ( )

p r i n t ( ” R a s p i b e r r y Conectado com S u c e s s o ! ”) t = Thread ( t a r g e t=a c e i t a , a r g s =(conn , ) ) t . s t a r t ( )

A.0.3

Script em Python implementado no Raspberry Pi

#s c r i p t r x r a s p . py %%%%%%%%%%%%% IN´ICIO %%%%%%%%%%%%%%%%% #c o d i n g : u t f −8 i m p o r t numpy a s np from s c i p y i m p o r t s i g n a l i m p o r t s c i p y

from sympy i m p o r t l i m i t , Symbol from t im e i m p o r t s l e e p i m p o r t t i me i m p o r t math i m p o r t o s i m p o r t s o c k e t from t h r e a d i n g i m p o r t Thread i m p o r t p l o t l y . p l o t l y a s py i m p o r t m a t p l o t l i b . p y p l o t a s p l t

(52)

40 i f n a m e == ” m a i n ”: N = 5 0 0 ; f s = 2 0 0 ; T = 1/ f s ; n = np . a r a n g e ( 0 ,N−1 ,1) ; t = n∗T ; f a t o r= 0 . 5 HOST = ’ 1 2 7 . 0 . 0 . 1 ’ PORT = 50009 #IPv4 , t i p o de s o c k e t

s . s e t s o c k o p t ( s o c k e t . SOL SOCKET, s o c k e t . SO REUSEADDR, 1 ) s . c o n n e c t ( (HOST, PORT) ) dados = [ ] c o n t=1 w h i l e True : i f cont >10: b r e a k d a t a = s . r e c v ( 1 0 2 4 ) d a t a=d a t a . d e c o d e ( ’ u t f 8 ’ ) dada=d a t a . r e p l a c e ( ” ’ ” , ””) dada=d a t a . r e p l a c e ( ”] ” , ””) dada=d a t a . r e p l a c e ( ”[ ” , ””) dada=d a t a . r e p l a c e ( ” , ” , ””) d a d o s p a r c i a i s = [ ] d a d o s p a r c i a i s [ : ] = d a t a . s p l i t ( ’@’ ) f o r i i n l i s t ( r a n g e ( l e n ( d a d o s p a r c i a i s ) ) ) : d a d o s p a r c i a i s [ i ]= f l o a t ( d a d o s p a r c i a i s [ i ] ) ;

dados=np . c o n c a t e n a t e ( ( dados , d a d o s p a r c i a i s ) , a x i s=None ) c o n t=c o n t+1

(53)

minimo=min ( dados ) maximo=max( dados )

p r i n t ( ’O v a l o r m´ı nimo do s i n a l de e n t r a d a −−>’,minimo ) p r i n t ( ’O v a l o r m´a ximo do s i n a l de e n t r a d a −−> ’ , maximo )

l i m i t e i n f e r i o r = minimo ∗ f a t o r l i m i t e s u p e r i o r= maximo∗ f a t o r n u m e r o d e p o n t o s =499

r u i d o a l e a t o r i o= np . random . u n i f o r m ( low=l i m i t e i n f e r i o r , h i g h= l i m i t e s u p e r i o r , s i z e=n u m e r o d e p o n t o s )

e n e r g i a r u i d o=sum ( abs ( r u i d o a l e a t o r i o ) ∗ abs ( r u i d o a l e a t o r i o ) ) u = Symbol ( ”u ”) p o t r u i d o=l i m i t ( ( 1 / ( 2 ∗ u+1) ) ∗ e n e r g i a r u i d o , u , l e n ( r u i d o a l e a t o r i o ) ) p o t r u i d o= 10∗ math . l o g 1 0 ( p o t r u i d o ) p r i n t ( ’ Pot ˆe n c i a M´e d i a do Ruido A l e a t ´o r i o −−> ’ , p o t r u i d o , ’ dBm’ )

e n e r g i a=sum ( abs ( dados ) ∗ abs ( dados ) ) y = Symbol ( ”y ”)

pot=l i m i t ( ( 1 / ( 2 ∗ y+1) ) ∗ e n e r g i a , y , l e n ( dados ) ) pot= 10∗ math . l o g 1 0 ( pot )

p r i n t ( ’ Pot ˆe n c i a M´e d i a do S i n a l de Entrada −−> ’ , pot , ’ dBm’ )

SNR=pot−p o t r u i d o

p r i n t ( ’ Rela ¸c ˜a o S i n a l −Ru´ı do −−> ’ ,SNR, ’ dB ’ )

dados=dados+r u i d o a l e a t o r i o

aux=0

(54)

42 w h i l e True : i f aux <1000: l i m i t e i n f e r i o r = minimo ∗ f a t o r l i m i t e s u p e r i o r= maximo∗ f a t o r n u m e r o d e p o n t o s =500 r u i d o a l e a t o r i o= np . random . u n i f o r m ( low= l i m i t e i n f e r i o r , h i g h=l i m i t e s u p e r i o r , s i z e= n u m e r o d e p o n t o s )

e n e r g i a r u i d o=sum ( abs ( r u i d o a l e a t o r i o ) ∗ abs ( r u i d o a l e a t o r i o ) ) x = Symbol ( ”x ”) p o t p a r c i a l=l i m i t ( ( 1 / ( 2 ∗ x+1) ) ∗ e n e r g i a r u i d o , x , l e n ( r u i d o a l e a t o r i o ) ) p o t t o t a l=p o t t o t a l+p o t p a r c i a l aux=aux+1 e l s e : b r e a k r u i d o p o t m e d= p o t t o t a l /1000 p r i n t ( ’ Pot ˆe n c i a M´e d i a de um Ru´ı do A l e a t ´o r i o −−> ’ , r u i d o p o t m e d ) ; p l t . f i g u r e ( 1 ) p l t . s u b p l o t ( 2 1 1 ) p l t . s u b p l o t s a d j u s t ( h s p a c e = 0 . 4 ) p l t . p l o t ( t , dados ) p l t . y l a b e l ( ’ Amplitude ’ ) p l t . x l a b e l ( ’ Tempo ( s ) ’ )

p l t . t i t l e ( ’ S i n a l de Entrada no Dom´ı n i o do Tempo ’ )

p l t . s u b p l o t ( 2 1 2 )

d a d o s f f t=np . f f t . f f t ( dados ) comp1=np . a r a n g e ( 0 , l e n ( t ) , 1 )

(55)

f 1=comp1 ∗2/ l e n ( d a d o s f f t ) ; d a d o s f f t=abs ( d a d o s f f t ) d a d o s f f t=d a d o s f f t /np . l i n a l g . norm ( d a d o s f f t ) p l t . p l o t ( f 1 , d a d o s f f t ) p l t . y l a b e l ( ’ Amplitude ’ ) p l t . x l a b e l ( ’ $Frequ ˆe n c i a ( \ p i \ r a d s / amostra$ ) ’ )

p l t . t i t l e ( ’ S i n a l de Entrada no Dom´ı n i o da Frequ ˆe n c i a ’ ) p l t . show ( ) b1 = s i g n a l . f i r w i n ( 5 0 , 0 . 5 0 ) ; b2 = s i g n a l . f i r w i n ( 5 1 , 0 . 5 , p a s s z e r o=F a l s e ) ; p l t . f i g u r e ( 2 ) p l t . s u b p l o t ( 2 1 1 ) p l t . s u b p l o t s a d j u s t ( h s p a c e = 0 . 4 ) w, h = s i g n a l . f r e q z ( b1 ) w2 , h2 = s i g n a l . f r e q z ( b2 )

p l t . p l o t (w/math . p i , abs ( h ) , l a b e l =”F i l t r o FIR Passa−Baixa ”) p l t . p l o t ( w2/math . p i , abs ( h2 ) , l a b e l =”F i l t r o FIR Passa−Banda ”) p l t . l e g e n d ( l o c =’ upper r i g h t ’ )

p l t . y l a b e l ( ’ Amplitude ’ )

p l t . x l a b e l ( ’ $Frequ ˆe n c i a ( \ p i \ r a d s / amostra$ ) ’ ) p l t . t i t l e ( ’ F i l t r o s FIR no Dom´ı n i o da Frequ ˆe n c i a ’ ) p l t . g r i d ( True )

p l t . s u b p l o t ( 2 1 2 )

p l t . p l o t (w/math . p i , abs ( h ) , l a b e l =”F i l t r o FIR Passa−Baixa ”) p l t . p l o t ( w2/math . p i , abs ( h2 ) , l a b e l =”F i l t r o FIR Passa−Banda ”) p l t . p l o t ( f 1 , d a d o s f f t , ’ r −−’, l a b e l =”S i n a l de Entrada ”)

p l t . l e g e n d ( l o c =’ upper r i g h t ’ ) p l t . y l a b e l ( ’ Amplitude ’ )

(56)

44 p l t . x l a b e l ( ’ $Frequ ˆe n c i a ( \ p i \ r a d s / amostra$ ) ’ ) p l t . t i t l e ( ’ S i n a l de Entrada e F i l t r o FIR s o b r e p o s t o s ’ ) p l t . x l i m ( ( 0 , 1 ) ) p l t . g r i d ( True ) p l t . show ( ) o u t p u t v a l u e s = np . c o n v o l v e ( dados , b1 ) ; o u t p u t v a l u e s 2 = np . c o n v o l v e ( dados , b2 ) ; p l t . f i g u r e ( 3 ) d a d o s o u t f f t=np . f f t . f f t ( o u t p u t v a l u e s ) comp2=np . a r a n g e ( 0 , l e n ( d a d o s o u t f f t ) , 1 ) f 2=comp2 ∗2/ l e n ( d a d o s o u t f f t ) ; d a d o s o u t f f t=abs ( d a d o s o u t f f t ) d a d o s o u t f f t=d a d o s o u t f f t /np . l i n a l g . norm ( d a d o s o u t f f t ) p l t . p l o t ( f 2 , d a d o s o u t f f t , l a b e l =”S i n a l de Sa ´ı da ( 1 Componente ) ”) p l t . l e g e n d ( l o c =’ upper r i g h t ’ ) p l t . y l a b e l ( ’ Amplitude ’ ) p l t . x l a b e l ( ’ $Frequ ˆe n c i a ( \ p i \ r a d s / amostra$ ) ’ ) p l t . t i t l e ( ’ S i n a l ap ´o s a F i l t r a g e m no Dom´ı n i o da Frequ ˆe n c i a ’ ) p l t . x l i m ( ( 0 , 1 ) ) p l t . g r i d ( True ) p l t . show ( ) p l t . f i g u r e ( 4 ) d a d o s o u t f f t=np . f f t . f f t ( o u t p u t v a l u e s 2 ) comp2=np . a r a n g e ( 0 , l e n ( d a d o s o u t f f t ) , 1 ) f 2=comp2 ∗2/ l e n ( d a d o s o u t f f t ) ; d a d o s o u t f f t=abs ( d a d o s o u t f f t )

(57)

d a d o s o u t f f t=d a d o s o u t f f t /np . l i n a l g . norm ( d a d o s o u t f f t ) p l t . p l o t ( f 2 , d a d o s o u t f f t , l a b e l =”S i n a l de Sa ´ı da ( 2 Componente ) ”) p l t . l e g e n d ( l o c =’ upper r i g h t ’ ) p l t . y l a b e l ( ’ Amplitude ’ ) p l t . x l a b e l ( ’ $Frequ ˆe n c i a ( \ p i \ r a d s / amostra$ ) ’ ) p l t . t i t l e ( ’ S i n a l ap ´o s a F i l t r a g e m no Dom´ı n i o da Frequ ˆe n c i a ’ ) p l t . x l i m ( ( 0 , 1 ) ) p l t . g r i d ( True ) p l t . show ( )

e n e r g i a=sum ( abs ( dados ) ∗ abs ( dados ) )

p r i n t ( ’ E n e r g i a T o t a l do S i n a l O r i g i n a l + Ruido −−> ’ , e n e r g i a )

y = Symbol ( ”y ”)

pot=l i m i t ( ( 1 / ( 2 ∗ y+1) ) ∗ e n e r g i a , y , l e n ( dados ) )

p r i n t ( ’ Pot ˆe n c i a M´e d i a do S i n a l O r i g i n a l + Ruido −−> ’ , pot )

e n e r g i a 1=sum ( abs ( o u t p u t v a l u e s ) ∗ abs ( o u t p u t v a l u e s ) )

p r i n t ( ’ E n e r g i a T o t a l do S i n a l de Sa ´ı da ( Componente E x p e c t r a l 1 ) −> ’ , e n e r g i a 1 ) x = Symbol ( ”x ”) p o t 1=l i m i t ( ( 1 / ( 2 ∗ x+1) ) ∗ e n e r g i a 1 , x , l e n ( o u t p u t v a l u e s ) ) p r i n t ( ’ Pot ˆe n c i a M´e d i a do S i n a l de Sa ´ı da ( Componente E x p e c t r a l 1 ) −> ’ , p o t 1 )

e n e r g i a 2=sum ( abs ( o u t p u t v a l u e s 2 ) ∗ abs ( o u t p u t v a l u e s 2 ) )

p r i n t ( ’ E n e r g i a T o t a l do S i n a l de Sa ´ı da ( Componente E x p e c t r a l 2 ) −> ’ , e n e r g i a 2 )

(58)

46 z = Symbol ( ” z ”) p o t 2=l i m i t ( ( 1 / ( 2 ∗ z +1) ) ∗ e n e r g i a 2 , z , l e n ( o u t p u t v a l u e s 2 ) ) p r i n t ( ’ Pot ˆe n c i a M´e d i a do S i n a l de Sa ´ı da ( Componente E x p e c t r a l 2 ) −> ’ , p o t 2 ) i f pot1>r u i d o p o t m e d : b i t 1= 1 e l s e : b i t 1= 0 i f pot2>r u i d o p o t m e d : b i t 2= 1 e l s e : b i t 2= 0 p r i n t ( ”C´o d i g o b i n ´a r i o g e r a d o p e l o d e c i s o r −−>”, b i t 1 , b i t 2 )

(59)

Apˆ

endice B

Tabelas

Para fins de comprova¸c˜ao, os dados brutos resultantes do estudo emp´ırico usando trˆes tipos de Fcorr, est˜ao demonstradas nas Tabelas B.1, B.2 e B.3. Em todas as 150

itera¸c˜oes utilizou-se o mesmo sinal de entrada da equa¸c˜ao 3.1, operando nas frequˆencias angulares (ω1 e ω2) citadas na se¸c˜ao 3.3.2. Logo, o decisor acertaria – recebendo um ”A”

na tabela – se informasse o c´odigo bin´ario 11 ou erraria se informasse qualquer outro c´odigo (00, 01, 10) – recebendo um ”E”.

(60)

48

Tabela de Resultados (Fcorr=0,7)

# SNR (dB) C´odigo Bin´ario A/E # SNR (dB) C´odigo Bin´ario A/E

1 1,96 11 A 25 1,86 11 A 2 1,91 11 A 26 1,7 11 A 3 1,93 11 A 27 1,9 11 A 4 1,67 11 A 28 2,2 11 A 5 1,9 11 A 29 2,17 10 E 6 2,3 11 A 30 2,05 11 A 7 2,17 11 A 31 1,6 11 A 8 1,92 11 A 32 1,81 10 E 9 1,96 10 E 33 1,79 11 A 10 1,6 11 A 34 1,88 11 A 11 2,04 11 A 35 1,88 11 A 12 1,97 11 A 36 1,74 11 A 13 1,59 11 A 37 1,9 11 A 14 1,84 11 A 38 2,39 11 A 15 2,09 11 A 39 2,03 10 E 16 2,07 11 A 40 1,87 11 A 17 1,9 11 A 41 1,78 11 A 18 1,96 11 A 42 2,12 11 A 19 2,09 11 A 43 1,77 11 A 20 2,1 11 A 45 1,75 11 A 21 1,94 11 A 46 1,87 11 A 22 1,97 11 A 47 1,86 11 A 23 2,03 11 A 48 1,82 11 A 24 1,84 11 A 49 1,76 11 A 25 2,13 11 A 50 1,97 11 A

(61)

Tabela de Resultados (Fcorr=0,75)

# SNR (dB) C´odigo Bin´ario A/E # SNR (dB) C´odigo Bin´ario A/E

1 1,24 11 A 25 1,59 11 A 2 1,05 11 A 26 0,82 11 A 3 1,33 11 A 27 1,22 10 E 4 1,1 01 E 28 1,27 11 A 5 1,1 11 A 29 1,05 11 A 6 0,99 11 A 30 1,35 11 A 7 1,26 01 E 31 1,13 11 A 8 1,16 10 E 32 1,2 01 E 9 1,55 10 E 33 1,47 01 E 10 1,2 01 E 34 1,34 11 A 11 1,18 10 E 35 1,25 01 E 12 0,89 11 A 36 1,14 01 E 13 1,36 01 E 37 1,26 11 A 14 1,11 11 A 38 0,9 01 E 15 1,18 11 A 39 1,4 01 E 16 1,51 11 A 40 1,09 11 A 17 1,21 11 A 41 1,26 11 A 18 1,33 01 E 42 1,09 01 E 19 1,21 11 A 43 1,08 01 E 20 1,1 01 E 45 1,55 01 E 21 1,09 11 A 46 1,42 11 A 22 1,18 11 A 47 1,06 10 E 23 1,39 11 A 48 1,19 01 E 24 1,27 11 A 49 1,01 11 A 25 1,38 11 A 50 1,32 01 E

(62)

50

Tabela de Resultados (Fcorr=0,8)

# SNR (dB) C´odigo Bin´ario A/E # SNR (dB) C´odigo Bin´ario A/E

1 1,006 00 E 25 0,67 10 A 2 0,95 00 A 26 0,43 11 E 3 0,72 01 E 27 0,8 01 E 4 0,85 10 E 28 0,66 01 E 5 0,83 00 A 29 0,37 01 E 6 1,01 00 E 30 0,76 00 E 7 0,7 01 E 31 0,56 10 A 8 0,57 01 E 32 0,72 00 E 9 0,85 01 E 33 0,53 11 A 10 0,82 00 A 34 0,66 10 E 11 0,72 01 E 35 0,69 10 E 12 0,64 01 E 36 0,84 10 E 13 0,55 00 A 37 0,46 11 E 14 0,8 00 A 38 0,53 11 E 15 0,86 10 E 39 0,73 10 E 16 0,57 01 E 40 0,5 00 E 17 0,67 00 A 41 0,8 00 A 18 0,57 01 E 42 0,62 01 A 19 0,57 10 E 43 0,49 11 E 20 0,85 10 E 45 0,59 00 E 21 0,79 00 A 46 0,82 00 A 22 0,77 10 E 47 0,9 11 A 23 1,12 00 E 48 0,67 01 E 24 0,77 00 A 49 0,74 00 E 25 0,75 00 A 50 0,91 00 A

Referências

Documentos relacionados

De maneira geral, o apoio, a valorização e os investimentos são os fatores que mais contribuem para o crescimento e desenvolvimento do paradesporto nacional,

Capitalismo Sindical” e consiste basicamente em dizer que processos políticos podem ter o seu princípio alterado em detrimento de uma outra classe social. No caso das Primaveras

Dans le but de proposer une organisation didactique de l’expérience de recevoir le diagnostic médical, soutenue par notre expérience dans le domaine de l’annonce et prenant en

Tabela 3 - Duração do ciclo após a germinação, produtividade, eficiência no uso da água em cenários climáticos futuros RCP4.5 para o milho semeado em 10 de outubro.. Já para

Segundo Brown (2004), apoiado principalmente no trabalho de Warren e Nisbet (1999), é possível conceber que os indivíduos, quer sejam professores ou estudantes, geralmente

Como prenuncia o próprio título do texto, O pensamento cria, embora fique evidente que aí se trata da relação entre música e artes visuais, não deixamos de notar que o foco

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,