After installing the lamp as described in the last post I had a couple more leads for people or organizations interested in my work. One is a project in progress and I hope to deliver it to Lake Oswego in Oregon within the next two months.
The other lead was an intern at my current place of employment. I showed him some photos and this blog. Shortly before he left the company to go back to the university he indicated wanting to purchase one of my lamps.
What I’ve built so far are hand crafted, unique pieces and usually a bit out of reach for the average student so I crunched some numbers and designed a concept that was simpler mechanically and electronically without the ability to control it through an iPhone. The price I quoted was certainly one reason the deal did not work out.
However, what really turned out to be a problem I did not quite expect was the size of what I had quoted. While I had shrunk down the design by about 30% in size it was still way to big for example to be use a a desk lamp. I don’t think my young friend had the chance to observe one in person, and I believe he was really not aware of how big these are.
But I did decided to start investigating whether it was possible to find proper LEDs. The choice of available candidates is actually rather thin but sites like mouser.com offer great search tools to find what one needs. I had anticipated a long painful process but very quickly found some ideal candidates. At least ideal on paper specification. These have a forward current of max 200mA so are right between the usual small signal light LEDs and high brightness LEDs with 20-50 mA on the lower end and the High power LEDs starting at 350mA.
The light output was one concern. High power LEDs would have been too strong – that could have been managed – but also the size of the actual emitting surface needed to be as small as possible in order to create somewhat crisp patterns on the diffuse reflecting disks. So that fortunately worked out.
The next question that needed to be answered is of course how to drive these LEDs. An expensive constant current SMPS as used in my big systems was out of questions. Too big, too many components, too expensive for a smaller lower cost version. But here I got very luck a second time. Over the years I’ve collected some reference material about different LED drivers and just scrolling through one of the PDF files on my harddrive I found the CAT4109 from Onsemi that proved to be an ideal candidate as well. This is a very fast, linear, 3 channel constant current LED driver chip. Aside from being fairly inexpensive only 4 external components are needed. 3 resistors to set the desired constant current per channel and a decoupling capacitor that is almost unfair to count ;-)
That pairs ideally with a Teensy LC micro-contoller board, which has 10 high resolution (up to 16 bit) PWM pins, of which I use 7 in this application.
I quickly set to design prototype PCBs, one carrying the three LEDs and one for the Microcontroller and LED driver chips. Actually it’s more of a feasibility study to see if it would actually work. I need to find out quickly whether the LEDs would create enough light and the light distribution was acceptable without undesirable artifacts. Naturally I also wanted to see if this setup could fade as smoothly as my bigger systems.
The image below may not look like much but this feasibility study proved very successful. This has been sitting in my living room and the LEDs have been fading and changing colors buttery smooth almost non-stop for the last 4 weeks:
So over the last 4-5 weeks I’ve gone ahead and designed a new lamp in Fusion 360:
It looks simple but that’s been quite a challenge given the small scale of the components. The diameter of the machined parts is smaller than my index finger, yet I need to route 7 little insulated wires through the small piece without electrical shorts and while still keeping the overall system manufacturable by hand. The overall width of the system in the image above is a little less than my 27″ iMac is wide.
Here is an image of the machined component – here 3D printed in ABS – that is part of one of the two LED heads:
Here are images of the PCBs I created in Altium’s Circuit Maker :
The machined part are out for quote. The PCB’s will go to OSH park so these will come back in a beautiful dark purple color. Aside from being functional I also wanted these to be “good looking” so I created a decorative pattern on the visible back face.
Hopefully I’ll be able to assemble some real prototypes within the next 4-6 weeks.
I’ve recently been presented with an opportunity to showcase my LED artwork in the iStore. The store had been around for a while and I had contemplated for some time asking whether they’d be interested of showcasing the Apple themed LED system I had designed.
The store had previously been located in downtown Greenville but in January they moved into another location into a brand new building on on One City Plaza in the center of downtown Greenville.
Then, in late January Apple started a new Ad campaign with the slogan “start something new” showcasing digital artwork created exclusively on Apple devices. That immediately clicked with me as I engineer my artwork – and there is a of lot of engineering in those lighting objects – exclusively on an iMac. However, while my artwork is also digital in many ways it’s distinctively different from the art displayed on the Apple web page.
When I turn all my apple devices off, my artwork is still there!
With that in mind I posted something on their Facebook site and ended up changing a number of emails with the store owner. Initially the idea was to install the Apple lamp pictured earlier in this blog but that did not work out. The store owner contacted his representative at Apple and she contacted the national Apple rep. The feedback was that the Apple logo cannot be used the way I used it. One of Steve Jobs often repeated quotes that Jobs attributed to Salvadore Dali is “Good Artists copy. Great Artists steal”. Dali apparently never made that quote but that did not prevent me from shamelessly stealing the Apple logo for my purpose and make it my own. Being aware of that it was still rather disappointing that we weren’t able to put that system in the store.
But I made one more attempt and asked the store owner whether he would be interested in showcasing one of my other designs. His response was that, yes, if I would be amenable to install this on the large headwall in his store. This head wall is a 30ft wide, 12 ft high, flat white painted perfect playground in a prime location. I was very amenable!
These next two photograph were taken with an iPhone 6 and show the system as installed in the store:
These images were taken on the night of the installation. When we walked out of the store to see how it would look from the outside the store owner told me that the series of renderings I’d prepared were what sold him on the idea.
I recently updated my own toolchain to the newest versions of all involved software:
- Arduino 1.0.6
- Teensyduino 1.20 plugin installed into Arduino 1.0.6
- Arduino 1.5.8
- Eclipse Arduino IDE 2.4
The instructions still work as written, however, for users of the Teensy 3.x boards the boards txt file had to be updated to allow the selections for the Teensy 3.1 under clocking for low power applications. The overlocking speeds are commented out, but are easy to enable by editing the boards.txt.
I have added a new menu entry in the Arduino Eclipse Plugin section called Other Resources
This should help when questions arise that I cannot answer. Many questions can be answered on the Arduino forum thread for the Plugin. Should you find a bug or unusual behavior of the plugin it may be a good idea to open a new issue on the GitHub site for the plugin.
The third link (so far) is to a blog post that is written by an experienced programmer and explains very nicely why one would use the Plugin over the Arduino IDE.
Last but not least I have discovered on my own iPad that selecting the Wordpress submenus is very cumbersome. Now when selecting the Arduino Eclipse Plugin menu entry the resulting page contains the links to the sub-pages that can normally be reached by using the menu.
I’ve added a little Tutorial that describes in detail how to send and receive OSC (Open Sound Control) messages with an Arduino Sketch
There are a number of tutorials and resources on the Internet that show how to do this this but the one’s I found leave to be desired in one or the other area.
- This tutorial does not require a “middle man” e.g. a PC or other computer to receive and interpret OSC messages via Processing and then send commands to the remote device. The Arduino exchanges OSC messages directly with the device to be remotely controlled.
- Some tutorials use old and non-maintained Arduino OSC libraries such as ArdOSC or zOSC. This tutorial uses the Oscuino library, which is written and actively maitained by the inventors o the OSC protocol at CNMAT Center for New Music & Audio technology
A feature of TouchOSC that AFAIK only works on iOS devices is that it can recognize devices that have registered an OSC service on the local network by using Apples implementation of ZeroConf networking called Bonjour. In a next tutorial I will show how to accomplish that using the Arduino Bonjour library.
The most reliable hardware combination I’ve found to do this with is a Teensy 3.0 (or 3.1) connected to a WIZ820io embedded Ethernet module that is connected to a Pocket WiFi Router such as the TP-Link TL WR702n (Or 703n). While this is certainly more bulky than a solution that employs one of the available WiFi modules such as the TI CC3000 it has a few significant advantages.
- The TP Link WiFi router comes out-of-the-box in AP (Access Point) mode and that makes it very easy to connect to the Microcontroller directly without having to integrate it into an existing TCP/IP network. Great for debugging communications! I am not currenty aware of any of the IoT WiFi modules that can work as an AP.
- Once a project is debugged and UDP packages and OSC messages are exchanged the router can be connected to an existing network an this is quickly done through an easy to use web interface.
- The WIZ820io uses a Wiznet W5200 Ethernet Chip that also supports Multicast DNS. That is a prerequisite for Bonjour to work. I’ve not been able to find an embedded WiFi module that fully supports this. The very new Texas Instruments CC3100 may be the first one. I believe it when I see it.
However, when Bonjour functionality is not required, then this may actually work fine on a SparkCore. The above suggested hardware does work – including Bonjour – as I use it successfully in my LED Lighting Systems
The prototypes built so far look finished from the front, which was very intentional. People that have stepped into my living room have unanimously found my creations beautiful. However there still was so much to be done on packaging the electronics and integrating everything nicely so it would look…well, finished like a intentional product. Done!
Another problem which solution I had deferred was how to be able to break a lamp down so it would be shippable. That of course would require some form of reassembly and the intention was for that not to be more complicated than say a simple IKEA chair. This was a real challenge as this also needed to include a safe and solid electrical interconnect. Fortunately a good idea hit unexpectedly and hopefully within the next 3-4 weeks I have prototype parts on hand to see if the idea works as well in hardware as it works on computer screen.
Should things work as planned the goal is to have three fully functional prototypes assembled this year and perhaps until then the search for an avenue to exhibit these presents itself. Two these prototypes have been part of previous posts. The third one is an almost three year old design that hopefully will take shape over the next few months.
It is always a challenge to balance work and family life with demanding hobbies/passions and sometimes some things just simply have to wait. This blog falls into that category. However, a number of things have been accomplished and I will update the blog over the coming weeks.
When I started this blog the lighting system in the first post was really just a feasibility study. Functioning, yet lacking in so many ways. While the visible mechanical part looks fairly finished most of the deficiencies were in the electronics and software that are hidden behind the system. A typical hacker project in an early prototype state. Nothing that one could repeatedly build with any confidence. However, over the past year I have significantly upgraded the electronics hardware and software. While doing so I have learned many things that would have been impossible without the existence of open source hardware and software tools.
As many beginners do I initially used an Arduino Uno board and the Arduino IDE. However when trying to incorporate more software functionality into the project such as ZeroConf Networking/Bonjour functionality the memory of the Arduino became insufficient and I discovered the Teensy boards. At first the I used a Teensy++2 but a few months after I ordered it the Maker introduced a new Teensy 3 through a Kickstarter Project, which is now the basis for future lighting systems and other projects.
As the software became more involved I really had to brush up on my programming skills and needed to get a better understanding of the concept of object oriented programming and C++. The Arduino IDE also does not offer much functionality and I found the Eclipse Arduino IDE that allowed to program Arduino boards using the Eclipse IDE. At the time it did not accommodate the Teensy boards, so I contacted Paul Stoffregen the maker of the Teensy Boards and Jantje the Author of the Eclispe Arduino Plugin and asked if they could imagine getting the Teensy boards integrated into the Eclipse Arduino IDE. To my surprise both jumped at the opportunity and got to work instantly. Getting the Teensy++2 to work took them less than a Month, but the Teensy 3 was a hard nut to crack. Particularly as Jantje did not own one. I could not really contribute to the software effort other than beta testing but I had two Teensy 3 from the Kickstarter reward, so I sent Jantje one of them. After a few month the Teensy 3 and now also the Teensy 3.1 can be programmed using the Eclipse Arduino plugin and the new Eclipse Arduino IDE. The instructions of how to get that to work are here under the “Teesny, Arduino, etc.” tab.
As I had upgraded the hardware, the software itself also needed some upgrades to accommodate the new hardware. The Teensy 3 is fully Arduino compatible and worked right way, but my choice of Ethernet Hardware required some changes to the code. The original Ethernet Shield I used in conjunction with the Arduino Uno hosts a W5100 embedded Ethernet chip and is supported by the Arduino Ethernet library. However the WIZ820io, which is much more capable, much smaller and cheaper than the Ethernet Shield but uses the newer W5200 chip. This required a few changes to the Ethernet Library. Much more involved was getting the original EthernetBonjour library to work. It used direct access to the W5100 chip through the SPI library and it took a while to get it to work. It also duplicated some of the functionality of the Ethernet library. When the Teesnyduino Ethernet library was upgraded with code to automatically detect which Ethernet chip was used I would have had to adapt the EthernetBonjour library yet again. So I decided to completely overhaul the Ethernet Bonjour library and remove the immediate hardware dependance of it by removing all the direct hardware calls with calls from the EthernetUDP library. I hope that will eliminate the need for having to modify and adapt this library every time either the original Arduino Ethernet library or the Teensyduino Ethernet library undergo changes. It will also make it much, much easier to adapt it to use with new Ethernet hardware, e.g the CC3000 from Texas Instruments.
One of my goals was to be able to remote control the lighting systems from an iPhone. There were two promising iPhone applications available, Ardumote and TouchOSC. Ardumote allowed to send and receive simple commands through the UDP protocol. On my early Arduino Uno prototype using an Asyclabs WiShiled I also got this to work, however, it became clear that ArduMotes iPhone user interface while visually very attractive would not allow me to create the functionality I had in mind. So I investigated how to get this to work with TouchOSC. The first obstacle was the library that shipped with the Asynclabs WiShield as it was difficult to work with. The only Arduino library that I could find for OSC was Recotana’s ArdOSC. Unfortunately this Library depended on the Ethernet Library, which in turn required the Ethernet Shield. No WiFi. Bummer! It took several month and a lucky find of a youtube video that demonstrated Arduino WiFi functionality by means of a small Pocket WiFi router connected to the Ethernet Shield. Still today I believe this is the best and most reliable way to get WiFi to work on an Arduino. It is really dead simple! This allowed me to use ArdOSC and with some programming effort I was able to remotely control the system through TouchOSC from my Phone via WiFi.
ArdOSC is not maintained anymore but in the meantime the inventors of the OSC protocol at CNMAT have released their own Arduino OSC library called OSCuino. I have replaced ArdOSC with OSCuino in my projects and hope to post a tutorial in the coming weeks on how to get that to work with TouchOSC. The idea is to develop a little demo application that will use Bonjour and OSC in conjunction with TouchOSC. I just have to figure out how to format/post code on WordPress.com :\ One would assume that that would be natively supported through a plugin by such a popular blogging platform but I find the editor disappointingly rudimentary!!!
Actually, most of the components are in already. A small shipment from Mouser will arrive soon and I still have enough conductors to build 20 shields. More are on order and will here within 2-3 weeks. As with the ones needed for the prototypes I have not been able to find these at any source her in the US so I sourced them again from the UK through Allied Electronics / RS components.
I’ve also decided to invest in a laser-cut stainless steel stencil from Stencils Unlimited. The mylar stencil from Pololu.com was fine for the prototypes and likely would have lasted a good number of boards longer but the print quality of a stainless steel stencil is simply better and more consistent. Also of course a SS stencil is much more durable.
Another project I have been working on is a micro controller project with the aim to have “something” that can take advantage of the capabilities of this LED shield. One of the unique features of this shield is that it is controlled through the I2C bus. All components on the LED shield (with the Exception of the temperature sensor) are FM+ capable. The FM+ specification allows I2C bus frequencies of up to 1MHz. Instead of 3mA FM+ components can drive 30mA, which allows much longer connections between I2C components. On the other hand most normal Arduino’s allow max 400KHz. So here is the Frankenduino I’ve described in a previous post:
It features an I2C bus extender based on the PCA9600 chip from NXP. I’ve successfully used a shield on 5 meters of CAT5 Ethernet cable and on my oscilloscope signals looked crisp even at 1.5MHz, so there is quite a bit of headroom to use even longer cables and more devices such as the shield.
Also, what can’t be seen on the Photo is a IR receiver and the Teensy3 happily receives and decodes IR signals from my Apple Aluminum remotes. A nice feature of the Apple remotes is that they can be paired to a device. I have not quite yet finished the code but I have determined the codes that the remote uses to be paired. However, before I do that I need to make a second prototype, which features an SD card slot for permanent data storage. It would not make much sense to having to re-pair a remote every time the micro controller has been powered down.
In order to function together with the I2C bus extender I also re-designed the little Arduino I2C extender board. It has SMD pads for different pull-up resistors and also needs a small Schottky diode when operated in conjunction with the PCA9600 I2C bus extender. Below is a picture of a “complete” system, including a micro controller, WiFi Ethernet Hub for remote control ability through OSC / TouchOSC and a LED shield with the I2C extension board. More shields can simply be daisy chained onto each other using inexpensive pre-configured CAT5 Ethernet cable.
Another interesting idea I had is that it could be quite useful to expose all the functions of the LED shield through the OSC protocol. That way you could create LED effects code directly from a computer e.g. with MaxMSP or Pure Data without having to program the micro controller.
That is a question I’ve been contemplating about for the last few days. Having produced a first functioning prototype is quite encouraging! The question is now what to do with that success.
While there have been some people that have shown interest in buying one, currently the number possible orders does not exceed 20. That on the other hand would not justify having 50+ boards manufactured as that would include having to lay out about $2000 in advance. We have been in contact with a manufacturer in Germany (where the co-host of this blog is located) , specialized in manufacturing small series. This by the way is not a garage shop but a company that has been doing this for 20+ years and they’d be providing us with a complete turnkey solution. We send them the layout and money and they send us back completed boards. However, that only makes sense if the number of boards is larger than 50 for the first batch and would also really only make sense if there would be several batches of 50+ boards after that.
We could investigate to find a less costly alternative, however, the reduction in cost would have to be rather significant 30%-50% to really make a difference. We have a costed BOM and the price of all the components assuming Newark as the source of supply is about $27 for a qty of 50 boards. That does not leave much room for the labor to actually build the board.
My current thinking is to set up a fund raiser at Tindie and then post on a few forums to determine if there is enough interest to justify having 50+ boards manufactured. Another option would be InMojo. They are also offering assembly and serve as a sales platform for open source hardware.
Meanwhile, as I’ve mentioned above, my early success is really encouraging. Should there not be enough interest I can imagine making these myself depending on what QTY is involved. Making the first prototype was my first venture into SMD and Solder Paste and Reflow Soldering in a Toaster Oven. I started around 6:00PM in the evening getting all the materials ready, building a makeshift stenciling fixture etc. I was done with testing the prototype and had written the blog post by 11:00 PM. I believe it took me a good 120 minutes to populate the board. I had not made an assembly plan and I was doing it on my computer desk going back and forth between the layout and schematic in Eagle to see where the component went and and then I had to use the BOM with the Newark part number and find the bag/reel/tape with the component, and get them out of the packaging to be finally be able to place the thing on the board.
With some better preparation and a little hardware I believe I should be able to get it to well under 30 minutes per board. I have ordered several of these and several of these and with some intelligent, labeling and an assembly plan things should progress much faster.
I have sets for 4 more prototype boards and will see how quickly these can be assembled with better planning within the next week or so.
Once that is completed I intend to send one or more to my partner-in-crime in Germany to do some testing under load. I don’t have enough LEDs to test the thermal side of things and he has managed to burn out one shield already. This should tell us how many LEDs the shield really can sustain! I only use one RGB LED @700mA per shield in my own lighting projects (trippylighting.com) and none of the thermal considerations are of any concern ;-)
After finally being able to source the Inductors from RS components in the UK I had thought that I was ready to go, as I had already placed an order for the solder paste. But I received a call from the rep and the particular brand and type I had selected was not available or recommended so I had to wait another 10 days until a better alternative was back in stock. So after having to wait another two weeks, yesterday evening UPS made the final delivery.
It is usually not a good idea to start new endeavors such as populating an SMD board with almost 50 components for the first time and reflow soldering in a hacked toaster oven for the first time at 6:00PM in the evening, after a full day of work with another one coming up the next day, but I had been almost giddy with anticipation and just could not help myself!
I re-stenciled the solder paste twice as I was not happy with my first two attempts. However, it turned out to be easier than I had thought. Then I started placing the first components on the board. Reflowed on the board the smallest resistors and capacitors look at least 50% bigger than they actually are. And while placing these was not easy and somewhat time consuming, the surface tension of the melted solder pulled these into the correct position. One of the big ICs fell onto its spot less than ideally positioned and the nicely stenciled solder paste spots were very smudged after repositioning the component. This did not look so good! But I was to curious about the reflow solder process, so I continued to populate the board.
When I finally was ready to place the thing in the modified toaster oven I fully expected it not to work. The reflow process is actually quite fast – somewhere around 4-6 minutes – for lead free ROHS compliant solder and I watched the process with eagle eyes.
For the first 3-4 minutes of pre-heating and soaking nothing happens visually, but when the systems goes into the reflow temperature zone one can see the solder getting shiny and flowing and you can see the small components reposition themselves. This looked surprisingly good and my outlook changed from No-way-Jose to “hey, this may actually work”
Reflowing this not so simple board with almost 50 components and several several fine pitch ICs worked great right the first time. I attribute that to the following three things:
- I did not get the cheapest available equipment but bought things that required little hacking and had proven to be successful. After all, I was not looking for yet another side project but an inexpensive but functioning solution. So I bought the reflow Oven Controller Shield and a Panasonic IR toaster oven that someone on the RocketScream forum had reported successful results with. I also made sure I bought the recommended K-Type thermocouple.
- I followed the set-up instructions for the Arduino Reflow Oven Controller Shield and attached to and placed the tip of the thermocouple on a PC board that I placed in the reflow oven with the board to be reflowed.
- I paid attention to the Reflow profile of the solder paste I chose (Amtech NC-560-LF). The the heating part of the profile did not need much attention. If the oven has enough wattage it will heat up quickly enough and the PID control characteristics of the reflow Shield followed it precisely. I had copied and pasted the serial output into a spreadsheed and saw that the cooling, however, was much slower than recommended. Anyone who has ever had material sciences in school/college knows that the cooling of molten metal is as important to the proper crystallization of the solder joint as the heating is for activating the flux (etc.) so I made sure that I opened the oven door to get to the correct cool down speed -2-4 degrees celsius.
But of course just because the board was nicely soldered still does not mean that it’ll work. And it did not in the first attempt as the power LED remained unlit. When placing the components I had switched the polarity of the one diode in the switched on-board power supply but this was an easy to detect mistake and because the diode was one of the bigger components it was easy to fix with a soldering iron.
So here it is, the first functioning prototype: