Beacon3
From Hackstrich
Beacon3 will be a beacon for the top of our flag(less?) pole for Burning Man 2011. It will be simpler than Beacon2 as time is limited to get it done, but we want a brighter beacon.
Project Status
- 2011-07-19: Initial design started.
- 2011-07-23: Schematic for LED driver board started and almost completed.
- 2011-07-24: Board layout for LED driver board completed pending final review.
- 2011-07-25: Final review of board layout for LED driver board completed, order submitted to MyRO for manufacturing.
- 2011-07-28: Completed schematic for planar board and began board layout.
- 2011-07-29: 4 Cree MC-E LEDs (on star heatsink/boards) ordered.
- 2011-07-30: Completed board layout for planar board, pending review tomorrow. Started work on remote control interface.
- 2011-07-31: Wrote libraries for the I2C mux (PCA9545) and LED driver (SSL3250). Can't test as the hardware isn't here yet, but both compile.
- 2011-08-01: Completed PCB review, submitted to MyRO for manufacturing. Placed orders with Digikey and Mouser for all required parts.
- 2011-08-03: Received LED driver boards from MyRO, all parts from Digikey and Mouser, and LEDs from LED Supply.
- 2011-08-04: Assembled first LED driver board, which works perfectly! driver board test video
Design
- Beacon Unit
- Same enclosure as Beacon2 can be used to save time, just remove PCBs and replace with these
- Planar PCB that fits onto the spindle, which the other boards plug into vertically
- Single MCU this time, as there are fewer LEDs
- Same light sensor and (lack of) charging circuitry as Beacon2 can also be used
- Regulator on planar will only be needed for wireless functionality, MCU can operate over whole battery range as can LED drivers
- Will use an ATmega328p for the MCU, makes it Arduino-compatible
- 4 RGBW LED units on Star boards and heat sinks at 12, 3, 6, and 9
- Using Cree MC-E ~2.5W per component colour RGBW LEDs
- 4 RGBW LED driver boards (custom) at 1:30, 4:30, 7:30, and 10:30
- 4x NXP SSL3250A chips on each board looks good to drive the RGBW LEDs
- Will drive them at 200mA per component colour constantly, and 500mA flashes of 820mS
- This chip has a fixed I2C address though so an I2C mux would be needed on each LED board
- The PCA9545 looks perfect for this, I2C controlled 4:1 I2C mux and can be "turned off" so that there's no need for a planar mux
- 4x NXP SSL3250A chips on each board looks good to drive the RGBW LEDs
- Remote Control Unit
- Having a remote that would make the beacon extra-noticeable when a button was pressed would be cool
- To get long enough range to be useful, we'd want ~50mW
- XBee is probably the best way to go, but need to look at power draw for the RX side and would have to custom-design a remote control unit
- Remote Control Unit could just be:
- Arduino Fio
- XBee Series 1 RP-SMA (plugs directly into Arduino Fio)
- Rubber-duck antenna
- LiIon pack (plugs directly into Arduino Fio)
Wireless Protocol
- Commands are one letter, followed by parameters that vary by function.
- Newlines signal the end of a command
- Beacon3 response has a single character severity code (e for error, i for informational/success), then the rest of the line is free-form text
- Beacon3 response is terminated with a newline, unless otherwise specified
- Command listing:
- Identify: i
- Parameter: 3 character device ID followed by the 802.15.4 address of the remote device (i.e. RCU2 for the remote control unit at address 2)
- Identify to the beacon who the remote device is.
- Flash: f
- No parameters
- Flash a unique pattern on the Beacon so it can be identified from a distance
- Status: s
- No parameters
- Ask the Beacon to send back a bunch of status information. Terminated by \0, not \n!
- Debug: d
- No parameters
- Ask the Beacon to send debug information as it beacons, will stop when any character is received from the remote device
- Identify: i
EEPROM Log Byte Format
- Bit 0 - Subsystem (0 = core, 1 = mux, 2 = driver)
- Bit 1 - Mux number
- Bit 2 - Driver number
- Bit 3 - Reserved
- Bits 4-7 - Error code
- Error codes for subsystem 'driver'
- 0001 = LED open fault (switcher overvoltage)
- 0010 = LED short fault
- 0011 = Driver overheat
- 0100 = Flash timeout
- Error codes for subsystem 'driver'