Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Olá a todos, Neste instrutível, explico como fiz um gravador de playback usando Raspberry Pi. O dispositivo é um Raspberry Pi modelo B +, com 7 botões na parte superior, um alto-falante conectado a uma das portas usb do Pi e um microfone conectado a outras portas usb. Cada botão está associado a um som, podendo tocar 7 sons diferentes. Os sons são reproduzidos após um breve pressionamento do botão. Para gravar um novo som, basta apertar o botão por mais de 1 segundo, gravar após o bipe e soltar o botão ao final da gravação. Não existe nada mais simples do que isso!
Etapa 1: Material necessário
Para este projeto eu precisava:
- Um Raspberry Pi modelo B + e cartão micro SD - 29,95 $ + 9,95 $
- Uma caixa de plástico Raspberry Pi - 7,95 $
- Alto-falantes USB - 12,50 $
- Um microfone USB - 5,95 $
- Uma placa perma-proto de meio tamanho - 4,50 $
- 7 botões momentâneos - 2,50 $
Eu também precisava de:
- Algum fio elétrico
- Cabeçalhos femininos de ângulo reto
- Um pouco de madeira, tinta preta e cola para a caixa do botão
- Um ferro de solda e solda
Etapa 2: os botões
Os botões usados são bastante altos (6 mm) para que possam atravessar a espessura da caixa.
Coloquei meus 7 botões em uma placa perma-proto, que é como uma placa de ensaio, exceto que os componentes são soldados nela. Isso é mais robusto do que uma placa de ensaio e mais barato do que imprimir um pcb. Cada botão se conecta a um GPIO no Raspberry Pi. Não tenho resistores aqui, pois o Pi já tem resistores pull-up / down internos que serão configurados no programa. Neste caso, configurei-os para pull-up (consulte o programa abaixo).
Os botões são colocados a cada 4 linhas ou a cada 0,4 pol.
Etapa 3: o estojo de botões
Fiz um case bem simples para os botões, com placas de compensado e tarugo quadrado de madeira. O tamanho do pino tem que ser grande o suficiente para conter a base do botão e a placa, mas pequeno o suficiente para deixar a parte superior do botão fora do case. Usei um pino de 1/4 x 1/4 de polegada.
Depois de verificar se a placa se encaixa na caixa, os pinos-guia são colados na folha de base. Em seguida, furos são feitos na folha superior (a placa pode ser usada para fazer marcas com precisão a cada 0,4 polegadas). Todas as partes de madeira são pintadas, o tabuleiro colocado na caixa e a folha de cima colada por cima.
Etapa 4: The Raspberry Pi
Eu não queria soldar os fios diretamente no Pi, caso eu queira usar o Pi para outra coisa no futuro. Portanto, soldei os fios em conectores fêmeas de ângulo reto e conectei os conectores no Pi.
Os GPIOs usados são 21, 26, 20, 19, 13, 6 e 5. O pino de aterramento também é usado.
O microfone e o alto-falante são simplesmente plugados em 2 das 4 portas usb.
O Pi é alimentado através da saída micro-usb
Etapa 5: Programação
Para programar o Pi, eu o conectei à internet usando um cabo ethernet e o controlei de um computador remoto usando o visualizador VNC. No entanto, você não pode usar essa configuração na primeira vez que se conectar ao Pi, porque o sistema operacional ainda não está instalado e o SSH não está desabilitado. Portanto, você precisará conectar uma tela, teclado e mouse, pelo menos na primeira vez.
Foi bastante complicado encontrar os comandos para gravar e reproduzir um som na placa de som certa. Estes são os comandos que funcionaram para mim:
-
aplay -D plughw: CARD = Device_1, DEV = 0 0.wav
Joga 0.wav
-
arecord 0.wav -D sysdefault: CARD = 1 -f cd -d 20
Grava por no máximo 20 segundos no arquivo 0.wav, com qualidade de cd
Os arquivos de som estão localizados no diretório padrão (/ home / pi). Também é necessário um arquivo de som para o bipe, colocado no diretório padrão e chamado beep.wav.
O próprio código python é o seguinte:
código python para um gravador de reprodução Raspberry Pi
importar RPi. GPIO como GPIO |
tempo de importação |
importar os |
#variables: |
butPressed = [True, True, True, True, True, True, True] #se o botão i for pressionado, então butPressed é False |
pino = [26, 19, 13, 6, 5, 21, 20] # pinos GPIO de cada botão |
recordBool = False # True se um registro estiver em andamento |
GPIO.setmode (GPIO. BCM) |
para i no intervalo (0, 7): |
GPIO.setup (pin , GPIO. IN, pull_up_down = GPIO. PUD_UP) # define os resistores internos de Pi para pull-up |
enquanto verdadeiro: |
para i no intervalo (0, 7): |
butPressed = GPIO.input (pin ) # verifica se um botão foi pressionado |
if butPressed == False: #se um botão for pressionado |
previousTime = time.time () |
while butPressed == False and recordBool == False: |
butPressed = GPIO.input (pin ) |
if time.time () - previousTime> 1.0: #se o botão for pressionado por mais de um segundo, então recordBool é True |
recordBool = True |
if recordBool == True: #if recordBool for True, ele reproduz um som de bipe e, em seguida, grava |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0 beep.wav") |
os.system ("arecord% d.wav -D sysdefault: CARD = 1 -f cd -d 20 &"% i) #records por no máximo 20 segundos no arquivo i.wav, com qualidade de cd |
enquanto butPressed == False: |
butPressed = GPIO.input (pin ) |
os.system ("pkill -9 arecord") # o registro é interrompido quando o botão é solto ou após 20 segundos |
recordBool = False |
else: #if recordBool for False, ele reproduz som i.wav |
os.system ("aplay -D plughw: CARD = Device_1, DEV = 0% d.wav"% i) |
tempo.sono (0,1) |
ver gravador rawPlayback hospedado com ❤ por GitHub
Etapa 6: execute o script Python em cada inicialização
Para executar o script python na inicialização de cada Pi, as seguintes linhas são colocadas em um arquivo chamado playback.desktop na pasta /home/pi/.config/autostart/
executa o playback.py na inicialização do Raspberry Pi
[Desktop Entry] |
Codificação = UTF-8 |
Type = Application |
Nome = Reprodução |
Comment = Este é um aplicativo de reprodução |
Exec = python /home/pi/playback.py |
StartupNotify = false |
Terminal = verdadeiro |
Oculto = falso |
visualizar rawplayback.desktop hospedado com ❤ por GitHub
Etapa 7: nota final
Por favor, diga-me o que você acha deste projeto na seção de comentários, deixe-me saber de suas recomendações e vote em mim no concurso Raspberry Pi se você gostou.
Estou ansioso para ler você!