![](http://checkpage.org/pic/france.jpg)
+
Raspberry Pi Analyseur de spectre avec la bande de LED RGB et Python Vous cherchez un premier projet d'essayer sur un Raspberry Pi, je pensais quoi de mieux qu'un analyseur de spectre? (Parfois, cet affichage est appelée à tort comme un égaliseur graphique - qui vous permet de modifier le son, pas l'afficher) J'ai pu obtenir le faire FFTs 2048pt et mp3s de décodage en temps réel, et bien que cela ne devrait pas être difficile sur un Pi considérant beaucoup d'UCS 8bit ont été faits pour faire FFTs en temps réel, tout est fait en Python, ce qui le rend pratique (pour moi) pour finalement ajouter le contrôle via un navigateur web, sms, et d'autres choses. Il n'y a pas beaucoup de place pour épargner, cependant, il étouffe quand je déplace la souris. La plupart du code pour ce faire est déjà disponible, mon objectif ici est juste pour documenter à peu près les étapes pour obtenir ce travail, du point de vue d'un utilisateur première fois Pi. J'ai aussi fait quelques modifications à l'analyse FFT morceau pour accélérer les choses un peu. Matériel . (Merci pour les jouets Adafruit!) Raspi - Je pense que le mien est en cours d'exécution sifflante, Raspbian, ver 03/10/19 15ft (1m) RGB LED bande. 125 $ ( 160 leds) contrôlables via SPI, construit en contrôle PWM, il vous suffit d'envoyer des mises à jour - très agréable. Je suis juste en utilisant une bande enroulée autour pour former 5 colonnes, et l'écriture sur les différents segments de la bande. De cette façon, je viens trois fils reliés au Pi: sol, SPI Horloge et SPI données. 10A 5V alimentation pour conduire les LED. 25 $, vous pourriez probablement alimenter le Pi avec cela, aussi. Ce sont les éléments essentiels, mais vous aurez probablement envie d'un tas d'autres choses: adaptateur USB WiFi 7,61 $ (pilotes du chipset RTL8188CUS sont construits pour OS sifflante!). J'ai utilisé ces instructions pour le faire fonctionner. carte SD (je suis un un 8 Go) haut-parleurs USB Alimentation 10 $ USB Power Hub pour brancher clavier, souris, wifi, Certains chargeur de téléphone portable pour alimenter le Pi via son connecteur d'alimentation USB câble Ethernet pour se connecter à Internet à travers un ordinateur portable pré-wifi clavier USB, souris, moniteur HDMI fil, des fils de connexion femelle-femelle Logiciel : Je viens d'utiliser la plupart du temps cette base-Pi code du contrôleur de feux de noël impressionnante de Chris Usey, Todd Giles et Ryan Jennings. Il est un centre de commande complète pour orchestrer noël lumières à l'audio (wav, mp3, etc). Leur code vous permet de configurer des listes de lecture et allumer et éteindre la puissance 120VAC basée sur des bandes de fréquences. Vous pouvez même voter sur des chansons par le biais de messages SMS! Leur code porte sur les bandes de fréquences dans la musique, et si le bruit dépasse un seuil, on fait tourner une broche sur GPIO. J'ai changé le code pour afficher le niveau de la bande de fréquence réelle sur une bande de LED RGB, plutôt que d'avoir juste un on / off seuil. Sur la base de similitudes dans le code, je pense qu'ils ont obtenu leur code de traitement FFT à partir de ce python en temps réel démo FFT. bande de contrôle de Python de LPD8806 LED RGB via SPI. Ce n'est pas lié à ce projet, mais j'utilisé l'Geany IDE pour le codage. Étape 1: Connectez bande de LED et la configuration du logiciel LED RGB Plutôt que de traiter avec des bandes séparées LED pour chaque colonne, je viens en boucle une seule bande de LED 152 avant et en arrière, en le fixant avec zip liens avec un porte bébé. Cela gaspille des LEDs comme je ne suis pas afficher quoi que ce soit dans les virages, mais vous pouvez éviter le gaspillage LED en coupant les fils de la bande et la soudure entre les colonnes. Soudez le 5V, la terre, l'horloge et les lignes de données à l'extrémité d'entrée de la bande de LED, et se connecter au Pi comme indiqué sur le lien ou dans mes photos. Assurez-vous de relier la masse de l'alimentation de 5V à la masse de la Pi! Prenez le logiciel et suivez les instructions pour obtenir le Pi en mesure de sortie SPI. Il est important que vous utilisez le SPI matériel car toute approche de bit-banging ne sera pas assez rapide. pour permettre à SPI de matériel (suivre les instructions à la page git). J'ai ajouté le répertoire d'installation à mon PYTHONPATH en bashrc pour que je puisse appeler les fonctions de partout..bashrc à l'intérieur: export PYTHONPATH = $ PYTHONPATH: / home / pi / RPi-LPD8806-maître tester que la bande fonctionne en exécutant le code d'exemple: Le code de noël de lumière, nous allons télécharger plus tard veut courir en tant que root, et lorsque vous exécutez les choses avec un sudo en face, les variables d'environnement, en particulier, PYTHONPATH ne sont pas transférés. Je devais modifier / etc / sudoers en tapant et on ajoute ensuite au fond La valeur par défaut par défaut env_keep = de SYNCHRONIZED_LIGHTS_HOME env_keep + = PYTHONPATH la première ligne est quelque chose que nous aurons besoin pour le paquet de lumière de Noël à être installé plus tard. Ceux-ci font en sorte que ces variables d'environnement autour de bâton lorsque vous exécutez choses comme sudo. Pour vérifier que vous avez le droit d'installation, fermez le terminal et ré-ouvrir, puis tapez qui devrait tourner sur les 10 premières LED. Une dernière étape consiste à faire quelques modifications pour accélérer l'écriture à la bande. Inside ledstrip. py, assurez-vous que use_py_spi = True dans la ligne def __init__ def __init __ (self, Leds, use_py_spi = True, dev =): Maintenant, à l'intérieur de LPD8806.py, nous allons changer la vitesse SPI à 16MHz importer spidev self. spi = spidev. SpiDev () self. spi. open (0,0) self. spi. max_speed_hz = 16000000 print 'py-spidev MHz:% d'% (self. spi. max_speed_hz / 1,000,000,0) Cette déclaration d'impression est là juste pour vous assurer que tout est réglé correctement. Un dernier changement dans le fichier LPD8806.py est dans la fonction de mise à jour (). Pour une raison quelconque, je remarque led. update () prenais longtemps, upwords de 25ms. Pour obtenir un bon effet visuel, je voulais tout mon analyse et l'affichage en boucle pour fonctionner à 20Hz, ou 50ms par boucle, et brûler la moitié de ce temps d'attente pour la bande de LED ne fonctionnerait pas. Et étrangement, à 16MHz, il aurait dû prendre moins d'un ms. 3 octets par conduit, 152 LEDs, (3 * 152 * 8 bits / 16M) = .2ms! (Non 25ms) Quand je mets un champ d'application jusqu'au port SPI, chaque octet sortait à 16MHz, mais il y avait une pause 160uS après chaque appel à self. spi. xfer2 (). Ma solution était de recueillir l'ensemble de la chaîne d'octets dans une mémoire tampon et seulement appel self. spi. xfer2 () une fois: mise à jour de def (auto, tampon): temp_buffer = [] si self. use_py_spi: pour x dans la gamme (self. leds): temp_buffer = temp_buffer + [i pour i dans un tampon [x]] # self. spi. xfer2 ([i pour i dans un tampon [x]] ) self. spi. xfer2 (temp_buffer) self. spi. xfer2 ([0x00,0x00,0x00]) #zero remplir la dernière pour empêcher les couleurs parasites au self. spi. xfer2 final ([0x00]) #once plus avec le sentiment - cela aide :) time2 = time. time () En écrivant à 152 LEDs à 16MHz ne devrait pas prendre le temps - vous devriez voir le dernier changement LED en même temps le premier fait D'autres personnes ont eu du mal avec cela et a obtenu autour de lui, consultez l'effet POV vidéo étonnante avec une seule bande de LED verticale (envoi de données à 8MHz thru 20ft de cat 5!):
![](https://i.ytimg.com/vi/Dcg6tOIgS7A/maxresdefault.jpg)
No comments:
Post a Comment