Und schon wieder habe ich ein kleines Hardwareprojekt, das ich hier vorstellen möchte.
Auf eBay bin ich auf diese günstige LED Dot-Matrix Displaymodule gestoßen.
Auf einer Größe von 3x3cm besitzen sie 8x8 rote oder grüne LEDs, die per Multiplexverfahren angesteuert werden.
Für diese Module habe ich eine kleine Platine designed, die nicht größer ist als das Modul selber.
Die LEDs werden über einen kleinen ATmega8 Mikrocontroller direkt angesteuert.
Auf Konstantstromquellen habe ich hier zugunsten der Platinengröße verzichtet.
Auch wenn diese Beschaltung den ATmega etwas überlastet, funktioniert es super.
In diesem und folgendem Beitrag geht es wieder um fnordlichter.
Ja genau, ich habe schon vor einem Jahr mal darüber geschrieben.
fnordlichter sind kleine LED Module die über einen gemeinsamen Bus angesteuert werden können.
Ich nutze diese Module zur intelligenten Beleuchtung unserer Wohnung.
Sie können uns über neue Mails, den aktuellen Stromverbrauch, das Wetter oder den Serverstatus benachrichtigen oder einfach als Stimmungs-Licht oder Party-Beleuchtung genutzt werden.
Da die einzelnen Module leider nicht genügen um damit mein ganzes Zimmer zu beleuchten, habe ich mich entschieden für diesen Zweck eigene Hardware zu entwickeln.
Wie der Name dieses Betrages es bereits andeutet können meine fnordstripe Module ganze Bänder/Streifen von LEDs ansteuern.
Ausgehend von dem fnordlichtmini Design habe ich die LEDs und Konstantstromquellen durch drei MOSFETs ersetzt, die jeweils einige hundert LEDs betreiben können.
Im Bild oben wurden die MOSFETs aus Platzgründen auf der Unterseite der Platine verlötet.
Last time, I presented some code for visualizing your power consumption using the Fnordlicht modules.
Today, we continue the journey in a similar direction: I’ve written a small C program to control the modules according to the current audio volume.
The software monitors the audio signal of my system (Ubuntu 10.10 with Pulseaudio).
So you can dance to everything that can play audio 😄…
Update: As preparation for an upcoming exam, I added a Discrete Fourier Analysis (DFT).
Unfortunately, the serial bus is to slow to visualize the audio spectrogram in real time .
The bars are colored with their complex phase->hue (HSV) equivalent.
fnordlicht FFT Visualization.
The software uses libfn a C-library for controlling fnordlichts and is available at Codeberg: /stv0g/libfn/src/fnvum.c .
Ich benutze PulseAudio um mich in die Soundkarte des Systems einzuklinken.
Das Programm tarnt sich als Recording-Tool.
Und kann dadurch den kompletten Audio-Output oder nur bestimmte Programme visualisieren.
Sogar das Mikrofon kann ich benutzen 😜.
PulseAudio liefert mir einen einfachen PCM Stream (44,1kHz Samplingrate, Mono & 16-Bit signed Integers).
Derzeit addiere ich immer nur x Werte dieses Byte Streams und mittele diese Summe dann über einen kurzen Zeitraum.
Geplant ist noch eine FFT-Analyse um die Amplituden verschiedener Frequenzen gemäß der “Ohrkurve”, der Empfindlichkeit des menschlichen Gehörs, gewichten zu können.
Der Schritt zur Spektral Darstellung (jedes meiner 10 fnordlichter als VU-Meter für ein bestimmtes Frequenzband) ist dann hoffentlich auch nicht mehr so weit.
Vor ein paar Wochen bin ich auf das Projekt von Alexander Neumann aufmerksam geworden, um den Eingang neuer Mails, Nachrichten und meinen Stromverbrauch darzustellen.
Meine 10 Module waren schnell aufgebaut.
Sie bestehen aus je 3x3 LED’s (RGB) und einem ATMega8 Mikrocontroller, der die PWM-Ansteuerung und die Kommunikation über einen seriellen Bus übernimmt.
Leider gab es bisher nur kein in Ruby geschriebenen Code zum Testen der Ansteuerung der Lichter über einen Rechner (/fd0/fnordlicht/tests ).
Daher ergriff ich die Gelegenheit und schrieb eine kleine C++-Bibliothek zur Ansteuerung der fnordlicht Module über die serielle Schnittstelle.
Die Bibliothek sowie ein Beispiel-Programm für die Linux-Konsole gibt es auf Codeberg: /stv0g/libfn .
Mit der Ethernet-RS232 Bridge von ethersex (Y-Port) konnte ich sogar die Ansteuerung über das Internet testen.
Dies wird auch von der Library unterstützt.