Scare Trick-or-Treaters avec une Soundbox activée par le mouvement de bricolage

Scare Trick-or-Treaters avec une Soundbox activée par le mouvement de bricolage / DIY

C'est cette période de l'année où il est considéré socialement acceptable de terrifier les jeunes enfants et de leur donner des bonbons. Oh joie. Je suis ici pour vous faciliter la tâche en vous expliquant comment créer une simple boîte à son Raspberry Pi Halloween à détection de mouvement. Voici une démo:

Voici ce dont vous aurez besoin

Le capteur de mouvement est probablement la seule partie que vous ne possédez pas déjà. Vous devriez pouvoir la trouver chez votre Microcentre local ou chez Maplin..

  • Raspberry Pi (n'importe quel modèle fera l'affaire).
  • Capteur de mouvement (~ 3 $).
  • Fils de raccordement.
  • Enceinte filaire (la plupart des enceintes Bluetooth auront l'option d'utiliser l'entrée en ligne).
  • Câble stéréo 3,5 mm, mâle à mâle.

Une fois que vous avez terminé, vous pouvez ajouter des effets d’éclairage synchronisés. Comment synchroniser les lumières de la maison et de la musique pour Halloween Comment synchroniser les lumières de la maison et de la musique pour Halloween Que vous organisiez une fête à la maison d’Halloween ou désiriez la maison hantée la plus cool du monde. quartier, il est essentiel que les lumières clignotent au rythme de la musique et des effets sonores. Lisez plus aussi, mais dans ce tutoriel, nous ne couvrirons que les sons effrayants!

Mise en place

Nous utilisons Raspbian Jessie Lite et Python 2.7, mais toute distribution Linux fonctionnant sur votre Pi devrait fonctionner correctement. Je l'ai laissé sur le nom d'hôte standard “raspberrypi.local”, Commencez donc par vous connecter à distance à l’aide de SSH (ouvrez une fenêtre de terminal si vous êtes sur Mac. Voici comment procéder de la même manière dans Windows 4: façons simples d’utiliser SSH sous Windows 4 façons simples d’utiliser SSH sous Windows. SSH est la solution de facto. pour accéder en toute sécurité aux terminaux distants sous Linux et autres systèmes de type UNIX Si vous souhaitez accéder à un serveur SSH distant, vous devez télécharger un client SSH… En savoir plus) - ou, si vous avez choisi d'utiliser un serveur Raspbian complet avec l'interface graphique de bureau, n'hésitez pas à passer à la mise à jour.

ssh [email protected] (entrez framboise comme mot de passe) sudo apt-get update sudo apt-get install python-pip sudo pip install gpiozero 

Cela installe une bibliothèque simple pour travailler avec les broches GPIO en Python avec de nombreux types de capteurs et de boutons intégrés. Câblez votre capteur avec la broche de signal sur GPIO4, le VCC connecté à 5V et le GND connecté à GND. Cela peut varier en fonction de votre modèle exact, alors confirmez-le avec un schéma de brochage.

Crédit d'image: raspberrypi.org

Mon cas Pi 2 de Pimoroni a un diagramme de brochage gravé au laser directement.

Faisons maintenant notre script de détection de mouvement.

nano motion.py 

Coller dans:

depuis gpiozero importer MotionSensor pir = MotionSensor (4) si True: si pir.motion_detected: print ("Mouvement détecté!") sinon: print ("Aucun mouvement") 

Appuyez sur CTRL-X puis sur Y pour enregistrer et quitter, puis exécutez avec:

motion.py de python 

Vous devriez voir le “pas de mouvement” message répété à l’écran jusqu’à ce que vous agissiez la main devant le capteur, quand il s’attarde sur le “Mouvement détecté!”

Si le message ne change pas du tout, vous l'avez mal câblé.

Si vous souhaitez en savoir plus sur cette simple bibliothèque GPIOZero, jetez un coup d'œil à cette fantastique feuille de triche..

Jouer du son

Connectez votre haut-parleur portable et assurez-vous qu'il est alimenté s'il le faut. Nous allons utiliser le pygame bibliothèque pour jouer des sons, alors allez-y et installez-le:

sudo apt-get installez python-pygame 

Premièrement, nous avons besoin d’un fichier son pour pouvoir être joué. Si vous le faites depuis l’environnement de bureau, lancez-vous et téléchargez un WAV ou OGG fichier de quelque part (j'ai trouvé une bonne sélection de sons d'Halloween gratuits ici) et mettez-le dans votre répertoire personnel. Je suggèrerais d'abord de sous-échantillonner et de convertir de toute façon en un petit format OGG.

Si vous vous connectez à distance et n’utilisez que la ligne de commande, nous avons un peu plus de difficulté avec certains sites, car le wget commande ne peut pas récupérer le fichier réel. Au lieu de cela, nous pouvons le télécharger localement sur notre bureau et utiliser le scp (copie sécurisée) commande pour copier sur la ligne de commande. Vous pouvez en apprendre plus sur scp ici, mais pour le moment, ouvrez un nouvel onglet Terminal et tapez:

scp thunder.ogg [email protected]: 

Renommez thunder.ogg comme il convient, mais n'oubliez pas la finale : (la commande se terminera sans elle, mais elle ne fera pas ce que nous voulons qu'elle fasse). Par défaut, le fichier sera transféré dans le répertoire de base de l'utilisateur Pi..

