Category Archives: WS2803

The Orbitron

The main part of the Orb is complete. I have gently sealed in all the glass prisms and stretched Cotton/Lycra over the top part of the sphere:

wpid-20150826_215818-1.jpg wpid-20150826_215828-1.jpg

I was able to crunch the code down to the Nano module. I’m left with just over 400 Bytes free. Here are 2 short demo patterns:

 

I still need to cut out a section of the sphere to store the Arduino Nano and then cut out a mounting hole for a staff.

Production Update – LED Orb

I Still don’t have a good name for this piece, however it is coming along nicely. I was able to get all the inside LEDs into the sphere and wire everything up:

wpid-20150826_001018-1.jpgI will shortly begin adding the outer LEDs. I ended up scrapping the center strip as it made the entire bitmap too large for the Arduino Nano to drive.

wpid-20150826_001007.jpgHere is a nice preview of the orb with the glass jewels placed on top, but not yet secured

Staff Head Piece

wpid-20150824_230645-1.jpgNo its not the death star, and its not some secret weapon…It is a headpiece for a walking staff! The top part will have a huge glass jewel with a group of 8 x 2 LED Pixels inside. Each side hole has a smaller glass jewel followed by 2 x LED pixels inside. I need to make sure the globe will run using an Arduino Nano as i want everything to fit inside the sphere. My main issue is the pissy 2k of SRAM that I’m stuck with inside the Nano. I have devices some code that severely reduces the memory needed to run my rendering engine. Mainly by encoding the RGB color of each pixel in video ram into a single byte index. However this limits the color spectrum and brightness of the LEDs… So I may have to either reduce the bitmap RAM by removing the bottom LED strip…or use an Arduino Mega…

Also big thanks to Instagram user alexei___ for posting this pic from the Kamp Kraken fundraiser over the weekend

Just a regular… #wowsuit

A video posted by @alexei___ on

Galileo GEN2 Javascript shiftOut() function progress

gen28bit

 

I used the MRAA library to get a pretty good rate out of  the GEN2 Galileo. Above is 8 Bits being latched via the clock pin. I made a VERY hacky bit-bang function that pushes out data to the WS2803. And success.

Below is a video of a fully working shiftOut() function written in JS for the Galileo GEN2, driving the suit

Ta Da! Im running a simple test program I developed to test a single WS2803 chip and its working as intended .

Now onto integrating the HTTP server via NodeJS and interactivity here we come

 

 

Intel Galileo GEN 2 roadtests

galileo-front-2x1

I accidentally purchased a GEN 2 Board 2 weeks back. It was advertised on ebay as an un-used but packaged opened GEN1 Board. So i bought it as a backup for my current project and to test some more razor edge stuff, so I wouldn’t blow my live one. This came to me as both a good and bad surprise. I actually wanted to get a GEN 2 board because Intel improved all the things i hated about the GEN 1 board. But i also needed a quick swap in backup for my project….and boy did Intel do a number on us all!

Things I really like:

  • Networking “Just Works” even the WIFI module was simple as plug in and boot!
  • Both the Standard Dev image (click here to download it) and the IOT image worked out of the box
  • They boot up system was unchanged and it booted up just as fast as the GEN 1
  • Same form factor and size as the GEN1
  • Packaging came with the power supply….
  • NodeJS works natively…with some tinkering
  • There is a pretty good IDE called the Intel XDK IOT edition which lets you create NodeJS projects, upload, debug etc…

Things I REALLY hated:

  • Power….the main power supply has changed from 5v to 7.5-12v! WHY??? This makes portable devices so much more annoying to power.
  • The GEN1 serial port, which was strange on its own, has been replaced by an even stranger 6 pin FTDI connector. You need to buy your own $15 serial to USB module and a special one, as no other standard ones work. You need to get the TTL-232R-3V3 . This is super annoying. They took out 1 chip from the board, and made the user pay for it externally

I’m yet to test out how the pins speed work in Node JS. If i can create working WS2803 Driver in Node, I will be super happy!

I had some luck getting a simple web server to accept POST data and action it by outputting a PWM signal to the pins..This was quick! which I’m happy with. This is one of the main reasons i would like to ditch the Arduino code. The HTTP server instance is too slow to be usable in a real time input system

Lightsuit – Standalone Galileo Version

After some major modifications to the code, I have some relatively good results….I have a relatively stable driver. I’m using the Galileo board on it own and the OUTPUT_FAST option. Strangely, my previous attempt at using this method failed. The data was somehow corrupted as it was pushed out on the data bus of the drivers. I then attempted using the OUTPUT_FASTMODE(which actual doesnt exists but uses a different method to write to pins 2 and 3 fastGpioDigitalWriteDestructive()… Anyway onto the results…. Here is a video of..

  • shiftOut using fastGpioDigitalWriteDestructive()
  • shiftOut using fastGpioDigitalWrite()

As you can see, these are NOT the results we want. I initially thought the problem was related to the size of data i was pushing onto the bus. We have 864 Bytes to push out. Strangely when i reduced this to 18 Bytes, enough to drive 1 row, i saw that 1 row get pushed up the serial ladder…and get garbled up after the 1st push. So i changed my write method back to the standard digitalWrite(), however i initialized the data and clock pins as OUTPUT_FAST….

As you can see, these are exactly the results we want!!! I can still see glitches every now again but they seem to be very fast and get wiped out. My thoughts are that the 2 fast IO pins 2 and 3, get wonky when driven at their super speed rates. I have seen multiple people online hook these up to their Oscilloscopes and show that the waves are not at all constant or smooth. I would love to get my hands on a Rev 2 board and see if these is any kind of improvement…but in reality I’m hesitant to waste money on it as I’m thoroughly disappointed with the Rev 1 board.

Lightsuit – Algorithmic Animation Macros

I’m taking a break from interactive frame streaming to the light suit, to concentrate on getting it to work in public. I have written some macros to help with animation. In this situation, I would usually just save a long string as a frame buffer and feed it to the live driver(thats my end goal)….but because i have less than 2k to work with ill have to do everything with functions. Have a look if you like:

animationMacros.c

I made 2 functions(with a 3rd which is probably not going to work):

void verticalStripe(bool movetoRight, bool clearAfter, byte colours[3], short int startIndex, short int endIndex)

This renders a vertical fill line and animates it from left to right or right to left…. for example:

verticalStrope(true, false,{10,0,0}, 0,7)

Will fill from left to right the block of rows 0 to 7

verticalStrope(false, false,{10,0,0}, 0,7)

 Will  fill from right to left the block of rows 0 to 7

If you toggle clearAfter to true, it will render a line instead a fill

void horizontalStripe(bool movetoRight, bool clearAfter, byte colours[3], short int startIndex, short int endIndex)

Same as the vertical function, but does a horizontal line..I’m working on a few other macros…

There is a 3rd function that renders a box around a specified block of the suit…but i wrote that blind.

Achievement Unlocked !

imageOk some major progress today!

  • I have written my own implementation of the shiftOut() function to he drive the WS2308 LED drivers. Its a little buggy…seems to take 3 drives to work for some reason, but I am still working on it
  • I have been able to drive the suit with only the Galileo and a client device!!! No mode NodeJS bridge server and no more arduino. AND NO MORE SERIAL problems!

The above pic is an interactive drawing made from the client interface