I also want to share with you one of the decorations I made for last Christmas. It consists of two sets of 8x tubes of LED lights (bought from Ebay as Meteor Shower). They are meant to be hung in a tree as per the photo below, and for the Xmas before, that is exactly what I did.
Last year I mounted the tubes radially around an old bicycle wheel. After initially powering up with 5v I was pleasantly surprised as they started to run out of sync and produce a very effective starburst pattern….something that gave me ideas to improve on this year see Christmas 2016
I’ve also added a Youtube video here so you can see what it looks like.
The lights cost be about £12 UK per set back in 2014. One tube didn’t work and the Ebay seller gave me a good discount for that item. The line behind them is just the copper central heating pipes to my radiator.
Last year I mounted two strings of “LED Meteor Shower” (total 16x tubes) in a radial fashion on an old bicycle wheel. The effect as the individual tubes went out of sync was quite interesting and gave a nice firework/star burst pattern effect.
This year I have plans to make something similar but using Neopixels/WS2812 RGB LEDs.
I’ve made a test string consisting of 10x WS2812 LEDs, this will be one arm of the new star effect and I’d parallel up another 5-7 strings to make 6/8 in total (depending upon what is in the bank account).
I didn’t want to use an Arduino/Raspberry Pi but still wanted something that was free running – but with a degree of randomness. Hopefully with 4-5 of these stars ir would look quite good. I had planned to use FPGA/CPLD and design a WS2812 driver in VHDL but couldn’t easily find a component/development solution to meet my budget. Instead I looked again at using the Microchip PIC range to drive the WS2812 directly. Bit-Banging was out of the question as I wanted an intelligent product that had processing time available to calculate the patterns. I then found a Microchip Tec sheet AN1606 that detailed using the Configurable Logic Cells (CLCs) of their newer PIC devices. That worked well and was fairly easy to implement into a PIC16F1509 DIP device (running at 16MHz and programmed in C using the XC8 compiler).
However, delays in processing (the C overheads) caused some issues with stability. I instead decided to write the entire program in assembler. This has gone well and I now have a single strand running. There is a feed in pattern that is used to generate the LED colour/brightness in the centre, this pattern is stepped through in time. Each LED colour is automatically passed to the next LED but after it is modified to ensure it fades (just like a firework would). The time delay as the pattern steps through is also slowed as time progresses to give a more realistic slow down.
Version 1.02 can be found on my Github page Github StarBurst
I now need to:
- Design a PCB
- Buy components (PIC, Neopixels)
- Buy some clear tubing to mount the WS2812 into
- Consider controlling them with RF (868MHz) – in a similar way to the Xyloband
I’ll keep posting and will upload code/diagrams etc as I generate them. Please let me know if you enjoyed reading or wish me to explain anything further.
[My Xyloband Tx circuit is busily churning away through some possible byte combinations and I’ve placed the Xyloband in from of me. If it flashes I can stop the code and see what values were being sent. As yet nothing….so while that is working away..]
I’m starting to think about my Christmas light display. Last year I built my own UDP to 8x RGB channel controller that worked off the Vixen3 software and a Raspberry Pi. This year I want to use some of the WS2812 LEDs as addressable pixels. Although the Arduino community seem to have the WS2812 RGB LEDs under control in terms of library functions there is not so much available for those programming microcontrollers like the PIC range.
There are various articles on the WS2812 but basically the datasheet is lacking detail. The protocol requires 24x bits on a NRZ line to drive a single LED and these can be daisy-chained to longer arrays. So 10x LEDs would require the serial Tx of 240x bits. The line timing is important and requires the high pulse to vary in length between 0.35us and 0.9us signifying ‘0’ and ‘1’ respectively.
Another idea was to build the entire ‘fast logic’ in an FPGA and I actually designed the circuit last year but didn’t have a suitable FPGA programmer nor could I afford one.
This year I decided to look at the specs of some of the latest PIC Microcontrollers that Microchip very kindly provided samples of to me. The PIC16F18346 has immediately caught my eye. It has an internal module known as the “Data Signal Modulator”. It looks like this might allow me to easily create the WS2812 drive signals with very little microcontroller overhead – very beneficial as the microcontroller can get on and do other stuff.
I’ll let you know how it goes when I get some code up and running [or back to the Xyloband if it flashes !]
Firstly after breaking the only one I thought I had access to I managed to procure another – which has arrived today in a Jiffy bag. So back I’m back in the game on that one.
New Xyloband Hacking Forum
My blogsite attracted a lot of interest but perhaps isn’t the best medium for discussions and contributing snippets of material. One of the readers (ayelix) who was contributing to these Xyloband based discussions has now set up a forum specifically for discussing Hacking the Xyloband. All readers are very welcome to sign up to the following forum and take part in those discussions. The URL link is: http://xylobandhacking.freeforums.net/
When we say hack here, we’re talking about re-activating our own devices so those who have attended concerts can re-live the fun at home rather than reading/distributing stored Intellectual Property so the device can be illegally replicated.
I’ll continue to put random stuff on my blogsite which I hope people will find interesting. My plan is to use the forum above to discuss, contribute ideas and share what we find. I’ll no doubt use the my blog to present chunks of progress (along with a link back to the forum each time).
There is some absolutely fantastic comments and information coming in – as moderator I’m approving them all so hopefully comments are appearing on the blogsite for everyone to see.
And now my update, which sadly isn’t quite as good as I’d hoped for. “SPI Spy” worked on a test setup (e.g. SPI bytes from the original PIC circuit to my MRF89XAM8A board). I soldered two thin wires to my Xyloband, sleeved them and fed these through a CD4011B (using two NAND gates to form non-inverting buffers to both SCLK and SDI) back to SPI Spy. Initially I got quite a lot of SPI bytes but none of them really aligned to anything meaningful in the Si4362 datasheets.
I thought the corruption might be due to the overhead times in my SPI Spy meaning missing some of the bytes and so changed some areas of the code for pure assembler. Somewhere after that change I noticed that the Xyloband no longer flashed briefly on power-up like it used to. I’ve checked connections and power to the ICs which is OK but the unit appears to not function. I can only assume somewhere along the way I shorted something out – for info I was running the circuit at 3.3v rather than the 3v from 2x AAAA batteries so that might have been responsible for the failure.
Unfortunately I’m not going to be able to provide much more assistance to others wanting to get their Coldplay Xyloband to light but I’m still really keen to know how others get on and so keep the info coming in as I’ll keep posting the comments. If however anyone would prefer to move that discussion into a more accessible/sharing electronics forum then please say so and I’ll post the URL to redirect anyone.
Those blog readers who have studied my posts will likely recall me mentioning two of my family attended the Coldplay concert and so surely I have two Xylobands – I do but one of the owners has seen the demise of this Xyloband and are certain they ‘dont know where their one is’ !
To finish this ‘project’ off I’ll tidy my “SPI Spy” data, draw out the circuit and upload to my Github account should anyone wish to use it for this (or other SPI related projects).
In time I may create my own version of a Xyloband (for personal use rather than a commercial design which would conflict any patents that Xyloband have) and can at least use my own protocol.
I would also like to thank all those around the world that have (and still are) following this blog. WordPress provides viewing statistics and I can see hits are coming in from every continent plus a really warm thank you to those who have shared their information here.
Lastly a picture of my now defunct Xyloband, which with a backdrop of the Institute of Engineering and Technology’s (IET) monthly magazine called E&T, would actually make a great cover. I now need to reassemble this Xyloband so it looks good still and return to its owner.
As mentioned in Part 6 I got my RF transmitter working and spent the rest of that day (and the next) sending ‘random’ bytes of data at different Baud rates to the transmitter. Some were interesting to listen to on my scanner but there was not even the remotest flicker of lights on the Xyloband (apart that is from the initial flash when power was applied). I started to wonder what to try out next and then started to doubt I’d picked the correct frequency. The bandwidths are small and well controlled in the SRD band so how about if it was 869.2MHz rather than 869.5MHz ?
However, ayelix kindly mentioned the receiver within the Xyloband was the Si4362 and looking at that datasheet confirmed the odd numbers that appeared on my Xyloband’s IC. That made me think….’Why not grab the SPI setup data that is sent from the Atmel microcontroller to the Si4362?’. I’d be able to compare SPI bytes with those on the Si4362 datasheet and hopefully determine some key parameters. I’d then be able to set and forget these in my Xyloband Transmitter project.
So my breadboard just got a little bit more crowded as “SPI Spy” was born. It monitors the SPI SCLK and SDO from a microcontroller and grabs each byte up to a maximum of 512. I can then scroll though the bytes looking at address and contents. There are five buttons: Rewind (to first byte of data), Back One, Forward One, Exit/Reset and Start/Stop. There’s a CD4011 CMOS logic gate to take the 3.3v inputs up to 5v. Why? If you’ve read my intro blog page I mention I’ve little spare cash. Well I only have one 74HCT573 to act as a buffer on the Xyloband project in order to allow me to run the LCD at 5v and the PIC16F1789 and MRF89XAM8A at 3.3v. Therefore the SPI Spy had to run at 5v but I needed to boost the SCLK and SDO being monitored. Luckily I had a CD4011….maybe I’ll ask Texas Instruments nicely for some samples later in the year.
I’ve grabbed the SPI data successfully from my Xyloband/MRF89XAM8A module and it almost makes sense. I need to spend just a little longer tweaking this as I believe I’m currently missing a byte as the C code takes too long to run and missing the SPI event.
So, that’s where I’m at currently. I need to:
- Be 100% confident in the SPI Spy.
- Carefully solder two tag wires to the Xyloband’s RF Receiver IC.
- Run SPI Spy and interpret from the datasheet.
- Setup my MRF89XAM8A module accordingly.
- Then play with the variables that are left.
Things I don’t know:
- What colours can a Xyloband do? Red,Green, Blue, White, Yellow, Cyan or every hue/saturation? e.g. Is each RGB element assigned its own byte.
- Do different Xylobands (at the same concert) give different colours. If so perhaps there are several Tx codes. e,g, all bands in group A go to this colour, all bands in group B go to this colour etc.
I’m still assuming the data is a one way push, no handshaking, no clock. Just an asynchronous stream of bytes….perhaps eight in total.
When I get this to work I’ll spend a while returning the ‘technical debt’ on my C code and the upload the source to my Github account so other people can copy/fork the code for their own projects. [Technical Debt is the term I use to professionally describe messy code, eg I owe it some more attention !]
A quick update….
I’ve successfully powered up the MRF89XAM8A RF module using a PIC16F1789 which can be seen by the RF power bars on my scanner (tuned to 869.5MHz).
Now I need to tweak the pulse patterns and modulation until something starts to happen on the Xyloband. I might have to look at those pins on the Xyloband’s Atmel microcontroller to see what setup SPI signals are sent to the RF chip.