Jeffrey Cross
Jeffrey Cross

Un déclencheur de sons d'Halloween avec Raspberry Pi et Arduino

[vimeo: https: //vimeo.com/51950656]

Des gens m'ont posé des questions sur des applications intéressantes pour le Raspberry Pi et sur le point de savoir si le Raspberry Pi est un tueur d'Arduino. La réponse à la deuxième question est non. en fait c'est un augmenter Arduino. Cet article de blog répond à la première question par une autre question: que diriez-vous d'une machine à effets sonores de Haunted House?

Une nouvelle révision de la première version de Getting Started with Raspberry Pi est parue vendredi dernier. J'ai lu le chapitre de Matt Richardson sur l'utilisation de Pygame avec les broches GPIO du Pi, qui incluait un simple lecteur Sound Sample. J'ai adapté son exemple pour travailler avec un Arduino qui communique avec le Pi via une connexion série; cette connexion squelettique (ahem) pourrait facilement être intégrée à une sorte d’installation de Halloween. J'ai décidé d'utiliser Arduino pour lire les entrées, car il est plus robuste et prend en charge une plus grande variété d'entrées. En outre, il existe de nombreuses démos de Haunted House qui utilisent Arduino.

Tout d’abord, vous devez préparer le circuit de déclenchement. L'exemple suivant utilise trois commutateurs à bascule, mais vous pouvez les remplacer par tout type d'entrée marche / arrêt. Dans une maison hantée (ou une installation à tour de rôle basée sur un porche), un capteur PIR serait pratique pour déclencher en fonction de la proximité.

Voici le schéma de base:

Les résistances 10k peuvent être remplacées par les résistances internes de l’Arduino, si vous savez le faire.

J'ai connecté l'Arduino au Raspberry Pi à l'aide d'un câble USB. Alors que le Pi était connecté à un moniteur, j'ai découvert que je pouvais simplement brancher l'Arduino via le connecteur USB du clavier de mon Mac, ce qui lui donnait assez de puissance pour fonctionner. Si vous avez un ancien Raspberry Pi avec des polyfus limitant l’alimentation sur le port USB (vérifiez si vous avez 2 petits fusibles verts portant la mention «1104» à côté des ports USB), vous aurez peut-être besoin d’un concentrateur externe ou exécutez le système sans tête Pi. libérer un port USB.

Ensuite, téléchargez le dessin suivant sur l’Arduino:

// PiTalk.ino // Lit trois entrées numériques. Celles-ci peuvent être n'importe quel type de // commutateur ou (pour Halloween) des capteurs PIR. byte onState [3] = {0, 0, 0}; // enregistre l'état de chaque broche void setup () {Serial.begin (9600); // Connexion série ouverte pinMode (2, INPUT); // Définissez ces trois broches pour lire pinMode (3, INPUT); // Chacun a un pull externe de 10 Ko à l'extérieur pinMode (4, INPUT); // donc un déclencheur est LOW} void loop () {pour (int i = 0; i <3; i ++) {// Itérer sur les pins si (digitalRead (i + 2) == LOW) {// Vérifier si est déclenché if (onState [i] == 0) {// vient de se déclencher? Serial.write (i + 2); // Envoyer le numéro de code sur onState [i] = 1; // mais juste une fois}} else {onState [i] = 0; // non déclenché}} delay (20); }

Vous pouvez utiliser votre ordinateur pour télécharger le programme ou télécharger et installer l'IDE Arduino directement sur Raspberry Pi (comme décrit dans la prochaine version de Getting Started with Raspberry Pi).

Une fois l’Arduino programmé, ouvrez l’éditeur de texte Leafpad sur le Raspberry Pi et entrez ce programme Python, adapté de Matt’s Sound Sample Player:

# playSounds.py importation pygame.mixer à partir de l'heure importation sommeil à partir de sys importation sortie exportation importation série pygame.mixer.init (44000, -16, 1, 1024) soundA = pygame.mixer.Sound ("Scream.wav") soundB = pygame .mixer.Sound ("WilhelmScream.wav") soundC = pygame.mixer.Sound ("CastleThunder.wav") soundChannelA = pygame.mixer.Channel (1) soundChannelB = pygame.mixer.Channel (2) soundChannelC = pygame.mixer .Le canal (3) affiche "Prêt pour l’échantillonneur." serialFromArduino = serial.Serial ("/ dev / ttyACM0", 9600) serialFromArduino.flush () tant que True: try: val = ord (serialFromArduino.read ()) print (val) si (val == 2): soundChannelA.play (soundA) if (val == 3): soundChannelB.play (soundB) if (val == 4): soundChannelC.play (soundC) val = 0 sommeil (.01) sauf KeyboardInterrupt: exit ()

Enregistrez-le sous playSounds.py. Avant d’exécuter le script, vous devrez probablement installer le module série Python. Pour ce faire, tapez:

sudo apt-get installe python-serial

Si vous utilisez la dernière version de Raspbian, vous avez probablement tout ce dont vous avez besoin pour que cela fonctionne. Ouvrez le terminal LXT et tapez:

python playSounds.py

Si vous obtenez une erreur indiquant que Pygame n'est pas installé, tapez:

sudo apt-get mise à jour sudo apt-get install python-pygame

Vous aurez également besoin de certains fichiers son pour être lus. J'en ai choisi trois dans Internet Archive: un cri générique, un cri cri et un échantillon classique de Castle Thunder.

Lorsque vous appuyez sur les boutons, chaque son est joué une fois. Le mixeur de Pygame jouera même les trois en même temps si vous avez plusieurs joueurs qui envahissent votre porche.

Part

Laisser Un Commentaire