Attendance

img_20190213_120554

GitHub: https://github.com/npyalex/OnCampus 

Attendance describes a speculative ambient body-centric design project in which a the relative location of a roster of people are loosely tracked. A family (or a cohort of grad students, perhaps) each have an entry on a fixture (which could be expressed multiple ways – for the purposes of this project I imagined working with shape-memory alloys) that highlights when those people are nearby.

Above is a rough sketch of the fixture realized with shape-memory alloys: lengths of wire twist into an approximation of  the person’s name when they are close, and unwind into nothingness when they are away. Below is the same concept rendered with LEDs on a flat clock-face.  This project was researched and coded with the theoretical understanding that it would be realized with lengths of shape-memory alloy wiring.

1-1

I’ve worked with If This Then That and Adafruit IO quite often recently and I’ve been enjoying it, so they were the first place my mind went to when considering how to realize this project.

I started by setting up feeds in Adafruit IOdocu2and a pair of IFTTT applets
docu1

to track my location and interface with Adafruit IO. When I enter a radius around campus it sends “1” to the “arrived” feed, and when I leave the radius it sends “1” to the “gone” feed.

docu3

A little walking demonstrated that IFTTT and Adafruit IO were interfacing correctly: below you can see that the feeds successfully tracked the instances when I left for lunch and when I returned.

docu2

Without shape-memory alloys to play with I had to get speculative with the code. I did some research and learned that SMAs require careful voltage, with some trial and error depending on size. I set up my code to use a transistor and pulse width modulation so that when it is eventually hooked up to SMA I can find the ideal voltage for it.

In the photo below the LED is in the place of the shape-memory alloy.

img_20190213_170550

docu5

docu4

It took me a fair bit of digging to figure out how to monitor multiple Adafruit feeds in one sketch, and I continue to have some trouble with the syntax of the functions in the Gone/Arrived sections of the code.

I’d like the chance to work with shape-memory alloys properly and expand this concept – until then, I can prove the concept with an LED.

Works Consulted

https://learn.adafruit.com/adafruit-feather-m0-basic-proto/adapting-sketches-to-m0

https://learn.adafruit.com/adafruit-io-basics-analog-output/arduino-code

https://github.com/adafruit/Adafruit_IO_Arduino/blob/master/examples/adafruitio_12_group_sub/adafruitio_12_group_sub.ino

www.makezine.com/2012/01/31/skill-builder-working-with-shape-memory-alloy/

https://www.arduino.cc/en/Tutorial/TransistorMotorControl

https://github.com/adafruit/Adafruit_IO_Arduino/blob/master/examples/adafruitio_03_multiple_feeds/adafruitio_03_multiple_feeds.ino

https://github.com/adafruit/Adafruit_IO_Arduino/blob/master/examples/adafruitio_12_group_sub/adafruitio_12_group_sub.ino

Welcome Mat

Strategy:

I live in a three story house. Often when myself or my partner arrive home one of is on the third floor (it’s where the TVs live). It is near impossible to hear the door opening when you are on the third floor. With this is mind I set out to make a doormat that would notify the third floor when someone (or something – we do have a 100lbs rottweiler) entered the house. This would provide a soft hello, replacing the screaming hello that often carries up the stairs.

 

workshop-4-worksheet1

Documentation:

Originally I envisioned a little LED or speaker on the third floor that would require be wired to the sensor at the entrance, but our house has Hue lights and that seemed like a much more elegant solution. Triggering the hue lights would require connecting the Feather to Adafruit IO and Adafruit IO to If This Then That, so my initial prototype goal was to get an analogue sensor speaking to Adafruit IO.

Including the Adafruit IO library in the Arduino IDE provided me with an example analog sketch to base the arduino end off of. This sketch is in constant contact with Adafruit IO which I would need to change later on as I only wanted it to push information when the sensor detects a body, but it was a good starting place.

My Adafruit IO account was set up from a previous project, so all I needed was a new feed. I used to adafruit guide for connecting to adafruit IO found here – https://learn.adafruit.com/welcome-to-adafruit-io/libraries

And then I got an error. Even though I had installed the Adafruit IO library in the IDE I was getting an MQTT file not found error. It took some googling to discover that a number of libraries need to be installed for the Adafruit IO library to work, which you would think would be in the Adafruit documentation somewhere… These additional standalone libraries include the Adafruit MQTT Library, The Adafruit HTTP Client Library, and the Wifi101 library. After these were installed I stopped receiving the compiler error and could move on to adding the SSL Certificate to the onboard wifi of the feather as instructed in the guide.

A guide  for this can be found here: https://learn.adafruit.com/adafruit-feather-m0-wifi-atwinc1500/updating-ssl-certificates

One important note for this process: I was using a Feather M0 Wifi, which to me was different than the standard Feather M0 and as such when i read the line “If you are using a Feather M0 or WINC1500 breakout, don’t forget to update the pins as necessary with setPins()!” I did not think it applied to me. WRONG. Update the sketch with the wifi pins otherwise the firmware updater will receive errors.
Finally I was able to upload and sketch and confirm that the Feather was talking to adafruit. I used a photocell sensor as a test analogue input and conveniently the analogue in example sketch was already set up for this.

photocell

AND TADAAAAA!!! Contact!

screenshot-23

