Tocar seu próprio tema Tune quando você entra na sala com Raspberry Pi

Você já quis chegar em casa para uma recepção pessoal? Neste projeto simples do Raspberry Pi, usaremos uma chave reed para acionar uma música quando uma porta for aberta.

Você já quis chegar em casa para uma recepção pessoal?  Neste projeto simples do Raspberry Pi, usaremos uma chave reed para acionar uma música quando uma porta for aberta.
Propaganda

Você já quis chegar em casa para uma recepção pessoal? Com um Raspberry Pi e alguns componentes simples, você pode! Neste projeto simples, usaremos um switch reed para acionar uma música de tema quando uma porta for aberta. Nós estaremos usando um Raspberry Pi como controlador aqui, embora você possa usar quase qualquer outro microcontrolador de US $ 5 Microcontroladores: Arduino, Raspberry Pi Zero, ou NodeMCU? Microcontroladores de US $ 5: Arduino, Raspberry Pi Zero ou NodeMCU? Costumava ser o caso de que se você quisesse obter um computador, teria de remortgage sua casa para pagar por ele. Agora, você pode obter um para um Abraham Lincoln. Leia mais para este projeto usando o mesmo circuito. Aqui está uma demonstração.

Você vai precisar

Você provavelmente já possuirá todas as partes necessárias para fazer isso, exceto a chave reed, que é de cerca de US $ 2-3, ou você pode obter um pacote de 5 para pouco mais de US $ 8 aqui.

  • Um Raspberry Pi (qualquer modelo funcionará para isso).
  • Resistor de 1 x 220 ohms.
  • 1 x resistor de 1K Ohm.
  • Resistência de 3 x 10K Ohm.
  • 1 x chave magnética.
  • 1 x LED.
  • 2 x botão de pressão.
  • Tábua de pão.
  • Cabos de ligação.
  • Alto-falante de computador ou similar.

Usaremos o Raspberry Pi para tocar uma música quando a sala for inserida e projetar um circuito com botões na nossa placa de montagem para ativá-lo em um atraso e parar o programa.

Este projeto, embora seja feito principalmente para se divertir, cobre o básico para muitas aplicações em automação residencial DIY Home Automation Guide Com Raspberry Pi e Arduino Home Automation Guide Com Raspberry Pi e Arduino O mercado de automação residencial é inundado com sistemas de consumo caros, incompatíveis com um outro e caro para instalar. Se você tem um Raspberry Pi e um Arduino, basicamente você pode conseguir a mesma coisa em ... Leia mais e também DIY segurança home Procurando por uma solução DIY Home Security System? Tente um desses procurando uma solução de sistema de segurança Home DIY? Experimente um desses Na era da tecnologia digital e do hardware sempre conectado, a configuração de um sistema de segurança doméstica deve transcender a arte de colocar uma caixa em forma de alarme na parede. consulte Mais informação

Framboesa Pi 3 Modelo B Motherboard Framboesa Pi 3 Modelo B Motherboard Compre agora Na Amazon $ 29.99

Começando

Vamos começar fazendo nosso circuito. Certifique-se de que seu Pi esteja sem energia e configure seu circuito assim:

Fritzing anotou HQ

O LED está conectado ao pino 7 no nosso pi. As duas chaves de botão estão presas aos pinos 11 e 13, e a chave reed se conecta ao pino 15. Nossa energia vai para o pino 1 (3v3) e o pino 6 (Gnd).

diagrama de pinos

Certifique-se de verificar se tudo está exatamente no lugar certo.

Enquanto você está testando este projeto, ele pode ajudar a manter seu switch reed na sua frente para que você possa facilmente ligá-lo ou desligá-lo. Neste caso, o interruptor reed já estava instalado acima da porta. Uma vez que seu projeto esteja em funcionamento, você pode conectar temporariamente o switch à sua porta usando fita adesiva ou, se estiver mais confiante, poderá anexá-lo permanentemente para uso em projetos futuros!

interruptor de reed instalado

Conecte a saída jack de 3, 5 mm do seu Pi ao seu sistema de alto-falantes. Uma vez que tudo esteja montado, deve ser algo como isto:

toda a configuração correta

Note que a protoboard usada aqui tem seus trilhos de energia ao contrário do diagrama de Fritzing acima.

Agora ligue seu Pi e acesse-o usando SSH para que possamos acessar o terminal. Se você não tem certeza de como fazer isso, este guia Configurando seu Raspberry Pi para uso sem cabeça com SSH Configurando seu Raspberry Pi para uso sem cabeça com SSH O Raspberry Pi pode aceitar comandos SSH quando conectado a uma rede local (por Ethernet ou Wi-Fi), permitindo-lhe configurá-lo facilmente. Os benefícios da SSH vão além de atrapalhar a triagem diária ... Leia Mais pode ajudá-lo. Se você estiver usando seu Raspberry Pi com um monitor, mouse e teclado, pule esta etapa e abra o terminal.

Antes de começar, vale a pena verificar se você está atualizado. Digite sudo apt-get update no terminal.

