Mar 2: WS2812b RGB-LED controlled with an MSP430 - Part1

The protocol is quite easy and is well described in the data-sheet.
Short version: Each bit is represented by a 1.25us long (800kHz) high-low pattern with a 1⁄3:2⁄3 (2⁄3:1⁄3) duty cycle for a 0-value (1-value).
For a detailed timing overview and a comparison between the ws2812 and ws2812b version have a look at cpldcpu, it is a very good resource.
As this is a serial protocol, you need to serialize your data bytes into a bit-stream. This can be done with the CPU and your controllers IO pins (bit-banging) or with a serial protocol peripheral like the SPI module.
SPI is here the weapon of choice, as it has an integrated shift register, which shifts a bit out with every clock cycle.
All implementations I saw on the web so far, which used the SPI module, converted one bit of LED data to one byte of SPI data, for example a 1 to 0xF8 and a 0 to 0xE0. With this you get 2⁄3 (1⁄3) high time and 1⁄3 (2⁄3) low time for 0xF8 (0xE0). It's quite an easy implementation, because you just have to decide for each LED data bit, if you send a 0xF8 or a 0xE0. But on the downside it also needs a high SPI clock to reach the 800kHz for the one-wire LED data stream. You need 8x800kHz = 6.4MHz for your SPI clock and an even higher CPU clock to bring the data to the SPI module. When your CPU speed is limited and you can't convert your data while transmitting, you need to pre-calculate, store the result in a buffer and transmit afterwards. You need also 8 times the memory of your raw LED data for you buffer, which is 24bytes per LED.
In my implementation for the MSP430 (FR5739) I decided to go for a SPI transfer sourced by DMA from a buffer in RAM (or FRAM). But instead of the one bit to one byte (8-bit) encoding, I implemented a 4-bit and a 3-bit encoding to reduce buffer size and clock frequency. The 4-bit encoding is running with an SPI clock of half of the CPU frequency (6.7MHz⁄2 = 3.35MHz) which results in a one-wire signal clock of 837.5kHz (3.35MHz⁄4) which is well within the specification. The 3-bit encoding runs on a third of the CPU clock (8MHz⁄3 = 2.66MHz) which is an effective clock of 888.88kHz.
Both encoding implementations work pretty fine with the ws2812b I have, but you can test it yourself with the code I released on GitHub.
In part two I'll write about the data encoding some more, the pros and cons of each and some implementation details. In part three I'll describe the msp430 specific code in the demo application, which is also in the GitHub repository.
Apr 3: ezDHT11 - USB enabled humidity and temperature sensor node

It's about one year ago that I ordered the DHT11 low cost humidity and temperature sensor. Now I found some time to make something useful with it: A USB stick sensor node.
When plugged in, it provides a serial interface which outputs the data in a readable format once a second.
This project utilizes only an DHT11 1-wire sensor and the programmer ez430U, which comes with every ez430-Kit from Texas Instruments. The ez430U has a MSP430F1612 micro-controller on it accompanied with a TUSB3410 chip for serial to USB conversion.

The DHT11 uses a proprietary 1-wire protocol with a pulse width coding. I developed a full timer and interrupt based code to request and decode the sensor data from the DHT11 while the main controller is powered down. As the sensor should only be read-out once a second, the MSP430 sleeps also during this period.
I've uploaded the complete project with some extra functions to read and write the EEPROM for the USB controller to GitHub.
Have fun building your own.
May 4: MusicPal WLAN-Radio erweitern

Anfangs kam der MusicPal von Freecom für mich nicht in frage, da er keine Fernbedienung besitzt. Doch nachdem ich auf diese Seite hier http://www.donar.com/musicpal/ gestoßen bin wurde mein kleines Bastlerherz geweckt.
Es sind Hardwareseitig noch einige Sachen ungenutzt, wie beispielsweise ein Atmel µC mit Infrarotempfänger, oder ein USB-Port der nicht bestückt ist.
Außerdem läuft als Betriebssystem ein Linux auf dem Radio, und Freecom hat der GPL folge geleistet und die Quellen mitsamt Toolchain zum herunterladen bereitgestellt.

Entschuldigt bitte die schlechte Bildqualität, aber meine "echte" Kamera ist gerade ohne mich auf Reisen.
Auf dem PCB ist alles schon für USB vorgesehen, man muss also nur das Gerät öffnen und eine USB-A Buchse auflöten.

Wer denkt, jetzt geht das große Linux gehacke los, der wird leider von Freecom enttäuscht: Selbst in der Firmware ist USB bereits integriert. Ein USB-Stick wird sofort erkann und man kann sich auf dem Filesystem austoben und darauf gespeicherte Musik problemlos abspielen.

