My HiLink order arrived: The HLK-RM10 has standard 2.54mm spacing on the edges so its much better for breadboarding! It appears to be 3.3V-only, and while the pin count is the same, the pin assigment is very different though with apparent idential exposed functionality. I haven't attempted reflashing it yet to play with the GPIO, but it looks promising as a nice, flush, production-ready module. The rest of its components (RAM, ROM) appear identical to the 'RM04. Great!
The HLK-RM02 also appears to have the same components as the '04, but on a ~50% larger PCB with ehternet magnetics and port onboard. Fewer pins exposed as well (16), but that may be due to the ether' being there and a separate power header as well.
HLK-WIFI-M03 is different, though, it has an AL2230S RF chip and HED05W01SA SoC (ARM922T core) with 1MB RAM, unknown ROM - not too promising for installing linux.
Also received the HF-LPT100 module, appears to be based on a High-Flying MC101 UART controller with MT5931A RF chip and 2MB flash(!) The MC101 shows to have GPIO and PWM, interesting, but I can't find data on teh core. It is so very tiny. I see this used as remote sensors/"internet-of-things" for sure. I haven't tested the power draw yet but they claim very low.
Aaand that was easy, however the RT5350 is not happy with the floating point/math operations I use for the plasma effect - no FPU so sqrt(sqr(a)+sqr(b)) or hypot(a,b)[strangely even slower] is no bueno. I'm only seeing a refresh every half-second or so :( All the other graphics are working great! So after investigating a "integer sqrt" or "integer hypotenuse" solution I saw a formula that only involved (sqrt(2)-1)*a+b, easily used as a constant, with basic maths. This speds things up very much, however it still involves floating point maths and is a bit choppy... Well, sqrt(2)-1, .41421..., is awful close to 0.5, aka divide by 2, or even better: shift-right by 1... so I gave it a shot: (a>>1)+b hell that looks just fine for my purposes. Full-poncho plasma is smooth as ever, I even needed to add a delay loop to slow it down! CPU usage inticates ~96% with plasma. ~50% with other basic animations. Memory usage (VSZ, at least) is only 1.5MB, or "8%", which includes 2x full RGB buffers. Wonderful! I still have fear of glitching due to the FIFO running out before I can top it off due to the kernel interrupting, so next I'm going to attempt the DMA aspect of the PCM hardware (larger buffer! and interrupt handling - oh noes). I'm having trouble compiling kernel module code right now w/ the MIPS toolchain so this is all from userspace so far. The PCM driving is all done in its own thread (assigned FIFO prority, the highest) so I am generating the next frame while the PCM hardware updates the LEDs. Yay multi-threading!
Success, 3 PCM bits per 1 WS2811 bit works swell. The poncho (over 2000 WS2812 & WS2812B LEDs) is refreshing without glitching! Adapting my graphics code over to it next...
Finally got something stable! If I disable the FIFO before re-enabling the PCM function (and FIFO again) I can get a clean start, however by disabling the PCM when done streaming it goes high-Z and resets all the options meaning I'll need to use a pull-down resistor for idling and invoke the ~7 lines of PCM config when turning it back on again. But it works! Poncho refresh is very smooth! I have another GPIO pulsing every time I write the the FIFO so I can see the top-off frequency - I do notice kernel interrupts happening (seen as lage gaps in that pulse) and the FIFO gets awful dangerously close to empty but the bit stream is steady (it can only hold 8 words per channel, equating 16 bytes of crafted WS2811 bit stream) So there is very occasional glitching :( I'll try moving to 3-bits and a slower PCM rate to inflate this number (~400ns/bit: b100=0, b110=1) to give 21+ WS2811 bytes, a decent increase.
Ugh this is frustrating. I can get the PCM data looking good but there is jitter at the beginning and end of the streams, like the FIFO is round-robin'ing to old data. I seem to be able to pad it out with 0's at the cost of a delayed refresh. I can't seem to properly flush the FIFO buffer or, at least, set it to 0s so there is no spurrious signaling. I've tried various methods of disabling PCM features/functions, all with various ill side-effects. I can't even keep it at zero when done even after fluffing the buffer up with 0s (i.e. leave PCM turned of in an infinite loop of pumping out 0s)
So apparently if I don't wan't gaps in the PCM data stream I need to use both of the available PCM channels in 16-bit mode...And the FIFOs are 32-bits but the PCM is 16 per sample. It alternates every 16 bits between each 32bit FIFO... How annoying, but just a small logic fix in my code and It's pushing out me data correctly!
Getting some success with the RT5350 PCM hardware! I got the bit timing right (the spec sheet was confusing[maybe incorrect?] about the settings) and can pump out desired patterns but is awful jittery and has high-Z inter-byte periods. That's not nice... But quite neat I can push out at up to 20MHz down to about 19kHz without using the main CPU!
I figured out the memory mapping and GPIO locations, and purely bit-banging gets me ~3.33MHz. Much better! A quick routine to bit-bang a WS2811 stream shows it works well! Though kernel interrupts are causing glitches, even though I have it in it's own thread set to utmost priority. Time to read up on modules and/or atomic threads. Though I did read about a hardware PCM with 8-16 bit raw data, plus DMA and/or FIFO buffering. The data line for the PCM is luckily one of the exposed pins! WS2811 doesn't require a clock, just specifically-timed data. I think if I can figure out enabling the device and set the timing profile correctly I can pump out bytes as bits (eg b1000 as a 0, b1110 as a 1, alotting 2 bits per byte with a ~300ns bit width)
I finally found and got the MIPS toolchain to compile so I can write native code for the RT5350 SoC (HLK-RM04 module's CPU). Built and sent a "Hello world" over serial and it executed fine! Woohoo! Now to map out the SYS and GPIO memory locations so I can toggle the available GPIO directly...
Looking for another cheap dev board for the RM04 I see on HiLink's store a few other interesting-looking modules, including an SMT version (no header pins, no backside components) of the HLK-RM04, they call it the HLK-RM10. Buying one! I also see a few others of interest to investigate: HLK-RM02 looks like an 'RM04 on a slightly-expanded board that includes 1 ethernet port and slightly fewer exposed pins. And HLK-WIFI-M03 looks like a gumstick version, again with fewer pins. Non-HiLink: A HF-LPT100 module thats's 13x22mm. A USR-WIFI-232-G, and a FZ0417. all of unknown spec, yet
I wanted a tiny controller for about 1000+ WS2812 LEDs, so I thought an ATMega328 would do nicely. The memroy is too lacking though! But I'm persistent :) I made a copy of my WS2811 core code to accept 1 8-bit byte per whole 24-bit RGB pixel (each bit represents RRRGGGBB). Perfect! I didn't need much colour fidelity for this, yet this method still looks very pretty and just as colourful!
I've managed to get I2C enabled and exposed on my HLK-RM04 modules after playing with the dts files. It turned out to be very simple! (kernel_menuconfig was not enough & doesn't cut it). I managed to get the RTC module to talk to it and set the date & time from userspace. Then after some searching I found how to get the kernel to manage it, again from the dts file and it works! System date is maintained before the filesystems are mounted.
Trying to get GPIO exposed and workig on my HLK-RM04 boards. I managed to get some exported but the control doesn't seem to work - I am able to read input, but not do any output, though togglign between input w/ pullups and output seems to give me a pseudo I/O. Humm
Getting back to playing with my HLK-RM04s and doing some system configs. I've managed to get dnsmasq configured on it to direct all DNS queries to itself and BusyBox's httpd to serve up a simple CGI shell-script mimicking the BeagleBoard functionality I have. Yes! I had to do some searching to fix a bug where index.cgi drops QUERY_STRING parameters - a 2+ years old bug? still not fixed in the trunk? wat
Well that wasn't so bad, the PRU's assembly syntax is pretty straight-forward though I had trouble finding the toolkit to compile the binaries. It has full system memory and GPIO access so bi-directional communication with it was a breeze. I have my graphics program running a secondary thread that waits for the PRU to finish a refresh before updating the next frame of data, dedicated to this, VSync!
Party is next week! I'm trying most to get a smooth-scrolling candycane effect (ala a barbershop pole) on top of my general "Mystify" screensaver, etc. I managed to make a very simple yet recoglisable snow-fall effect (with accumulating snow drift!) as well as twinkling stars! Right now though I'm just "emulating" it on my PC (had to do a quick cram session on how to make Xorg apps and draw on-screen!) I'll be using my BeagbleBone Black which as a dedicated co-processeor they call the PRU where I can offload all the WS2811 bit-banging and not worry about the OS causing any glitching due to task switching/interrupts. Reading up on it now...
It lights up! This poncho is an irregular shape (data comes in the back, over shoulder, mid back, over shoulder, back, then a long "jumper" data wire to fill in the mid front) so addressing it is not straight-forward if I want to pump out frames of bitmap data. I wrote a small bit of code that builds a pixel-map array (bits of logic determining where the scanline needs to double back or skip ahead) so when I pump out the pixels to the poncho it's just a linear lookup table, no need to calculate anything. While the poncho is a long rectagle of 26x80 LEDs, my bitmap frame buffer is actually 52x40 (left half = front, right half = back) so the poncho can act as a cylinder: animnations going off the edge of the front/back seamlessly emerge on the opposite side.
Now that layout is set for the poncho, time to solder it all together. I'm very aware of how fragile flex board is, and the solder pads. As this is a wearable I'm expecting lots of flexing! So to the soldering I must do at the end fo each strip I first attached a short lendth of bare stranded wire to teh pads, bent the wire back and up the strip's backside and se tthat in glue. Now the only real stress point is on the stranded wire. All the power +/- lines are wired in paralel with 2x CAT5 wire looping along the edges, the data lines are in alternating fasion - zig zaging the strips.
I have a company holiday party coming up themed "Retro Future" so I've decided to finally sit down and assemble a wearable form these WS2812 strips and bring it there. It'll be a good test run so I'm just using cellotape to keep everything together. I'm finding that the reels, which are made up of shorter lengths soldered together, are not evenly aligned along the length of the entire strip - the smaller strips' solder joints are done too close together. I have to desolder every reel and re-assemble them at the correct spacing! I've "measured" a length to cover front, over the shoulder, to the back (belt line to belt line) and will assemble a large rectangular "poncho" with a hole in the middle for my head. As I fill a shoulder's width of strips I re-measure a neck line, shorter and shorter by 1 pixel until my breastplate is met, then I'll just mirror the strips back up the other side...
Got my HLK-RM04 kit and reflashed it no probs, there's enough flash space left for my programs & HTML but not PHP. Time to brush up on CGI! With 16M RAM, after all is loaded I only have ~1M headroom for my program... Ordering more, potential is very good! Though toggling GPIO from a shell script + filespace I/O only gives be about 1.2kHz... Others have salvaged SRAM from old PC memory and upgraded these to 32M which I'm also buying a stick to try as well
Found out today about a mini WiFi<>Serial module called the HLK-RM04. The OpenWRT forums have people demonstrating custom firmware (linux!) so I bought a kit to play with it myself as a potential controller (built-in AP wifi w/ GPIO? nice!)
Ordered more WS2812 strips to begin building my first wearable LED suit from them and when they arrives they looked a bit different. The strip pinout was a bit different (no biggie) and the LEDs themselves had only 4 pins where 5050s usually have 6. Well the WS2811 IC only really needs 2 pins for power, a data in and a data out: 4 pins, Makes sense - These are called WS2812B LEDs.
Got my first of the WS2812 LED panels to play with. They are built upon thick 2-sided flex PCB with most of the copper intact, painted all black. These suckers are stiff and heavy. They creek disturblingly when flexed... But boy are they pretty! Im able to refresh one in about 7.5ms or 110fps, panning around an image of Spongebob Squarepants and a rainbow spiral...
I heard rumor of some pre-fab'ed 16x16 WS2812 LED Panels! Eep! They have a finer density than the panel I build... I must buy 2
Been playing in AVR ASM teaking timings for the WS2811 protocol with my oscilliscope... This version of addressable LED has just 1 line for addressing, so without a clock line like its brother the WS2801, it is dependant purely on the length of time you send the RGB data bits. These ICs are very leniant and take any of the timings I find online which all vary. I went with a nice round & symetric 250/1000ms 0 and 1000/250ms 1 bit stream
I just found out about some new LEDs with integrated controller, available in pre-fab'ed strips; WS2811 ICs inside a 5050 SMT RGB LED; known as WS2812. Ordering a couple 300-LED 5M strips to play with... Funny, though, I'd been building my own program/protocol to chain RGB LEDs on my own using ATTiny13s
Playing with these WS2801 LEDs, its a very easy setup - 2 wires for adressing; a data line of RGB bits and a clock line. Easy peasy! I can do some fancy custom sequences
I bought some WS2801 LED strings after seeing them used everywhere at Burning Man. Though a bit bulky and heavy they seem pretty hearty for outdoor use as I wouldn't want to wear them... Winter lights here they go!
I just finished cutting little pieces of particle-board into trapezoids to make protoboard-like dimples for my concrete moulded base. I'm sure I inhaled plenty of toxic burnt chemicals grinding these up. For science! I put wood blocks on top of them for easy hole drilling and used a plastic container to create a cavity for the electronics. The next day I broke up the mould and had me a nifty protoboard-looking base for the giant RGB LED and faux prototyping jumpers.
I bought 4 lengths of 5ft clear vinyl tubing to use as my faux wires that will attach the LED to the control panel. Inside the tubing will be 1 real wire and a length of EL wire to illuminate it. Red, Green, blue, and White (common). The ends capped in hot glue, and I plan to make the base of the LED in concrete to make it steady, but moulded like it were a piece of protoboard where the wires will "plug" into as will the LED.
I've begun measuring and marking the spacing and holes for the LED pins (towel rods) to stick in the base of the LED (acrylic discs).
I've been working on making a real PCB layout design to submit for manufacture/mass production and it's finally finished!
Making a standard rigid PCB I figured would be cheapest, and I could at least test that my layout worked before submitting the design for flex PCB...
My first quote was $800. A second was $1000. Yikes! Ok, so I threw together a single strip 30cm x 5mm just to see what a simpler piece would cost (as an element of the grid), I'd need 32 similar pieces made to build a panel. $2000 for 32 thin strips of flex circuit!!! From 3 places, similar price ranges. None of these quotes include the price of the components nor labour to solder it all. And here I was thinking it would bring the price down to have these manufactured! Not a chance in hell so far :o
So now I'm exploring making my own strips using copper foil tape and polyimide tape, and making a sandwich myself, because really all I need are linear strips of copper.
I just bought ~200 meters of various coloured EL wire, now I'll have stock to make more costumes for people.
I bought some furry fabric at the store and used a $5 battery sewing machine to make a pillow just larger than one of me LED panels. It's been 18+ years since I've used a sewing machine of any sort and it was past midnight so the stitching is shoddy but I managed to make the square, stuff it and put a panel inside on each side... It looks great! Custom LED Pillows with configurable/interactive designs demo complete.
I drew up some diagonal (45-degree) faces for trying out the panels as dynamic LED face-masks. The idea is simple for now, using elastic I just tie two corners of a square panel together and slip it on my face. It looks like a diamond or pope hat in the light, but in the dark with the customized faces it looks most excellent! I mapped two buttons on an extension wire to cycle forward and backward through the faces. This will be perfect for a pre-Halloween masquerade party tonight.
I just delivered my last piece for my first commission job- a Dracula collar or peacock-ish neck piece. Spent an hour or so stepping through the LEDs one by one and punching the count into a spreadsheet to map out the LED position numbers. From that I was able to treat the strange rainbow-shaped panel as a large rectangle with minimal change to the code running the other linear panels. A simple pixel map (pixmap). It's beautiful! I want to build one for myself now, haha!
I've finished a few simple modes for these custom panels. They are 2 arm cuffs, and a sash/chest strip. But I've been requested to chop the chest piece in half and convert it into 2 more arm cuffs - don't worry, I took video before surgery! The Cuffs need to be shortened as well - instead of cutting off the excess, I'm going to try melting the PVC mesh and make it more concentrated - it's only about 3 inches I need to shave off (of 12 inches).
I've recently gotten sudden interest in buying my panels by event coordinators, all while I've been out of the country unable to respond and all with a deadline of the end of September! So far one has come through with an order of 4 custom-shaped panels. I don't have the resources or time to do much more with such a small window of time. I've been on a buying spree for new parts, including a design tweak with glove finger-buttons to change the current animation sequence for choreography.
Here at Lightning in a Bottle, finally going to suit up tonight after crashing early the last 3. I go to plug in the beagleboard and smell something electronic burning! NOOOOO! Unplug and cast away away! No flames. The power supply smells like death, but it still lights up. I gingerly plug it in to the BB and the light goes out. Damn! No animations for LiB :( Luckily I have the blinky/scanning 555 timers but not enough cables to all my panels coming from it - I though I had more than 8. Oh, well. With the BB I'd have enough. Next year, LiB, next year.
I wore a one-piece "tyvek" painter's suit over the panels and left the chest unzipped to show my gnarly LED chest hair, 70's style. It looked great! Thanks Kristin from Sensoree!
I have to admit I need to repair some of the panels, not due to the rough-housing, but mainly due to my soldering job on the wires from the control chips - I didn't let both sides of the connection melt together properly before moving on to more soldering. No biggie, just a couple wires popped up! I didn't find out until now that these panels were a Make Magazine editor's pick for the Faire! I guess that might explain why I was interviewed and the people knew my name before I'd introduced myself. That's a weird feeling.
My page also sent me an email about a new link from Popular Mechanics
. WTF? I check it out and... The LED panels were selected as one of the top 10 exhibits for BAMF'11! I don't understand this. All I can think now is I need to hurry my ass up and make more!
At the Maker Faire as an actual maker this year, booth and everything! Response is overwhelming, I can't even get up to pee! People are too timid to touch things even though I placed some free-floating panels on my table with long extensions so people could man-handle them. I keep having to tell people "Don't be so gentle, roll it up, wad it like paper! Have a look!" The only time I got nervous was when one child began to roll up a panel as tight as he could, proceeded to then fold up the tightened roll and bang on it with his fist! It survived without a problem.
I received that order of SMT RGB LEDs from the questionable Chinese vendor that sells ceramic supplies?!? and very carefully unraveled the reel to randomly inspect and count the LEDs. The count was about 20 shy of the full 1000, I guess I can deal with that, so now to actually test a few of the LEDs from random spots on the reel... HOLY DAMN these tiny guys are bright! The seller posted what looked like spec sheets drawn in MS-Paint claiming higher brightness (mCD) than the RGBs I already use - I believe it. Now to order another 3000 :)
I've been semi-busy drawing ASCII character sets in various dimensions (3x5, 5x5, 5x7) to begin actual text display on the panels, wrote a function that takes a string, x+y coordinates and a color, and... YES text display works! After adding a quick form to the beagleboard's web page I can remotely send messages to scroll across the panels, I even built a queue to cache submissions and work though them after 3 scrolls of a message.
I've finished rewiring the finished panels (swapping green and clock) and testing them all to see that they display images just fine from the beagleboard. MOST of them look splendid but a handful act strange, distorted - I'll set these aside as "background" panels that just do the flashy stuff.
I found a sweet deal on SMD RGB LEDs, almost too good to be true on a Chinese website I'd never heard of before; DHGate.com. After some investigation I determine the site is legit, but eBay style so you must trust the individual sellers more than the site. I decide to take a gamble and place an order for a reel of 1000 at a comparable, if not better, price than I get for my 5mm bulb LEDs. We'll see how this goes.
Sweet, adding a memory chip to the panels actually works now, the LED panels can receive an image and self-maintain it independently from the beableboard! Now to modify all my existing panels to begin adding memory to them all
This is pretty cool, I drew my sprites in GIMP and used GIMP's save-as C file and was very easily able to pick out each 16x16 segment to play in sequence! Haha, rad!
After much tinkering with changing the signals from the beagleboard and pinouts of my bilateral switches I successfully managed to isolate the RGB/reset/clock lines upon no-write, and route those lines to the beagbleboard on write-enable. I have a 555 timer on a slide switch to play with the clock speed and it's quite fun to to set the timer to a slow speed, see a flicker as the beagle board refreshes a new image to the memory chip, then the memory chip retains the image independent of the beagleboard, clocked by the 555! It's all falling into place! Now the beagleboard doesn't have to spend resources continuously drawing frames and can sit idle and/or spend time serving up HTTP pages and recording video!
Now I'm drawing up some classic sprites from 8-bit video games (pac man, mario, space invaders, etc...)
So it appears that since the cat5 twisted pairs I use in my wiring have the green and clock line intertwined; when there are green pulses the clock line picks it up as an extra pulse! I kinda had the feeling this might be an issue, now I have to act on it. I'll simply swap the clock line and positive leads, so clock is twisted with ground, and green is twisted with positive (red with reset and blue with write-enable). The test images that had a lot of green (including white) were affected, and I verified this by simply not sending out any green pulses - viola, perfect graphics!
I switched the +/G lines and YEA! The memory IC retains the image perfectly!!! Now I need to add a small piece of circuitry to disable the RGB lines, tie reset to off and use a dedicated clock signal (555 timer) when write is disabled, but when write is enabled for the panel, its RGB, clock and reset lines go under influence of the beagleboard.
I'm trying to get the memory chip on one panel working to prove they are going to work as I'd imagined, but running into problems with image shifting and lost pixels :( Strangely it works perfectly on my more complex "E-Textile" graphic but fails miserably to retain a simple smiley face outline.... Time to whip out the oscilloscope again.
I ported my Tetris ("Tetromino") implementation successfully to the beagleboard and it plays perfectly as controlled from my iPod or a friend's iPhone! All while I'm wearing it, haha. Though, the usefulness of a Tetris game on a moving person is questionable :)
I built a more complete level shifter, this time using bilateral switches that happen to have a sensitive enable gate, full color now works on the panels by the BeagleBoard! Now on to creating a few more animations/graphics to test with...
The panel I believed was a mix of old and new batch of LEDs turned out to have the colors show just fine when running multiplexed per normal, however it turned out that while the pinout is still identical, the individual color dies inside the LEDs are reversed from the last batch. So this panel will have a messed up color shift if I end up running it as such - it runs perfectly otherwise!
I just got back from wearing 6 of the panels to Slayers Club/LoveTech SF 2yr anniversary and this is the first time I've felt the panels' electricity - did they shock me?? It was very warm at the venue and I was sweating a little underneath the panels on my bare arms and at first I thought I was feeling the vibrations of the music but then I realized it was only because the panels were flashing to the beat and if I adjusted the speed I felt a buzzing inside my elbow. Very strange! But No worries, It's only about 4V max at the point the LEDs touch me bare. Excellent show, met many cool people yet again!
Urgh, this panel I'm working on I believe is a mix of my original supply of LEDs and the new batch -- about halfway up the panel, the green is significantly brighter than the other half, but the other colors seem to match well... But I'm also running these all in parallel so it could just be a slight difference in their current draw. I guess I wait to see if they look alright when wired to the control ICs for individual operation.
At Sea of Dreams, pre-opening, I finish my end of the work and begin to assemble the panels. I see a few dead lines/pixels luckily I'd brought my butane soldering iron with me to do the repairs on the spot. Today I'm going to try out using the panels as sleeves, vs. pants like at Treasure Island. This is working out pretty well, though its a tight fit into my elbow. I'll wear a white shirt over it to let the colors show tonight!
I took one of the panels home to show my nephews/family what it is I'm up to, and somewhere down the line the 8-bit counter failed and thus the panel is dead. I started prepping all the complete panels to be used for Sea of Dreams tonight, doing misc. repairs, and I see when I plug that dead panel in with the rest it drags down the clock line and screws up the patterns of all the panels, but the rest are fine if I cut the clock line to that panel. Now I have an odd-one out and will have to do something different with just 6 panels. I'd been invited to assist someone I met at the Maker Faire fashion show who lives here in SF on some LED wiring and it turns out it's for Sea of Dreams. Cool! And that is is to be a part of the LoveTech installation's "Fractal Forest" - whom I already knew from Coachella. Such a small, intertwined world.
I replaced the blown fuses in my multimeter so I can test current draw > 500mA again, and I see that the BB with the camera and WiFi running draws a hair over 1A. If I remove the camera it drops to ~650mA. The camera power draw does not seem to matter much if I'm using it or not, only that it is on the USB bus. Hmm. CPU usage doesn't seem to have much of an impact, either. If I unplug the USB hub, It goes down to ~300ma! Wo. With all the peripherals plugged in, the BB can stay on about 10 hours with my fattie 10mAh LiPo which should be good enough for a night's worth of play. Though it takes forever to recharge!
Got a new batch of parts in today to keep going with the BeagleBoard (BB) - built myself a simple level converter using a comparator IC (transistors weren't cutting it) and, lo, my "EJ" logo reveals itself on the panels purely from the BB's expansion header (+5V supply, GPIO signaling). I've scoped the frame rate to be ~100Hz, so I could do full body animation at ~12Hz. The program I wrote is toggling the GPIO one-by-one using file IO (/sys/class/gpio/gpio#/value) which I feel would be slower than what I can guess as direct access via some memory address and toggling bits to change multiple at once. I'll look into that later as this is good enough for now!
I also nerved up to plugging the cheap-o 5v LiPo switched power supply to power the BB and the USB peripherals - it didn't fry :)
GPIO success on the BeagleBoard! I can now send my own signals to 12 available pins. More if I wanted to remove the availability for a second SD card slot.
Next I have to build simple level converters since the BeagleBoard GPIO are just shy of 2V where the panels run on 5V.
I set up the webcam for the suit to dump JPEG frames instead of record a video stream, now the webserver on the BeagleBoard can serve up a "live video feed" to any who are connected to it! Plus I should be able to easily compile the JPEGs into a video later.
Sitting down with my BeagleBoard, I finally started looking into creating an (ad-hoc) access point with a WiFi USB dongle. And it worked! I configured DNSMASQ to assign IP addresses to connecting clients. It worked! Next I managed to get DNSMASQ to point all DNS queries to the BeagleBoard itself and it worked!
When I connect to it on my laptop, my iPod Touch or my friend's iPhone any website they attempt to visit redirects to the "http://shine.lightbright.net/" which is served internally from the BeagleBoard Awwweeesommmmeeee~.
Now I'm going to start designing the control page(s), though I still have not figured out how to get GPIO working whatsoever on the damned thing to actually control the panels by.
Awesome, the suit behaved all night; The movement sense for pattern changing worked all night, the colors all showed up correctly, the panels all stayed on and everyone had a blast! Though none of the bands were really LED Suit material everyone seemed to enjoy it - I was even given a pair of color changing mouse ears lol (thanks woman, whoever you were!). Sunday night was more fitting for the Silent Disco - thanks Moldover! As for damage report - It all seems to be in order even after some guy trying to climb me (and failed, subsequently asking if I was a ladder?) Bed time. Gotta work tomorrow morning :(
Fired the beast up to do a damage inspection. I know a few control lines got severed on a couple panels, a few LEDs here and there disconnected on a color or two - easy re-solder jobs. Checking out the panel on my calf that was malfunctioning revealed not the panel, but the cable I made yesterday morning had two wires switched - Green and Clock. So the LEDs only advanced when the green color cycled off-to-on thus it wasn't scanning nearly enough, much less in sync with the other panels. The panel on my back that stopped working on the bus ride simply got disconnected. I reconnected it and everything seemed to work fine now - I think because the two on my back don't have extra grid space to tie them on top of each other, they touched each other inappropriately causing a short in the green/blue for all panels. I remedied this by tying some extra grid between the two so they stay fixed. I also used paper clips to make hooks for the elastic cord ends to make for easier mounting/dismounting. I'm trying a new method for automatic pattern changing on movement. The wires I'd added before are still there, but instead of the washer I created a few small hoops from spare wire and create what is essentially a chain link for the two wired on the timing circuit. They make contact, but the contact breaks/re-connects when jostled and its permanent!
The shows were awwweeesoommmmeee tonight! The suit was a hit again! Unfortunately I should have done more testing before I packed up this morning, the colors were not working right - I only got red, cyan and black :( The loose washer I'd added to do automatic pattern changes to my movement was lost in transport so that wasn't working at all all night. And the panel on my left calf was not working properly AT ALL :( On the bus ride off the island as I was sitting in my seat the colors seemed to start working properly now?? When I got home, I looked in the mirror and noticed the top panel on my back wasn't working at all. Hmm. Got some damages to fix, things like this one DRUNK girl taking fist fulls of LED awesomeness trying to support her full weight don't exactly help. I had tied the elastic right onto the panels and it was pretty much impossible to undo without cutting it - need to rethink that. Freezer pizza in the oven then bed time for me, repairs tomorrow!
I'm trying a different configuration for the panels this round - I'd cut them apart to store them previously, now I'm tying two pairs together for my front and back like I did at the Superhero Fair since I can have them higher on my torso without my armpits getting in the way. I created two new extra long cables to power panels I plan on having on my calves and am planning on using all panels even the damaged ones. I tested strapping a panel on my thigh and I must admit it looked pretty damned cool in the mirror in conjunction with the 2 panels down my chest. I'm out of time now, so I'm going to assume I can wear this how I planned when the sun sets!
Starting to clean up the control circuit in preparation for the Treasure Island Music Festival, also replacing the LM8705 5V regulator IC with a DC-DC step-down converter which supposedly has less power loss. Also the one thing I forgot to add to these new controls and made the original controls so awesome was the "loose wire effect" where the panel(s) changed pattern when I danced. I soldered on some extra wire to a few key points in the 555 timing circuit and bent them around so they could hold a metal washer loosely between them - and the controls (I) move around the washer will make/break contact!
I finally managed to get my custom kernel to install and zoneminder to compile on the BeabgleBoard. Successfully recorded video from the micro webcam but it gets choppy after ~10secs. hmmmm.
I finally got around to finish soldering the control chips to panel #9, this is the first panel that didn't have and dead LEDs on it after testing. It is also the first one made from the new supplier's LEDs
I received the wide-band elastic in the mail and cut a number of lengths to attach to one of stretchy panels to help it return to its original size - the stretchy panels tend to not return to shape so well, so I'm gluing these on it to bring it back. A bit of hot glue later and it seems want to go back!
Bought a couple different sizes of elastic cord/ribbon to use for easier mounting of the panels to my body and to better form-fit them. I've always been re-purposing nylon cord lanyards from spent glowsticks to strap the panels down to me, but they don't have any give to I'd end up with some sore spots.
A packet of 100 RGB LEDs I bought on eBay for about the price I saw from my original supplier months ago arrived today. Funny enough, the eBay seller wrote to check the order status on my original supplier's website! The packaging is different so I wired one up next to an LED from my last bulk order and it looks like a match! Time to order a couple thousand more to replenish :)
I'd used up the last of my LEDs that I bought almost 2 years ago now for panels #8 and #9! I remember randomly checking in on my supplier a few months ago and seeing the price per 100 RGB LEDs had dropped about $5 - which adds up for the multiples I'd buy in... This is good, by the time I'd need more it should be even cheaper. So I went back today and find that the price has DOUBLED!!! I'm going to troll eBay again for some decently-priced LEDs and hope the written specs match actuals...
Whoohoo! These SRAM chips are in an SOJ package which means instead of the pins flaring out, they curl underneath the chip and almost back inside the chip. I haven't soldered to this style before but I found a way to solder leads to them securely without having to (un)bend the pins.
The pin-out on these chips is a bit different than the DIP one I tested with on the protoboard - all the address pins I require are on one side which is very convenient as I can just solder the chip right onto the counter IC output pins! I only needed 3 very short lengths of wire to add the chip to the panel circuit design; +5V, -5V, and one address pin as just one of the counter IC output pins is not on the same side as the other 7. The RGB color lines had enough slack I could just expose a small piece and solder to the SRAM IC directly. It worked like a charm! I fed a pattern to the panel, disabled the "write" to the memory and removed all but clock and power to the panel and it held the image!
The only thing I'm not sure about are the leads I linked the two chips together with are rigid (I use the scraps from clipping the LED leads a lot!) and it reduces the flexibility increasing the risk of damage for that small area if bent too harshly, so I may use very short lengths of stranded wire to make those links.
Last night was fun! Small crowd but good music. I got more contacts from people who design clothes, haha. Excellent. For some reason toward the end of the night the little protection circuit for the LiPo failed. What it does is to prevent short circuits and over-discharging from damaging the LiPo batteries. After testing today the panels are fine - not shorting at all, and the backup protector circuit appears to be trash :(
I'm going to start soldering on one of the SMT/SMD SRAM ICs to a panel (one of the melted ones. Panel #1 is the victim) and see how it works out today!
The two panels with the most damage I'm not wearing tonight at the Superhero Street Fair, so I have to figure out how to wear 4 of them. I'm going to keep them in pairs, two on front, two on the back. Since there aren't enough to wrap around my body (and under my armpits) I can wear these higher up on my body and it will look cleaner as my shirt will be able to extend the length of the panels easily. I'm too lazy to re-stitch these together the correct orientation so when they do scanning it will be horizontally instead of top-down as before tonight!
I pulled the panels out to do any repairs needed, only to find that I had placed them next to a heater vent and it had melted a bunch of the supporting PVC mesh away and fused some wires together on 4 of the panels! AUGH! Luckily 2 of the panels are only missing a very small section of PVC, but another 2 have too much missing for me to wear them tomorrow at the Superhero Street Faire. Time to cut the links holding these panels together...
Testing the panels shows many strips of LEDs malfunctioning, so I have to check that each wire in those regions is not melted together (not entirely obvious), and to the standard check for cold solder joints... I'm going to have to somehow add new mesh to certain spots
Got back to work poking around with the (S)RAM. I had been thinking about it over the weekend and I realized I only tied 3 of the 8bit lines to the memory chip, meaning only 8 unique pixels will appear and thus repeated throughout the panel. That explains the vertical lines and mirroring, obviously I had the number 8 stuck in my head (3 bit allows for 8 values, 0-7)! Once I correctly tied all 8 lines (bits) between the counter and chip, I see a beautiful random smattering of colors! Why, I do believe it's working!? No patterns are apparent, and single pixels light and the display holds completely still. If I power-down the circuit and turn it back on the display is changed but still holds steady. If I write-enable the RAM it picks up random color values I can see scrolling by and as soon as I disable writing it freezes!
I hooked it back up to the parallel port (PP) of my computer to feed it a recognizable pattern while SRAM is Write Enabled, then disabled writing thus "locking in" the pattern and pulled out the wires from the PP... The pattern sticks! It says "ERIK" and there is no computer attached! I manipulate the scan rate (555 timer speed) and it holds steady. If I power-cycle the RAM quickly, the display slowly accumulates randomness until "ERIK" is no longer visible. Strangely (or is it?) the "random" values in RAM seem to go to the same scattered display after a while. I guess the transistors in the chip have a propensity toward being a 1 or 0 if not distinctly set as such.
Now, the plan is to have a memory chip on each panel that ties into each panel's already-existing 8-bit counter to drive the memory addressing, and this will not require any extra components except the SRAM chip itself and the addition of 10 wires to link it to the counter output (address lines) and power. Now addressing each panel should be super simple. Each panel will be independent maintaining it's own display while another is being updated so I don't have to refresh everything at once and that means little to no flicker! Only 256 pixels at a time :) I just hope that I can switch between panels fast enough to create smooth full-body animation, otherwise keeping the animation restricted to one/few panels at a time while the rest maintain some sort of background wouldn't be too bad a trade-off...
I've already ordered surface-mount versions of an SRAM chip to begin this integration. I'm still being lazy in creating PWM circuits for dimable colors - maybe that's next?
Finally I decided to sit down and experiment with my newly-acquired SRAM chip to see if I could manage to store/save a displayed pattern on the panels without computer intervention - It's a 32Kx8 chip, much more space than is required for a panel but it was the cheapest one I could find in a DIP package for 5V. I wired it up on my protoboard, tying the address lines to another 8bit counter that's mirroring the counter on the panel itself, tying the remaining to ground and just 3 of the data lines to the RGB enables of the panel. I'm hoping to see randomness of stagnant data in the chip that changes upon each power-up and remains steady until the next power cycle. It's almost working! All I see are vertical lines that seem to mirror half the panel.
One of the people I met at the Maker Faire (Alexa Smith of artfuture via Lynne Bruning of Textile Enchantress) interviewed me today about the suit, I took with me some of the raw parts used in creating the panels (plastic garden wire roll, CAT5 cable snippet, unadulterated LEDs) since I figured this would be about how it's done. I think it went pretty good, we had a good chat about it, the "how"s and "why"s. The video(s) should be on YouTube soon!
I have returned from the Maker Faire over the weekend. I met many awesome people once again and was even pulled into an "eTextile fashion show" randomly as I was looking at exhibits. Not one person called them christmas lights - there were even several kids who explicitly asked if they were RGB LEDs. Ahh, to be amongst nerds and their spawn! I got many more comments about it being a skirt/dress/corset this time LOL. Finishing up the panels for the arms/legs should put a stop that haha.
This time I was suited up not so much to put on a show but to show off the workings and amount of work that went into it. This time I wore a shirt over the upper half while exposing the lower half so people could see the effect and the workings at the same time. Many people came up to me and asked about its workings and some even apologized for doing so. People! You're at the Maker Faire! You are here to see how things are made and how they work! :)
I've decided to wear the LED suit to Maker Faire this weekend. It's still in transition as far as the new controls go so its a messy rats nest of wiring - but who knows, that crowd may like it that way!
I've dismantled the control box I built at Coachella to add my newfangled rotary switches. The patterns are pretty neat that it makes! Now if I could only find the issue with the panels not clocking synchronously. It'd look even better..
I went down to Jameco today to pick up some parts I'd ordered which include 12-position rotary switches I'd wanted for Coachella to give more variety to the color patterns displayed. These things are neat but the poles are a bit long and they take some effort to turn. The tightness was easy to overcome by stretching their internal springs. Just need to re-solder the RGB lines to these now...
I just finished up doing repairs on the panels - all's well! I got into scoping out the counters on each panel because When I have the color change in sync with the scanning clock I should see a steady pattern, but most of the panels scroll the pattern or just show white (scrolling so fast the colors blend together). I'm finding the scanning clock going into the counter is clean, but the counter lines out are erratic. I hope I don't have to replace them all...
Driving back now, using the WiFi in our van I already found some instances of the LED suit on the intertubes!
I got tackled tonight and nothing bad happened to the suit, just the battery got disconnected - just a matter of plugging it back in. But since I landed on my ass and thus on the panel in the rear, a bunch of LEDs are pointing every-which way - but that's just as easy and bending them back. I was later told there is a vertical line that is apparently the red shorting out, intermittently being no red or only all red. Another panel got the power lines ripped from the common demux which intermittently made that square turn off but that was a quick fix too once I had my soldering iron. Luckily I changed the panels over to quick disconnects instead of hard-wired or I'm sure I would have many more issues. I'll look into the shorting line later.
Overall: Coachella was a huge success and an awesome time once again! Made a few new friends that live in my area I plan on meeting up with soon, and made a few potential business contacts as well!
Last night was a blast, I wore a white t-shirt over the panels for diffusion but lots of people said they liked seeing it barren as it was around my waist (it was longer that my shirt). I got so many people stopping us to take photos so often we considered turning it off when walking between venues lol.
I turned it on just now to see if any repairs needed to be done - the outermost blue wiring on one panel was ripped off probably due to stretching and my not leaving enough slack so I soldered on a bit of extra wire to that. A couple of LEDs became de-soldered on one pin, but overall it was working perfectly. There are 2 dead LEDs, but I'm not going to bother with them just yet...
So the controls are all closed up and wired in, they work swimmingly! But I forgot to put in place a loose wire on the scanning timer to fluctuate the speed just by my movement as was done in the first rendition - Oops! Oh well, it will have to all be 100% manual control...
When I fitted 3 of the panels tied together around my chest they seemed to connect seamlessly around, however when I tried on all 6 tied together it didn't fit! It's only a few inches shy, though. I guess I'll have to cut alternating mesh lines in a few panels to allow expansion for my fat ass as originally planned in panels #1 and #2.
Off to the festivities!
Last night I cut a piece of half-inch foam board left over from our CARPOOLCHELLA sign and carved out recesses for the controls to fit inside and now I'm sealing it up in electrical tape and wiring it to the panel cables
Success, Panel #7 is complete and tests OK! All while in a moving, jostling vehicle driving down the 5. I can set aside panel #2 as a spare as its wiring is jumbled (but still fully functional) and use this one in its place for consistency.
I tidied up the control sliders by gluing them together with hot glue - they are very compact!
The control cluster consists of:
2 sliders for varying the 555 timer speeds
2 3-way slide switches which determine the clock source for the color cycler and panel scanners
1 knob to vary the resistance from the scanner timer and panel clocks for twinkling effects
I want to encase/mount these on something rigid as I expect them to take abuse...
Ugh, so tired. I've been up all night and the sun is starting to crack. I've finished soldering all the control chips to the 7th panel, but haven't soldered on the interconnecting wires between each chip. I've made a decent controller for the panels that goes beyond just switching between a fast and slow scan with manual color control. I'm going to bring my butane soldering iron with me and a few basic tools, extra wire and spare LEDs as a Light Bright Survival Kit and finish it up on the 8+hr drive to Coachella.... Sweet, sweet bed. Mmmm...
So I've been sleeping in our van and we just picked up another of our Coachella crew. I'm going to start finishing up panel 7 for good!
Ugh, I haven't finished working on Panel 7 for Coachella tomorrow (today!) I was fiddling around with a scheme to allow me more manual and diverse control. By adding a second 555 timer dedicated to cycling the colors I've managed to create a rainbow that scrolls, twists and just plain flash different colors (8). I singled out two sliding variable resistors to control the timer speeds on the vertical refresh(Scan) and color change rate. I've glued the 555s to the underside of the sliders and have two nice very compact controls...
I've been looking for a long while for a small form-factor netbook based on ARM architecture for its low power that I could use to record from webcam and control the panels and have had absolutely no luck. I see hundreds of articles about them in my searches, how they will kill x85 etc etc etc but they don't appear to exist. The closes thing I found now was something called a Beagle Board. It, however, has no screen or keyboard but many inputs/outputs and USB for the webcam. I ordered one today., but its on back-order and will definitely not be here for Coachella, much less be programmed the way I envision.
After taking a break to walk through the Mission, Panel 7's main wiring is done
I'm working again on panel 7, finishing up the last row of wire before I put on the control chips... One more to go before I'm ready!
I've purchased a bunch of random electronic goodies to add to my parts bins - including "mixed bags" of various potentiometers in different styles (twist knob, slider, screw, etc) and value ranges that I could use for controlling the panels.
I'm scoping out the voltages on the common-anode panels to find the voltage discrepancies, I'm finding G/B are 4.9V before resistors and R is 4.8V before resistors - not really enough for the high drop I'm seeing...
Panel #6 is done! I also replaced the red demux on panel #4 to the values it should be. And I created a second 555 control with the new chips I received - these are SMD and much much more compact!
Alright, I'm finishing up the wiring on panel #6 today!
Panel #1 is in full working order again! At first columns 1 and 3 were very dark and got me thinking this one is cursed, but then it started intermittently flashing from normal to dim. I traced the problem to the resistors on the demux touching inappropriately. As for panel #6, I am far too distracted and only managed to solder the common horizontal on; I did prepare another red demux to replace the one on red-experimental panel #4 where the red was too bright.
I'm removing the red demux from panel #1 (the original) and replacing it with a new one to get rid of the two columns that never lit to full brightness. Also, I'm adding all the controller chips to panel #6!
Finally settling down to solder the resistors and leads to the demux ICs for panel #6
I just noticed now from reviewing video that panel #1's white was pretty pure as-is, where panel #5's white was way too red and panel #2 and #3 are too blue. When panel #4 was completed I realized: The panels made of common-cathode LEDs (#1, #4, #5) coloring is pretty spot-on with the given resistors and #5 was too red because it would have already been good had I not over-driven it. Panels #2 and #2 are using common-anode LEDs and the red on them is very weak. I'm going to replace panel #5's red demux with the correct resistors soon.
I scoped out an anode and cathode panel together and found the anode panel's reds were being under-driven. I'll have to check later to see if the RGB demuxers are putting out 5V before the resistors with and without load on the red lines, perhaps the active-low demux I have cannot drive them directly? But that doesn't really make sense as they can drive the commons of the cathode panels fine. And if the reds were not getting enough current they would bring down the blues and greens with it. The spec sheets show they same output current on both the active high and low demuxers...
Threading and soldering panel #6 still...
Now I've got enough wires to begin threading the panel! Joy...
The wiring process has begun! I've cut the lengths of CAT-5, extracted the pairs and unraveled them. Now to have them shaved and punctured...
After a lot of futzing with webcam recording programs while placing these LEDs I finally finished placement on this panel and am having myself a Guinness. (I settled on using VLC's stream & save for my video recording, BTW)
I'm setting up a webcam to video the build process (vs. the progress photos I'd already been taking). I have a fresh square of mesh and am now placing LEDs on it!
Finally, the bad #4 is now a good #4 - that is, after I'd connected the common demux in reverse and shorted it, then replaced it again! 5 panels altogether completed!
Wiring's re-done on #4! Now to solder the control logic together
Well, that wasn't too bad. I've removed the bad wiring on panel #4 and have begin wiring it correctly...
I'm de-soldering all the reds on panel #6 now as I'm waiting the the wires for #6 to be completed.
Panel #5 is complete! On this panel I tried something different to bring the red out more and it worked, maybe a bit too well?
Placing a piece of tissue over it to diffuse the colors shows the color is no longer blue-green and now is a very warm white, almost pink color. Much better! But next panel I will use a slightly higher resistance on red to dim it a tad, and if it's pretty neutral I will go ahead and replace all the demultiplexers controlling the red lines on all the other completed panels (fairly easily done). The first panel needs the red demux chip replaced anyway since I fried two of its output lines...
I began wiring and soldering the color lines to panel #5. Got green done & tested them all the verify they all turn on and are indeed green. Then I soldered all the red completely on assuming it was OK, BUT just as I started the blue I decided to test the red as well... Nothing worked. I then discovered I had wired the reds all in the wrong direction! With the common line. Technically this can be worked around electronically but not efficiently. It would be best to de-solder all the reds (that's 256 points!) than to continue finishing it... I'm going to scrap that panel for now as that would just slow me down :( I'm too frustrated right now to finish up #4.
Alright, too tired again. I will pick this up tomorrow! Panel #5's common (vertical) lines are all wired and soldered.
Back to work on panel #4 - I'm going to use a much much lower resistor value for the red channel as it is the dimmest of the 3. I tested this out on my protoboard - the resistor they give me for red is 180-Ohms, 100-Ohms for green and blue. I Kept decreasing the red's resistor until its nominal voltage approached its rated 2.4-Volts... I got to 25-Ohms, yikes that's a huge difference! I bought a pack of 51-Ohm at Fry's, 20 for $6 WTF! They used to sell you packs of 500 for $3 on tape but no longer. At least not at the concord Fry's. So, #4 is not 100% finished with just the remaining control chips un-soldered, I'm moving onto panel #5 which is already placed w/ LEDs.
Ugh, I'm tired. Stopped at weaving & soldering the common vertical controller...
Holy schnikies, I'm flying through this panel! Main wiring is done. Started soldering control chips to panel #4...
Now wiring panel #4...
Placing the LEDs on panel #4 now...
Panel #3 is now complete! It's passed the 3 basic functions; Individual R-G-B control, Scanning, solid. Later I'll run some pattern/animation tests on it and post on youtube.
The LEDs' wires are all on and cleaned up, each tested to light up with proper coloring though a few had to be replaced as they were bad. Now working on the control chips...
Picking up where I left off in December. Panel 3's wiring is only half completed...
Some dude, Ricardo, gave me $5 last night at Sea of Dreams and said "This is a donation, thanks for the great show!". He wants me to go to one of his band's shows here in the bay area. I feel weird going suited up at a small venue... seems like overkill?
...aaand I'm back! Happy New Year everyone! Met lots of cool people tonight - I really need to make business cards for this shtick.
Gonna be at Sea of Dreams tonight! Had Indian for lunner, hope I don't shit myself into the new year!
Ugh, I'm so lazy. I'm now continuing to wire panel #3. Still taking pictures!
I recorded many more reaction videos and made a few friends in good places the other night. Some guy who said he's tied to the event (from the Independent) - he said he took some video of me and the ferris wheel through a pair of the diffraction glasses and he planned to use it in one of his music videos!
I took lots of videos of people's reactions to my vest last night. Lots of great interactions! Going back this afternoon...
I'm going to the Treasure Island music festival this weekend/today! I'll bring my two panels and a bunch of glasses with me for when the sun goes down...
LEDs are placed! Now wiring up panel #3... I'm taking pictures as each row is completed for a video I plan to compile.
Getting around to placing the LEDs on panel #3 now...
I won an oscilloscope on eBay! Its an older model: a Tektronix TDS 220. I used a similar one when I took AC circuits back in the day. I looked at prices for new/used at retail shops and they were too expensive, so I risked bidding online. This one is apparently new "used once or twice".
Just bought 200x diffraction grating "firework laser prism" glasses to take with me every time I go out suited up - y'all bastards keep stealing them. It's cool though. Try to share the love though, k?
Another hit! While I was up on the main lawn at dusk, strapping myself in apparently a lot of people were wondering WTF I was up to. Well when I was done and fired it up there was cheering from a few groups of people behind me! After verifying with my friends, the panels were working synchronously front and back. All functions available worked. Took lots of pictures with people again. I'd bought a few more firework glasses for last night as well and most walked away again. Ah well, a night of fun was had. Got a few yells of appreciation from roadies as we walked out at the end of the night through the band parking lot...
Going to Live 105's BFD today, and wearing both complete panels for the first time: one on front, one on back. It's also going to be my first full run with the LiPo battery pack
I went on an IC binge on mouser; I bought bulk shift registers, and/or/xor/not/nor/nand logics, schmitt triggers, counters, timers... I need the schmitt triggers to clean up the timer signals, the shift registers I plan to "convert" serial data (from USB maybe?) to each panel in parallel. Aye...
I'm really wanting an oscilloscope, function generator and maybe a frequency counter. The oscilloscope, mainly; the way the panel scrolled all crazy-like has me wondering... Trolling eBay again!
I finally got around to finishing the second panel. This time after testing that everything lit up, was controllable, and otherwise seemed in proper order I wanted to try my hand at controlling it by computer. The easiest way I could think of was by parallel port (PP) and that required an old computer! I dug one up out of the closet and fired it up. Ahh, Windows 98. This machine had no development tools except for Q-Basic. I love QBasic! And I already know how to control the parallel port with it...
The panel has 8 wires coming from it:
I will pulse the clock using one of the PP pins and enable/disable the colors from 3 others. I wrote a quick program to scan the upper-left corder of the graphic mode and pulse the PP with he appropriate bits. I set the clock bit high, then low to advance an LED with the RGB bits set high/low depending on the pixel color being scanned. I printed the letter "E" to test it out. It seems to be working, but not very well! I can vaguely make out the "E", its scrolling rapidly around the panel, but it's there! If I physically move the panel around the scrolling gets better or worse depending, so I think the clock line is noisy (meaning it is receiving extra pulses causing the image to shift around rapidly). If I position it so it doesn't move it looks pretty good! I added a bit to the program to skip a clock when I press a certain key so I can align it better. Works well! Now I wrote "ERIK" to the screen with a different color for each letter. It almost works! It's scrolling again and I cant seem to steady it... I guess I'm going to tie the "clock reset" into the PP so I can ensure when I start the scan at 0x0,then panel gets reset to pixel 0x0, too.
Much better. It's a bit flickery, but it is mirroring what's on the screen! I wrote a few more routines to animate. Simple scrolling lines, an animated "life"-like pattern. Even PAC-Man! Sweet!
There also seems to be a slight twinkling effect. Near as I can figure it happens when the computer hits an interrupt/switches to another task momentarily and QBasic is paused that fraction of a second thus causing the panel to pause on a certain LED at that moment making it appear brighter before continuing.
I just bought a couple LiPo battery packs and a LiPo balance charger. These things are much slimmer and lighter than a 6V lantern battery! Got a 4500mAh and a 10000mAh pack at 7.4-V each. These babies aren't cheap, but they are rechargeable and should last a good long night or five :)
Wow Coachella was so awesome! Last night was another big success for the panels. I'm all out of my glasses, people keep walking away with them so I couldn't share the love. Oh, and the second panel did not get finished for last night :( A few people asked me where they could buy a shirt like mine, if I made it, how to make it, if I could give them babies... Lots of girls wanting to touch my many nipples (LED bulbs) :D Had some people give me demo CDs, fliers... Two different guys gave me their cards to market the thing.
Some of the artists (not musicians) took their picture with me. Like Coachee, the unofficial Coachella mascot. Many of the security guards took video/pics on my way out, too.
I'm looking forward to Coachella 2010 where I hope to have these panels covering every inch of my body!
Wow, I got a really good reception last night! I had these "firework" glasses with me some friends brought and they are an awesome mix with the panel. They all got "lost" over the night though, I only have one left. I have people come running up to me on their phones saying "See the tall guy with the lights on him? I'm there!" - using me as a landmark. I had this flashing mirror rave disc thingy on a necklace hanging on my back for a lame substitute panel. At the Sahara Tent people loved it. On chick said she was enjoying the flashing thing on my back, then when I turned around she was like WHOOOAAAAAAAAA!!! HOLY SHIT! That was a very common response. Many people asked me if I was part of the Cubeatron display (a large device with RGB LEDs strung in a cube. Think my panel but 16 of them stacked top of each other and you can see every bulb in 3D animations). Many, many people called me "Lite-Brite". I'd never thought of that, but it is easy to remember so I went with it. And I have no idea why, but there were so many under-age kids asking me for vitamins, pills, "anything fun", etc... I thought drug dealers were supposed to be discrete, not flashing billboards?
I was planning to manually control whether I was all-LEDs-on or scanning the LEDs, but I discovered that when I was scanning the panel would sometimes flicker when I moved... Duh, the wire I was using to control that was loose and would move about as I moved about erratically making and breaking contact. Neat, I'm going to take advantage of that! I did manually control the colors at times through the night, but with them all on and the LEDs exposed the rainbow effect diminishes if not all the colors are on, so most of the night I left all colors on.
The 6v lantern battery held up all night; I'm going to use the same one tonight. The second panel is soo close to being finished. Hope I get it there before we leave!
First panel is working again! The 8-bit counter IC was broken. I'm using lanyards from spent glow sticks to strap it to my chest. Panel 2 is still not ready.
We've arrived in Palm Springs. Soldering wires madly to the second panel - I won't be ready yet. Having an issue with the first panel and we're leaving for the festival. No LED panel tonight :(
On my way to Coachella! I have most of the second panel complete, I'm bringing an extra 6V lantern battery, my solder station, wires and ICs with me to hopefully have it complete before the festivities end...
Panel 1 is complete! Twice as large as the test panel, the slacked wiring looks messy, but since I kept the same colored wire in each row it looks pretty! It stretches pretty well, I figured 3 panels end-to-end are just short around my torso, I can get them to fit perfectly with the alternating clipped grids for stretching. It feels pretty durable, I can bend it pretty hard, roll it up, throw it around. Exactly what I need - I know high/drunken people are going to come up to me and feel me up, and in the crowds I expect to be knocked around a bit. It will survive!
Bought even more RGB LEDs! 1200x of them but this time common anode to "balance out" my use of the demux ICs :) These are enough for 4 panels.
Somewhat unrelated: I also bought 100x "fast flash" self-controlled RGB LEDs and 100x "slow flash". These are the LEDs you see that flash through different combinations of R, G, B then fade through those same combinations. Planning on using these somehow w/ my friends for Coachella.
Wiring is done! Now to solder the resistors and extra wire to the control ICs...
Just started wiring the first full panel. I'm not matching the distance between grids to the distance between solder points in the wire, I'm giving myself lots of extra wire slack between each grid to allow forgiveness when stretching the mesh. About 1.25" of wire for every 3/4" grid.
Just laid out the first full panel of 16*16 RGB LEDs since I received the big box of 'em I ordered a while ago. It's taking me about an hour to place all 256 LEDs on the grid, ensuring the same orientation of each and their pins all fall in the same relative quadrants of the grid.
OMG It's working!
The "half panel" Is scanning the LEDs sequentially, I can control the color channels individually. In concept I should be able to make it display text/animation/video with just these controls! I'm getting some cool effects out of it I didn't expect, like random sparkling with a floating clock line to the counter - and these clear LEDs have this awesome rainbow effect that is dependent on your viewing angle :o
So glad I didn't hunt down frosted RGB LEDs! The color mixing/diffusion works pretty well with a paper towel covering the panel (that would eventually be a white t-shirt I wear over the panels). I'm not sure I like the gaps between each LED though. I've been thinking about using ping-pong balls halved or whole to act as diffusers and dispersers but they are so expensive! Hot glue sticks very well to the LEDs and when cooled is translucent so it is a decent diffuser but isn't readily removable...
I'll get pictures and video later, forgot my camera.
Now that I have the LEDs in place, I've decided how I'll go about wiring them up: I'll cut the CAT-5 to length and unravel the wire pairs from inside. On a piece of cardboard I've marked the grid distance for 16 places (3/4" ea.) as a template. I then use that template to mark the wire where I want to expose a solder point. I don't want to strip the wires completely, but I need some of the metal exposed to solder effectively - and I also don't want to just be soldering on the edge of the wire either; I don't trust it to hold. So I'll just scrape some of the insulation off with a razor, just enough to expose the glistening copper beneath. I thought of using a needle or pin to puncture the center of the wire at the intervals needed and threading the leads of the LEDs through the wire at the exposed points so as to hold in place and offer all-around solder for a more secure bond. Seems to work perfectly! Might be a bit too tedious, though? It looks awful pretty! The plastic mesh isn't dead-on in measurement everywhere, but its close enough.
Next to wire up the SMD logic ICs; the counter and 4x demultiplexing ICs (1x R 1x G 1x B are active high X axis 1x common is active low for common cathode on Y axis). I decided to use 1x demux per channel for the ease of wiring and control, and to drive the LEDs (through resistors soldered directly to the ICs) since the demuxers can provide the required 20ma output and I won't need switching transistors for each row. I may change these to shift registers later on, but this is what I know works for now...
I've finally gotten around to placing LEDs on the mesh - I'd only purchased the handful a few months ago (150 of each polarity) and the bunch I ordered aren't here yet, so I only have enough to try out a 16x8 grid. I plan to have something built and working to wear for the Coachella Music and Arts festival in April! I also measure it is just shy of 3 panels to wrap around my torso, so I need to make these stretchy somehow... Easy! Just cut every-other grid in the mesh and viola,! it has become stretchy yet intact.
I just bought 2x 1000ft boxes of CAT-5 network cable to sacrifice for wiring. One is stranded-core, the other is solid-core. Unfortunately the only stranded-core box of CAT-5 I could find was actually CAT-6 (a much higher grade cable) and I feel bad about disassembling these :( Both are 24AWG twisted pair. The solid core I'm probably going to use for the intended purpose of patch cabling, the stranded core is what I always knew I wanted/needed for the panels for its better resilience in being flexed. Plus it more readily accepts soldering and has the benefit of wicking.
Just bought more bulk control chips: 50x 8-bit binary counters, 100x 4-16 demux active high, 100x 4-16 demux active low. These will be the addressing chips for each panel.
Bought a crap-load of 5mm RGB LEDs! 1600x common cathode @ 4Kmcd - and they come with "free resistors" for both 12-V and 5-V step-down. This is enough for 6 panels.
I'm still keeping an eye our for spools of wire for this - I know what I want is stranded-core wire that's relatively thin and flexible. I'm looking at bundled wire like phone trunk cable or ethernet... For every foot of CAT5 you have 8ft of colored wire. For every foot of phone trunk cable, you can get as much as 200 feet. After some price comparisons and wire/ft, it seems more economical to get a spool of CAT-5. I'll keep looking but I think I'm ending up with this.
Gone to the hardware store to look for a good supporting grid/mesh for the LEDs. I decided against the all-metal chicken wire idea for the risk of shorts. I bought some plastic "garden netting", it says it's 3/4" spacing, made of PVC - seems flexible/thin enough to use as a wearable base. I would have liked a finer/smaller "dot pitch", but this is pretty decent. I'll be cutting 18*18 grid pieces (an extra grid space around the planned 16*16 layout to maybe help in mounting to myself)...
Bought a bunch of colored jumper wires of various lengths for my protoboard. No more using stranded wire scraps!
Just bought an old Motorola 68000 CPU with the though I'd use it as an option to control the LED matrices
I just won a MOS 6502A CPU. I would love to get this working as the controlling brain!
Well that went much more smoothly; I got the bi-color 8x8 LED module to sequence through all LEDs and all colors! I was in luck that the modules happened to have common anode columns that the decade counter would properly control, and the 4-16 demux happened to be an active-low demux to drive the negative of each row. To drive the module by displaying animations/text would just be a matter of enabling output at the appropriate times...
After some trial and error, I got the 10-bar LED to sequentially light up via the decade counter! Apparently you can't leave input pins on these chips disconnected - they must be tied to either plus or minus. Took me a while to figure out why they wouldn't scan and would randomly advance only 1 or 2 bars for a split second (I had left the "reset" pin disconnected, so ambient EMF was resetting the count). Tied that sucker to ground (meaning "off") And thar she blew. Cool! Now to advance to one of the 4 bit counters to run the 4-16 demux on an 8x8 LED module. I only have one demultiplexer right now, so I will use the decade counter to run the 8x common lines and pulse/increment the 4bit counter.
I received my counter and demux ICs and the lot of 8x8 LED modules, I'm going to start experimenting with how to use these ICs in conjunction with the LED modules.
The simplest thing right now is probably using the decade counter on a 10-bar LED graph module I've had since I was a little kid...
One of the eBay stores I bought from has an awesome selection of cheap components on their website. Hooray for the sweat and blood of under-aged Chinese children in unregulated factories! Just bought 40x 74HC164 latching 8-bit shift registers, an "32 Assorted logic kit" of 74HC00/02/04/08 chips, 60 more 8x8 bi-color R/G LED modules, a grab-bag of 2000 resistors (50 different values) and a fist-full more 7-segment LED displays of various sizes and polarity.
Just won 25x 7-segment decoders to play with some 7-segment number displays I've had forever. This is to help me figure out logic ICs. Besides, I've got all these displays collected over the years and no proper controllers!
I just won 20x 8x8 bi-color R/G LED modules on eBay! These will be fun to play with, and I think I have enough logic chips to control some of them but it will have to wait since I'm going to be in Peru for the next month!
Just won some CD4017 decade counters, 50x 74LS164N 8-bit shift registers and 5x 74HC393 dual 4-bit ripple counters. These should give me enough to get a firm grip on using logic chips.
Just won 150x Common Anode and 150x Common Cathode RGB LEDs on eBay. Not sure which will work best with however I plan to control these, so may as well get each variety! These are clear LEDs, I was debating weather or not to get frosted LEDs to help with color diffusion, but I figure If I needed to I could put a dab of translucent glue on the top of the LEDs for diffusion, or wear thin white clothing over the LEDs to diffuse/mix the colors.
Got me a 4-16 line decoder (demultiplexer). This is like assembly programming in the physical realm.
Wow I haven't been back to this idea in a while. A couple years ago I saw a video demoing Philips LED clothing and everyone was oohing and ahhing about it. I thought to myself that this is such a stupidly simple thing - nothing to fuss about! I can build that!
So, I've had this idea in my head for a while to create a shirt with full-color LEDs behind/in it to create a wearable integrated display... I've been toying with the idea of using chicken wire as a forming base that also serves as the common power to each LED. I'm not sure how I'm going to control it yet, but I'm going to troll eBay again for cheap LED matrices to practice on, maybe a few RGB LEDs, whichever is cheaper...
I've also started searching around on how one would control a bunch of LEDs easily, and put together logic circuits/simple CPUs. Trolling ebay for various types of chips, too... (counters, multiplexers, etc)
I just won a few Z80 CPUs, a possibility to be a brain for the matrices
Just bought 25x "7805" 1-Amp 5-Volt regulators on eBay
For the brains running the matrix - I love 8 bit CPUs of old, from the systems I grew up with: The Apple][ 6502, Mac 68K and GameBoy/TI-Calc z80. I'm going to try and get one or a few of these to play with.
Won some 44 AWG magnet wire with the thought I would use it as the wiring for the surface mount LEDs
I've been trying to buy some 8x5 bi-color red/green LED modules on the cheap... no love :(
Just won 100x green and 100x red surface mount LEDs on eBay!
Just won 100x bi-color Yellow/Green surface mount LEDs on eBay. I was hoping for red/green, but these will have to do...
Project Light Bright
I've always liked LED message displays, but they are expensive... I'm going to try to build one myself from scratch. Time to troll eBay for bulk LEDs!