Étape 6: Unité de commande
L’unité de commande comprend un Arduino et deux boucliers empilés comme suit ;
- Arduino Uno R3 (non-clone). http://proto-pic.co.uk/Arduino-Uno/
- Cela sert à contrôler et à synchroniser les effets
- Adafruit Waveshield v1.1. https://www.Adafruit.com/Products/94
- Cela permet la lecture audio à l’aide de PWM de l’ONU en cours d’exécution sur la bibliothèque de vague Adafruit WaveHC.h et WaveUtil.h. Détails ici ; https://Learn.Adafruit.com/Adafruit-Wave-Shield-audio-Shield-for-Arduino
- V0.5 Adafruit Proto Shield. https://www.Adafruit.com/Products/51
- Ceci fournit 1W d’amplification audio.
Comme j’ai mentionné sur la première page, mais il récapitulera ici. Lorsque le système est inactif en état de repos l’ultra lumineux LED verte d’impulsion « menaçant », ce résultat est obtenu par le biais de contrôlé modulation du signal PWM étant alimenté vers le transistor pilote que T2 relié à la broche 6 sur l’Arduino via une résistance de 10K. Le collecteur de T2 descend le courant de charge de la LED verte 5 connectée en parallèle.
Au cours de la détection de mouvement, le signal du détecteur est passé à la broche analogique A0. Cela a été fait comme je voulais essayer quelques capteurs PIR et lire les fiches techniques respectives, j’ai été surpris d’apprendre que certaines sorties de l’appareil n’a pas nécessairement tourner le rail de la totalité des crédits. Par conséquent pour sauver mon devoir d’ajouter n’importe quel autre électronique de conditionnement de signaux j’ai câblé la sortie du PIR à une entrée analogique pour interroger potentiellement un niveau si nécessaire. En l’occurrence, le PIR je me suis installé pour était un bon achat Ebay qui fait le travail et utilisé un collecteur ouvert avec traction locale de sortie vers le haut de façon fiable. Dans ce cas A0 est configuré comme une entrée numérique et fonctionne très bien.
Logiciel à l’ONU a été écrit pour rechercher plus d’un déclencheur (c’est en fait la variable utilisateur) pendant une période donnée afin d’assurer des déclenchements intempestifs ne se produisent pas. J’ai trouvé 2 déclencheurs « DETECTION_COUNTS_MAX » dans une période de 10 secondes « DETECTION_WINDOW_TIMER_VALUE_MS » a été suffisant pour arrêter ennuyeux les voisins (si vous regardez de près à la baie vitrée dans la vidéo que vous pouvez me voir avec frénésie agitant pour déclencher la chose). Une machine à États selon cas sert à attraper le bord de cet événement.
Une fois effectuée une détection de mouvement valide le programme allume les Leds vertes complet (dans le cas contraire interruptions devait fonctionner comme un processus simultané et je soupçonne la bibliothèque vague Adafruit a besoin d’un accès sans entraves aux interruptions pour contrôler la génération de sons), rendre le code plus simple.
Les yeux maléfiques sont déclenchés et le son est joué. Le chemin d’accès Audio est activée via un relais pendant l’état inactif car j’ai trouvé au cours de bruit de développement de la PWM de Leds vert était coupler à l’audio et provoquant un « bourdonnement » perceptible.
La piste audio est une collection de petits morceaux enfilés et a joué dans l’ordre. Pour rendre la vie plus facile (un simple sequential retire la carte mémoire flash) j’ai imaginative nommé les pistes 1th1.wav, 2sc1.wav, 3fs1.wav, 4cd1.wav, 5el1.wav et 6ew1.wav et copiés en une seule fois à la carte mémoire, s’assurer qu’ils ont été placés dans l’ordre.
Pour synchroniser le changement du crâne Leds du bleu au rouge (ce qui arrive au point de la piste où les rires se produit et « bienvenue » est parlée juste après la porte qui grince), je vérifie pour voir quand la piste « 4cd1.wav » est terminé puis dynamiser le relais pour passer à Leds rouges.
Une fois que la piste audio est entièrement terminée tout est réinitialisé et le système revient à l’état quiescent de surveillance.
Code pour l’unité de commande a été joint ci-dessous ainsi que les fichiers audio que j’ai utilisé.