This post is regarding my Senior Design Project from Dec 2011 – Sept 2012.
I was part of a five engineer team tasked with designing hardware modules for Plantronics, Inc. The modules were worn on the body to investigate the feasibility of harvesting energy from day-to-day human body movement. We reported to the Engineering Director at Plantronics on a weekly basis and ended up delivering 25 identical units to Plantronics on time, per requirements, in addition to a final presentation with 200 pages of documentation.
I was in charge of implementing the storage (SD card, file system, SPI) and the acellerometer (I2C). We used a PIC24H microcontroller.
After the initial project concluded, Plantronics reached out and asked for more analysis. Which was fair, the team had only delivered raw data but Plantronics was hoping to find out about actual energy-harvesting abilities. I took on the task as an individual, as most of the team had graduated already. It would take all Summer, but in the end Plantronics was very happy and I learned a whole lot. If you're interested in my work, I've included it below.
There's a really cool company out in Alameda, CA called Kai Concepts. One thing they make is the Kite Boat. I was fortunate enough to be contracted on as a part-time developer a couple years ago. What I made was a new pump board that inflates and deflates the internal bladders of a large kite pulling a boat. The regulating of the internal air chambers allows the angle of attack to be changed, thus raising or lowering the kite. It was a great learning experience.
I was tasked with refreshing an existing product line. We wanted to add a number of features to our basic [radio] monitor-receiver. Things like adjustable digital audio levels, a different L/R filter and GPIOs. One novel change is the use of a multi-colored background LCD screen. The idea is that the 'white' background would turn red when an alarm is triggered making it easy to see the error from across the room. The problem: the LCD has no bezel. No way to mount it. Enter 3D Printing 🙂
It started with the idea of gluing the lcds in place, that lead me to design a jig that would hold the LCD screen in position…It failed. Glue was not enough.
We kept with the idea of glue though, trying different brands and polymers but it was known that some-sort of brace was going to be needed. Since I was redesigning the PCB anyway, why not add a mounting/alignment point on the board? This took the form of two holes in the center of the front of the board. Now I could design a brace. The idea was to make a simple brace that pressed the LCD into the front of the chassis to help the glue.
I was sending away for the brace designs to be 3D printed, but after two iterations, I convinced my boss it was worth buying a machine. We got a PRUSA MK3S (well technically it was a MK3 but I upgraded it when the 'S' variation came out).
With a printer in house, the iterations of design were fast and many. I tried brackets with hooks, press-fit, curved back, inverted backs, long flat surfaces, minimal surfaces…none of which worked great. Finally I 'bit the bullet' and designed an entire wrapper for the LCD. Enter the red Bracket, a bracket that, with hot-glue, held the LCD in place properly. Well that was until we took the prototypes to the Las Vegas NAB convention and the warm weather and constant running of the radios showed the glue failing. The LCDs were becoming misaligned. The corner kept rising. Hot Glue just isn't going to work but what do we do?
Then I saw it, a true mounting point that's always been there. Not just an alignment hole, it's one of the four PCB mounting screws. With a taller screw and a little help from the lid, I was able to take glue out of the equation and use physical mounting hardware instead. This design actually holds up. There is a little too much support material for my liking but I think the design is decent.
All in all, I think I wen't past 70 design iterations to get to this point. The fun isn't done though. The leading edge of the PCB is a little thick and that makes it harder for manufacturing to install the brackets quickly. Now that we have a winning design, the next iteration will be a PCB change with the alignment holes and leading edge pushed back.
Besides writing embedded code, I also get to layout the schematic and create the printed circuit board. Pretty cool. Here's a pile of test boards that's been collecting on my desk (I get a new one every-time I make or revise a product). Sometime I only get to work on a portion of the board, other times I make the whole thing.
Sometimes you don't have the means of obtaining a proper development board, in which case, just make your own. Here's a couple PIC32 samples I got, turned into functional dev boards thanks to hook up wire and misc. vitamins (resistors and capacitors).
This is a little variable power supply I threw together on the smallest breadboard I could find. Attach 7-9 volts and adjust the linear regulator's potentiometer to output a nice lowered voltage power rail.
What if you can't hear the service bell meant to alert you? Enter the Service Bell of Tomorrow. It doesn't 'ding', instead it lights up and sends a message to your smart-phone via a website. Red when first alerted, green when acknowledged.
A problem at work arose: how can we set all the LCD displays of the five new products to be the same color? Setting them to the same PWM values leaves them looking noticeably different due to differences in LEDs.
At first we bought [$$$] a color tester but it didn't serve our needs. Most color testers use a bright white light to help the sensor module. In this case, the white light washes out the LEDs of the backlight and outputs the same value no matter what it actually looks like.
A solution I created is this LCD Color Calibration Tool. It looks at the backlight color and outputs an RGB value. This allows manufactuering to set the background color consitently by matching the RGB values.
The APDS-9960 color sensor is used for this project. A TFT LCD and Feather M0 from Adafruit was also used. I designed and printed the enclosure and jig. The code is just a quick and dirty hodge-podge of Arudino examples.