Thursday, August 29, 2013

Creepy Facebook Ads: How Do They Work?

First, it's been a long time since I've been over here!  The LEDgoes Kickstarter has been keeping me quite busy, and I've been focusing most of my attention on that the past several weeks.  We raised our funding goal in about 9 hours, and currently stand at almost 800% funded.  However, it takes me at least a couple hours just to write these blog posts, and usually by the time I sit down on Thursdays to start writing them, I'd really rather be doing something else.  (I don't know how influencers balance their time doing vs. their time writing... maybe they have staff?)

And just another brief aside: today, my samples from Texas Instruments arrived!  I ordered a CC3000 WiFi chip and several USB transceivers including the TUSB1105.  Clearly I thought it'd be fun to build my very own mobile device from the ground up. :-P  As much as these chips cost me nothing, they're also ridiculously small and hard to solder since they're in a QFN package -- tiny chips with *no* leads hanging off the edges.  You'd basically need to reflow solder these suckers onto a board, but I'm going to try to come up with a pressure mount for them.  Plus, yesterday I received my actual order of a sub-1GHz RF spectrum analyzer, meaning I'm about to turn my garage door opener into an RFID tag.  Let the tinkering continue!

Thursday, August 1, 2013

My New Kickstarter: LEDgoes, a Modular Scrolling LED Matrix

Well, this is big news!  LEDgoes, my modular scrolling LED matrix system, is finally being put on Kickstarter.  Check out the product here and learn more!  (The Kickstarter isn't live yet because it's still awaiting approval; I'll post the link here when it's ready.)

Why is this cool?

  • Most LED matrices are fixed-width panels; ours is made from smaller panel modules you can push together to make your own desired size, up to 64 panels long.
  • Because you snap the modules together, you can make a bendy LED display.
  • This kit does 3 colors; most DIY kits can only show 1 color.
  • It has an open, simplistic serial interface implemented in firmware, and very versatile software that can drive the firmware to scroll a message from various sources or even show animations.  The software could even help you break the 64-panel limit.
  • The software can control a display consisting of multiple rows of panels in order to display bigger, taller letters.  In this case, each row could have up to 64 LED panels.
  • We got our retail price down to $22/module.  Most DIY kits cost between $20-$50/module and don't come with supporting firmware or software.  Many 8-character commercial DIY kits cost at least $35/character and are difficult to program or repair if something goes wrong.
  • Many LED panels have identical shape & size to the ones we developed this with, including some super-bright panels.
  • The chips on the boards are independently programmable, so you could in fact run whatever program you want to and your application would have 24 GPIO pins per module you use.
  • The LEDgoes modules can be completely manufactured in Texas.
  • Most, if not all, of this work will be open-sourced so we can tap into the power of the community for enhancements.
  • Because my wife & I have real jobs, we're not looking to send our kids to college with this product, so we can sell it to you for cheaper.

I started working on this project roughly October 2011 when attending a DPRG event at Tanner Electronics, and spotted dual-color 5x7 LED matrices in their LED section.  I'd always been fascinated with having a stock ticker in my room, and felt like these modules would be the perfect thing to build it with.  After brainstorming with my wife, we decided to drive each panel using two ATmega168 microcontrollers, and designed the protocol in such a way that lends well to modular flexibility.

The project was started shortly before my "final push" to prepare Owtsee/Head On Out for the Grand Challenge of the Apps for Metro Chicago contest.  I made a little headway on it before I finished Owtsee enough for a 3rd place prize and $3,500 in the hackathon.  Then I worked on it some more, finishing up the flexible firmware that allows software to drive any letter or shape on the matrix.  I wired up one LED panel to two DIP-socket ATmega328s on a breadboard, and drove messages to it using a Netduino microcontroller listening for input from a COM port.  After another diversion getting Owtsee ready for multiple cities, I added a second LED panel to my breadboard and could now show enough of the message for it to make sense. ;)

Once the whole "modular" concept was proven, when two LED boards were shown to work side by side, it was time to move it off the breadboard.  (There wouldn't be enough room for a 3rd panel on the breadboard anyway.)  Stacy began doing board designs in February 2012, and we presented the working display panel, supporting firmware, and board draft at the Dallas .NET Micro meetup on 2/29 (yes, that's how I spent Leap Day :-P).  I then attempted to learn and use the PCB mill at the Dallas Makerspace in order to fabricate the boards myself, but that didn't work out because the work surface is uneven and the mill just doesn't produce the accuracy needed -- it surprisingly gets close, but I broke way more mill bits than I'd care to mention, so I simply gave up on milling the boards myself.  After several design iterations -- 5 or 6 months of double-checking, triple-checking, quadruple-checking, ..., everything, I finally sent my board design to seeedstudio in China for production.  Concurrently, I bought some TQFP-packaged ATmega328 chips from Kineteka.  After about a month, I received my boards in the mail and started going to town making a real live prototype in time for my wedding.

