Flickering Flames

information

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

attiny
ATtiny

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.

success?

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() {
pinMode(led_pin,OUTPUT);
}

void loop(){
digitalWrite(led_pin,HIGH);
delay(1000);
digitalWrite(led_pin,LOW);
delay(1000);
}
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
//generator.
//generated using bash:
//for x in `seq 0 255`; do echo -n $(($RANDOM%256)),; done
uint8_t const randomvals[] PROGMEM = {
 234,191,103,250,144,74,39,34,215,128,9,122,144,74,137,105,123,218,158,175,205,
 118,149,13,98,7,173,179,194,97,115,110,213,80,220,142,102,102,36,152,90,135,
 105,176,173,49,6,197,48,140,176,122,4,53,83,216,212,202,170,180,214,53,161,
 225,129,185,106,22,12,190,97,158,170,92,160,194,134,169,98,246,128,195,24,
 198,165,156,77,126,113,136,58,156,196,136,41,246,164,84,138,171,184,42,214,
 203,128,89,39,198,85,140,148,149,36,215,78,170,234,131,124,152,239,154,214,
 130,194,49,3,69,248,120,179,101,163,131,124,184,148,213,118,213,81,177,149,
 58,213,33,201,63,10,195,215,190,7,86,245,128,9,8,40,102,51,125,94,92,5,159,
 75,253,158,40,4,6,178,241,92,124,73,248,1,157,61,50,86,136,113,22,16,171,209,
 230,144,240,14,188,2,167,22,88,57,50,86,171,73,114,175,34,226,245,57,180,111,
 220,186,170,242,141,229,49,158,30,82,161,49,124,65,139,24,95,14,133,65,238,
 116,180,190,49,130,30,30,59,93,173,139,19,187,2,163,102,26,255,23,239,196,19,
 6,162
};

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;
  random1++;
  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));
  _delay_ms(5);

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

  // warm up the ADC, discard the first conversion
  ADCSRA |= (1 << ADSC);
  while (ADCSRA & (1 << ADSC)); 
  
  for (i = 0; i < 4; i++) {
    _delay_ms(5);
    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
  wdt_enable(WDTO_2S);


  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++) {
    _delay_ms(100);
  }

  // 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);  

  sei();

  // 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));
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
      sleep_mode();
    }
    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);
    }
    _delay_us(5);
  }
      }
    }
  }
}


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.

References

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].

Extra

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!

My work & the importance of Prototyping

I presented a talk at the Glasgow School of Art that was about my work, particularly some of the earlier artwork collaborations, projects Secret Deposit Box, and a selection of my PhD research.

I then focused on the importance of prototyping, the types of prototypes that can be used and the reasons why. I illustrated this through the use of my many prototypes! The importance of interaction in design was highlighted as well as research through design.

sample slides

 

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.

House

house

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

www.aquietword.co.uk
www.365LeedsStories.org

ilyware

ilyware launch

(head over to ilyware to see the site)

I’ve been working on my electronic handbags for a long while. Now I’ve been focusing on creating unique handmade handbags and accessories to sell through ilyware to help further the development of my circuits. These circuits will be used to embed technology in the electronic bags. This feels like a huge step in the right direction as it enables me to earn funding towards creating the circuit designs, I make handbags which I love doing and then it will result in creating a better embedded bag.

I’m planning a several months to be able to complete the electronic versions of the bags, in the meanwhile, I’ve now started to post all the hard work on creating these individual handbags on www.ilyware.com so that people can purchase just the bags without technology. They are large enough to carry around your essentials and I hope you find one you love. I also do requests if you have an idea in mind for someone special in your life (mom’s, sisters, daughters, wives…). I hope you head over and have a look, it’s still in a new phase but I’ll be adding more and more designs over time.

Venice Biennale 2015

I was lucky enough to travel to the 2015 Venice Biennale, and it was my first time going. I wanted to put some photos on my site that captures some of the art I saw. I was amazed at how huge the Biennale was and it felt like a life altering experience. To be able to take in that much art, from so many international artists with so many different messages was overwhelming at times. It was one of the best experiences of my life and has motivated and inspired me.

If you have a chance to go, I highly recommend you make the effort.

about blurb

Currently, I’m a Post Graduate Lecturer for MDes Design Innovation, Interaction Design (Specialism Leader) at Glasgow School of Art. [GSA innovation school]

Formerly, Associate Lecturer at the University of York, for the International Pathway College course: Robotics, Programming and Electronics.


previously,

I was awarded a 4-year scholarship from EPSRC to complete a PhD in Media & Arts Technology, at Queen Mary University of London. Throughout the PhD, I was testing prototypes made with various hardware such as small circuit boards (Arduino / ATMEL), lights, radio frequency identification readers (RFID) and tags that are put onto your daily essential items.

I was in the Cognitive Science research group (information on my research interests). It was at QMUL that I started working with Arduino and various electrical components.

I’m pretty sure my interest is bordering on addiction, and looking around my house might confirm this by the number of tools, solder, wires, boards… all organized of course!


Visual Impairment & Assistive Technologies

For several years I worked with a visual impairment, hearing loss and other disabilities charity. My role was as an Assistive Technology researcher and advisor. My day-to-day was very diverse. It often involved finding the best and most appropriate assistive technologies to enable independent living. Researching and testing technologies that could be used by people with a visual impairment was a big part of this role. Over the course of my time there I acquired specialist knowledge regarding assistive technologies.


Publications

“Did you pack your keys?” Smart objects and forgetfulness.
May 2014  Conference on Human Factors in Computing Systems – Proceedings 539-542 (CHI) 2014 (Journal article)

Presented my work over the 4-day conference in Toronto Canada as part of the Interactivity Track.

MessageBag: Can Assistive Technology Combat Forgetfulness,
2013  AH ’13 Proceedings of the 3rd Augmented Human International Conference

Presented the paper “Message Bag”, March 2013
At the 4th Annual Augmented Human Conference, Stuttgart, Germany.

Farion C., Purver M. (2013). Message Bag; Can Assistive Technology Combat Forgetfulness. in A. Schmidt, A. Bulling, C. Holz, AH ’13 Proceedings of the 3rd Augmented Human International Conference, Stuttgart, Germany, March 2013.

Please check out a selection of my portfolio.


Thesis title: Investigating the design of Smart Objects to reduce anxiety in the domain of forgetfulness

Research: Using an everyday object (a bag) can it be augmented with a system (RFID reader and tags) to encourage an interaction that will reduce the anxiety many people feel when they forget those essential items for their day.

Skills: circuit design and build, interaction, real-world research, programming, technology & hardware design, autoethnography, distributed cognition, user studies, design-led enquiries, prototyping, wearable components,  presentations & lecturing.

Advanced taught modules: Design for Human Interaction, Interactive Digital Multimedia Techniques, Interactive Systems Design, Digital Arts Documentary, Sound Recording & Production Techniques, Public Engagement.


FUNDING: Received joint funding from The Arts Council England and The British Council.
Additionally was successful in securing an EPSRC Off-campus Business Engagement Fund – The Wearable Technology Show 2015, and a travel grant in 2014 to go to the CHI conference in Toronto to display my work for the interactivity track.


Teaching Experience

Currently, I’m a Post Graduate Lecturer for MDes Design Innovation, Interaction Design Specialism Leader at The Glasgow School of Art. [www.gsainnovationschool.com]

Previously; Associate Lecturer at the University of York, International Pathway, Robotics, Programming and Electronics. York, UK.

I hold a PGCE (Post Graduate Certificate of Education) and have taught for many years (12+). Teaching across several education levels, from BTEC at College, Foundation Degree courses, Degree courses and BSc level at University.
The University of York, University of Leeds, Leeds Beckett University, York College.

I have also presented numerous talks on my various projects and research throughout many years. You can read more about these and see videos on my Events & Talks page.


Work in Print / Online

Computer Science for Fun: http://www.cs4fn.org/wearable/smartbag.php 

About CS4FN, “Computer Science is fun. cs4fn’s aim is to share our passion about all things to do with Computer Science and especially to show that it is an exciting subject that is great to learn about just for the fun of it. We produce a free magazine twice a year as well as a series of special booklets (for example we have produced three magic books on magic tricks and the computer science behind them). We have also produced magazines on Electronic Engineering and Audio Engineering and their links with computing. All are sent free to schools in the UK (over 20,000 copies per issue). “

http://www.dailymail.co.uk/sciencetech/article-2988482/Samsung-s-virtual-reality-headset-smart-handbag-health-tracking-earphones-gadgets-display-Wearable-Technology-Show.html


http://www.wareable.com/wearable-tech/the-icebreaker-jackets-message-handbags-and-movie-soundtrack-gloves-being-created-in-the-queen-marys-university-labs-935


Girl Geek Life Magazine


Octagon Studio article 


handbag

Other things …

I’ve been working with assistive technologies and specialist knowledge regarding visual impairment, hearing loss, deaf and blind through my work at The Wilberforce Trust. This is very rewarding work. There are technologies available that can be used to help maintain an individuals lifestyle, or to help them achieve things they want to in life. Also, there are challenges in day to day living and certain technologies can help maintain independence.

My work involves getting to know a person with sight or hearing loss and then helping find a solution to a certain goal they may wish to achieve. It may be as simple as finding out the scores to a certain sport, to being able to get a bus into the shops. Being able to communicate, or contact people can help a person in so many ways. I do give talks and presentations on technology and on how it can help so if you can, try to get to one!


Through the PhD, I learnt many new skills including using components for physical computing.  My first attempt at Arduino – which inspired a love for using components and a bit of an obsession!

My first circuit, yup it's just an LED working, but we all start somewhere and I can tell you at the time getting this to work was exciting as hell!
My first circuit, yup it’s just an LED working, but we all start somewhere and I can tell you at the time getting this to work was exciting as hell!

I’ve since been working on making bags that have RFID readers in them to track a set of items. I do this through ilyware.com


I feel so lucky to be doing what I love and this mix of fashion and technology means…..

A LITTLE BIT ABOUT MY PROCESS…

desk and books
Some of the ilyware workspace.

I spend time thinking of creating the surface area that I will be sewing the components to. The components are sewn on with thin 3 core wire and so this does affect the material choices available to me. The colours of the lights are also considered,  how they are attached to the bag and how they will work to communicate with the person.

“My work area is a huge mix of sewing kit and fabrics, electronics and tools!”

For the bags that have circuit boards, I also have to program them. This involves hooking up the boards to my computer and using the software, I plan what the board will be doing. I then write the code, check for errors – I do this a lot –  and then I upload it to the board.

This can take a while especially if it is a new feature or function of the bag. Everything needs testing before it’s sewn so I have a lot of crocodile clips to hand as well as prototyping boards!

PROGRAMMING & PATTERNS

When it’s all planned out and programmed, I map out the bag area where the pockets will go and make the pattern. These are typically done with several pieces of fabric and I always love making the inside of the pocket with a beautiful piece of fabric. I know that this really will only be seen by you and me but I always think of it as a nice bit of luxury.

Once the materials are sewn, and then the components are sewn in, I then hook it up to the battery pack and be sure it’s all working as it should. Every time I do this I get a little buzz of how pleased I am when I see a bag working. I’ll never tire of that.

The bags are then photographed and I plan the packaging as much as I can, it may be a gift so I’ll add a handwritten card too if you’d like.

The bags are always noticed when out and about, and they are a real treasure to make.

~ christine

* thanks to Mr Mousseau & my Uncle John who inspired my love of computers.