Introdução à Redes Sem Fio Inteligentes Software Defined Radio Minicurso Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Cristiano Both, Rafael Kunst, Lucas Bondan, Maicon Kist, Leonardo Faganello, Lisandro Granville, Juergen Rochol ` Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 2 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 3 O que é SDR ? Software Defined Radio Rádios implementados em software Tecnologia de implementação Traz os módulos de processamento de sinais digitais para perto da antena Substitui hardware dedicado por software Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 4 O que é SDR ? Hardware Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 5 O que é SDR ? Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 6 O que é SDR ? SDR Ideal Software Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 5 O que é SDR ? SDR Ideal Software Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 5 O que é SDR ? SDR Real Software Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 5 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 10 Vantagens de utilizar SDR Flexibilidade Redução do tempo de desenvolvimento Custo Para comercializar poucas unidades Inovações: Novas técnicas de modulação Acesso dinâmico ao espectro Rádios Cognitivos Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 11 Desvantagens de utilizar SDR Maior consumo de energia Maior poder de processamento para realizar a mesma tarefa do que em um FPGA/ASIC Custo Para comercializar um produto Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 12 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 13 Um pouco de história:SPEAKEasy (1/2) 1991-1995 Projeto para emular os mais de 10 tipos de rádios do exército americano Frequências de 2 a 2000 MHz Possibilitar a integração de novos tipos de rádios Fracassou DSPs vs GPP Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 14 Um pouco de história:SPEAKEasy (2/2) Lições aprendidas no projeto: Utilizar GPP – Moore está do nosso lado SPEAKEasy durou 2 ciclos de Moore Em 1995 os processadores já eram 4x mais rápidos Não utilizar código específico para um hardware Código do SPEAKEasy era “amarrado” ao DSP C40 (40MHz) Em 1995 o Pentium Pro rodava a 200 MHz Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 15 SDRs hoje (1/2) Um PC realiza o processamento de sinais O Front-End de rádio é conectado ao PC USB, Ethernet, PCI-Express Toda a preparação do sinal é feita no Front-End Um software no PC substitui o hardware de processamento de sinais Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 16 SDRs hoje (2/2) Don't have $1500 to drop on a USRP? A Linux kernel developer has discovered that a Realtek digital TV tuner chip has an undocumented mode that turns it into a software-defined radio, with a frequency range of 64-1700MHz. The going rate for one of these USB devices can be as low as US$11. If you're unfamiliar with software-defined radio and have 20 minutes to spare, Balint Seeber has a great video introduction. Fonte: Slashdot http://hardware.slashdot.org/story/12/03/31/1914217/softwaredefined-radio-for-11 Projeto Open-Source para o módulo: http://sdr.osmocom.org/trac/ Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 17 SDRs amanhã Irradiar e receber sinais em qualquer frequência do espectro Obstáculos: De hardware: conseguir sintonizar em qualquer frequência do espectro, taxa de amostragem De Software: processamento, restrições de tempo, estabilidade Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 18 SDR + Rádio Cognitivo SDR oferecem a flexibilidade necessária para implementar um rádio cognitivo SDR é um habilitador para rádio cognitivo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 19 Os SDR mais utilizados OSSIE Sora Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 20 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 21 O que é o GNU Radio? É um SDR Gratuito e Open Source Licença GPL Muito utilizado na academia Disciplina de Comunicação de Dados Pesquisa Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 22 GNU Radio (1/2) Desenvolvimento iniciou em 2001 Disponível para *nix, Windows e iOS Códigos em C++ e Python C++: Módulos de processamento de alto desempenho Python: Ligação de módulos. Usado pelo “usuário final” Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 23 GNU Radio (2/2) Não é necessário “programar” Ferramenta para “montagem” de um fluxo de processamento facilita o desenvolvimento de novos sistemas GNU Radio Companion – GRC GRC gera o Python final Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 24 Arquitetura Python é utilizado para a criação de fluxos de dados (FlowGraphs) C++ é usado para criar blocos de processamento de sinais Biblioteca atual é completa Python Desenvolvimento de FlowGraphs C++ Módulos de Processamento de Sinais Escalonador controla o fluxo das informações entre os blocos Escalonador Controla o Fluxo de Execução Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 25 GNU Radio + USRP Python SWIG Blocos de Processamento de Sinais em C++ Interface Gigabit Ethernet Front End de RF (USRP) Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 26 Os blocos do GNU Radio GNU Radio utiliza o conceito de “blocos” Cada bloco realiza uma função especifica Somente saídas Gerador de sinal Somente entradas Transmissão/Visualização N entradas e N saídas Processamento de sinais Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 27 Os blocos do GNU Radio Sources Processamento Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Sinks 28 FlowGraph (1/2) Quando blocos são conectados para realizar alguma tarefa temos um FlowGraph Todo FlowGraph possui 1+ Source(s) e 1+ Sink(s) Ex: Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 29 FlowGraph (2/2) FlowGraph são executados no computador Tudo é feito por software E se eu usar o USRP? Ainda executa no computador USRP atua como um source e/ou sink Falta pouco para as demos !!! Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 30 Contras GNU Radio não oferece garantias de desempenho Latência é o calcanhar de Aquiles Desenvolver blocos novos requer conhecimentos em comunicação de dados e programação Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 31 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 32 Instalação Ubuntu: Do repositório: apt-get install gnuradio Versão em desenvolvimento: wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio Windows: Guia em http://code.ettus.com/redmine/ettus/projects/uhd/wiki/GNURadio _Windows Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 33 O que é instalado? (1/3) /usr/local/share/gnuradio Exemplos /usr/local/share/doc/gnuradio-<versão> Documentação do código C++ /usr/local/lib/python2.7/dist-packages/gnuradio Fontes em Python Nada legíveis Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 34 O que é instalado? (2/3) Diversos FlowGraphs úteis uhd_fft: Analisador de espectro Úteis: uhd_find_devices: Encontra os dispositivos USRP na rede local gr_mod_tool: Cria os arquivos necessários para desenvolver um novo bloco Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 35 O que é instalado? (3/3) GNU Radio Companion Interface para a criação do FlowGraphs Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 36 GNU Radio Companion (1/3) Muito útil para criação rápida de FlowGraphs Blocos mostrados são descritos em XML /usr/local/share/gnuradio/grc/blocks/ GRC apenas gera o código em Python Ótimo para aprender a mecânica do código Python Arquivo top_block.py no mesmo diretório do .grc FlowGraphs limitados aos blocos que aparecem no menu de seleção Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 37 GNU Radio Companion (2/3) Criação do FlowGraph Blocos de processamento Mensagens Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 38 GNU Radio Companion (3/3) Blocos possuem diferentes tipos de dados de entrada e saída GRC identifica esses tipos por cores Dois blocos conectados devem utilizar o mesmo tipo de dado Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 39 Exemplo 1 Necessário quando source e sink são simulados Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 40 Exemplo 1 Necessário quando source e sink são simulados Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 41 Exemplo 1 Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 42 Show Time ! Geração de ondas senoidais Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 43 Desenvolvimento em Python #!/usr/bin/env python dst = audio.sink(sampling_rate) from gnuradio import gr tb.connect( sin_350, (dst, 0) ) from gnuradio import audio tb.connect( sin_440, (dst, 1) ) if __name__ == '__main__': tb.start() sampling_rate = 48000 raw_input('Pression Enter para terminar') amplitude = 1 tb.stop() tb = gr.top_block() sin_350 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 350, amplitude) sin_440 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 440, amplitude) Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 44 Passo a passo (1/8) #!/usr/bin/env python Para o Sistema Operacional saber que o restante do arquivo é um código Python Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 45 Passo a passo (2/8) #!/usr/bin/env python from gnuradio import gr Importa os módulos necessários do GNU Radio from gnuradio import audio Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 46 Passo a passo (3/8) #!/usr/bin/env python from gnuradio import gr from gnuradio import audio Corpo principal do código sampling_rate é a amostragem da placa de som if __name__ == '__main__': sampling_rate = 48000 amplitude = 1 Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 47 Passo a passo (4/8) #!/usr/bin/env python Instância o FlowGraph from gnuradio import gr from gnuradio import audio if __name__ == '__main__': sampling_rate = 48000 amplitude = 1 tb = gr.top_block() Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 48 Passo a passo (5/8) #!/usr/bin/env python from gnuradio import gr Cria os dois blocos geradores de sinais from gnuradio import audio if __name__ == '__main__': sampling_rate = 48000 amplitude = 1 tb = gr.top_block() sin_350 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 350, amplitude) sin_440 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 440, amplitude) Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 49 Passo a passo (6/8) from gnuradio import gr Cria o sink como sendo a placa de som from gnuradio import audio if __name__ == '__main__': sampling_rate = 48000 amplitude = 1 tb = gr.top_block() sin_350 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 350, amplitude) sin_440 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 440, amplitude) dst = audio.sink(sampling_rate) Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 50 Passo a passo (6/8) if __name__ == '__main__': Conecta os blocos source e sink sampling_rate = 48000 amplitude = 1 tb = gr.top_block() sin_350 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 350, amplitude) sin_440 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 440, amplitude) dst = audio.sink(sampling_rate) tb.connect( sin_350, (dst, 0) ) tb.connect( sin_440, (dst, 1) ) Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 51 Passo a passo (6/8) amplitude = 1 Inicia o FlowGraph e espera uma tecla ser pressionada tb = gr.top_block() sin_350 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 350, amplitude) sin_440 = gr.sig_source_f(sampling_rate, gr.GR_SIN_WAVE, 440, amplitude) dst = audio.sink(sampling_rate) tb.connect( sin_350, (dst, 0) ) tb.connect( sin_440, (dst, 1) ) tb.start() raw_input('Pression Enter para terminar') tb.stop() Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 52 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 53 GNU RADIO + USRP USRP é representado por um bloco source e um bloco sink Configurações são simples Somente um FlowGraph pode acessar o mesmo USRP ao mesmo tempo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 54 GNU RADIO + USRP Usando apenas um USRP: Transmissão e recepção devem estar no mesmo FlowGraph Transmissão Recepção Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 55 GNU RADIO + USRP Source: Sink: Tipo do dado enviado/recebido pelo USRP. Geralmente usamos complex. Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 56 GNU RADIO + USRP Tipo do dado enviado/recebido pelo USRP Endereço IPusamos do equipamento. Geralmente complex. Não é obrigatório Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 57 GNU RADIO + USRP Endereço IP do equipamento. Não é obrigatório Taxa de amostragem do sinal. Mínimo de 195312 amostras/s Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 58 GNU RADIO + USRP Taxa de amostragem do sinal. Minimo de 195312 amostras/s Frequência de transmissão ou recepção Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 59 GNU RADIO + USRP Frequência de transmissão ou recepção. Ganho do sinal Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 60 GNU RADIO + USRP Antena. Ganho sinal Vazio =do Automático TX/RX = Antena 1 RX2 = Antena 2 Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 61 Show Time ! Modulação OFDM Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 62 Show Time ! Fonte dos Dados Processamento Codificação + Modulação Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Transmissão 63 Show Time ! Fonte dos Dados Processamento Codificação + Modulação Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Transmissão 64 Um detector de energia simples Detector de energia Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 65 Um detector de energia simples S/P FFT Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Detector de energia 66 Roteiro ① Software Defined Radio ① O que é? ② Vantagens e Desvantagens ③ SDR hoje ② GNU Radio ① Visão Geral ② Instalação e Utilização ③ GNU Radio + USRP ③ Resumo Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 70 Resumo SDRs O que são ? Avanços GNU Radio Arquitetura Conceitos GNU Radio + USRP2 Demonstrações Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 71 Conclusões SDR é perfeito para desenvolvimento de novos protocolos de camada física SDR reduz o tempo de desenvolvimento de produtos SDR possibilita o desenvolvimento de Rádios Cognitivos Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 72 Obrigado! Perguntas? Maicon Kist [email protected] Leonardo Roveda Faganello [email protected] http://labcom.inf.ufrgs.br/dcg Curso de Extensão Semana Acadêmica 2013-1 Porto Alegre, 20 a 24 de maio de 2013 `