Agora podemos passar para o nosso Pi falando ao nosso circuito.

Testando nossa configuração

Para começar, vamos verificar nosso circuito usando um programa simples. Se você está confiante de que tudo está correto até agora, você pode pular este passo, embora eu o recomende, pois ele pode salvar as dores de cabeça mais tarde.

Se você nunca programou em Python antes e está se sentindo um pouco desanimado, há uma infinidade de ótimos sites Os 5 melhores sites para aprender programação em Python Os 5 melhores sites para aprender programação em Python Ao longo da última década, a linguagem de programação Python explodiu em popularidade entre os programadores em todas as áreas de codificação. De desenvolvedores da web a designers de videogames a criadores de ferramentas internos, muitas pessoas já passaram ... Leia mais para ajudar você a começar.

No terminal, crie um novo script:

 nano test.py 

Uma vez aberto, adicione este código ao arquivo e pressione Ctrl-C para sair, seguindo o diálogo de salvar:

 #This code was written for an article on www.MakeUseOf.com by Ian Buckley. import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT) GPIO.setup(11, GPIO.IN) GPIO.setup(13, GPIO.IN) GPIO.setup(15, GPIO.IN) while True: GPIO.output(7, GPIO.HIGH) if (GPIO.input(11)==1): print("Button on GPIO 11") time.sleep(1) if (GPIO.input(13)==1): print("Button on GPIO 13") time.sleep(1) if (GPIO.input(15)==1): print("Button on GPIO 15") time.sleep(1) GPIO.cleanup() 

Este código lê o valor dos botões e imprime na tela quando eles mudam. Os dois botões têm resistores pull down, então eles reportam HIGH quando pressionados. O interruptor magnético reed reporta HIGH sempre que o imã que o acompanha está próximo.

comuta

Execute o programa:

 python test.py 

Você deve ver o LED aceso e um relatório na tela quando você pressiona os dois botões e puxa o ímã para longe do seu interruptor reed. Se você não está recebendo feedback quando pressiona os botões, verifique seu circuito novamente e verifique se tudo está conectado como deveria estar. Quando terminar o teste, pressione CTRL-C para interromper o programa.

Agora podemos montar um programa simples para definir, acionar e redefinir nosso sensor de porta. Vamos passar o código em partes e explicar brevemente o que cada parte faz, mas se você quiser ver o código completo, role para baixo para vê-lo apresentado na íntegra.

Precisamos começar importando alguns módulos:

 import Rpi.GPIO as GPIO import pygame.mixer import time 

Nós estaremos usando o módulo Pygame para tocar nossa música. Ele vem como padrão com Jessie Raspbian, e é uma ótima biblioteca para tudo que você precisa para fazer jogos Python e muitos outros projetos surpreendentes Como construir um bot Raspberry Pi Twitter Como construir um Raspberry Pi Twitter Twitter é o maior repositório mundial de curto mensagens de pessoas sem nada a dizer - e agora você também pode contribuir para esse projeto épico com um bot automatizado do Twitter, alimentado por seu Raspberry ... Leia Mais.

Vamos usar uma variável chamada active para decidir se o nosso sistema está ativo ou não. Vamos definir algumas funções que farão isso por nós:

 def activeSetup(): global active active=0 print("Currently Not Active") def activeState(): global active if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(0, 10): GPIO.output(7, GPIO.HIGH) time.sleep(0.5) GPIO.output(7, GPIO.LOW) time.sleep(0.5) active=1 GPIO.output(7, GPIO.HIGH) print("Currently Active") else: return 

A primeira função aqui cria uma variável denominada ativa e a define como 0. Fornecer ao estado ativo um valor numérico significa que, se você planejar escalar posteriormente seu programa para ter estados ativos diferentes, poderá numerá-los de acordo. Embora possa não ser a melhor programação em Python do mundo, será mais do que suficiente para este projeto.

A segunda função, quando chamada, verifica se o sistema está ativo (ou ativo == 1 ). Se estiver, ele configura o sistema para não ativo ( ativo == 0 ), desliga o LED e imprime no console. Se não estiver, você receberá uma contagem regressiva de 10 segundos para sair da sala em que o LED pisca, antes de continuar a mostrar que o sistema está ativo.

Agora podemos definir uma função que irá observar a nossa chave magnética de palheta:

 def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if GPIO.input(11)==1: activeState() time.sleep(0.5) 

Criamos outra variável aqui chamada de reprodução - esta é apenas para parar o programa tentando começar a tocar repetidamente quando o interruptor é acionado.

Dentro do loop while, a primeira instrução if inicia a música (que ainda não temos nenhum, mas não se preocupe, está chegando). Ele só permite que a música inicie se o sistema estiver ativo, a chave reed estiver aberta e ela não estiver sendo reproduzida.

A segunda declaração if é para o nosso botão de saída. Se este botão for pressionado, a música pára e o programa sai.

A terceira declaração if é para alternar se o sistema está ativo ou não. A função time.sleep aqui é para evitar várias leituras de botões quando é pressionada.

