Jouez votre propre thème lorsque vous entrez dans la pièce avec Raspberry Pi

  • Joseph Goodman
  • 0
  • 5234
  • 299
Publicité

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. Microcontrôleurs à 5 $: 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. 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 rapidement et 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 pratiquement obtenir la même chose chez… et aussi dans le domaine de la sécurité résidentielle DIY Vous cherchez une solution de système de sécurité domestique DIY? 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..

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 commutateur à lames sous 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 lancé, vous pouvez soit attacher temporairement l’interrupteur à votre porte à l’aide de ruban adhésif, soit, si vous vous sentez plus confiant, le fixer de manière plus permanente pour une utilisation ultérieure.!

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 faire cela, 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 (via Ethernet ou Wi-Fi), vous permettant de le configurer facilement. Les avantages de SSH vont au-delà de perturber le dépistage quotidien… peuvent 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. cela 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 lorsqu'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 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 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. Toutefois, 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 qu'importation GPIO heure d'importation de pygame.mixer 

Nous allons utiliser le Pygame module pour jouer notre musique. Raspbian Jessie est livré en standard. C'est une excellente bibliothèque pour tout ce dont vous avez besoin pour créer des jeux Python et de nombreux autres projets exceptionnels. 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é, optimisé par votre Raspberry… .

Nous allons utiliser une variable appelée actif 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 (" Activation 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) active = 1 GPIO.output (7, GPIO.HIGH) print ("Actuellement actif") sinon: retour 

La première fonction crée ici une variable nommée actif, et lui attribue la valeur 0. Donner à l'état actif une valeur numérique signifie que si vous envisagez d'étendre 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 essayant de commencer à jouer de manière répétée 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 le fichier de musique de votre choix, mais nous allons choisir quelque chose de 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 si vous l'utilisez? 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. 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 à un œil" 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 répertoire différent de votre door.py programme, vous devez indiquer le chemin complet à l'intérieur des crochets lorsque vous définissez la variable de nom.

Il ne reste plus maintenant qu’à mettre en place une boucle qui attend que nous activions le programme ou le quittions..

While True: if (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) 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, notre mélodie sera 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, initiale = 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 une mélodie de thème d'accueil bienvenus! 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, espérons-le, était 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 ont également… 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.!




Personne n'a encore commenté ce post.

De la technologie moderne, simple et abordable.
Votre guide dans le monde de la technologie moderne. Apprenez à utiliser les technologies et les gadgets qui nous entourent chaque jour et à découvrir des choses intéressantes sur Internet.