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.
Another day, another module. This time a compass, well, a magnetometer. In this case a triple-axis Accelerometer+Magnetometer (Compass) Board – LSM303 from Adafruit. This module will allow the lamp to know which direction (nominally) it is pointed.
Besides the lamp becoming brighter the closer it gets to a center of population, there is a compass ring which can point you in the correct direction. Prototype 3 with the shift registers is an early concept of the 16 LED’s, albeit in a straight line.
Conceptually it should work this way: the GPS module will calculate the distance between the Lamp and the closest Population Center, and get the numerical direction in degrees. The LSM303 will calculate the local orientation of the Lamp. Then we can compare the two, do some math, and light one of the 16 LED’s. Here is a great example (code) using Adafuit’s NeoPixel’s (warning, loud music):
Right now, the compass module is orienting what appears to be fairly close to precise measurements (using my trusty compass) and the trust sharpie + post-it combination. I just need to build the LED array, but that shouldn’t be too bad, but that is dependent on evolving the case design an additional step.
I am a bit concerned about magnetic interference from the other components, so I will have to find a place for it far away from the battery and the GPS module just in case.