Für die nächste Episode werde ich dann bessere Bilder liefern und auch mal den gesamten Innenaufbau photographisch Dokumentieren, denn es gibt doch einige Stellen auf dem BCP die nicht bestückt sind, aber im Layout eingearbeitet.
Apr 5: Umbau einer WLAN-Karte bei einem IBM T40p
Gestern habe ich die interne WiFi-Karte meines IBM Notebooks getauscht. Da ja leider irgendwie der 802.11a Standard (54MBit bei 5 Ghz) ausstirbt und meine bisherige Karte nur 802.11 a und b unterstützt, kann ich vielerorts nur den langsamen 802.11b Modus nutzen. Günstige Accesspoints haben außerdem leider immer nur b und g, will man jedoch 802.11a haben, muss man zu den teureren sogenannten Dualband Routern greifen, die dann alle drei Standards (a, b und g) können.
Deshalb habe ich mich auf die Suche nach eine Karte für mein Notebook gemacht, welche ebenfalls alle drei Standards beherrscht. Dies ist allerdings bei einem IBM Notebook nicht so leicht, da im BIOS eine VendorID Liste gespeichert ist, in der steht welche Karten funktionieren dürfen.
Jedenfalls habe ich dann eine gefunden und bestellt. Hier deshalb nun eine kleine Bilderreihe vom Umbau.
Zuerst sollte man Akku, Slimlinelaufwerk sowie die Festplatte entfernen. Danach kann man auf der Unterseite des Notebooks die vier Schrauben entfernen, die mit einem Tastatursymbol gekennzeichnet sind.
Hat man diese entfernt, kann man die Tastatur leicht nach oben verschieben, bis sie am unteren Rand aus ihrer Befestigung schnippt. Dannach kann man die Tastatur abnehmen und vorsichtig den Stecker (der vom Tastaturflachbandkabel) abstecken. Da aber die miniPCI Karte unter dem Touchpad liegt, muss man nun auch noch dieses mitsamt der Handauflage entfernen.
Hierfür dreht man das Notebook schon wieder um, um die Schrauben mit nebenstehendem miniPCI Symbol zu entfernen. Hier gibt es zwei Sachen, die man beachten sollte: 1. am unteren Notebookrand (bei den Lautsprecheröffnungen) sind die Schrauben mit Klebeblenden versteckt, welche man mit den Fingernägeln entfernen sollte und 2. sind zwei Schrauben TX bzw. TR 7 Torxschrauben, für welche man nicht unbedingt einen Schraubendreher daheim hat.
Sind alle Schrauben endlich entfernt, kann man die Handballenauflage mit Touchpad nach vorne hin abziehen und den Stecker mit behutsamen Zug am "Fähnchen" abziehen.
Nun liegt der miniPCI Steckplatz mit eingesteckter Karte frei vor uns. Bevor man die WLAN-Karte heraus nimmt, sollte man mit den Fingernägeln die beiden Antennenstecker von der Karte lösen (ACHTUNG!! Nie am Kabel ziehen).
Jetzt noch beide Metallbügel nach außen drücken und die alte Karte springt einem schon entgegen. An dieser Stelle habe ich ein wenig sauber gemacht, da sich innerhalb von 3 Jahren doch einiges an Staub und Schmutz ansammelt.
Danach die neue Karte behutsam in den leeren Slot einbauen und die beiden Antennenstecker (Main und AUX) gemäß Beschriftung wieder anstecken.
Für den Zusammenbau alle Schritte in umgekehrter Reihenfolge wiederholen. Zu guter Letzt Festplatte, Laufwerk und Akku wieder einsetzten und beim Booten Daumen gedrückt halten :)
Bei mir hat es funktioniert und ich kann jetzt ganz prima schnell funken, egal ob bei 5 oder 2,4 GHz.
Deshalb habe ich mich auf die Suche nach eine Karte für mein Notebook gemacht, welche ebenfalls alle drei Standards beherrscht. Dies ist allerdings bei einem IBM Notebook nicht so leicht, da im BIOS eine VendorID Liste gespeichert ist, in der steht welche Karten funktionieren dürfen.
Jedenfalls habe ich dann eine gefunden und bestellt. Hier deshalb nun eine kleine Bilderreihe vom Umbau.
Zuerst sollte man Akku, Slimlinelaufwerk sowie die Festplatte entfernen. Danach kann man auf der Unterseite des Notebooks die vier Schrauben entfernen, die mit einem Tastatursymbol gekennzeichnet sind.



Nun liegt der miniPCI Steckplatz mit eingesteckter Karte frei vor uns. Bevor man die WLAN-Karte heraus nimmt, sollte man mit den Fingernägeln die beiden Antennenstecker von der Karte lösen (ACHTUNG!! Nie am Kabel ziehen).

Danach die neue Karte behutsam in den leeren Slot einbauen und die beiden Antennenstecker (Main und AUX) gemäß Beschriftung wieder anstecken.

Bei mir hat es funktioniert und ich kann jetzt ganz prima schnell funken, egal ob bei 5 oder 2,4 GHz.
« previous page
(Page 1 of 1, totaling 4 entries)
next page »