Modifions maintenant le script pour jouer un son. Commencez par importer de nouveaux modules:

importer pygame.mixer à partir de pygame.mixer import Sound 

Ensuite, juste après les instructions d’importation existantes, nous allons répéter le même son à des fins de test. Laissez le reste de votre code de détection de mouvement tel quel pour le moment - il ne fonctionnera tout simplement pas, car il restera bloqué dans cette boucle de lecture du son pour toujours.

pygame.init () pygame.mixer.init () # charge un fichier son dans le répertoire de base de l'utilisateur Pi (pas de mp3) thunder = pygame.mixer.Sound ("/ home / pi / thunder.ogg") tant que True : thunder.play () sommeil (10) thunder.stop () 

Notez que lorsque j'ai initialement essayé ce processus, le son a refusé de jouer et a simplement cliqué. Le coupable était la taille du fichier ou du débit binaire: il s'agissait de 24 bits et de plus de 5 Mo pour un clip de 15 secondes. La mise à l'échelle vers le bas à 16 bits en utilisant le convertisseur que j'ai lié à ci-dessus a tout fait bien fonctionner, et la taille a été réduite à seulement 260 Ko!

Si vous remarquez un méchant sifflement de la part de vos haut-parleurs lorsque votre application Python est en cours d'exécution, mais pas autrement, tapez:

sudo nano /boot/config.txt 

Et ajoutez cette ligne à la fin:

disable_audio_dither = 1 

Redémarrez pour que les modifications prennent effet. Ou ne vous dérangez pas, car ça me faisait penser à de la pluie quand même.

Enfin, modifions la boucle principale de vérification du mouvement pour lire le son lorsqu'un mouvement est détecté. Nous utiliserons un délai de 15 secondes pour que toute la boucle puisse être lue et pour servir de tampon anti-spam lorsqu’il y aura beaucoup de mouvement non-stop.

while True: si pir.motion_detected: print ("Mouvement détecté!") thunder.play () # s’assure que la lecture est terminée avant de reprendre la détection de mouvement, évite le "spamming" du son (15) thunder.stop () sinon: print ("pas de mouvement") 

Commencer automatiquement

Nous voulons probablement configurer cela quelque part avec une batterie et aucune connexion Internet. Le script doit donc être exécuté au redémarrage sans ouvrir de ligne de commande. Pour ce faire, nous allons utiliser la méthode la plus simple possible: la crontab Comment planifier des tâches sous Linux avec Cron et Crontab Comment planifier des tâches sous Linux avec Cron et Crontab La possibilité d'automatiser des tâches est l'une de ces technologies futuristes déjà disponibles. . Chaque utilisateur Linux peut tirer parti des tâches du système et du système de planification, grâce à cron, un service en arrière-plan facile à utiliser. Lire la suite . Type:

sudo crontab -e 

Si c'est la première fois que vous exécutez cette commande, elle commencera par vous demander quel éditeur utiliser. J'ai choisi l'option 2 pour nano. Cela démarrera dans l'éditeur que vous avez choisi, ajoutez donc la ligne suivante:

