Uploaded by Victor Leoni Santos Soares

Relatório 2 - PDS (1)

advertisement
Prática 2 - Processamento Digital de Sinais
Interface GPIO do Raspberry Pi
Davi
Engenharia Elétrica
UFTM
Uberaba, Brasil
I.
1.
Mateus
Engenharia Elétrica
UFTM
Uberaba, Brasil
PARTE I
A INTERFACE GPIO
Vitor Hugo
Engenharia Elétrica
UFTM
Uberaba, Brasil
Victor Leoni Santos Soares
Engenharia Elétrica
UFTM
Uberaba, Brasil
A montagem do circuito foi seguindo as imagens
contidas no arquivo disponibilizado pelo professor. A seguir
a foto do circuito real montado:
As GPIOs (General Purpose Input/Output) do
Raspberry Pi 3 Model B são pinos que podem ser
programados para desempenhar diversas funções, desde
entrada/saída digital até comunicação com periféricos
externos. O Raspberry Pi 3 Model B é um computador de
placa única (SBC) muito popular, e suas GPIOs são uma das
características que o tornam versátil para projetos de
hardware.
Em seguida, utilizando a linguagem de programação
Python e a sua IDLE, elaborou-se dois códigos: um utilizando
a biblioteca RPi.GPIO e o outro utilizando a biblioteca
GPIOZero.
Para utilizar as bibliotecas citadas, é necessário fazer o
Nessa primeira parte do relatório foi proposto que
fosse montado um pequeno circuito envolvendo um led e um
botão a fim de entender o funcionamento dessas GPIOs.
Além disso, foi necessário a elaboração de um código que
fizesse o controle de que quando acionado o botão o led
acenderá.
download das mesmas. Os seguintes comandos para fazer os
downloads são:
$ sudo apt install rpi.gpio
$ sudo apt install python3-gpiozero
O primeiro código criado foi utilizando a biblioteca
RPi.GPIO. Essa biblioteca oferece um nível de abstração mais
baixo, exigindo que o programador lide diretamente com
conceitos de nível de hardware, como pinos e estados. Ela
pode ser mais complexa devido a necessidade de entender os
detalhes de baixo nível e a manipulação direta de pinos. A
seguir é mostrado o código e seu output:
Em comparação ao primeiro código apresentado, é
necessário informar apenas o pino a qual os componentes
O primeiro código se assemelha à programação usando a
Arduino IDE, é necessário setar os pinos, se são de entrada e
saída e os níveis lógicos desejados para fazer o controle. Além
disso, foi adicionado um tratamento de exceções apenas para
que o programa não fique em loop infinito, sendo utilizado o
CTRL+C para pará-lo.
estão ligados sem ter que setar se são de saída ou entrada. Essa
biblioteca já vem com funções pré-definidas, facilitando
muito para quem não tem afinidade com os conceitos de nível
de hardware. Além disso, não foi necessário fazer um
tratamento de exceções pois já há uma função que mantém o
programa funcionando e para pará-lo basta apertar o CTRL+C
também.
O segundo código foi desenvolvido com base na biblioteca
GPIOzero, a qual proporciona um nível de abstração mais alto,
simplificando a interação com as GPIOs através de objetos
2. CONFIGURANDO UM AMBIENTE VIRTUAL
Python, como o LED e o BUTTON. Como ela é mais
orientada a objetos e simplificada, permite uma abordagem
Para a criação de um ambiente virtual é necessário
mais intuitiva para criar e manipular os componentes. A seguir
criar um diretório novo (mkdir nome_diretorio) ou utilizar um
o código e seu output.
já criado. Após isso, basta dar os seguintes comandos:
$ cd lab2 #Mudar para o diretório lab2
$ python3 –m venv venv
$ source venv/bin/activate
$ pip install pip–upgrade
No caso apresentado acima, foi necessário fazer o
Feito isso, criou-se um ambiente virtual utilizando o
download da biblioteca RPi.GPIO no ambiente virtual para
diretório anteriormente informado. Para que os programas
que fosse possível a execução do código. Após isso, foi
consigam ser executados dentro desse ambiente virtual são
utilizado o comando $ pip freeze > requirements.txt para que
necessários algumas etapas:
ele criasse um arquivo contendo a biblioteca necessária,
•
•
O programa deve estar no mesmo diretório que o
porém esse processo poderia ser evitado se o arquivo contendo
ambiente virtual criado;
todas as dependências do programa fosse criado anteriormente
Se o código usa alguma biblioteca, é necessário fazer
e depois importado para o ambiente virtual.
o download da mesma dentro do ambiente virtual
Feito isso, o código irá rodar normalmente.
Com isso, o sistema cria um arquivo txt e adiciona ao
diretório pertencente ao ambiente virtual contendo todas as
dependências que o programa precisa para ser executado.
Em seguida, é pedido para comentar sobre a função
requeriments.txt. O requirements.txt em um ambiente virtual
é crucial para garantir consistência e replicabilidade no
desenvolvimento. Ele permite a reprodução fácil do ambiente
em diferentes máquinas, simplifica a configuração rápida,
controla versões, facilita a integração contínua, isola
ambientes virtuais e serve como documentação automática. O
requirements.txt assegura que o ambiente de produção seja
configurado com as mesmas versões de bibliotecas usadas
durante o desenvolvimento.
II. PARTE 2
1. SINAIS E SISTEMAS EM TEMPO DISCRETO.
Foi elaborado um código na linguagem Phyton
para simular o sinal discreto de função seguinte.
𝒙(𝒕) = 𝟏𝟎𝒔𝒆𝒏(𝟐𝟒𝟎𝟎𝝅𝒕 + 𝝅/𝟒)
Para uma frequência de amostragem de 12000 Hz
Para uma frequência de amostragem de 24.000 Hz
Foi feito a plotagem nas frequências de
amostragem sendo de 10 kHz, 12kHz e 24kHz.
Percebe-se que quanto maior a frequência de
Para uma frequência de amostragem de 10000 Hz
amostragem melhor, além disso, frequência abaixo de
determinado valor são inadequadas, pois há muita perda
Na figura acima, é possível perceber que
das características do sinal senoidal, o Teorema de
quando se faz a derivada do sinal de rampa, obtém-se um
Nyquist estabelece um valor mínimo para que o sinal
sinal constante, o que é esperado, pois a derivada de uma
seja reconhecível.
função do primeiro grau resulta em um valor constante.
2.
SISTEMAS
A. Diferenciador
A seguir, é visto o código em python que
implementa a função rampa discreta e realiza a
derivada da mesma e plota os respectivos
gráficos.
.
Após a alteração do intervalo de amostragem, o
comportamento do sinal se manteve o mesmo quando
comparado ao anterior.
B. Integrador
O código responsável por criar o sinal discreto
x[n] e realizar a sua integração é visto abaixo.
Após a mudança no intervalo das amostras e também
na quantidade de amostras, os sinais obtidos estão a seguir.
Assim, observa-se que o sinal se manteve com a
forma esperada, anteriormente vista. Esse resultado é
O resultado está apresentado na figura abaixo.
esperado, pois a alteração ocorreu somente na distância de
uma amostra a outra.
C.
Solução
iterativa
da
Equação
de
Diferenças
O código abaixo feito na linguagem de programação
python resolve de maneira interativa uma equação
diferença qualquer, bastando para isso inserir a
respectiva equação e a função de entrada x[n] no código
abaixo. Tal código está configurado para resolver a
equação diferença y[n] - 0.5*y[n-1] = x[n] com condição
inicial y[-1] = 16 e x[n] = n^2 do exemplo 3.8 do livro
do Lathi.
REFÊRENCIAS
[1] LATHI, B. P. Sinais e sistemas lineares. Porto Alegre:
Bookman, 2007.
Download