Publicité
Avez-vous déjà voulu arriver chez vous pour un accueil personnalisé? Avec un Raspberry Pi et quelques composants simples, c'est possible! Dans ce projet simple, nous utiliserons un interrupteur à lames pour déclencher une mélodie de thème lorsqu'une porte est ouverte. Nous utiliserons ici un Raspberry Pi comme contrôleur, bien que vous puissiez utiliser presque autre microcontrôleur Microcontrôleurs à 5 $: Arduino, Raspberry Pi Zero ou NodeMCU?Auparavant, si vous vouliez obtenir un ordinateur, vous deviez réhypothéquer votre maison pour en payer le prix. Maintenant, vous pouvez en obtenir un pour un Abraham Lincoln. Lire la suite pour ce projet utilisant le même circuit. Voici une démo.
Tu auras besoin de
Vous posséderez probablement déjà toutes les pièces dont vous avez besoin pour le faire, sauf le commutateur à lames, qui se situe autour de 2 à 3 $, ou vous pouvez obtenir un paquet de 5 pour un peu plus de 8 $. ici.
- Un Raspberry Pi (n'importe quel modèle fonctionnera pour cela).
- 1 résistance de 220 Ohms.
- 1 résistance 1K Ohm.
- Résistance 3 x 10K Ohm.
- 1 x interrupteur magnétique à lames.
- 1 x LED.
- 2 x interrupteur à bouton-poussoir.
- Planche à pain.
- Câbles de raccordement.
- Haut-parleur d'ordinateur ou similaire.
Nous allons utiliser le Raspberry Pi pour jouer une chanson lorsque la salle est entrée, et concevoir un circuit avec des boutons sur notre planche à pain pour l'activer sur un délai et arrêter le programme.
Ce projet, tout en étant conçu principalement pour le plaisir, couvre les bases de nombreuses applications Domotique DIY Guide domotique avec Raspberry Pi et ArduinoLe marché de la domotique est inondé de systèmes grand public coûteux, incompatibles entre eux 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 Sécurité à la maison bricolage Vous cherchez une solution de système de sécurité à la maison DIY? Essayez-en unÀ 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 un boîtier en forme d'alarme sur le mur. Lire la suite
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 de notre pi. Les deux interrupteurs à bouton-poussoir sont fixés aux broches 11 et 13, et l'interrupteur à lames se connecte à la broche 15. Notre pouvoir 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 reed devant vous afin que vous puissiez facilement l'activer ou le désactiver. Dans ce cas, l'interrupteur à lames était déjà installé au-dessus de la porte. Une fois votre projet opérationnel, vous pouvez soit fixer temporairement l'interrupteur à votre porte à l'aide de ruban adhésif, ou si vous vous sentez plus confiant, vous pouvez le fixer de manière plus permanente pour une utilisation future projets!
Connectez la sortie jack 3,5 mm de votre Pi à votre système d'enceintes. Une fois que tout est assemblé, cela devrait ressembler à ceci:
Notez que la planche à pain utilisée ici a ses rails d'alimentation dans l'autre sens pour le diagramme de Fritzing ci-dessus.
Maintenant, allumez votre Pi et accédez-y en utilisant SSH afin que nous puissions accéder au terminal. Si vous ne savez pas comment procéder, ce guide Configuration de votre Raspberry Pi pour une utilisation sans tête avec SSHLe Raspberry Pi peut accepter les commandes SSH lorsqu'il est connecté à un réseau local (via Ethernet ou Wi-Fi), ce qui vous permet de le configurer facilement. Les avantages de la SSH vont au-delà du bouleversement du dépistage quotidien ... Lire la suite 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 convient de vérifier si vous êtes à jour. Type mise à jour sudo apt-get
dans le terminal.
Nous pouvons maintenant passer à la communication de notre Pi avec notre circuit.
Test de notre configuration
Pour commencer, vérifions notre circuit à l'aide d'un programme simple. Si vous êtes sûr d'avoir tout câblé jusqu'à présent, vous pouvez ignorer cette étape, bien que je le recommande car cela peut vous éviter 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 une multitude de grands sites Web Les 5 meilleurs sites Web pour apprendre la programmation PythonVous voulez apprendre la programmation Python? Voici les meilleures façons d'apprendre Python en ligne, dont beaucoup sont entièrement gratuites. Lire la suite qui peuvent 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 d'enregistrement:
#Ce code a été écrit pour un article sur www. MakeUseOf.com par Ian Buckley. importer RPi. GPIO comme GPIO. temps d'importation. GPIO.setwarnings (Faux) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) tandis que True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1 ) si (GPIO.input (13) == 1): print ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Button on GPIO 15") time .endormi (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 abaissées, ils signalent donc HAUT lorsqu'ils sont pressés. L'interrupteur magnétique à anche signale HAUT chaque fois que l'aimant qui l'accompagne est proche.
Exécutez le programme:
python test.py
Vous devriez voir la LED s'allumer et un rapport à l'écran lorsque vous appuyez sur vos deux boutons et retirez l'aimant de votre interrupteur à lames. Si vous n'obtenez pas de commentaires lorsque vous appuyez sur les boutons, vérifiez à nouveau votre circuit et assurez-vous que tout est connecté comme il se doit. Une fois le test terminé, appuyez sur CTRL-C pour arrêter le programme.
Nous pouvons maintenant créer un programme simple pour régler, déclencher et réinitialiser notre capteur de porte. Nous allons passer en revue 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 présenté en entier.
Nous devons commencer par importer certains modules:
importer Rpi. GPIO comme GPIO. importer pygame.mixer. temps d'importation.
Nous utiliserons le Pygame module 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 créer des jeux Python et bien d'autres projets incroyables Comment construire un bot Twitter Raspberry PiTwitter est le plus grand référentiel au monde de messages courts de personnes n'ayant rien à dire - et maintenant vous aussi, vous pouvez contribuer à ce projet épique avec un robot Twitter automatisé, alimenté par votre Framboise... Lire la suite .
Nous allons utiliser une variable appelée actif pour décider si notre système est actif ou non. Définissons quelques fonctions qui feront cela pour nous:
def activeSetup (): global actif actif = 0 print ("Actuellement non actif") def activeState (): global actif si actif == 1: actif = 0 GPIO.output (7, GPIO.LOW) print ("Actuellement non actif") elif active == 0: print ("Activation en 10 secondes") pour x dans la plage (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 ("Actuellement Actif ") sinon: retour.
La première fonction crée ici une variable nommée actifet le met à 0. Attribuer une valeur numérique à l'état actif signifie que si vous envisagez d'étendre ultérieurement votre programme pour avoir différents états actifs, vous pouvez les numéroter en conséquence. Bien qu'il ne s'agisse peut-être pas de la meilleure programmation Python au monde, elle suffira amplement pour ce projet.
La deuxième fonction, lorsqu'elle est appelée, vérifie si le système est actif (ou actif == 1). Si tel est le cas, il définit le système comme non actif (actif == 0), éteint la LED et imprime sur la console. Si ce n'est pas le cas, il vous donne un compte à rebours de 10 secondes pour quitter la pièce dans laquelle la LED clignote, avant de rester allumée pour montrer que le système est actif.
Nous pouvons maintenant définir une fonction qui surveillera notre interrupteur magnétique à lames:
def watchDoor (): jeu global jouant = False tandis que True: si actif == 1 et GPIO.input (15) == 1 et jouant == False: jouant = True pygame.mixer.music.play () si GPIO.input (13) == 1: print ("Bouton Stop enfoncé: Quitter") pygame.mixer.music.stop () se casse si GPIO.input (11) == 1: activeState () time.sleep (0.5)
Nous créons ici une autre variable appelée en jouant - il s'agit simplement d'arrêter le programme en essayant de démarrer la lecture à plusieurs reprises lorsque le commutateur est déclenché.
À l'intérieur de 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 permet de démarrer la musique que si le système est actif, le commutateur à lames est ouvert et il n'est pas déjà en cours de lecture.
La deuxième instruction if concerne 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 sert à basculer si le système est actif ou non. le le sommeil de temps La fonction ici est d'empêcher la lecture de plusieurs boutons lorsqu'elle est enfoncée.
Il est maintenant temps de configurer 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 déjà fait des expériences avec le Pi, cela devrait vous être familier. le initial = GPIO.LOW L'argument dans la configuration de la broche 7 le place à bas dès qu'il est initialisé.
Maintenant, nous pouvons appeler notre fonction qui fera en sorte que le système ne soit pas actif au démarrage du programme.
activeSetup ()
Music Maestro!
À ce stade, nous devrions commencer à penser à la musique à jouer. Vous pouvez choisir n'importe quel fichier musical que vous souhaitez, mais nous choisirons quelque chose 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 morceau fantastique de lui appelé «Maestro borgne». Ceci, ainsi qu'une grande partie de la musique sur son site, est sous licence Creative Commons, et il y a de nombreuses bonnes raisons Qu'est-ce que Creative Commons et l'utilisation non commerciale?Qu'est-ce que Creative Commons? Que signifie «utilisation non commerciale»? Découvrez les licences Creative Commons et leur fonctionnement. Lire la suite pour utiliser du contenu avec 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 = "Maestro.mp3 borgne" pygame.mixer.music.load (nom) print ("Piste chargée -" + str (nom))
La première ligne de ce bloc lance la Pygame mixer. Le dernier argument entre parenthèses est le tampon qui contrôle la latence dans laquelle le son est joué. Si vous rencontrez une lecture saccadée plus tard lors de la lecture de votre musique, essayez d'augmenter ce nombre à 4096. Les paramètres tels qu'ils fonctionnent 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 door.py programme, vous devrez fournir le chemin complet à l'intérieur des crochets lorsque vous définissez la variable de nom.
Maintenant, tout ce qui reste à faire est de mettre en place une boucle qui nous attend soit pour activer le programme, soit pour le quitter.
tandis que True: if (GPIO.input (13) == 1): print ("Bouton d'arrêt enfoncé: Quitter") 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 des boutons et quitte ou modifie l'état à actif en conséquence. Si l'état d'actif devient 1, alors le watchDoor La fonction que nous avons définie plus tôt est appelée et la prochaine fois que la porte s'ouvre, notre morceau jouera. Nous appelons aussi GPIO.cleanup () pour réinitialiser nos broches à 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 soit opérationnel, voici le code dans son intégralité:
importer RPi. GPIO comme GPIO. importer pygame.mixer. import time def activeSetup (): global active active = 0 print ("Actuellement non actif") def activeState (): global actif si actif == 1: actif = 0 GPIO.output (7, GPIO.LOW) print ("Actuellement ne pas Active ") elif active == 0: print (" Activation en 10 secondes ") pour x dans la plage (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 ("actuellement actif") else: return def watchDoor (): lecture globale jouant = False tandis que True: si actif == 1 et GPIO.input (15) == 1 et jouant == False: jouer = Vrai pygame.mixer.music.play () if GPIO.input (13) == 1: print ("Bouton Stop enfoncé: Quitter") pygame.mixer.music.stop () break si 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 = "Maestro.mp3 borgne" pygame.mixer.music.load (nom) print ("Piste chargée -" + str (nom)) tandis que True: if (GPIO.input (13) == 1): print ("Bouton Stop pressé: Quitter") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Si vous avez fait défiler vers le bas ici pour saisir le code complet immédiatement, gardez à l'esprit que vous devrez toujours télécharger la musique sur votre Pi pour qu'elle fonctionne!
Maintenant, vous devriez avoir un morceau de thème d'accueil qui fonctionne! Fixez votre interrupteur à lames à votre porte et essayez-le. La danse embarrassante est facultative mais recommandée.
Ce projet a couvert les bases de nombreuses formes de surveillance, de sécurité et d'automatisation à domicile, et j'espère que c'était amusant aussi!
Maintenant que vous êtes arrivé 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 Prise en main de GPIO sur un Raspberry PiSi vous pensiez que l'Arduino était cool, attendez jusqu'à ce que vous mettiez la main sur un Raspberry Pi - ces choses sont incroyables. En plus d'être un ordinateur entièrement fonctionnel, ils ont également un ... Lire la suite et faire déclencher d'autres objets à l'entrée. Si vous avez un système de musique à domicile, pourquoi ne pas avoir une chanson thème pour chaque pièce?
Concevrez-vous votre propre message d'accueil personnel? Avez-vous été inventif avec les interrupteurs à lames dans votre maison par d'autres moyens? Si oui, laissez un commentaire sur ce que vous prévoyez ou avez déjà fait dans la section commentaires ci-dessous!
Ian Buckley est un journaliste indépendant, musicien, interprète et producteur de vidéos vivant à Berlin, en Allemagne. Quand il n'écrit pas ou sur scène, il bricole de l'électronique ou du code DIY dans l'espoir de devenir un savant fou.