Flickering Flames


This is a guide that brings together a series of guides and information I discovered when looking for fun projects. It uses deadbugging to create a stand-alone functioning circuit. This is based on the beautiful project on Tinker Log for a ‘geeky advent’. It’s my first circuit sculpture!

I will be making this flickering lights, light-activated, to put in a forest area nearby where I live, to give it to other walkers in the area, that will be seen at night. It is a very low light so will not disturb the environment. I am going to modify it to add a little solar panel to keep the battery charged so it should last for a very long time!

the Project

The project as detailed on Tinker Log is a great starting point to have a look at the circuit and how they have reduced it to it’s simplest of parts. They also have code provided and reference other sites that have similar circuits.

The function is to have a small all-in-one flickering circuit, it is programmed on an ATtiny and runs off a small coin cell battery. One of the LEDs is also used to sense the amount of light, and when it is dark, this circuit produces the flickering light effect.

The circuit and code we are building as on Tinker Log:
“The nice thing about this circuit is, that it needs no special components to detect darkness. It uses an LED for that. An LED is also a photodiode that can detect light of the same wavelength it emits. See here for more details. Sprite ( Sprite’s minimalistic version ) used an available ADC of the ATtiny13 instead of the “Reverse Bias” method.”

component list

image of components
  • ATtiny13 (or 25/45/85 etc)
  • 4 LEDs use 3mm (not 5mm as shown in the photo)
  • 3V Coin Cell Battery CR2032 (230 mAh)
  • extra wire (I used enamelled copper wire)/ mounting method

A simple component list, this can be made very cheaply! (and would make fun gifts for people)

ATtiny details

For information about ATtiny IC you can read about it on RS. I’ve included the pinout information as well as an image of the chip https://www.rs-online.com/designspark/basics-of-attiny85


pin information for ATtiny

  • Pin 1: analogue pin ADC0 and is used for analogue sensors
  • Pin 2: is analogue pin ADC3, also for crystal oscillator XTAL1
  • Pin 3: analogue pin ADC2 and used for crystal oscillator XTAL2
  • Pin 4: should be connected to GND
  • Pin 5: used as MOSI for SPI communication, and SDA for I2C communication
  • Pin 6: used as MISO for SPI communication
  • Pin 7: used as SCK for SPI communication and SCL for I2C communication
  • Pin 8: the Vcc Pin 5V
pin out information

next Step: Programming

arduino in case

There is a comprehensive guide online
https://www.electronics-lab.com/project/how-to-program-attiny13attiny13a-using-arduino-ide/ that demonstrates step-by-step how to program your ATTiny. First, program the bootloader onto the chip so you can then program it as you would for an Arduino board.

connecting the ATtiny to your Arduino Uno

Connect Arduino 5V to ATtiny Pin 8. Also, connect GND to Pin 4, Pin 13 to Pin 7, Pin 12 to Pin 6, Pin 11 to Pin 5, and finally Pin 10 to Pin 1.

ATtiny85 Arduino Board: How to Flash the Arduino Bootloader and ...
Great circuit diagram from Maker Portal with
Electrolytic Capacitor (10uF), I didn’t use one.

You should follow the guide on electronics lab but the general steps are after hook up:

  1. Program ATtiny13: set Arduino as a programmer. This happens by uploading ArduinoISP sketch to Arduino following this path (Files -> Examples -> ArduinoISP) in the IDE.
  2. Install core files needed:
    To install these files, open your Arduino IDE and navigate to the files drop-down menu, then select preferences. Paste this URL “https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json” where it says “Additional Boards Manager URLs:”. If you already have a URL here and want to add more, separate the URLs with a comma and a space.
  3. Now, navigate to tools-board and click on Boards Manager…. Now scroll down until you see DIY ATtiny and click the install button.
  4. In order to start programming ATtiny 13, we must burn Bootloader to it. There are two steps to achieve this: first, go to Tools >Board and select ATtiny13,
    Note: Pay attention to your ATtiny version, navigate to Tools > Processor Version and select either ATtiny13 or ATtiny25 depending on your chip. (mine is a ATtiny25)
  5. tools > programmer > Arduino as ISP
  6. and second, click the Burn Bootloader button at the bottom of the tools drop-down menu.