From here it was a simple matter of adjusting the code to only send information when the cell detected a low enough value and the creation of an applet in IFTTT. At first I tried an applet within IFTTT that handled the logic, but wanted to not send information constantly so changed to an “anytime feed is updated” trigger:

Final code:

//  Based on Adafruit IO Analog In Example
// Tutorial Link: https://learn.adafruit.com/adafruit-io-basics-analog-input
 Written by Todd Treece for Adafruit Industries
// Copyright (c) 2016 Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include “config.h”

/************************ Example Starts Here *******************************/

// analog pin 0
#define PHOTOCELL_PIN A0

// photocell state
int current = 0;
int last = -1;

// set up the ‘analog’ feed
AdafruitIO_Feed *analog = io.feed(“DoorMatFeed”);

void setup() {

  // start the serial connection
  Serial.begin(115200);

  // wait for serial monitor to open
  while(! Serial);

  // connect to io.adafruit.com
  Serial.print(“Connecting to Adafruit IO”);
  io.connect();

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {
    Serial.print(“.”);
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());

}

void loop() {

  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();

  // grab the current state of the photocell
  current = analogRead(PHOTOCELL_PIN);

  // return if the value hasn’t changed
  if(current > 300)
    return;

  // save the current state to the analog feed
  Serial.print(“sending -> “);
  Serial.println(current);
  analog->save(current);

  // store last photocell state
  last = current;

  // wait three seconds (1000 milliseconds == 1 second)
  //
  // because there are no active subscriptions, we can use delay()
  // instead of tracking millis()
  delay(3000);
}

It lives!

https://photos.app.goo.gl/zgYdCUz7GNq4aZmC9

Insights:

This project was a good refresher on hooking up the Feather to external systems and a good reminder on the ease of extending it’s functionality outside of it’s circuit. Also a good reminder to not trust documentation all the time as the specifics for connecting the wifi and adafruit IO caused a large amount of time setback in making the prototype. I have been enjoying thinking about ways to interact with the body that don’t revolve around hands and eyes, as that is often the site of tech, so trying to think about different body parts and what the potential could be when targeting them has provided some interesting lines of thought. I think the tendencies with technology, and specifically the bodily notification kind, is to improve our behaviour, which I’m not interested in, but interpersonal communication and the potentially for technological interference there is something that I would like to continue to explore.

Information sources:

Discussed in documentation – adafruit tutorials.

https://learn.adafruit.com/welcome-to-adafruit-io/libraries

https://learn.adafruit.com/adafruit-feather-m0-wifi-atwinc1500/updating-ssl-certificates

Next Steps:

The next step would be to change the sensor to velostat button, similar to the earlier button I made but larger, to function as the doormat. The code would them have to be adjusted based on the sensor values when tested, but otherwise should be the same. There is a lag in the IFTTT applet because it does not constantly check the feed, so I would consider changing the arduino to speak directly to the hue system to increase speed, but as it stands it seems to be 30 seconds to a minute between sensor activation and light flickering.

 

Peripheral Sweat Bands

Tyson Moll

[Arduino Code: PASTEBIN.com]

20190207_140942

Today we worked with themochromic pigments in water and acryllic paint applications. The pigment changes from a coloured tone to white under heat and electric current as typically seen in novelty colour-changing mugs. My favorite example of the technology remains to be the CD version of the Nine Inch Nails album, Year Zero: when the CD is retrieved from a music player, the normally black disk becomes white and reveals hidden detailing.

Year Zero, Before and After

Year Zero, Before and After [Source]

For the purpose of this workshop my idea is to use thermochromic-dyed sweatbands to indicate whether or not there is activity in a sports player’s blind spot within a particular distance. I imagine this could be accomplished with ultrasonic sensors, tuned to activate the bands whenever activity is detected within 10 feet of the user. Using two of such devices could bring an extra level of sensory detection that is visible within a player’s peripheral vision, providing warning of an unseen action before it happens, whether it be an opponent or an obstacle.

20190208_145254

For the purposes of conserving material, I decided to prototype this with the existing fabrics we created in class rather than purchase sweat bands for this one-use project. The programming was prepared with an Arduino and code that I slightly altered from an example for detecting proximity with the ultrasonic sensor (included at the top of this post). I sewed the thermochromic material with  conductive thread and connected it to my circuit circuit: the device worked as expected, although based on testing the effect was more immediate with higher voltages (ergo, more heat caused by the electric current). When the sensor was tested with a detection threshold of 10 feet, it behaved somewhat finnicky but was certainly activated enough to prove that it could work; signals that came into contact with fabric, reflectives and non-perpendicular angles caused irregularities. I’ve heard there are more reputable sensors available, perhaps worth looking into beyond the prototype stage.

20190208_135538 20190208_135551 20190208_143830

Naturally, were the device to advance to a proper prototypical state the sweat bands would need a means of communicating readily with the sensor without it being mounted directly to the sweatband (wireless?) and the thermochromic pigment would have to be modified to properly imbue itself in the sweat band with resistance to moisture. The voltage would have to be high enough to  have the effect be noticeable within a certain timeframe, though we have also been warned about running the device for long hours due to the amount of heat generated by the circuitry.

I don’t think that the material as-is is ready for such an environment, but I do think that thermochromic plastics would be effective paired with proper electrical regulation and protection mechanisms. All and all, this was a fun little excercise and I’m glad to have had the opportunity to try out the materials.

20190208_151906