The objective is to develop a wearable powered by a coin cell that can be controlled remotely. It could be used, as an example, in the tiara below or on a costume worn by dancers in a performance and controlled from offstage. In the photo an earlier MSP430G2553 coin cell powered wearable is attached to the tiara and driving 3 WS2812 LEDs.
The constraints are:
- cost - unit cost for the receiver of $10 or less
- technology - common off the shelf components, MSP430G2553
- construction - standard double sided PCB spec, keep SMD parts large enough to be hand soldered
- power - CR2032 (rated 3V and 225 mAH)
- life - needs to run at least half an hour on fresh batteries
- reception - 10m with clear line of sight, update at least every 100 ms
- transmission - desirable but not required
- size - 40mm/1.6" diameter for receiver
- programming - Energia desirable
- schedule - 6 month completion
The initial Energia transmission sketch to test the concept is located here: https://github.com/f..._sendByte.ino. The sketch was developed in Energia V17 using a MSP430G2553 LaunchPad and a 940 nm infrared LED. It loops from 0 to 255 and sends a single byte with the count via infrared to the receiver when a button is pushed. The packets for sending bytes do not follow an existing protocol. It is specific to this application and developed with the goal of getting a byte transmitted at least every 100 ms.
The receiver will be a custom MSP430G2553 board powered by a coin cell with a TSOP38238 IR receiver. There will LEDs on the PCB and it will also have the capability to drive LEDs off board.
The preliminary receiver code was written in C using CCS and direct register access: https://github.com/f...Receiver/main.c . The framework for the code is based on a post by RobG here on 43oh. The receiver takes transmissions from the Energia sketch linked above and outputs the current byte on eight LEDs in binary form. When the last byte is received it clears the LEDs and outputs the number of bytes received in error out of the expected 255. This allows analysis of reception at different distances and conditions.
Shown below is the preliminary testing setup. In the foreground is the G2553 receiver with a TSOP38238 and output LEDs on a breadboard. Middle ground is a G2553 with the infrared LED sending bytes. Background is output from the receiver being monitored on an oscilloscope. The output of the TSOP38238 is quite clean and no errors were seen with the transmitter and receiver this close together. Transmission is at approximately 1000 bytes per minute or 16+ bytes/sec which is within the desired range.
I subsequently modified the test setup to run off batteries so I could do some preliminary distance testing. With clear line of sight reception I saw no errors up to 5 meters with one transmission LED aimed directly at the receiver. Errors crept in after that, especially if the transmission is off to one side, not pointed directly at the receiver, or at a greater distance.
Near term activities:
- increase the number of transmission LEDs
- evaluate the impact of off-center transmission further
- test in an environment that doesn't have reflective surfaces
- add WS2812 driver capability and investigating the impact of TSOP38238 interrupts on the WS2812 driver
- evaluate 2032 battery life further