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 interruptor de palheta para acionar uma música tema quando uma porta for aberta. Usaremos um Raspberry Pi como controlador aqui, embora você possa usar quase qualquer outro microcontrolador Microcontroladores de $ 5: Arduino, Raspberry Pi Zero ou NodeMCU?Costumava acontecer que, se você quisesse adquirir um computador, teria que remortgage sua casa para pagar por isso. Agora, você pode conseguir um para um Abraham Lincoln. consulte Mais informação para este projeto usando o mesmo circuito. Aqui está uma demonstração.
Você precisará
Você provavelmente já possui todas as peças necessárias para fazer isso, exceto a chave reed, que custa cerca de US $ 2–3, ou pode obter um pacote de 5 por pouco mais de US $ 8 aqui.
- Um Raspberry Pi (qualquer modelo funcionará para isso).
- Resistor de 1 x 220 Ohm.
- 1 x resistor de 1K Ohm.
- Resistor de 3 x 10K Ohm.
- 1 x interruptor de palheta magnética.
- 1 x LED.
- 2 x interruptor de botão.
- Tábua de pão.
- Cabos de conexão.
- Alto-falante do 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 tábua de pão para ativá-lo em um atraso e interromper o programa.
Este projeto, embora seja feito principalmente por diversão, cobre o básico de muitas aplicações em Domótica DIY Guia de automação residencial com Raspberry Pi e ArduinoO mercado de automação residencial é inundado por sistemas de consumo caros, incompatíveis entre si e com instalação dispendiosa. Se você tem um Raspberry Pi e um Arduino, basicamente pode conseguir a mesma coisa em ... consulte Mais informação e também DIY segurança em casa À procura de uma solução DIY Sistema de Segurança Doméstica? Experimente um destesNa era da tecnologia digital e do hardware sempre conectado, a instalaçã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
Começando
Vamos começar fazendo o nosso circuito. Verifique se o seu Pi está sem energia e configure seu circuito assim:
O LED está conectado ao pino 7 em nosso pi. Os dois interruptores de botão estão conectados aos pinos 11 e 13 e o interruptor reed é conectado ao pino 15. Nosso poder vai para o pino 1 (3v3) e o pino 6 (Gnd).
Certifique-se de verificar se tudo está exatamente no lugar certo.
Enquanto você estiver testando este projeto, pode ajudar a manter o interruptor reed à sua frente, para que você possa ativá-lo ou desativá-lo facilmente. Nesse caso, o interruptor reed já estava instalado acima da porta. Quando o seu projeto estiver em funcionamento, você pode anexar temporariamente o interruptor à sua porta usando fita ou, se você estiver se sentindo mais confiante, poderá conectá-lo permanentemente para uso futuro projetos!
Conecte a saída de 3,5 mm do seu Pi ao seu sistema de alto-falantes. Depois que tudo estiver montado, deve ser algo como isto:
Observe que a tábua de pão usada aqui tem seus trilhos de poder 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 SSHO Raspberry Pi pode aceitar comandos SSH quando conectado a uma rede local (por Ethernet ou Wi-Fi), permitindo que você o configure com facilidade. Os benefícios do SSH vão além de perturbar a triagem diária ... consulte Mais informação pode ajudá-lo. Se você estiver usando o 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. Tipo sudo apt-get update
no terminal.
Agora podemos passar o Pi falando para o nosso circuito.
Testando nossa configuração
Para começar, vamos verificar nosso circuito usando um programa simples. Se você está confiante de que instalou tudo corretamente até agora, pode pular esta etapa, embora eu a recomende, pois isso pode evitar dores de cabeça posteriormente.
Se você nunca programou o Python antes e está se sentindo um pouco assustado, há várias ótimos sites Os 5 melhores sites para aprender programação em PythonDeseja aprender programação Python? Aqui estão as melhores maneiras de aprender Python online, muitas das quais são totalmente gratuitas. consulte Mais informação que pode ajudar você a começar.
No terminal, crie um novo script:
nano test.py
Depois de aberto, adicione esse código ao arquivo e pressione Ctrl-C para sair, seguindo a caixa de diálogo Salvar:
#Este código foi escrito para um artigo em www. MakeUseOf.com de Ian Buckley. RPi de importação. GPIO como GPIO. hora de importação. 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) enquanto True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1 ) E se (GPIO.input (13) == 1): imprimir ("Botão no GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): imprimir ("Botão no GPIO 15") .sono (1) GPIO.cleanup ()
Este código lê o valor dos botões e imprime na tela quando eles mudam. Os dois botões de pressão possuem resistores de pressão, e relatam ALTO quando pressionados. O interruptor do ímã reed informa ALTO sempre que o ímã que o acompanha estiver próximo.
Execute o programa:
python test.py
Você deve ver o LED acender e um relatório na tela quando você pressiona seus dois botões e puxa o ímã para longe do interruptor reed. Se você não obtiver feedback ao pressionar os botões, verifique seu circuito novamente e verifique se tudo está conectado como deveria. Quando terminar de testar, pressione CTRL-C para parar o programa.
Agora podemos montar um programa simples para configurar, acionar e redefinir nosso sensor de porta. Examinaremos o código em partes e explicaremos brevemente o que cada parte faz, mas se você quiser ver o código completo, role para baixo e veja-o apresentado na íntegra.
Precisamos começar importando alguns módulos:
Rpi de importação. GPIO como GPIO. import pygame.mixer. hora de importação.
Nós estaremos usando o Pygame módulo para tocar nossa música. Ele vem como padrão com o Raspbian Jessie e é uma ótima biblioteca para tudo o que você precisa para criar jogos em Python e muitos outros projetos surpreendentes Como criar um bot do Raspberry Pi no TwitterO Twitter é o maior repositório mundial de mensagens curtas de pessoas sem nada a dizer - e agora você também pode contribuir para esse projeto épico com um bot automatizado do Twitter, desenvolvido por seu Framboesa... consulte Mais informação .
Nós vamos usar uma variável chamada ativo para decidir se nosso sistema está ativo ou não. Vamos definir algumas funções que farão isso por nós:
def activeSetup (): ativo global ativo = 0 print ("Atualmente não ativo") def activeState (): ativo global se ativo == 1: ativo = 0 GPIO.output (7, GPIO.LOW) print ("Atualmente não está ativo") elif active == 0: print ("Ativando em 10 segundos") para x no intervalo (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) ativo = 1 GPIO.output (7, GPIO.HIGH) print ("Atualmente Ativo ") else: return.
A primeira função aqui cria uma variável chamada ativoe define como 0. Atribuir ao estado ativo um valor numérico significa que, se você planeja ampliar seu programa posteriormente para ter diferentes estados ativos, pode numerá-los de acordo. Embora possa não ser a melhor programação em Python do mundo, será mais que suficiente para este projeto.
A segunda função, quando chamada, verifica se o sistema está ativo (ou ativo == 1). Se estiver, define o sistema para não ativo (ativo == 0), apaga o LED e imprime no console. Caso contrário, é exibida uma contagem regressiva de 10 segundos para sair da sala em que o LED pisca, antes de permanecer ligado para mostrar que o sistema está ativo.
Agora podemos definir uma função que assistirá nosso ímã de palheta mudar:
def watchDoor (): reprodução global reprodução = Falso enquanto Verdadeiro: se ativo == 1 e GPIO.input (15) == 1 e reprodução == Falso: reprodução = Verdadeiro pygame.mixer.music.play () if GPIO.input (13) == 1: print ("Botão Parar pressionado: Sair") pygame.mixer.music.stop () interrompe se GPIO.input (11) == 1: activeState () time.sleep (0.5)
Criamos outra variável aqui chamada jogando - existe simplesmente para parar o programa que tenta iniciar a reprodução repetidamente quando o interruptor é acionado.
Dentro do loop while, a primeira instrução if inicia a música (que ainda não temos, mas não se preocupe, está chegando). Ele só permite que a música comece se o sistema estiver ativo, o interruptor reed estiver aberto e ainda não estiver sendo reproduzido.
A segunda declaração if é para o nosso botão de saída. Se este botão for pressionado, a música para e o programa sai.
A terceira instrução if é para alternar se o sistema está ativo ou não. o hora de dormir A função aqui é impedir a leitura múltipla de botões quando pressionado.
Agora é hora de configurar os pinos de Pi.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, inicial = 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, isso deve ser familiar para você. o inicial = GPIO.LOW O argumento na configuração do pino 7 o define para baixo assim que é inicializado.
Agora podemos chamar nossa função que definirá o sistema para não estar ativo quando o programa for iniciado.
activeSetup ()
Maestro da música!
Neste ponto, devemos começar a pensar na música a 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á conhece a música de Kevin MacLeod. Permite baixar uma música fantástica por ele chamada Maestro com um só olho. Isso, juntamente com grande parte da música em seu site, está licenciado sob Creative Commons, e existem muitas boas razões O que é Creative Commons e uso não comercial?O que é o Creative Commons? O que significa "uso não comercial"? Aprenda sobre as licenças Creative Commons e como elas funcionam. consulte Mais informação para usar o conteúdo com essas licenças para seus projetos.
De volta ao nosso código, precisamos iniciar o misturador Pygame e carregar nossa música.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro caolho.mp3" pygame.mixer.music.load (nome) print ("Faixa carregada -" + str (nome))
A primeira linha deste bloco inicia o Pygame misturador. O último argumento entre colchetes é o buffer que controla a latência na qual o som é reproduzido. Se você tiver uma reprodução instável mais tarde, quando sua música for reproduzida, tente aumentar esse número para 4096. As configurações como elas funcionam sem problemas em um Pi 3.
Se você baixou seu arquivo de música em um diretório diferente do seu door.py programa, você precisará fornecer o caminho completo dentro dos colchetes ao definir a variável de nome.
Agora, tudo o que resta a fazer é configurar um loop que aguarda a ativação ou desativação do programa.
while True: if (GPIO.input (13) == 1): print ("Botão Parar pressionado: Sair") 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 qualquer botão e fecha ou altera o estado para ativo de acordo. Se o estado de ativo se tornar 1, então o watchDoor A função que definimos anteriormente é chamada e na próxima vez que a porta abrir, nossa música tocará. Também chamamos GPIO.cleanup () redefinir nossos pinos na saída, o que geralmente é uma boa prática para toda a programação no Raspberry Pi.
É tudo o que precisamos fazer para colocar esse projeto em funcionamento. Aqui está o código completo:
RPi de importação. GPIO como GPIO. import pygame.mixer. tempo de importação def activeSetup (): ativo global ativo = 0 print ("Atualmente não ativo") def activeState (): ativo global se ativo == 1: ativo = 0 GPIO.output (7, GPIO.LOW) print ("Atualmente Não Ativo ") elif ativo == 0: print (" Ativando em 10 segundos ") para x no intervalo (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) ativo = 1 GPIO.output (7, GPIO.HIGH) print ("Atualmente ativo") else: return def watchDoor (): reprodução global tocando = Falso enquanto Verdadeiro: se ativo == 1 e GPIO.input (15) == 1 e reproduzindo == Falso: jogando = Verdadeiro pygame.mixer.music.play () if GPIO.input (13) == 1: print ("Botão Parar pressionado: Sair") pygame.mixer.music.stop () interrompe se GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, inicial = 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 = "Maestro caolho.mp3" pygame.mixer.music.load (nome) print ("Faixa carregada -" + str (nome)) enquanto True: if (GPIO.input (13) == 1): print ("Botão de parada pressionado: Saindo") 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, lembre-se de que ainda precisará fazer o download da música no seu Pi para que ele funcione!
Agora você deve ter uma melodia funcional de boas-vindas em casa! Anexe o interruptor de palheta à sua porta e experimente. Dançar embaraçoso é opcional, mas recomendado.
Este projeto cobriu o básico de muitas formas de monitoramento doméstico, segurança e automação, e espero que tenha sido divertido também!
Agora que você chegou até aqui, por que parar por 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 PiSe você achou que o Arduino era legal, espere até conseguir um Raspberry Pi - essas coisas são incríveis. Além de ser um computador totalmente funcional, eles também têm um ... consulte Mais informação e que outros objetos sejam acionados na entrada. Se você possui um sistema de música doméstica, por que não ter uma música tema para todos os cômodos?
Você criará sua própria mensagem pessoal de boas-vindas? Você foi inventivo com interruptores de palheta em sua casa de outras maneiras? Nesse caso, deixe um comentário sobre o que você está planejando ou já fez na seção de comentários abaixo!
Ian Buckley é jornalista freelancer, músico, intérprete e produtor de vídeo que vive em Berlim, Alemanha. Quando ele não está escrevendo ou no palco, está mexendo com eletrônicos ou códigos DIY, na esperança de se tornar um cientista louco.