@reboot python /home/pi/motion.py & 

Cela signifie que votre script motion.py s'exécutera à chaque démarrage et le fera en mode silencieux (toute sortie du script sera ignorée). Redémarrez pour l'essayer.

Si rien ne se passe malgré le mouvement ou si vous entendez un petit clic, vous n’avez peut-être pas utilisé le chemin d'accès complet au fichier, ou votre fichier peut nécessiter une conversion en un débit binaire inférieur et une taille de fichier inférieure..

Ajouter plus de sons

Jouer le même effet encore et encore est un peu ennuyeux, ajoutons-y un peu de hasard. Téléchargez d’autres sons de Halloween, en vous rappelant de les réduire à une taille et à un débit raisonnables, puis envoyez-les à votre Pi en utilisant scp comme avant. J'ai ajouté trois types de cri.

Modifiez le code pour qu'au lieu de définir un seul pygame.mixer.Sound variable, nous créons en fait un tableau des sons. C'est simple avec Python, entourez-en une liste séparée par des virgules de crochets, comme ceci:

sounds = [pygame.mixer.Sound ("/ home / pi / thunder.ogg"), pygame.mixer.Sound ("/ home / pi / scary_scream.ogg"), pygame.mixer.Sound ("/ home / pi /girl_scream.ogg "), pygame.mixer.Sound (" / home / pi / psycho_scream.ogg ")] 

Ensuite, importez la bibliothèque aléatoire dans votre fichier avec:

importer au hasard 

Modifiez maintenant la boucle de détection de mouvement principale comme suit:

while True: si pir.motion_detected: print ("Mouvement détecté!") playSound = random.choice (sons) playSound.play () # s’assure que la lecture est terminée avant la reprise de la détection de mouvement, évite les "spams" de son sommeil (15 ) playSound.stop () else: print ("Pas de mouvement") 

Notez le changement mineur: au lieu de jouer la seule variable Sound, nous utilisons le random.choice fonction pour choisir un son aléatoire de notre gamme de sons, puis en jouant.

Voici le code complet en cas de problème:

importer pygame à partir de pygame.mixer importer Son de gpiozero importer MotionSensor à partir de l'heure d'importation dormir dormir importation aléatoire pygame.init () pygame.mixer.init () # charge un fichier audio, le même répertoire que le script (pas de mp3) sounds = [pygame.mixer .Sound ("/ home / pi / thunder.ogg"), pygame.mixer.Sound ("/ home / pi / scary_scream.ogg"), pygame.mixer.Sound ("/ home / pi / girl_scream.ogg") , pygame.mixer.Sound ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) si True: si pir.motion_detected: print ("Motion detect!") playSound = random.choice (sons) playSound .play () # s’assure que la lecture est terminée avant de reprendre la détection de mouvement, évite le "spamming" du son (15) playSound.stop () else: print ("Pas de mouvement") 

Avec seulement quatre échantillons, il y a une forte probabilité de répétition à chaque fois, mais vous pouvez en ajouter d'autres si cela vous gêne.

C'est tout! Cachez-le dans les buissons avec des yeux de monstre effrayants. Comment faire des yeux brillants pour Halloween pour moins de 5 $ Comment faire des yeux brillants pour Halloween pour moins de 5 $ Vous voulez pimenter vos décorations d'Halloween cette année? Apprenez à fabriquer des yeux DEL pour moins de 5 $ dans le projet électronique de ce débutant. Lisez plus et vous devriez pouvoir vous épargner des bonbons pendant que tous les enfants s'enfuient en criant avant même d'atteindre la porte. Ou allez vous cacher dans le placard parce qu'une mère en colère est à bout de sang après avoir fait pleurer le petit Johnny.

Clause de non-responsabilité: MakeUseOf n'est pas responsable des blessures pouvant résulter de l'utilisation de ce projet.!

Fabriquerez-vous cette boîte à sons activée par le mouvement afin de faire peur aux tricheurs locaux? Avez-vous mis en place des effets effrayants avec un Raspberry Pi cet Halloween? S'il vous plaît laissez-nous savoir à ce sujet dans les commentaires ci-dessous!

.