If you see the success message then you are ready to try the ATtiny.
Try an Arduino IDE example like the Blink sketch.

How the circuit will look when completed.

simple LED Blink sketch

Upload the sketch to the ATtiny13 (using the Uno board and the ‘Arduino as ISP’ programmer and wiring) – then you have a fully-functional Arduino ATtiny13!

int led_pin = 4; 

void setup() {

void loop(){
Adding a single cell battery to power the chip and leds!

modified code for flicker LED effect

Once you have been able to load up the blink code successfully, you can upload the flickering LEDs code that has been provided in the original post at Tinker Log. There was only a tiny modification to get it to work in Arduino.

Choose the correct board and board settings. Below are some of the settings I’ve used.

Options in Arduino
Options in Arduino accessed via the Tools menu.

/* -----------------------------------------------------------------------
 * Title:    advent.c
 *           Flicker 4 LEDs
 * Author:   Alexander Weber
 *           http://tinkerlog.com
 * Date:     22.11.2009
 * Hardware: ATtiny13v
 * Software: CrossPack-AVR-20090415
 * Credits:
 * This code is based heavily on sritesmods version.
 * Find the original at http://spritesmods.com/?art=minimalism&f=gpl
 * Changes:
 * - support 4 LEDs
 * - added a bit of sampling for light detection
 * - moved the "power down" out of the ISR, was always resetting
 * - removed callibration, replaced by hardwired value.

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <avr/wdt.h>

#define LED1  PB4 
#define LED2  PB3
#define LED3  PB2
#define LED4  PB1
#define ADC2 2
#define AMBIENT_LIGHT 300

#define TRUE 1
#define FALSE 0

//Bunch o' random numbers: I'm too lazy to write or port a real random number
//generated using bash:
//for x in `seq 0 255`; do echo -n $(($RANDOM%256)),; done
uint8_t const randomvals[] PROGMEM = {

uint8_t mode_ee EEMEM = 0;                      // stores the mode in eeprom
static volatile uint8_t sleep = 0;

// Gets a semi-random number between 0 and 255
uint8_t getRandom(void) {
  //This'll probably give a warning because we use it uninitialised. Little 
  //does the compiler know: that's actually what we _want_ :)
  static uint8_t random1, random2;
  if (random1 == 0) {
    random2 += 0x41;
  return pgm_read_byte(randomvals + random1) ^ random2;

uint16_t getLight(void) {
  uint16_t val = 0;
  uint8_t i;

  // measure pb4 using internal ref
  ADMUX = (1 << REFS0) | ADC2;             
  // enable ADC, prescaler 8
  ADCSRA = (1 << ADEN) | 3;
  // kill all leds
  PORTB &= ~((1 << LED1) | (1 << LED2) | (1 << LED3) | (1 << LED4));

  // let led generate some voltage
  DDRB &= ~(1 << LED1);

  // warm up the ADC, discard the first conversion
  ADCSRA |= (1 << ADSC);
  while (ADCSRA & (1 << ADSC)); 
  for (i = 0; i < 4; i++) {
    ADCSRA |= (1 << ADSC);
    while (ADCSRA & (1 << ADSC)); 
    val += ADC;
  val >>= 2;
  ADCSRA = 0;             // disable adc
  DDRB |= (1 << LED1);    // re-enable led

  return val;

void powerDown(void) {
  // Go to sleep until we're woken up by the wdt.

ISR(WDT_vect) {
  //check if it's still dark
  sleep = (getLight() > AMBIENT_LIGHT) ? TRUE : FALSE;

int main(void) {
  uint8_t lval1, lval2, lval3, lval4;
  uint8_t i, x, y;
  uint8_t mode;

  // set up wdt

  WDTCR |= 0x40; // WDT generates interrupts instead of resets now.
                 // We want interrupts because a reset clears our nice random
                 // seeds, and an interrupt doesn't.
  for (i = 0; i < 10; i++) {

  // retrieve mode from eeprom and write back mode + 1
  mode = eeprom_read_byte(&mode_ee);
  mode = mode % 4;
  eeprom_write_byte(&mode_ee, mode + 1);  


  // go directly into sleep mode and lets wake up by the wdt
  sleep = TRUE;

  // enable leds
  DDRB = (1 << LED1) | (1 << LED2) | (1 << LED3) | (1 << LED4);

  while (1) {

    WDTCR |= 0x40; // make sure wdt keeps generating an int instead of a reset

    if (sleep) {
      // switch off all LEDs and power down
      PORTB &= ~((1 << LED1) | (1 << LED2) | (1 << LED3) | (1 << LED4));
    else {
      // get a random value for the leds intensity
      lval1 = getRandom();
      lval2 = getRandom();
      lval3 = getRandom();
      lval4 = getRandom();    
      // Manually do some pwm
      for (x = 0; x < 20; x++) {
  if (mode == 0) {
    PORTB |= (1 << LED1);
  else if (mode == 1) {
    PORTB |= (1 << LED1) | (1 << LED2);
  else if (mode == 2) {
    PORTB |= (1 << LED1) | (1 << LED2) | (1 << LED3);
  else if (mode == 3) {
    PORTB |= (1 << LED1) | (1 << LED2) | (1 << LED3) | (1 << LED4);
  for (y = 0; y != 255; y++) {
    if (y == lval1) {
      PORTB &= ~(1 << LED1);
    if (y == lval2) {
      PORTB &= ~(1 << LED2);
    if (y == lval3) {
      PORTB &= ~(1 << LED3);
    if (y == lval4) {
      PORTB &= ~(1 << LED4);

Soldering the initial ring of LEDs, all negative legs (cathodes) form the ring shape.

soldering the Circuit

  • All cathodes of the LEDs are connected to form the ring.

I first took 4 LEDs to sacrifice and practice bending the ground leg of them into this circle form. I then tried a few different ways to solder them together. In the end, I put the anode (positive) leg into a mini breadboard to hold them once they were already bent into shape. Then I used a crocodile clip to hold the leg together in place as I soldered it.

  • The anodes are bent inwards to be soldered to pin 2, 3, 6 and 7 of the ATtiny13.
  • Use wire to connect the common cathode (soldered) to the GND pin.
  • The GND pin is then connected to GND of the battery.


Dietz, P.H., Yerazunis, W.S., Leigh, D.L., “Very Low-Cost Sensing and Communication Using Bidirectional LEDs”ACM International Conference on Ubiquitous Computing (UbiComp), October 2003. PDF Download

Tutorial Online on Tinker Log [Accessed April 20, 2020].

Comprehensive guide online to programming an ATtiny Online Available:
https://www.electronics-lab.com/project/how-to-program-attiny13attiny13a-using-arduino-ide/ [Accessed April 18, 2020].

Installing additional boards,
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json to add the ATtiny to Arduino Available Online [Accessed April 15, 2020].

Circuit diagram online available from Maker Portal [Accessed April 18, 2020].

Another version of the circuit via Sprite Sprite’s minimalistic version Available online [Accessed April 20, 2020].


Have you made an aircircuit or done deadbugging before? Do you have any small projects? What skills have you been working on? Drop me a comment!

Sonic Bodies

image of maria kapsali

As part of the Being Human Festival, I was involved in the technical support for the Sonic Bodies installation. This project from Maria Kapsali was bringing together Sonolope and some new explorations. These explorations included bringing sculpture to visually impaired people. Works were prepared ‘Pan’, and ‘Kiss’, based on artworks that were present in the gallery. These pieces were then sonified, and created into experiences through movement.

More about the project can be found: https://beinghumanfestival.org/event/sonic-bodies-a-multisensory-exploration/ 

and written up at The Wilberforce Trust who supported this project: http://www.wilberforcetrust.org.uk/2018/10/funded-travel-to-exciting-sonolope-art-event/

Throughout November 20-24th 2018.



A project I am involved in a technologist capability is HOUSE, where I will be using Sonolope to add interactivity to the performances happening over the week of Tuesday 30 January 2018, to 3rd February.

Details of the project:

HOUSE begins with the story of Robert Arthington, a rich man locally known as the Headingley Miser. He built a large house for his bride; but the bride never came. So he lived alone in one room, on half a crown a week, and received his visitors in the dark.

Around him 19th Century Headingley was growing from a country village separated from Leeds by fields and farms to a vibrant suburb, where industrialsts and imperialists alike built themselves splendid houses. The miser’s millions meanwhile were supporting missionary projects around the world. Arthington, Liberia, bears his name to this day.

Created by A Quiet Word in collaboration with members of the local community, HOUSE is a site-specific performance that explores how property and power connect Headingley and the wider world. You are invited behind closed doors for a conversation in the dark, and to where the present overlays the past.

Tuesday 30 January to Saturday 3 February, 6pm and 8pm

Booking is essential. The performance lasts approximately two hours and involves some walking outdoors between sites and upstairs. Due to the domestic nature of the sites, access is limited. Meet at 57 Headingley Lane, LS6 1AA.

Booking fee of £5 per person. To book, visit eventbrite.com and search for ‘House’, or visit aquietword.co.uk/house

Proceeds will go to Shelter and St George’s Crypt.

More information available


First iteration prototype Crumpler 1.0

First iteration prototype Crumpler 1.0   

Write up of some of the details from the Crumpler Prototype.

Details: iteration 1.0 This change was the first proposal after working through the proof of concept prototype there were issues to address and further investigate. Initial changes from the testing prototype bag was removing the LCD screen, because I was trying to scale down and wanted the simplest of communication with the user. The following table is the items that were used to build this bag. There was a period of testing different circuit boards for their compatibility, programmability and aesthetics. After researching the available components at this time the LilyPad series of items seemed the most relevant as it offered a way to use components that could be attached to the outer surface of the bag, therefore leaving the bulk of the bag mostly unaltered. No compromise on space or weight for the original bag.  

USB LiPoly Charger to charge 3.7V LiPo cells at a rate of 500mA or 100mA per hour. It is designed to charge single-cell Li-Ion or Li-Polymer batteries. The board incorporates a charging circuit, status LED, selectable solder jumper for 500mA or 100mA charging current, external LED footprint, USB input, mounting holes. There is also a ‘SYS OUT’ which allows you to connect the charging circuit directly to your project so you don’t need to disconnect the charger to use.This is a very slow way to charge the batteries, and this is an issue that will need to be addressed.
LilyPad Buzzer This is a small buzzer, use 2 I/O pins on the LilyPad main board and create different noises based on the different frequency of I/O toggling. Loud enough to hear inside a pocket but not obtrusively loud. 20mm outer diameter Thin 0.8mm PCB
SLO18 RFID reader 5V Supports Mifare 1K, Mifare 4K and Ultralight. It does auto Real-time detecting tag which moves into or out of detective range and reports through one output pin’s logic level. In addition, it integrates all necessary components and antenna in one PCB. Frequency : 13.56MHz Protocol : ISO14443A Tag supported : Ultralight, Mifare Mini, Mifare 1K, Mifare 4K, FM11RF08 Interface : I2C Supply voltage : 4.4 – 7.0VDC Dimension : 65 × 45 mmUsing this RFID reader would mean finding a board suitable to work with the 5V requirement.
Polymer Lithium Ion Battery – 6AhrEach cells outputs a nominal 3.7V at 2000mAh – 3 cell pack (6Ahr) is terminated with a standard 2-pin JST-PH connector – 2mm spacing between pins.The 3.7V may be an issue that needs looking into – to get enough power to the board to light the LEDs/
Lilypad 328 Main Board has more I/O ports to access and use for tags / LEDs and operated at 5v so the reader choice had to meet with the same voltage.It has an ATMega328 and Arduino bootloader. It supports automatic reset 55mm outer diameter 0.8mm PCB
Slide Switch Simple slide switch to power ON/ OFF the bag. It can be used to switch other things, but that is it’s purpose for this bag. 7.75×18.1mm Thin 0.8mm PCB
FTDI basic Breakout 5V This is only needed for programming the board, and can be used with all the 5V boards to program. USB to serial IC. The pinout of this board matches the FTDI cable to work with official Arduino and cloned 5V Arduino boards. It can also be used for general serial applications. The major difference with this board is that it brings out the DTR pin as opposed to the RTS pin of the FTDI cable. The DTR pin allows an Arduino target to auto-reset when a new Sketch is downloaded. This is a really nice feature to have and allows a sketch to be downloaded without having to hit the reset button. This board will auto reset any Arduino board that has the reset pin brought out to a 6-pin connector.This board has TX and RX LEDs.

Details of Testing Programme

This prototype is a departure from the first proof of concept bag. It was carried around on all my daily journeys to test the bag initially for working issues, sociability and general fixes that would need to be done before testing it with a user.

Results and Conclusions for next Iteration

This bag I used on a daily basis from March 2013 until May 2013, and then less frequently due to moderations / user testing from June –July 2013. The bag is used daily highlighted a lot of issues. Comments from this time period: The importance of the placement of the on / off switch – it was hit accidentally a few times, and I didn’t realise some times – so moving it to better placement / alternative, and maybe adding a vibe board to alert the user that the bag had switched on, so if it was knocked then they would be made aware. With this first iteration, due to the much larger amount of LEDs (the first system had 5 this one has 13), I would have to place a small card in the bag to remind the user of the items and the corresponding colours as there were a lot of LEDs. This doesn’t seem as practical and I did have people asking me how I would / or how someone would remember the LEDs and what they were for. This needs addressing. The battery weight and charging would need to be addressed, there isn’t a clear way currently to be aware if the bag is low on battery power or how long it needs to charge. After using the bag, I wanted notifications to be more intense the nearer to the time the event / leaving etc, happened… this is scope for future work and implementation because I’m not sure how this could work. There was an occasion where I had forgotten my student card and I needed it so as I was leaving it would have been good to have gotten a more urgent notification of some sort. Perhaps indicating the items importance/use or urgency. I was trying to maximize the number of tags that could be read, but I think this would overload a user. Lastly, it does work in the rain and the battery casing is inside the bag so there is no issue from that aspect too.        

Message Bag Prototype Iterations

This prototype (Message Bag 1.1) builds on the initial message bag, and has the basic features of it enhanced. It serves as an initial testing prototype to work through initial flaws and design decisions as well as features and how they would work, or what purpose they would serve. The initial message bag that was created has had the components removed and they are built from the ground up, being modified or altered to better and more accurately serve the needs of this prototype.

Message Bag, Nov. 2011
Message Bag has an integrated LCD for messages as well as an RFID that activates LEDs so you know what items you have packed. Using Arduino.

Component list

for V1.1, these components are available from most sites that sell Arduino items


Component Use

Method for Arduino Board 1 LCD Display:


Initial thoughts were to get an LCD screen to display messages, so I did some research into how they worked, what different kinds there were, this information from Arduino was very close to what I was looking for. My LCD had a back light so there were 2 more wires to add, an additional power and ground to power the screen.

I also incorrectly assumed the 16 x 2 size screen or larger would be too much for a first project so I went with a 16 x 1. This caused me a lot of challenges that I wasn’t aware of at the time. This post from Tronixstuff, had a good rundown of the different types of LCD screens you could use.

The issue with the 16 x 1 display was that it displayed 2 rows of 8 characters side by side. This firstly took me a log time to realise and work into the code as well as it didn’t really have the exact effect I was after. Due to time constraints, I went with the one that I had ordered, I would like to replace this or do a different screen if I make another similar item. I would go for 16 x 2 as a minimum.

You must include the LiquidCrystal library, and here was the code for that as well as setting the pins.

You must then add to void setup() the initialization of the LCD by telling it the number of rows and columns.

 lcd.begin(8,2); // start the LCD, a 16 x 1 has 2 rows of 8

Then within loop() where you want your display to print something you need the following code, so mine was within sensor values and if statements dependant on the values of the sensor readings:

lcd.print("You are too far.");
Distance Sensor

The distance sensor was one of the first sensors I implemented to test it and get the code working initially to get readings.

The idea here was that it would change messages based on the distance of the bag to people. The issues with this is it didn’t track huge distances, and also it could literally detect anything so it wouldn’t be changing according to people, so it was pretty inaccurate for my purpose. Other issues became that it was reading values pretty quickly, even with a slight delay, so the messages were recycling too quickly. When I slowed it down, it seemed to users that the change wasn’t registered. After watching people use it and getting feedback this would be something that I would need to alter.

Photo Resister

This sensor was pretty straight forward although I had noticed I was getting erratic readings when testing it – so I swapped the resistor and it seems that the one I had been using was broken. Switching the resistor fixed it and it worked well as a way to light the bag in the dark. A future addition would be to be able to turn off these lights if the wearer didn’t want them on. Code from Arduino is pretty straightforward as well as the schematic.

Method for Arduino (Teensy) Board 2 RFID Reader :

RFID Reader

The RFID code was on a separate board and part of the bag, so essentially I had two separate code files, one for each Arduino. The reader I was putting on a breadboard with a Teensy so that the whole unit could fit into the inside pocket of the bag. The teensy needed a power source as it doesn’t have that as part of the board so I added power from a battery as shown at pjrc.com.

For me the RFID part of the implementation really felt like it was an idea with potential. I loved getting this to finally work and it seemed a good addition to a bag and a feature I would like as well. Here is a short clip showing the LED lighting up when the item is placed in the bag.

I had an issue with the Reader and it seemed to read the values initially then stopped reading and displaying the values. I tried changing the components, altering the wires, changing the Arduino board and when I was still getting sporadic results, it was suggested that actually my soldering had not made full contact and this could be the issue. I checked the board and it was the problem. Because the board was soldered first into a breakout board it was a really difficult issue to fix so I initially used a screwdriver to bang it closer to make contact with the wire. I have since re-soldered this board and it has fixed the error. As it was my first time soldering I hadn’t realised about this being an issue so although it was very frustrating it was a good lesson to learn. As far as the code goes, initially I put code on to read the tags so I knew which numbers I was reading. Then when the numbers are recognised, some action happens.

In the loop() we are reading the serial numbers. When the code is uploaded you have to remove the wire going to the RX, and then put this wire back so it can send the values we are looking for.

The tags are then checked to see if they match the values we declared already – if not we are given the value on the serial monitor.

Pink LEDs

This was pretty straight forward to add, I put them on a little circuit board to space them evenly for display on the bag. I had an issue again with my soldering and two of the LEDs were not working. One I had to remove and res-older and the other light was broken so had to be replaced.


This was added so that there was feedback for the user when they scan an item. It just emits a noise so they know it was successful. I also included a small LED so they can also see that it was a success in case it’s too loud where they are.

Implementation & Observation

English: Arduino Uno
English: Arduino Uno (Photo credit: Wikipedia)

The code I implemented in stages to check what was working and what needed to be tweaked. For this new implementation, I removed the distance sensor from the bag, and in V1 the LEDs responded to lighting in the room, when it was dark they would produce a pattern. In V1.1 this will be a more used feature, and the LEDs will now light to acknowledge that a tag has been scanned, providing visual feedback for the user. In addition to that there is auditory feedback through the piezo – this was implemented in V1, however this time, there is a slight change in that if the tag is recognised, it is a short pulse, slightly higher pitch, when it is not recognised, the tone is a little lower, and lasts for a longer amount of time. With this change in sound, it should make it quicker to notice when an unrecorded tag has passed near the reader.

Additionally, the LCD was used to display messages based on proximity, mostly for a fun factor in the bag for V1, in our second version, we now alter this so that the LCD will display the name of the item that is scanned by the user. Again providing additional cues for them to note what has been scanned.


There are still LEDs to help them to see what is in the bag currently, but this still isn’t done in an ideal way, the LEDs light up on the outside which is helpful, but the tags will have all had to have been pre-scanned and added before hand, so this is something that I would look to modify in a future version. Additionally, just having the items written on the outside is a little clumsy with hand writing on the outside to match the LED, this really needs a rethink.

Additionally, just having the items written on the outside is a little clumsy with hand writing on the outside to match the LED, this really needs a rethink.


The current RFID reader, the ID12 has limitations in this capacity too. Shown, is the breakout board that needs to be used to mount it a little more easily, by lining up the pins into a breadboard. You don’t need to connect an external antenna which is a really great thing about this particular reader, and there are only a few pins needed. One thing to note is that you will be connecting the RX pin, which is also used when you are uploading your sketches so you must just remove this wire when you upload the sketch, and then replace it for it to work. I have seen an implementation where someone didn’t use this pin and did say it still worked, but it isn’t something I have implemented or tried, and as I will be using a different reader next time it won’t really affect the prototype that will be used for a controlled study.

For a future iteration, I will implement a different reader, that can work more ‘real time’, making note of when an item has been removed from near the sensor, currently this isn’t the case. Also, things like the size of the components will need to be taken into account, and using a teensy in place of the Uno would be another change to implement for message bag 2.0.


4th International Augmented Human International Conference in Cooperation with ACM SIGCHI

“focusing on augmenting human capabilities through technology for increased well-being and enjoyable human experience”

Augmented Human 2013 takes place in Stuttgart, Germany, on March 7 and 8, 2013. General Chair is Prof. Albrecht Schmidt.

The link to the short paper being presented MessageBag: Can Assistive Technology Combat Forgetfulness

This is 4th Augmented Human International Conference 2013 and the papers & demos being presented.

Message Bag v2

Message Bag 2
Message Bag v2 created with a Crumpler Bag

This was created after attending the Augmented Human ’13 conference. I wanted to create a second working prototype that was more robust than the first iteration. The first one created was a proof of concept style bag, so that I could visualise how these components could potentially work together, but it also provided valuable insight into how the bag may or may not be used and general problems that will surface when you build a physical object. (note this post does not cover the working description of what it does, it only charts the creation of the bag and observations having used it daily).

There are many challenges when working with wearables, there is a balance with innovative, possibly unusual interfaces, power requirements (which I have been dealing with), possible network resources and privacy concerns. (Starner, 2001) There is also a need to establish what social boundaries there may be which may limit the success of the bag.


This second iteration has been built and deployed, it is still a prototype, and I am using on a daily basis. The goal of this is to determine the suitability of the bag and RFID readers for use in our everyday lives, using it every day will bring to my attention things that are not practical, can be improved or just do not work. Some of the issues that were brought up with the first bag are addressed and modified or removed to test what differences there will be within the functionality of the bag. The other main objective of this prototype is to develop a comprehensive understanding of how Message Bag v2 can be used, and use this as a basis for further research into forgetfulness, possible triggers and methods that work best for retrieving a ‘message’ of what you have forgotten and how ubiquitous computing can be further used for alleviating those symptoms of stress associated when an individual does forget.

Crumpler version of message bag

In Message Bag v2 there is no longer an LCD display and there is more emphasis on the LEDs for memory aids for the user. The initial reason for removing the screen was the pull on battery life, and also the ability to read the screen at a distance – say across a room, is a lot more difficult than a bright LED that can easily get the users attention from across the room.

If the LED is flashing then it is virtually impossible to ignore and will capture the user’s attention, that is a physiological reaction that has been used in stores to attract consumers attention before so we know this does work. Similar to the first prototype, we still use RFID technology with passive tags to record the items that are in the bag. Passive tags use the incident energy to both sense and communicate – they transmit their series of letters and numbers, and can be a little less accurate than active tags. A major advantage though is that they have a much lower cost, are small and they do not need a battery.

The first bag used an ID-12 reader, but as it is a little bulky and harder to secure in a wearable environment this was changed to an SLO18. This also has an integral antenna, but it is flat and has holes at the corners making it a lot easier to secure in a wearable item.


The components used are as follows:

Lily Pad Arduino 328 Main Board (I have also seen this board at CoolComponents for a lower price).

Lilypad Buzzer

SL018 the implemented RFID reader, it is almost entirely flat and has 4 corners with holes in it so it can easily be sewn into the bag.

RFID 5V SL018 Stronglink purchased: http://www.skpang.co.uk/catalog/hf-rfid-module-sl018-5v-i2c-p-1081.html (5v) & Sample Code to get the board working initially http://marcboon.com/rfiduino/code/SL018/stronglink.pde and http://rfid.marcboon.com/#category2

Using the FTDI to upload the Arduino code.

Micro cable used to connect the board to the computer to program the board – also needs an FTDI Basic Breakout 5V to connect it, that’s only needed to program the Lilypad, once you have your code on it, you remove the breakout and you can use it for other projects, so you only need one.

I used this USB LiIon/LiPoly charger for this project but have since found one also from SkPang to ease the order by going to one site for most of the components. (since then I also found a cheaper alternative at Hobbytronics)

Various LEDs

Slide Switch so they can turn off the bag

There is also various consumables, such as the thread used to sew the components to the bag and I also used multi core wire to wire in the RFID reader to the Lilypad, mostly because there was a possibility of a few wires overlapping which I didn’t want, I wanted a strong connection and I went multi over single core so that it would be more flexible in the material. Initially, when I was sewing the bag, the wire I used was really hard to sew, and frayed a lot and had a lot of resistance to the material making it time consuming to sew. I then found a 3 ply medium conductive thread which seems a little stiffer and slides through a lot easier. You also need a variety of tags to use with the bag.


LED components
The first type of thread I used for the bag which I found more difficult to sew with.

The components are small & discreet enough to go unnoticed in an obvious way when the bag is turned off. The bag was taken out in rain and the components did get wet,  the surface of the components was covered in droplets but it had no effect. Additionally, because the sewing is done on the inside of the bag, the circuits themselves did not get exposed to water. The bag does have water resistant properties so the interior was always protected.  No damage sustained and the components are described as able to be in water i.e. you can wash them if needs be.

The objects that I was aiming to pack and remember, are packed without issue, but on one occasion, I wondered if I forgot my train tickets, and actually had forgotten my railcard and oyster – so these would need to be tagged as well. Part of the issue will be deciding which items to tag, and be sure that the items I find essential I have pre tagged. This will also be an issue when I come to prototype the next iteration of bags that will be used by testers, they will most likely at this stage have to tell me the objects they want to be programmed and it will have to be done before I issue them the bag. This isn’t ideal and will most likely need to be addressed in further bags.

Additionally, because I had forgotten my card, it would be handy to have  a more persistent reminder as it nears the time that I need to leave, maybe the lights flash brighter if I have notified the bag that I have an appointment at 4pm and it knows I have still not packed my bag by 3.45 or similar. In keeping with that observation – can the bag notify me as I set my time of leaving? Do I type into the bag daily or weekly when I leave? Is there a more intuitive way to accomplish this? Can I somehow tell the bag what time I am leaving in the morning, maybe preprogrammed in some way, to say as it gets nearer the time and maybe I am more frantic with trying to get ready, that it has some kind of audible noise? Or maybe I record a voice message saying the items, and it plays this back closer to the time – and louder? Unless I dismiss the notification? Or each item has an audible reminder, and if the RFID is there that particular reminder isn’t played? So I would record my voice for each item? i.e. scan a tag – record my voice, and then each one is labelled alongside that item? What about turning it on in public to repack it – say at work? Can you lower the volume? or disable voice? Maybe the lights flash faster the more important? Is this a common cue? the flashing meaning ‘hurry up’?

There isn’t a low battery warning for a user, how will they know that the battery needs charging or is it a case that they plug it in every night?

They need to turn the bag on or off, will they remember to turn it on? Or to turn it off?

Also, a few times the switch for the single LED switched to on – this is not good as it may have potential embarrassment if it goes off in an environment that the user does not want it on, especially if it has the audio working and it is notifying you that items are packed.

Daily Use

From using the bag on a daily basis, both during the week and weekends, at all variety of places and times (late evening shopping for groceries, going to teach an evening class, walking in the daytime in town, travelling on the train, the bus, the underground) it is difficult for people to remember all the lights connected to which items, this is very important as the hope is to reduce the cognitive load not increase it.

The next bag iteration will feature an LCD screen again, and a reduced amount of LEDs. I had comments about the bag in a few environments including a college where I was working a supply day and the students commented on the bag, ranging from thinking it was cool, the idea was cool, to some saying it’s cool but still looks a bit homemade… so there seems to be general social acceptance but some hesitation due to the fact it is actually ‘sewn’ on. As the prototypes get developed this is also getting more honed in and precise.

Something that came up in previous similar studies is that people noted that they would like some sort of weather notification so they also knew the context with which to pack their bag. This could be another future implementation to create a truly smart bag.

Websites for Components

Websites I have purchased these components from or the components are available:

[UK Sites]

http://proto-pic.co.uk/ don’t forget student discount if registered with your student account.



http://www.mindsetsonline.co.uk/index.p … dium=email wearables mostly so good place for specialist





[USA sites]




Interested in participating in an experiment or have any ideas? Email me christine.farion@qmul.ac.uk