Building on the Compass PCB prototype 01 I’ve updated the PCB so that I can install the 16 boards easier, along with doing some little things to reduce the amount of wires which will need to run this array.
I created a Ground Bus which I can solder to Board 01 from the Arduino GND and then daisy chain the next 15 together, so I get rid of 15 unnecessary wires. I then moved the +5v feed (which will come from the shift registers) to the top, so I can solder wire, straight, or angled headers depending on what I decide. Lastly, I moved the support holes to the center so that I will be able to flip the board one way or another to install it. This will allow me to manage the 16 wires which go back to the shift registers in a logical way. How I will do that is for another day, at least I know I have options, and I’m giving myself some flexibility here.
Building on yesterday’s Compass LED PCB prototype, I wanted to get the compass actually working so I could drive some LED’s.
Using Adafruit triple-axis accelerometer & magnetometer LSM303 and NeoPixel Ring – 24 x WS2812 RGB LED, I was able to get a functioning digital compass fairly quickly utilizing the Adafruit_LSM303 library.
I don’t know if I will use off-the-shelf LED’s for the compass as shown in the Compass PCB prototype 01 or use a Neopixel version via SparkFun, the WS2812 RGB LED Breakout. I save about 1.3 mA per LED versus my chosen through-hole LED if I use the WS2812 with a single channel of the RGB on, but to get white it costs me 60 mA! If I use this breakout board I won’t have to assemble or test out the components and boards or test out a self-designed board, which is a huge time saver and reduces the change of me messing up, but I don’t think I can afford the power for the compass.
If I use the Neopixel for the compass, I’m stuck using the Neopixel library for the compass and my home-brew shift registers to drive the lamp subsystem. Which might not be a problem since they both do different things. In the end it might come down to aesthetics: which system do I want more control over the color of light, the lamp or the compass? I think I would want more control over the lamp colors via the Neopixel than control the color of the compass.
Until I get a handle on my power consumption, I won’t be able to choose one system over the other.
I’ve been thinking a lot about the Lamp’s compass. Creating a Lamp with built-in dowsing rod capability will both increase complexity – a major headache is dealing with all the shift registers and the accompanying 16 LED’s – not to mention the added power load required to drive an accelerometer and magnetometer continuously. But it will be cool. And that’s the whole point, right?
Why do I need both an accelerometer and a magnetometer. The magnetometer is self explanatory: I need to know which way is magnetic north and compare that to the local Lamp heading so I can turn on the correct LED to point me in the right direction. I don’t have perfect balance. The accelerometer is essential to compensate for a non-flat magnetometer reading. I can also get fancy and begin to compensate for magnetic declination by both reading the accelerometer and the GPS location. If I want to get fancy.
I’ll deal with the power consumption and compass later, but right now the thought of custom making then soldering 16 LED housings to make a hexakaidecagon (hexadecagon) makes me want to run down the street. Luckily, I’ve been messing with Fritzing Fab and designed my own little LED PCB which will hold the LED, a resister, pins to go to ground and to the proper shift register, and mounting holes. At US$2.15 per board each one isn’t exactly cheap, but I will have a consistent and rugged board to mount the electronics to and then to an internal housing. Kit-bashing my own would both be more time consuming and I would have 16 times to foul it up.
I tried to fabricate my own LED harness with MakerBot, but it just was a pain in the butt to fab and then I still had all the electronics to deal with anyway. I might have to fab one anyway to hold the PCB’s but that will just give me another factor of safety with the electronics.
As it is, this board might win as the most simple board produced by Fritzing, but you try to create a run of 16 (or 32 in case I mess up) boards yourself. I’m going to rely on mass production on this one.
Now that both the GPS subsystem is at a good place and there is some material exploration going on, it is time to look at how to turn on a large amount of LED’s.
Shift Registers are fun little digital circuits where all they do is continually cascade bits, shifting in the data present at input and shifting out the last bit. The nice result is that you can drive multiple items – such as large array of LED’s – with only three pins: a clock pin, a latch pin which stores the data, and a data wire. I don’t know the upper limit, but at some point there becomes too many IC’s to sync at the right speed and you have too many LED’s to run off of the given power.
So now I can drive a n = (∞ − 1) amount of LED’s for the lamp itself, with power being the limiting factor, and have room for other items. The upshot is that I can now easily drive the Compass subsystem – an array of 16 LED’s which correspond to the 16 cardinal directions. Combining the GPS output from Prototype 1 with two shift registers was easy – with the help of Serial to Parallel Shifting-Out with a 74HC595 from Arduino. Mostly it is a lot of wiring and making sure that you have the clock, latch, and data wires connected properly. The hardest part was finding enough resisters to connect all the LED’s so they wouldn’t short out.
Here’s a photo of the prototype board, on the roof once again since the GPS module is having a hard time acquiring a signal from the satellites.
After successfully getting the GPS subsystem to a respectable place, I wanted to see what kind of size and shape of container would work.
I’m interested in the lamp being sandblasted/frosted with the light bright and diffuse with the electronics hidden inside. I want to encourage people to touch the lamp, so the palette feels right to be a wood and glass combination, so where a human would grab the lamp, they would be touching a natural fibrous material. I don’t know what type of wood to use. Maybe a burl Maple or a Cherry carbonized. Right now, I’m interested in the base to be darker and more solid that the light emitting top.
The wood base will be an open item for a bit, so I took a large mason jar we have in the office, some tracing paper, an Arduino with a blink program running, and I soldered a bunch of LED’s on a stick.