Avez-vous déjà voulu arriver à la maison pour un accueil personnalisé? Avec un Raspberry Pi et quelques composants simples, vous pouvez! Dans ce projet simple, nous allons utiliser un commutateur Reed pour déclencher une mélodie de thème quand une porte est ouverte. Nous allons utiliser un Raspberry Pi comme contrôleur ici, même si vous pouvez utiliser presque n'importe quel autre microcontrôleur $ 5 Microcontrôleurs: Arduino, Raspberry Pi Zero, ou NodeMCU? Microcontrôleurs $ 5: Arduino, Raspberry Pi Zero, ou NodeMCU? Auparavant, si vous vouliez avoir un ordinateur, vous deviez réhypothéquer votre maison pour payer. Maintenant, vous pouvez en obtenir un pour Abraham Lincoln. Lire la suite pour ce projet en utilisant le même circuit. Voici une démo.
Tu auras besoin de
Vous aurez probablement déjà toutes les pièces dont vous avez besoin pour faire cela, sauf le commutateur Reed, qui est d'environ 2-3 $, ou vous pouvez obtenir un paquet de 5 pour un peu plus de 8 $ ici.
- Un Raspberry Pi (tout modèle fonctionnera pour cela).
- 1 résistance de 220 Ohm.
- 1 x résistance ohm 1K.
- Résistance 3 x 10K Ohm.
- 1 x Interrupteur à lames magnétiques.
- 1 x LED.
- 2 x interrupteur à bouton-poussoir.
- Planche à pain.
- Câbles de branchement
- Haut-parleur d'ordinateur ou similaire.
Nous allons utiliser le Raspberry Pi pour jouer une chanson quand la pièce est entrée, et concevoir un circuit avec des boutons sur notre planche à pain pour l'activer en cas de retard, et arrêter le programme.
Ce projet, tout en étant fait principalement pour le plaisir, couvre les bases pour de nombreuses applications dans la domotique de bricolage Guide de domotique avec Raspberry Pi et Arduino Guide de domotique avec Raspberry Pi et Arduino Le marché de la domotique est inondé de un autre et coûteux à installer. Si vous avez un Raspberry Pi et un Arduino, vous pouvez essentiellement réaliser la même chose à ... Lire la suite et aussi la sécurité à la maison de bricolage Vous cherchez une solution de système de sécurité à domicile DIY? Essayez un de ceux-ci à la recherche d'une solution de système de sécurité à domicile DIY? Essayez l'un de ceux-ci À l'ère de la technologie numérique et du matériel toujours connecté, la mise en place d'un système de sécurité à domicile devrait transcender l'art de mettre une boîte en forme d'alarme sur le mur. Lire la suite
Raspberry Pi 3 Modèle B Carte mère Raspberry Pi 3 Modèle B Carte mère Acheter maintenant Sur Amazon $ 29.99
Commencer
Commençons par faire notre circuit. Assurez-vous que votre Pi n'est pas alimenté, et configurez votre circuit comme ceci:
La LED est connectée à la broche 7 sur notre pi. Les deux commutateurs à bouton-poussoir sont fixés aux broches 11 et 13, et le commutateur à lames se connecte à la broche 15. Notre puissance va à la broche 1 (3v3) et la broche 6 (Gnd).
Assurez-vous de vérifier que tout est exactement au bon endroit.
Pendant que vous testez ce projet, il peut être utile de garder votre interrupteur à lames en face de vous afin de pouvoir l'activer ou le désactiver facilement. Dans ce cas, le commutateur Reed était déjà installé au-dessus de la porte. Une fois que votre projet est opérationnel, vous pouvez soit attacher temporairement le commutateur à votre porte en utilisant du ruban adhésif, ou si vous vous sentez plus confiant, vous pouvez l'attacher de manière plus permanente pour une utilisation dans des projets futurs!
Connectez la sortie Jack 3, 5 mm de votre Pi à votre système d'enceintes. Une fois que tout est mis en place, il devrait ressembler à ceci:
Notez que la planche à pain utilisée ici a ses rails d'alimentation à l'inverse du diagramme de Fritzing ci-dessus.
Allumez votre Pi et accédez-y en utilisant SSH pour pouvoir accéder au terminal. Si vous n'êtes pas sûr de savoir comment faire, ce guide Configuration de votre Raspberry Pi pour une utilisation sans tête avec SSH Configuration de votre Raspberry Pi pour une utilisation sans tête avec SSH Le Raspberry Pi peut accepter les commandes SSH lorsqu'il est connecté à un réseau local (soit par Ethernet ou Wi-Fi), vous permettant de le configurer facilement. Les avantages de SSH vont au-delà du dépistage quotidien ... Read More peut vous aider. Si vous utilisez votre Raspberry Pi avec un moniteur, une souris et un clavier, ignorez cette étape et ouvrez le terminal.
Avant de commencer, il vaut la peine de vérifier si vous êtes à jour. Tapez sudo apt-get update
à sudo apt-get update
dans le terminal.
Maintenant, nous pouvons continuer à faire parler notre Pi à notre circuit.
Test de notre installation
Pour commencer, vérifions notre circuit en utilisant un programme simple. Si vous êtes sûr que vous avez tout branché jusqu'à présent, vous pouvez passer cette étape, bien que je le recommande car cela peut vous sauver des maux de tête plus tard.
Si vous n'avez jamais programmé en Python auparavant et que vous vous sentez un peu découragé, il existe de nombreux sites Web. Les 5 meilleurs sites Web pour apprendre la programmation Python Les 5 meilleurs sites Web pour apprendre la programmation Python Au cours de la dernière décennie, le langage de programmation Python a explosé en popularité parmi les programmeurs dans tous les domaines du codage. Des développeurs Web aux concepteurs de jeux vidéo en passant par les créateurs d'outils internes, de nombreuses personnes sont tombées ... Lisez plus qui peut vous aider à démarrer.
Dans le terminal, créez un nouveau script:
nano test.py
Une fois ouvert, ajoutez ce code au fichier et appuyez sur Ctrl-C pour quitter, en suivant la boîte de dialogue de sauvegarde:
#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()
Ce code lit la valeur des boutons et imprime à l'écran lorsqu'ils changent. Les deux boutons-poussoirs ont des résistances de tirage, de sorte qu'ils signalent HAUT lorsqu'ils sont pressés. L'interrupteur à aimant Reed signale HIGH chaque fois que l'aimant qui l'accompagne est fermé.
Exécutez le programme:
python test.py
Vous devriez voir la DEL s'allumer, et un rapport à l'écran lorsque vous appuyez sur vos deux boutons et tirer l'aimant loin de votre interrupteur à lames. Si vous n'obtenez pas de retour lorsque vous appuyez sur les boutons, vérifiez à nouveau les circuits et assurez-vous que tout est connecté comme il se doit. Lorsque vous avez terminé le test, appuyez sur CTRL-C pour arrêter le programme.
Maintenant, nous pouvons mettre en place un programme simple pour régler, déclencher et réinitialiser notre capteur de porte. Nous allons parcourir le code en parties et expliquer brièvement ce que fait chaque partie, mais si vous voulez voir le code complet, faites défiler vers le bas pour le voir en entier.
Nous devons commencer par importer certains modules:
import Rpi.GPIO as GPIO import pygame.mixer import time
Nous utiliserons le module Pygame pour jouer notre musique. Il est livré en standard avec Raspbian Jessie, et est une excellente bibliothèque pour tout ce dont vous avez besoin pour faire des jeux Python et beaucoup d'autres projets étonnants. Comment construire un robot Raspberry Pi Twitter Bot est le plus grand référentiel mondial de court des messages de personnes qui n'ont rien à dire - et maintenant vous aussi pouvez contribuer à ce projet épique avec un robot Twitter automatisé, alimenté par votre Raspberry ... Lire la suite.
Nous allons utiliser une variable appelée active pour décider si notre système est actif ou non. Laissez définir quelques fonctions qui feront cela pour nous:
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
La première fonction crée ici une variable nommée active et la définit sur 0. Attribuer une valeur numérique à l'état actif signifie que si vous prévoyez d'étendre ultérieurement votre programme pour avoir différents états actifs, vous pouvez les numéroter en conséquence. Bien que ce ne soit pas la meilleure programmation Python au monde, elle sera plus que suffisante pour ce projet.
La deuxième fonction, lorsqu'elle est appelée, vérifie si le système est actif (ou actif == 1 ). Si c'est le cas, le système est désactivé ( active == 0 ), éteint la LED et imprime sur la console. Si ce n'est pas le cas, il vous faudra compter un compte à rebours de 10 secondes pour quitter la pièce dans laquelle la LED clignote, avant de rester allumé pour indiquer que le système est actif.
Maintenant, nous pouvons définir une fonction qui va regarder notre interrupteur magnétique Reed:
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)
Nous créons ici une autre variable appelée play - c'est là simplement pour arrêter le programme essayant de recommencer à jouer quand le switch est déclenché.
Dans la boucle while, la première instruction if démarre la musique (que nous n'avons pas encore, mais ne vous inquiétez pas, elle arrive). Il ne fait que démarrer la musique si le système est actif, si le commutateur reed est ouvert et s'il n'est pas déjà en cours de lecture.
La seconde instruction if est pour notre bouton de sortie. Si vous appuyez sur ce bouton, la musique s'arrête et le programme se termine.
La troisième instruction if permet de basculer si le système est actif ou non. La fonction time.sleep permet d'éviter les lectures de plusieurs boutons quand on appuie dessus.
Il est maintenant temps de mettre en place les broches 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)
Si vous avez fait des expériences avec le Pi avant que cela ne vous soit familier. L'argument initial = GPIO.LOW dans l'installation de la broche 7 le place à bas dès qu'il est initialisé.
Maintenant, nous pouvons appeler notre fonction qui permettra au système de ne pas être actif lorsque le programme démarre.
activeSetup()
Maestro de musique!
À ce stade, nous devrions commencer à penser à la musique à jouer. Vous pouvez choisir n'importe quel fichier musical, mais nous allons choisir quelque chose de disponible pour tout le monde pour l'instant. Si vous regardez YouTube, vous connaissez probablement déjà la musique de Kevin MacLeod. Permet de télécharger un air fantastique par lui appelé "One-eyed Maestro". Ceci, avec une grande partie de la musique sur son site, est sous licence Creative Commons, et il y a beaucoup de bonnes raisons Qu'est-ce que Creative Commons, et devriez-vous l'utiliser? Qu'est-ce que Creative Commons, et devriez-vous l'utiliser? Creative Commons est un ensemble de licences qui vous donne automatiquement la permission de faire diverses choses, telles que réutiliser et distribuer le contenu. Découvrons-en plus et comment l'utiliser. En savoir plus pour utiliser le contenu de ces licences pour vos projets.
De retour dans notre code, nous devons démarrer le mixeur Pygame et charger notre morceau.
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))
La première ligne de ce bloc initie le mélangeur Pygame . Le dernier argument dans les parenthèses est le tampon qui contrôle la latence dans laquelle le son est joué. Si vous rencontrez une lecture instable plus tard lorsque votre musique joue, essayez d'augmenter ce nombre à 4096. Les paramètres tels qu'ils sont fonctionnent sans problème sur un Pi 3.
Si vous avez téléchargé votre fichier musical dans un répertoire différent de votre programme door.py, vous devrez indiquer le chemin complet entre les parenthèses lorsque vous définissez la variable name.
Maintenant tout ce qui reste à faire est de mettre en place une boucle qui attend que l'on active le programme ou que l'on quitte.
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()
Cette boucle while attend une entrée de l'un ou l'autre des boutons et quitte ou modifie l'état en conséquence. Si l'état d'actif devient 1, alors la fonction watchDoor que nous avons définie précédemment est appelée et la prochaine fois que la porte s'ouvre, notre morceau jouera. Nous appelons aussi GPIO.cleanup () pour réinitialiser nos pins à la sortie, ce qui est généralement une bonne pratique pour toute la programmation sur le Raspberry Pi.
C'est tout ce que nous devons faire pour que ce projet fonctionne, voici le code en entier:
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()
Si vous faites défiler ici pour saisir le code complet tout de suite, gardez à l'esprit que vous aurez toujours besoin de télécharger la musique sur votre Pi pour que ça fonctionne!
Maintenant, vous devriez avoir un thème de bienvenue à la maison! Fixez votre interrupteur à lames à votre porte et essayez-le. La danse embarrassante est facultative mais recommandée.
Ce projet a couvert les bases pour de nombreuses formes de surveillance à domicile, de sécurité et d'automatisation, et nous l'espérions aussi, c'était amusant!
Maintenant que vous êtes venus si loin, pourquoi vous arrêter là? Vous pouvez ajouter plus de pistes et demander au programme d'en choisir une au hasard dans une liste. Vous pourriez ajouter un relais Premiers pas avec GPIO Sur un Raspberry Pi Premiers pas avec GPIO Sur un Raspberry Pi Si vous pensiez que l'Arduino était cool, attendez de mettre la main sur un Raspberry Pi - ces choses sont incroyables. En plus d'être un ordinateur entièrement fonctionnel, ils ont aussi un ... Read More et d'autres objets sont déclenchés à l'entrée. Si vous avez un système de musique à domicile, pourquoi ne pas avoir une chanson thème pour chaque pièce?
Serez-vous en train de concevoir votre propre message personnel de bienvenue? Avez-vous été inventif avec des interrupteurs à lames souples dans votre maison d'autres façons? Si oui, laissez un commentaire sur ce que vous planifiez ou avez déjà fait dans la section des commentaires ci-dessous!