Introducing the Integrated Sensors Electronic Bracer (6), or ISEB6, a wrist-mounted sensor platform.
A comfortable wrist-worn leather bracer, that provides: time & date, compass heading, Exposure Value for photography, positional data, walking tracker (distance, time, average speed), galvanic skin response data, local temperature and humidity data, “alarm-clock” functions (alarm by time or countdown seconds alarm), and simple illumination / flashlight functionality.
The ISEB6 is powered by a small / lightweight Lithium-Polymer battery, running up to 48 hours usage on a single charge, and with a simple & fast on-board recharging system.
The ISEB6 is based around Sparkfun’s Pro Micro development board and Adafruit’s SSD1306 OLED display screen. The number six in the name refers to the number of sensors integrated into the bracer. It contains the following sensing circuitry:
- Illumination is measured with a TLS2561 digital luminance sensor.
- Magnetic fields are measured with an HMC6352 digital magnetometer.
- Location is detected with an MTK3339 GPS module.
- Humidity is measured with an HIH4030 analog sensor.
- Galvanic Skin Response is measured with a simple resistor dividor and gold-plated electrodes inside the bracer.
- Local temperature is measured using the on-board temperature sensor in the ATMega32u4 microprocessor.
In addition, the ISEB6 also utilizes two voltage sensors, but as these only monitor its own internal status they are not counted among the ‘listed sensors’.
The ISEB6 has a lengthy feature set, all displayed on its 128×64 pixel OLED display. All functions are controlled by its three button interface, with each button having two contextually-dependant modes. Features of the ISEB6 include:
- Display the time (time, day, date)
- Display calculated Exposure Value
- Display compass bearing
- Display local temperature
- Display relative humidity
- Display galvanic skin response readings (current & averaged)
- Display voltage (battery and Vcc)
- Display raw Lux (luminance) value
- Display internal memory status
- Display position Latitide & Longitude
- Display altitude
- Display GPS fix quality
- Track travelling (walking, etc) distance and time
- Display track distance, time, and calculated average speed
- Optionally use GPS LOCUS features to track actual realtime location data
- Set & signal alarm by time (hh:mm)
- Set & signal alarm by countdown (seconds)
- Set time automatically via GPS signals
- Set timezone via settings screen
- Illuminate things via built-in LED flashlight
The 32u4 microprocessor can hold up to 32kB of program instructions, and has 2.5kB of RAM. In this application, it clocked at 8MHz and runs on 3.3v power. As of version 1.0 there remain over 4kB of instruction space available, and over 500 bytes of RAM is also unused – allowing for future upgrades and enhancements.
The firmware for the ISEB6 was created with version 1.0.1 of the Arduino IDE, and the Sparkfun Pro Micro hardware definitions. You can download the ISEB6 firmware here. The zip archive includes my development notes file (ISEB6.txt), which contains a simplified BOM and details on what external libraries were utilized. It also includes two libraries which were heavily modified for this project.
Please note, in order to squeeze in all the desired functions and features, some sacrifices had to be made. You will either have to remove the bootloader from the Pro Micro, or you will have to omit the USB libraries.
To remove the bootloader, compile the sketch then upload it directly via the ICSP using an AVR programmer. To omit the USB libraries, edit the /core/arduino/main.cpp file and comment out the USB.attach(); line before you compile.
The bootloader takes 4kB and the USB libraries use about 3kB, by omitting them both you gain another 7kB of flash space – with only 32kB in total, the bootloader and USB libraries consume about 20% of your available space!