Jouez votre propre thème lorsque vous entrez dans la pièce avec Raspberry Pi
Avez-vous déjà voulu arriver chez vous avec un accueil personnalisé? Avec un Raspberry Pi et quelques composants simples, vous le pouvez! Dans ce projet simple, nous utiliserons un commutateur à lames pour déclencher un thème lors de l’ouverture d’une porte. Nous utiliserons ici un contrôleur Raspberry Pi, bien que vous puissiez utiliser presque tous les autres microcontrôleurs à 5 $. Microcontrôleurs: Arduino, Raspberry Pi Zero ou NodeMCU? Microcontrôleurs à 5 $: Arduino, Raspberry Pi Zero ou NodeMCU? Auparavant, si vous vouliez vous procurer un ordinateur, vous deviez remortgage votre maison pour la payer. Maintenant, vous pouvez en obtenir un pour Abraham Lincoln. Lisez la suite pour ce projet utilisant le même circuit. Voici une démo.
Tu auras besoin de
Vous possédez probablement déjà toutes les pièces nécessaires à cette opération, à l'exception du commutateur à lames qui coûte environ 2 ou 3 dollars, ou vous pouvez obtenir un paquet de 5 pour un peu plus de 8 dollars ici..
- Un Raspberry Pi (n'importe quel modèle fonctionnera pour cela).
- 1 x résistance 220 Ohm.
- 1 x résistance 1K Ohm.
- 3 x résistance 10K Ohm.
- 1 x interrupteur magnétique.
- 1 x LED.
- 2 x interrupteur à bouton-poussoir.
- Planche à pain.
- Câbles de raccordement.
- Haut-parleur d'ordinateur ou similaire.
Nous utiliserons le Raspberry Pi pour jouer une chanson lorsque la pièce sera entrée et créerons un circuit avec des boutons sur notre maquette pour l'activer temporairement, puis arrêterons le programme..
Ce projet, bien que conçu principalement pour le plaisir, couvre les bases de nombreuses applications de la domotique bricolage. Guide de la domotique avec Raspberry Pi et Arduino Guide de la domotique avec Raspberry Pi et Arduino Le marché de la domotique est inondé de systèmes grand public coûteux, incompatibles avec l'un un autre et coûteux à installer. Si vous avez un Raspberry Pi et un Arduino, vous pouvez obtenir la même chose en… Lire la suite, mais aussi en matière de sécurité domestique à la maison Vous cherchez une solution de système de sécurité domestique à la maison? Essayez l'une de ces solutions à la recherche d'une solution de système de sécurité domestique à la maison? Essayez l'un de ceux-ci À l'ère de la technologie numérique et du matériel toujours connecté, la configuration d'un système de sécurité domestique devrait transcender l'art de placer un boîtier en forme d'alarme au mur. Lire la suite
Carte mère Raspberry Pi 3 Modèle B Carte mère Raspberry Pi 3 Modèle B Acheter maintenant chez Amazon
Commencer
Commençons par faire notre circuit. Assurez-vous que votre Pi n'est pas alimenté et configurez votre circuit de la manière suivante:
La LED est connectée à la broche 7 sur notre pi. Les deux commutateurs à bouton-poussoir sont connectés aux broches 11 et 13, et le commutateur à lames se connecte à la broche 15. Notre pouvoir revient aux broches 1 (3v3) et 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 sous vous afin de pouvoir l'activer ou le désactiver facilement. Dans ce cas, le commutateur à lames était déjà installé au-dessus de la porte. Une fois votre projet lancé, vous pouvez soit attacher temporairement le commutateur à votre porte à l’aide de ruban adhésif, soit, si vous êtes plus confiant, le fixer plus définitivement pour pouvoir l’utiliser ultérieurement.!
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 maintenant votre Pi et accédez-y à l’aide de SSH afin que nous puissions accéder au terminal. Si vous ne savez pas comment procéder, consultez le présent 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 (via Ethernet ou Wi-Fi), vous permettant de le configurer facilement. Les avantages de SSH vont au-delà de perturber le 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 est utile de vérifier si vous êtes à jour. Type sudo apt-get update
dans le terminal.
Maintenant nous pouvons passer à faire parler notre Pi à notre circuit.
Test de notre configuration
Pour commencer, vérifions notre circuit en utilisant un programme simple. Si vous avez la certitude d'avoir tout câblé correctement jusqu'à présent, vous pouvez sauter cette étape, bien que je le recommande car cela peut éviter des maux de tête plus tard..
Si vous n'avez jamais programmé auparavant en Python et que vous vous sentez un peu découragé, il existe une foule d'excellents sites Web. Les 5 meilleurs sites Web pour apprendre la programmation Python Les 5 meilleurs sites Web pour apprendre la programmation Python Vous voulez apprendre la programmation Python? Voici les meilleurs moyens d'apprendre Python en ligne, dont beaucoup sont entièrement gratuits. Lire 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 le dialogue de sauvegarde:
#Ce code a été écrit pour un article sur www.MakeUseOf.com par Ian Buckley. importer RPi.GPIO en tant que GPIO heure d'importation 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) avec True: GPIO.output (7, GPIO.HIGH) si (GPIO.input (11) == 1): print ("Bouton sur GPIO 11") time.sleep (1) if (GPIO.input (13) == 1): print ("Bouton sur GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Bouton sur GPIO 15 ") time.sleep (1) GPIO.cleanup ()
Ce code lit la valeur des boutons et s'imprime à l'écran lorsqu'ils changent. Les deux boutons poussoirs ont des résistances à tirer, ils signalent donc HIGH quand ils sont pressés. Le commutateur d'aimant à lames indique HIGH lorsque l'aimant qui l'accompagne est proche.
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 retirez l’aimant de votre commutateur à lames. Si vous n'obtenez pas de retour lorsque vous appuyez sur les boutons, vérifiez à nouveau votre circuit et assurez-vous que tout est connecté comme il se doit. Lorsque vous avez terminé les tests, appuyez sur CTRL-C arrêter le programme.
Nous pouvons maintenant créer un programme simple pour définir, déclencher et réinitialiser notre capteur de porte. Nous allons passer en revue le code en plusieurs parties et expliquer brièvement ce que chaque partie fait. Cependant, si vous souhaitez voir le code complet défiler vers le bas pour le voir présenté en entier..
Nous devons commencer par importer certains modules:
importer Rpi.GPIO en tant que import GPIO heure d'importation pygame.mixer
Nous allons utiliser le Pygame module pour jouer notre musique. Raspbian Jessie est fourni en standard. Il s'agit d'une excellente bibliothèque pour tout ce dont vous avez besoin pour créer des jeux Python et de nombreux autres projets étonnants. Comment construire un Twitter bot de Raspberry Pi Comment construire un Twitter de framboise Pi messages de personnes qui n'ont rien à dire - et maintenant vous aussi pouvez contribuer à ce projet épique avec un bot Twitter automatisé, propulsé par votre Raspberry… En savoir plus .
Nous allons utiliser une variable appelée actif pour décider si notre système est actif ou non. Définissons quelques fonctions qui le feront pour nous:
def activeSetup (): active globale active = 0 print ("actuellement non active") def activeState (): active globale si active == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("actuellement non active" ") elif active == 0: print (" Activer dans 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) actif = 1 GPIO.output (7, GPIO.HIGH) print ("Actuellement actif") sinon: retour
La première fonction crée ici une variable nommée actif, et le définit sur 0. Donner à l'état actif une valeur numérique signifie que si vous envisagez de développer ultérieurement votre programme pour qu'il ait différents états actifs, vous pouvez les numéroter en conséquence. Bien que ce ne soit peut-être pas la meilleure programmation Python au monde, cela suffira amplement à 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, le système ne sera pas actif (actif == 0), éteint le voyant et s’imprime sur la console. Si ce n'est pas le cas, un compte à rebours de 10 secondes vous permettra de quitter la pièce dans laquelle le voyant clignote avant de rester allumé pour indiquer que le système est actif..
Nous pouvons maintenant définir une fonction qui surveillera notre commutateur magnétique à lames:
def watchDoor (): jeu global en jouant = Faux en Vrai: si actif == 1 et GPIO.input (15) == 1 et en cours de lecture == Faux: en cours de lecture = vrai pygame.mixer.music.play () si GPIO.input (13) == 1: print ("Bouton d'arrêt enfoncé: sortie") pygame.mixer.music.stop () s'arrête si GPIO.input (11) == 1: activeState () time.sleep (0.5)
Nous créons une autre variable appelée ici en jouant - ceci est simplement là pour arrêter le programme qui essaie de recommencer à jouer lorsque le commutateur est déclenché.
Dans la boucle while, la première instruction if commence la musique (que nous n'avons pas encore, mais ne vous inquiétez pas, elle arrive). La musique ne démarre que si le système est actif, le commutateur à lames est ouvert et la lecture n’est pas déjà en cours..
La seconde instruction if concerne notre bouton de sortie. Si vous appuyez sur ce bouton, la musique s'arrête et le programme se ferme..
La troisième instruction if indique si le système est actif ou non. le le sommeil de temps la fonction ici est d'empêcher que plusieurs boutons soient lus quand on appuie dessus.
Maintenant il est temps de mettre en place les pins 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à essayé le Pi, cela devrait vous être familier. le initiale = GPIO.LOW l'argument dans la configuration de la broche 7 le met sur bas dès qu'il est initialisé.
Maintenant, nous pouvons appeler notre fonction qui configurera le système pour qu'il ne soit pas actif au démarrage du programme.
activeSetup ()
Musique Maestro!
À ce stade, nous devrions commencer à réfléchir à la musique à jouer. Vous pouvez choisir n'importe quel fichier de musique, mais nous allons choisir quelque chose qui sera disponible pour tout le monde pour le moment. 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é “Maestro borgne”. Ceci, avec une grande partie de la musique de son site, est sous licence Creative Commons, et il existe de nombreuses 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 donnent automatiquement la permission de faire diverses choses, telles que la réutilisation et la distribution du contenu. En savoir plus à ce sujet et comment l'utiliser. Lire la suite pour utiliser le contenu de ces licences pour vos projets.
De retour dans notre code, nous devons démarrer le mélangeur Pygame et charger notre mélodie.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro.mp3 borgne" pygame.mixer.music.load (name) print ("Piste chargée - "+ str (nom))
La première ligne de ce bloc initie le Pygame mixer. Le dernier argument entre crochets 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 est lue, essayez d’augmenter ce nombre à 4096. Les paramètres tels qu’ils fonctionnent ne posent aucun problème sur un Pi 3..
Si vous avez téléchargé votre fichier de musique dans un autre répertoire de votre door.py programme, vous devrez fournir le chemin complet entre les crochets lorsque vous définissez la variable de nom.
Il ne reste plus maintenant qu’à mettre en place une boucle qui attend que nous configurions le programme comme actif ou que nous le quittions..
while True: if (GPIO.input (13) == 1): print ("Bouton d’arrêt enfoncé: quitter") pygame.mixer.music.stop () rompt si (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () rompt GPIO.cleanup ()
Cette boucle while attend une entrée de l'un des boutons et quitte ou modifie l'état pour l'activer en conséquence. Si l'état d'actif devient 1, alors le WatchDoor La fonction que nous avons définie précédemment est appelée et la prochaine fois que la porte s'ouvre, la mélodie est jouée. 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 dont nous avons besoin pour que ce projet soit opérationnel. Voici le code complet:
import RPi.GPIO en tant que GPIO import pygame.mixer temps d'importation def activeSetup (): actif global = 0 print ("actuellement non actif") def activeState (): actif global si actif == 1: actif = 0 GPIO.output ( 7, GPIO.LOW) print ("Actuellement non actif") elif actif == 0: print ("Activer dans 10 secondes") pour x dans la plage (0,10): temps GPIO.output (7, GPIO.HIGH) .sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) actif = 1 GPIO.output (7, GPIO.HIGH) print ("Actuellement actif") else: retour def watchDoor (): global jouer = faux et si vrai: si actif == 1 et GPIO.input (15) == 1 et = = faux False: lecture = vrai pygame.mixer.music.play () si GPIO.input (13) == 1 : print ("Bouton d'arrêt enfoncé: sortie") pygame.mixer.music.stop () rompt 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 = "Un œil d Maestro.mp3 "pygame.mixer.music.load (name) print (" Piste chargée - "+ str (name)) tant que True: if (GPIO.input (13) == 1): print (" Bouton d'arrêt enfoncé : Sortie ") pygame.mixer.music.stop () break si (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () rompt GPIO. nettoyer()
Si vous avez immédiatement fait défiler le code complet jusqu'à la fin, gardez à l'esprit que vous aurez toujours besoin de télécharger la musique sur votre Pi pour que cela fonctionne.!
Maintenant, vous devriez avoir un air de thème d'accueil bienvenu! Fixez votre interrupteur à lames sur votre porte et essayez-le. La danse embarrassante est facultative mais recommandée.
Ce projet couvrait les bases de nombreuses formes de surveillance de la maison, de sécurité et d’automatisation et était, espérons-le, amusant aussi!
Maintenant que vous en êtes arrivé là, pourquoi vous arrêter ici? Vous pouvez ajouter plus de pistes et laisser le programme en choisir une au hasard dans une liste. Vous pourriez ajouter un relais Mise en route de GPIO sur un Raspberry Pi Mise en route de GPIO sur un Raspberry Pi Si l'Arduino était cool, attendez simplement de mettre la main sur un Raspberry Pi - ces choses sont extraordinaires. En plus d'être un ordinateur entièrement fonctionnel, ils possèdent également un… Lire la suite et d'autres objets doivent être déclenchés à l'entrée. Si vous avez un système de musique à la maison, 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 des interrupteurs à lames souples dans votre maison d'une autre manière? Si oui, laissez un commentaire sur ce que vous avez prévu ou avez déjà fait dans la section commentaires ci-dessous.!
En savoir plus sur: Home Automation, Raspberry Pi.