Projetos básicos com Raspberry Pi 6

No primeiro artigo sobre o Raspberry Pi, nós mostramos como preparar a placa, instalamos o Raspbian, que é o sistema operacional do Raspberry, e criamos um primeiro programa para acionar um led (veja o artigo Primeiros passos com o Raspberry Pi). Nesse segundo post vamos continuar mostrando projetos básicos com Raspberry Pi usando algumas funções da GPIO da placa.

Raspberry Pi B+

Acionando leds no Raspberry utilizando push-button

No exemplo do primeiro post, usamos apenas uma porta do Raspberry para acionar um led, que piscava a intervalos de 0,5 segundos. Dessa vez, vamos utilizar 4 portas, sendo que 3 serão de saída, onde estarão ligados os leds, e 1 de entrada, onde vamos ligar um push-button.

O material que vamos utilizar é o seguinte:

  • 3 LEDs
  • 4 Resistores (3 limitadores de corrente para os leds e 1 como resistor pull-down)
  • 1 Push-button

Montando o circuito abaixo, teremos um esquema com 3 leds e 1 botão sendo que a cada toque no botão um led é aceso:

IMPORTANTE: O Raspberry trabalha com nível de sinal máximo de 3.3v, portanto tome cuidado para não ligar dispositivos/sensores que ultrapassem esse valor. Se necessário, utilize divisores de tensão ou circuitos auxiliares. Observe que para alimentação dos leds e conexão do push-button estamos utilizando o pino 1 (3.3v) do GPIO.

No programa temos uma variável contador, que é incrementada a cada toque no botão. O valor 1 aciona o led vermelho (porta 11 – GPIO17), o valor 2 aciona o led amarelo (porta 12 – GPIO18) e o valor 3 aciona o led verde (porta 13 – GPIO27). Quando o contador chega ao valor 4, todos os leds são apagados, a variável contador é zerada e o processo é reiniciado:

#Programa : Raspberry push button e leds
#Autor : MakerHero

contador = 0

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)

#Define os pinos dos leds como saida
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)

#Define o pino do botao como entrada
GPIO.setup(18, GPIO.IN)

#Apaga todos os leds
GPIO.output(11,0)
GPIO.output(12,0)
GPIO.output(13,0)

while(1):
    #Verifica se o botao foi pressionado
    if GPIO.input(18) == True:
        #Incrementa a variavel contador
        contador = contador +1
        time.sleep(0.5)
    #Caso contador = 1, acende o led vermelho
    if contador == 1:
        GPIO.output(11, 1)
        
    #Caso contador = 2, acende o led verde
    if contador == 2:
        GPIO.output(12, 1)

    #Caso contador = 3, acende o led amarelo
    if contador == 3:
        GPIO.output(13, 1)

    #Caso contador = 4, apaga todos os leds e
    #zera a variavel contador
    if contador == 4:
        GPIO.output( 11, 0)
        GPIO.output( 12, 0)
        GPIO.output( 13, 0)
        contador = 0

Música no Raspberry

Já sabemos que o Raspberry Pi possui uma saída de áudio. Nas placas versão B+ e versão 2, entretanto, o conector de áudio serve também como saída de vídeo composto. Apesar de parecer um plugue P2 comum (3,5 mm), ele é um plugue de 4 pólos, logo tem uma estrutura diferente:

Conector audio e video Raspberry

A boa notícia é que se você ligar um fone de ouvido comum com plugue P2 à essa saída, vai funcionar normalmente, mas é bom saber dessa dupla função do conector.

No nosso segundo projeto com Raspberry Pi, você pode utilizar o mesmo push-button que ligamos à porta 18 no circuito anterior. Aliás, vai ser a única ligação física no nosso Raspberry. O resto do procedimento será feito via software.

Nos nossos testes, precisamos antes de mais nada habilitar a saída de áudio do Raspberry, isso é feito utilizando comandos digitados no console do Raspbian (utilize o LXTerminal):

(obs : os comandos que começam com sudo são executados com direitos de administrador/superuser)

Instalando o update de firmware do Raspberry:

sudo apt-get install ca-certificates git-core binutils
wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update
sudo cp rpi-update /usr/local/bin/rpi-update

Atualizando o firmware:

sudo rpi-update

Instalando ALSA, MPLayer e MPG321:

sudo apt-get install mplayer mplayer-gui alsa-base alsa-utils mpg321

Adicionando o módulo de áudio ao kernel:

modprobe snd_bcm2835

Configurando a saída de áudio:

amixer cset numid=3 1

Reinicie o Raspberry para que as alterações tenham efeito:

Reboot

Faça o download ou copie um MP3 qualquer para a pasta /home/pi/musica do Raspberry Pi. Provavelmente você não terá essa pasta no seu Raspberry, então utilize o seguinte comando para criá-la:

mkdir /home/pi/musica

Depois de tudo isso, digite o seguinte programa no Python :

#Programa : Reproduzindo MP3 no Raspberry
#Autor : MakerHero

#Importa a biblioteca os, que permite
#chamar/executar programas externos
import os

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

#Define o pino do botao como entrada
GPIO.setup(18, GPIO.IN)

while(1):
    #Verifica se o botao foi pressionado
    if GPIO.input(18) == True:
       os.system("mpg321 /home/pi/musicas/minhamusica.mp3")

Pressione o push-button para que o MP3 minhamusica.mp3 (ou outro nome que você escolheu) contido na pasta /home/pi/musicas seja reproduzido.

Gostou de aprender alguns projetos básicos com Raspberry Pi? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

6 Comentários

  1. Boa noite !! Parabens pelo belo projeto. Eu sou um curioso em eletrônica, estou tentando ressuscitar um velho teclado da Casio, um CT 670, queria saber se poderia por acaso, usar a matriz das teclas do teclado que no caso é 11×6, e um pitch bend, que é um potenciometro, nas entradas GPIO do Raspiberry pra fazer um controlador midi ou um sintetizador. Ou seja, o Raspiberry poderia fazer o papel da placa mãe do teclado, que queimou, deixando ele como um sintetizador ou controlador midi ?

    ROSALVO DE OLIVEIRA PARADELA
  2. Quais resistores usar?

  3. Gostei instruçoes muito claras, funciona muito bem!

  4. Boa noite amigo. Excelente tutorial.

  5. Amigo como faço esse mesmo programa para o pic em C

  6. Boa noite amigo! Parabéns pelo tutorial e iniciativa.
    Estou precisando controlar servo motores via um raspberry B+, pensei em usar um shield para isso (http://www.dx.com/pt/p/16-way-servo-control-expansion-board-for-raspberry-pi-b-b-arduino-blue-340853#.VGk12ZPF-W5), você já teve alguma experiência com esse tipo de ligação/uso?