Following a highly successful Kickstarter project and over a year of development, HexBright, billed by its creator as the “world’s first open source Arduino flashlight,” is now in production with initial shipments planned for December.
HexBright, which we discussed here in detail last year, is the brainchild of three-time Battlebots champion Christian Carlberg. It was launched as a Kickstarter project in May of 2011, with the objective of raising $31,000.
“People loved the idea of an open source, Arduino-compatible programmable flashlight,” says Carlberg. In fact, the project’s openness — on both the hardware and software sides — generated so much excitement that it overran its funding goal by 700%, generating over $250,000 in pledges within 45 days.
Carlberg’s programmable HexBright LED flashlight
(click image to enlarge)
Harnessing the power of open source
“I sat down and started designing a well engineered, powerful, and flexible light,” recalls Carlberg. But unlike a typical corporate R&D developer, he regularly shared his work and progress with the flashlight’s Kickstarter project’s avid followers through online video updates.
“The project’s backers — people who wanted this new flashlight — regularly commented on the updates, so I responded periodically with new video updates,” says Carlberg. “Through this interaction, something unexpected happened: the Kickstarter crowd started contributing to the design. At first it was just ideas and suggestions, but then some people began contacting me directly offering their expertise.”
“With this project, we’ve seen more than just monetary crowd-funding,” observes Carlberg. “We’re seeing crowd-development, too — there’s a lot of valuable knowledge out there in human resources. A good idea can attract and harness that expertise.”
“Initially, the project team was just myself and Terry Cooke, but thanks to the power of online crowd-sourcing we built a larger HexBright team,” adds Carlberg. Gradually, the development team grew to include Boris, a Russian optics expert who designed the lens; Michael, a South African who assisted with graphic design and the creation of marketing materials; Sarumonkee, an electrical engineer in Colorado who took care of diagnostics and testing on all the electronic components; Andrew a software engineer in Colorado who helped develop the embedded software; Cody, an electrical engineer in San Diego who worked on the component layout; and Tim, who designed the HexBright website.
Outside and inside the HexBright Flex
(click each image to enlarge)
HexBright features & specs
These are the Flex’s key features and specs:
- 500 Lumen LED module
- USA-made CREE XM-L U2 element
- Easily replaceable (and potentially upgradeable)
- Three default operating modes
- “High mode” — 500 lumens for 1 hrs/charge
- “Endurance Mode — 150 lumens for 8 hrs/charge
- “Blinky Mode”
- Built-in accelerometer
- Open source Arduino-compatible architecture:
- 8-bit Atmel AVR ATmega168PA microcontroller
- Reprogrammable via standard micro-USB cable
- Easily replaceable “18650” lithium-ion rechargeable battery
- Rechargeable via standard micro-USB cable
- Ergonomic, rugged CNC aluminum housing
- Size — 5.7 inches long x 1.3-inch diam
- Weight — 7.6 oz
“USB plugs are notoriously difficult to seal against the elements,” notes Carlberg. Accordingly, “the design of HexBright’s housing is very clever — it seals the micro-USB female plug inside the body behind an o-ring for protection.” The rugged CNC aluminum housing also acts as an efficient heat sink. Additionally “all the important guts are inside the aluminum ‘carrier,’ making it very easy to replace the outside shell with a different grip and lens while the ‘engine’ stays the same.”
HexBright’s embedded electronics
Unlike most flashlights, HexBright contains a programmable embedded microcontroller. The system’s electronics block diagram and schematic appear below.
HexBright electronics block diagram and schematic
(click each image to enlarge)
Understanding the HexBright’s programmability
Why would a flashlight need an embedded microcontroller in the first place, and what could you, as a user, do to influence its operation by revising its embedded firmware?
DeviceGuru posed these questions to the HexBright team, and this is what we learned…
- Q1: What does the Atmel microcontroller do for the HexBright?
A1: The HexBright is basically a battery-powered LED controlled by a microcontroller, which varies the LED’s light intensity via PWM (pulse-width modulation). We decided not to include a battery voltage sensor, since any simple implementation would have allowed a small of power to be wasted when the light was off. However, the microcontroller can tell when when the battery is being charged, or if charging is finished. Although the microcontroller has no way to measure the current though the LED, the driver circuit automatically regulates for constant current regardless of input voltage. It also has an onboard temperature sensor, so it can keep the system from overheating and optimize the efficiency of the LED.
- Q2: Why would anyone want to reprogram the HexBright?
A2: There’s a lot you can do besides just setting light levels and blink rates. You can change the light intensity and switch between modes, with the only limits being your own creativity and the program memory the microcontroller. Also, the HexBright’s built-in acclerometer offers some very interesting use cases.
Your ideal flashlight may not work the same way as mine — maybe I want a dozen different weird modes, and you just want a simple straightforward flashlight. But with a little bit of software, the HexBright can be both. We’ve created few example custom programs, incuding a mode that dims the brightness up and down when you rotate the light clockwise or counterclockwise while holding the button down. Another example mode lets you program in messages in Morse code for the HexBright to flash out.
What we’re most excited about, however, is seeing what clever functions and unique applications HexBright users create. How about a mode for forgetful kids, which will turn off automatically if the accelerometer doesn’t register any movement for a length of time? Or, a light for hiking that dims automatically when you point it down at your map? You could program the flashlight to act as a stroboscope, flashing the light at an adjustable frequency to freeze fast periodic motion so you can see it clearly.
Users can share their code at HexBright.com, and also download other users’ code to try (and modify) for use on their own flashlights. And in case they mess up their lights, they’ll be able to restore the default firmware by downloading and installing the default factory-provided code.
- Q3: What programming language does the HexBright’s embedded microcontroller run?
A3: The Hexbright flex is Arduino-compatible. It’s based on an ATMEGA168 microcontroller, uses a standard Arduino bootloader, and can be programmed over USB using the Arduino IDE and libraries. That’s how we wrote the factory software and all of the demo programs, and it’s by far the easiest way to get programming. You can tweak the factory code (through your Arduino bootloader) and reflash or write your own from scratch.
It should be noted that HexBright is not compatible with Arduino “shields,” since, besides its embedded electronics being far too small, there were only three spare I/O pins (two analog and one digital). However, we do break those out so they’re easy to solder new stuff to. And in case you’re the bare metal type, there’s also a standard 6-pin AVR ISP programming header. AVR-GCC and AVRdude work great, if you have an AVR programmer. We don’t want to limit what you can do with your hardware in any way.
- Q4: How much of the flashlight’s embedded software will be released as open source and how can users gain access to it?
A4: Yes, the operating software the HexBright ships with is open source, as are several additional demo programs we’ve written to show off its capabilities. You can find them at HexBright’s GitHub site. Right now we aren’t planning on making any kind of user interface for configuring the light, but that is totally within the realm of possibility for us to add in the future — or for the users to do themselves. You can even use the Arduino IDE to modify the HexBright’s standard Arduino bootloader, or to create an alternative one of your own.
- Q5: How difficult is it to reprogram the HexBright?
A5: It’s really very easy! In the video below, Carlberg demonstrates the process.
Downloading new functions to the HexBright so easy…
HexBright is scheduled to begin shipping in December, priced at $129. However, those wishing to pre-order one now can do so at the introductory price of $99. For further information visit the project’s website, at HexBright.com.
Future plans include offering upgrades to the lights. “I don’t believe we should be a throw-away culture. We can have a flashlight you buy once and upgrade bits and pieces as technology improves over time,” says Carlberg.