Agora é hora de montar os pinos de Pi.

 GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(11, GPIO.IN) GPIO.setup(13, GPIO.IN) GPIO.setup(15, GPIO.IN) 

Se você já fez alguma experiência com o Pi antes que isso seja familiar para você. O argumento inicial = GPIO.LOW na configuração do pino 7 o define como baixo assim que é inicializado.

Agora podemos chamar nossa função que irá definir o sistema para não estar ativo quando o programa for iniciado.

 activeSetup() 

Music Maestro!

Neste ponto, devemos começar a pensar sobre a música para tocar. Você pode escolher qualquer arquivo de música que desejar, mas escolheremos algo disponível para todos por enquanto. Se você assiste ao YouTube, provavelmente já está familiarizado com a música de Kevin MacLeod. Vamos baixar uma música fantástica por ele chamada "Maestro de um olho". Isto, juntamente com grande parte da música em seu site, é licenciado sob Creative Commons, e há muitas boas razões O que é Creative Commons, e você deve usá-lo? O que é Creative Commons, e você deve usá-lo? O Creative Commons é um conjunto de licenças que lhe dão automaticamente permissão para fazer várias coisas, como reutilizar e distribuir o conteúdo. Vamos descobrir mais sobre isso e como usá-lo. Leia mais para usar conteúdo com essas licenças para seus projetos.

De volta ao nosso código, precisamos iniciar o mixer do PyGame e carregar nossa música.

 pygame.mixer.init(44100, -16, 2, 1024) pygame.mixer.music.set_volume(1.0) name = "One-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) 

A primeira linha deste bloco inicia o misturador Pygame . O último argumento entre parênteses é o buffer que controla a latência na qual o som é tocado. Se você tiver uma reprodução instável mais tarde quando a música tocar, tente aumentar esse número para 4096. As configurações como elas funcionam sem problema em um Pi 3.

Se você baixou o seu arquivo de música em um diretório diferente para o seu programa door.py, você precisará fornecer o caminho completo dentro dos colchetes quando você definir a variável de nome.

Agora, tudo o que resta a fazer é configurar um loop que aguarda que nós configuremos o programa ou saia dele.

 while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if(GPIO.input(11)==1): activeState() time.sleep(0.5) if(active==1): watchDoor() break GPIO.cleanup() 

Esse loop while espera por uma entrada de um dos botões e sai ou altera o estado para ativo de acordo. Se o estado de ativo se torna 1, então a função watchDoor que definimos anteriormente é chamada e na próxima vez que a porta abrir, nossa música será tocada. Também chamamos GPIO.cleanup () para redefinir nossos pinos na saída, o que geralmente é uma boa prática para toda a programação no Raspberry Pi.

Isso é tudo que precisamos fazer para colocar este projeto em funcionamento, aqui está o código completo:

 import RPi.GPIO as GPIO import pygame.mixer import time def activeSetup(): global active active=0 print("Currently Not Active") def activeState(): global active if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(0, 10): GPIO.output(7, GPIO.HIGH) time.sleep(0.5) GPIO.output(7, GPIO.LOW) time.sleep(0.5) active=1 GPIO.output(7, GPIO.HIGH) print("Currently Active") else: return def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if GPIO.input(11)==1: activeState() time.sleep(0.5) GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(11, GPIO.IN) GPIO.setup(13, GPIO.IN) GPIO.setup(15, GPIO.IN) activeSetup() pygame.mixer.init(44100, -16, 2, 1024) pygame.mixer.music.set_volume(1.0) name = "One-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if(GPIO.input(11)==1): activeState() time.sleep(0.5) if(active==1): watchDoor() break GPIO.cleanup() 

Se você rolou para baixo aqui para pegar o código completo imediatamente, tenha em mente que você ainda precisará baixar a música em seu Pi para que ele funcione!

Agora você deve ter um tema bem-vindo em casa! Anexar o seu interruptor de reed à sua porta e experimentá-lo. Dança embaraçosa é opcional mas recomendada.

Este projeto cobriu o básico para muitas formas de monitoramento residencial, segurança e automação, e espero que tenha sido divertido também!

Agora que você chegou até aqui, por que parar aí? Você pode adicionar mais faixas e fazer com que o programa escolha uma aleatoriamente em uma lista. Você poderia adicionar um relé Introdução ao GPIO em um Raspberry Pi Introdução ao GPIO em um Raspberry Pi Se você acha que o Arduino é legal, espere até chegar a um Raspberry Pi - essas coisas são incríveis. Além de ser um computador totalmente funcional, eles também têm um ... Read More e outros objetos podem ser acionados na entrada. Se você tem um sistema de música em casa, por que não ter uma música-tema para cada sala?

Você estará projetando sua própria mensagem pessoal de boas-vindas? Você foi inventivo com interruptores de reed em sua casa de outras maneiras? Em caso afirmativo, deixe um comentário sobre o que você está planejando ou já fez na seção de comentários abaixo!

In this article