3DPrintedKeyFob

From NebarnixWiki
Revision as of 07:46, 21 May 2014 by NebarnixWikiSysop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Problem Statement

My friend Trish has a broken lock on the driver's side door of her car. The door will not unlock from the outside of the car with the key. This is an old car (1992), and while it does have electric locks, it does not have a remote access system. Instead of fighting with crawling through the passenger door each time she wishes to enter, I off-handedly mentioned how simple it would be to interface with the lock/unlock wires. She agreed. Thus the project began.

Trish doesn't want to use a CC430 watch. She has a watch already that she likes. She wants a FOB to put on her keychain. She would also like it to be a pretty color, and to have stars on the buttons if at all possible.

I want to use the boards and code that I already have for my Yaris_Remote_Start for rapid development and cost savings.

A View of the FOB Guts Before Gluing
Closed FOB with tape to hold the case shut while the flexible adhesive holds

FOB Design

The FOB case was designed in solidworks and 3D printed on an Ultimaker at Heatsync Labs with layer height of 0.1mm using a translucent fuchsia colored PLA. PLA will become soft in a hot car, so it is not desirable to leave this FOB in the car while parked.

The buttons were printed using black flexible PLA with star patterns on top. Flexible PLA is more difficult to print with and the stars came out a little blobby. Still, the flex-PLA yields a much more tactilely pleasing texture for buttons than rigid PLA does.

CAD files can be found here for reference only. All rights reserved. [1]

Fits nicely in my hand
Nice and sleek


Electronics Design

For rapid development, the decision was made to use an EZ430-RF2500 board. The board has a small form factor that, while not completely ideal for the FOB design, will nonetheless fit into the space required as long as the buttons can use the board as a pushoff point. Two buttons were interfaced to P2.0 and P2.1 and internal pullup resistors were used. A n 80mAH welded-tab battery readily available en mass at Heatsync Labs was used. This battery outputs 6V which required the deadbugging of a 3.3V LDO regulator and 1uF capacitor onto the RF2500 board. The red/green board LEDs are free to shine through the translucent case though they may be difficult to see in direct sunlight. Assuming 2uA of standby current and 22mA of active current for 2 seconds during a button push, it is calculated that each button press uses 17 microamp-hours of battery power. This means that one battery will yield around ~5000 button presses.

Firmware Design

Firmware was written that places both the radio and the processor chips into deep sleep every 2 seconds (millisecond timer mod 2000 == 0). Interrupts on the buttons wake the chip long enough to send the required packet and wait approx 0.5 seconds for a response from the car-side. If no response is heard the red LED will blink quickly four times. If a response is heard the green LED will light solid momentarily. Whatever time is left over between the end of the previous functionality and the 2 second interval timer is open for receipt of packets such as link quality queries, packet forwarding, or temperature/battery voltage queries. Upon termination of this brief listen window the red LED emits a very brief pulse indicating that the chip is no longer able to receive incoming packets.

The source code here is listed for reference only and all rights are reserved. MSP430 Source [2]

Results

Initial testing indicates that the internal pullups of 47k might not be strong enough to resist ESD interference which is common when entering and exiting a vehicle in dry summer months. 10k pullups may be required which will increase the button-press current draw from 70uA to 330uA.