This is a picture of the output from the PCB mill.  Close, but no cigar.

Meanwhile, I showed the breadboard version to videographers with Red Bull Creation at the Dallas Makerspace on 8/5 (almost exactly 1 year ago!) and debuted the new PC controller software, including the "Scroll Live Tweets" feature.  Not only can you send messages for the board to display in plain text, but you can also enter a Twitter hashtag (or handle or search string) and it'll show all related messages in order of arrival, as long as the rate of messages doesn't overflow our queue (then it'll drop some of them),  We used this capability at our wedding in October 2012 so our guests could tweet to #wyliewedding and see their message on our board.  (What ended up happening in practice was we proved the technical ineptitude of some of our guests, who tried to use that hashtag on other social media services. :-P)

Fully-loaded breadboard with both LED panels, as the Red Bull people saw.

Rev 1 from China worked out to about $1/board for 10 boards, and for that price, it was pretty nice quality.  There were, however, a couple design flaws: for one, the output pins of the chips were not routed to the same spots on the board that our firmware was expecting, so I had to tweak the firmware a little bit.  The boards were almost incompatible with the matrix panels due to a big difference in the panel size vs. where the pins are, but luckily this egregious mistake was caught just before production.  However, the spacing on the right-angle header pins to snap the boards together didn't take into account the size of the headers themselves, so there would have been a gap between characters if not for the clever use of the leftover leads from the many through-hole resistors we soldered onto these boards.  I produced a working 3-panel matrix in time for the wedding, but these leads didn't produce a very good connection between the boards and even just looking at it funny will cause it to go all out of whack.  Also, some of the 328 chips had this bad habit of producing really noxious smoke when powered (though they still appeared to work), so this further limited the amount of boards I was willing to produce.

After the wedding, I focused on some contract work and house-hunting.  Stacy found some time to work on Board Rev 2, which fixed the issues with the header pin spacing and added new pads to support both through-hole and SMD resistors.  The pads are designed for 0805 resistors, but 0604 and 1206 sizes should also work in these spots (I've used both 0805 and 1206 myself successfully.  I might leave it to Stacy's steadier hands to try 0604s).  We elected to keep the "errors" in the pin mappings as our Rev 2 firmware had now been thoroughly tested and was doing very well.  I ordered this round of boards from Dorkbot's OSH Park on 2/4/13, and it came out to about $4/board for 12 boards.  However, I got them in 10 days while China was celebrating its New Year, so ordering from China would have put me way behind.  For this run, we went with ATmega168A chips from Mouser because the 168s are much cheaper, especially when you buy them in bulk.  However, even on the Rev 1 boards, I had the darndest time trying to program firmware onto the chips once they were installed on the board.  Either I couldn't find a compatible bootloader, or I couldn't get the actual sketch loaded on once I installed a bootloader.  (You can see how I solved this problem in my previous blog post.)  I tried off & on unsuccessfully for a couple months until I finally found the winning combo (also described in that post).

LED Matrix boards, Rev 1 versus Rev 2.  Theoretically, these are compatible with each other.

Once I found the secret formula, I started going to town & using every last ATmega168 I had in stock to produce as many boards as possible.  I cranked out 8 working boards, and 2 more with dead chips (hopefully getting drag soldering down pat and/or using a Pick & Place machine will help with my yield).  Stacy registered the domain and began writing the materials for the site and the Kickstarter while I shot videos of the boards in action and continued making interesting enhancements to the software suite to support stacking boards vertically to display larger characters, as well as the use of custom fonts. I wrote the Netduino out of the equation, opting to use the PC itself to drive the COM port connection by means of an FTDI breakout board, any Bluetooth serial module (e.g. Firefly or Sparkfun), or even a *Duino running with an open serial port.  If you have a TTL serial port on your device, you can use it control the modules.  Stacy is currently out at a well-known convention in Las Vegas trying to hawk as many of these as possible while I continue to look ahead at what these boards can do next.

Some other related future projects include:

  • Variable-width characters
  • Self-addressing modules
  • Controller software for Mac, Linux, Android, iOS, and other interesting platforms
  • Making plastic, bendable, snap-together housings for each module so it can live in a nice "frame" instead of just hanging out
I look forward to the future of LEDgoes!