Part 1. Last Project Proposal
In a blog post containing just a few sentences, briefly propose what you would like to do for your Last Project. Keep in mind that you’ll only have a couple of weeks to develop this project, which is due December 9, so keep it simple. If you’re torn between a couple different things, list both. Some options for this blog post are things like:
- “I’d like to revise an earlier project…”
- “I’d like to experiment with…”
- “I don’t know what to do.”
Please categorize this blog post, Proposal, and title this blog post nickname-final-proposal.
Part 2. A Networked Object
This assignment is due in the afternoon of class at 1:30pm on Friday, November 18. Please be prepared to present your project, whether live and/or in video documentation, in a 5-minute presentation to the class.
Census historian James C. Scott has pointed out that measurement is a political act. Data artist Natalie Jeremijenko collects measurements in order to prompt evidence-driven discussion. And in the weird world of quantum physics, the term “observer effect” refers to the idea that the very act of measurement itself alters the subject being measured. Each of these is an example of how measurement can be a meaningful act that alters the world and the way we see it.
Working in pairs, create an object or device that communicates with the Internet. This might be:
- A measuring device or monitoring system, which reports on a measurement of the world at regular intervals.
- A sensor that detects an event of interest, and sends a signal to report it online when it happens.
- A device which physically displays or visualizes a piece of online information, or which is triggered by an online event.
Your objective is to:
- measure or visualize something interesting, and/or
- measure or visualize something in an interesting way, and/or
- create a interesting provocation by bringing an uncommon measurement or piece of information to our attention.
To do this, you will use the LittleBits system of sensors and actuators, plus the IFTTT service. You may also wish to use Temboo.com to access interesting APIs and data streams. Please take a moment to familiarize yourself with these systems.
Some Design Considerations
Keep in mind the following design considerations:
- Although you may use any sensor you like, remember that even a humble switch is a sensor. The most important thing is for you to conceive of something interesting that can be sensed, whether by a switch or by something else.
- Brainstorm how to interpret your sensor. Just because you have a pressure sensor, doesn’t mean you have to measure pressure. For example, you might measure the amount of time that something is pressing the sensor. The information you report might thus be in units of seconds, not pounds of force. Or perhaps you might count the number of times that something has squeezed the sensor.
- Your device’s choice of location is very important. Where the device is positioned will affect who encounters it, how it is perceived, and the meaning it makes in the world.
- Are humans involved? It is up to you whether your device measures/displays human activity, or whether it measures the activity of something else in the environment (cars, animals, lights, doors, etc.). You can also decide whether you are measuring/displaying ambient, incidental, or deliberate human activity.
- Think. Your device might be whimsical, poetic, personal, political. You might detect when a leaf detaches from a tree, or it might blink whenever a specific friend posts on Facebook.
- Get outside the Studio. Consider places to put your object (outdoors, in your dorm room) that are not our usual meeting room.
- Share Bits. We have one of nearly every kind of bit. But in some cases, you may need to share. Please organize on the class Slack channel to see who may be able to loan you what you need. Use substitutes or proxies while you’re waiting to borrow something.
- Incorporate Other Materials. This project will be difficult to make without some other crafts materials. You may need to get some cardboard, paper, pipe cleaners, styrofoam, tape, popsicle sticks, Legos, etc.
Technical Considerations
To communicate with the Internet:
One option is that we have seven LittleBits CloudBits.
- You’ll need to register your CloudBit at http://control.littlebitscloud.cc/. (You’ll need to register for a LittleBits login ID.) I have already gotten the MAC addresses of these CloudBits whitelisted on CMU’s network. Follow the instructions and connect them to the wireless network called “CMU” (the university’s passwordless legacy wifi network).
- There’s already a special IFTTT channel just for these CloudBits. Note that this channel only works with the CloudBit. Also, it may sometimes take a few minutes (theoretically, up to an hour worst-case) for your CloudBit signals to get processed by the IFTTT servers.
- Please note that these require the LittleBits USB P3 power unit and will not work with a 9V battery.
There are a number of other options for communicating with your computer. For example, we also have several of the LittleBits Bluetooth BLE bits, the USB I/O bits, the MIDI bit, and the Arduino bits. We also have 5 of the MakeyMakey bits. Keep in mind that if you’re using one of these bits, you’ll need to write code to communicate with the internet and/or IFTTT; for this, I recommend IFTTT’s Maker channel.
It will probably be easiest to use the MakeyMakey bit (if you’re doing input only). Here’s some sample P5.js code for using the MakeyMakey bit to send keypresses to IFTTT’s Maker Channel:
// P5.JS code to convert LittleBits MakeyMakey signals
// into IFTTT messages, using the IFTTT Maker channel.
var urlPrefix = "https://maker.ifttt.com/trigger/";
var urlInfix = "/with/key/";
var eventName = "MyMakeyMakeyEvent";
var mySecretKey = "XXXXX-GET-THIS-KEY-FROM-IFTTT-XXXXX";
/*
You'll have to set up the eventName ("MyMakeyMakeyEvent" etc.)
and your IFTTT mySecretKey, using the IFTTT Maker channel.
*/
//-----------------------------------------------------
function keyPressed() {
// The MakeyMakey is a tiny, funny-looking, USB keyboard.
// It can only send arrow keys and the space bar.
// Note: you'll need to power the MakeyMakey with a Power Bit.
var value1 = 0;
if (keyCode == LEFT_ARROW) {
value1 = "LEFT ARROW";
} else if (keyCode == RIGHT_ARROW) {
value1 = "RIGHT ARROW";
} else if (key == ' '){
value1 = "SPACE BAR"
}
if (value1 != 0) {
println(value1);
var value2 = millis();
var value3 = "cat-door";
// The LittleBits MakeyMakey bit can send up to 3 values.
var myData = {
"value1": value1,
"value2": value2,
"value3": value3
}
// See http://p5js.org/reference/#/p5/httpPost
var requestUrl = urlPrefix + eventName + urlInfix + mySecretKey;
println(requestUrl);
httpPost(requestUrl, myData, "json");
}
}
//-----------------------------------------------------
function setup() {
;
}
function draw() {
;
}
Deliverables
The usual: