Pretty Maps – 20×200 Editions

Some of you may have noticed, mostly probably not — but the Laboratory has expanded its ranks. It’s starting to feel like a proper design collective in here. One of the lovely attributes of the people in the Lab are the broad sectors of activity they cover that doesn’t make it seem like they do a zillion different things, but do many things to work though a relatively core set of interests.

Take Aaron Staup Cope. He writes algorithms that tell computers what to do. He makes maps out of paper. He makes maps out of algorithms. He makes you think about the ways that algorithms can do things evocative of map-ness..on paper.

Etc.

What I’ve learned from all of Aaron’s exploits in Dopplr-land, Open Street Maps-land, Walking Maps-land is that maps are dynamic, living things that should never be fixed in their format, style, purpose. They should never be taken for granted — even if the Google Map-ification of the world is doing just this. They should come in a bunch of sizes and shapes and colors and purposes. Etc.

Check out Aaron’s 20×200 Editions of his Pretty Maps. Get yours. I did. LA’ll go on one side of the wall. NYC will go on t’other.

Here’s what they say about Aaron over on 20×200.

For now, let’s set our eyes West, on L.A. County. Like prettymaps (sfba), prettymaps (la) is derived from all sorts of information, from all over the internet. Its translucent layers illuminate information we’re used to relying on maps for–the green lines are OSM roads and paths, and orange marks urban areas as defined by Natural Earth. They also highlight what’s often not seen–the white areas show where people on Flickr have taken pictures. It’s an inverse of a kind of memory-making–a record of where people were looking from instead of what they were looking at, as they sought to remember a specific place and time.

Design Fiction Chronicles: The Dark Knight's Ubicomp Mobile Phone Sonar

Here’s that scene from The Dark Knight where Batman has secretly installed a surveillance system that traces the legal, moral and ethical contours iconic to ubiquitous computing networked devices of this sort. What’s going on — as explained in the short bit of dialog — is that all of the mobile phones used by all of Gotham’s citizens have been secretly connected to this rig that is able to produce sonar-like visualizations of their surroundings to such a level of resolution that one can *see and *hear everything. Batman is asking Lucius Fox / Morgan Freeman to man the rig and listen out for The Joker and direct Batman so he can capture him and end his felonious shenanigans. Lucius plays the moralist here, drawing issue to the fact that Batman would be invading people’s privacy and, moreover, misusing the system that Lucius constructed.

As pertains the Design Fiction motif, what I enjoy about this scene is how quickly it is able to center the pertinent extradiegetic debate on surveillance technologies. Whatever one feels about ubiquitously networked devices and their implications for issues such as the possibilities for over-arching surveillance, state control, and so on — this one scene and its spit of dialogue, together with a suggestive and fairly easily explained and dramatic apparatus — together all of this is able to summon forth the debate, frame its rough contours and open up a conversation. Nice stuff.

Listening Post

Parenthetically is this device shown above. Called, suggestively, Listening Post, one might be forgiven for mistaking it for a prototype of the surveillance device in The Dark Knight which it may be, or not, or may be both a *real prototype and a probe or a propmaster’s prototype for the film. Or something. In any case, it is a sculpture done by Mark Hansen and Ben Rubin. Listening Post “is an art installation that culls text fragments in real time from thousands of unrestricted Internet chat rooms, bulletin boards and other public forums. The texts are read (or sung) by a voice synthesizer, and simultaneously displayed across a suspended grid of more than two hundred small electronic screens.”

It’s quite curious and depending on what is going on in the world — lovely to listen to. When I first saw it at The Whitney in New York City it was in February of 2003 very shortly after the Columbia Space Shuttle disaster — and the tone of the snippets of chat room conversations were echoing the sentiments of that event. In a sense the device anticipates the aggregation of *chatter that comprises or can be cohered into *trends or *trending topics as the year of Twitter has made increasingly legible.

In any case, the similarity of these two devices — The Dark Knight apparatus and Hansen and Rubin’s “Listening Post” are clearly in some sort of conversation with one another, both provoking similar discussions and considerations, whether or not anyone except me is raising these points.

Why do I blog this? This is a useful example of the way a small, short scene — barely even a story — can help raise an issue to a more tangible and more legible level, making it perhaps more intriguing to grapple with abstractions like the ethics of surveillance. It provides a hook for these conversations in material form.

Laboratories, Accelerometers And Kitchen Crockery

The Memsic 6202 Accelerometer, fresh out o’the skillet.

We’ve been out of the Laboratory proper — the place where things are constructed and soldered and heated up — for a bit now, not because we don’t go in there, or we haven’t been doing things that will go in there. No, rather, or because of a variety of curiosities that have attracted our attention and, in that way, have slung us around to be more in the mode of reading and observing so as to launch into the next, “next vector of interests.” We believe strongly here allowing things to stew and simmer in the reading-writing-intellect as much as in the making-things section of the young noggin. There is much good that comes from the process of tinkering as well as, err..think-ering, both simultaneously, perhaps. Doing things to help think through what one finds curious or helpful, tinkering our way to new, more habitable world. Making things is a great way to learn. It is also a great way to think-things-through. Rather than the still idle of pondering, as an adjunct to the quiet sit in the cafe — making something that helps add some weight to the thought. Perhaps closer to The Craftsman by Richard Sennett.

The interests today swing around the ways of framing things, explaining and demonstrating and communicating, especially future fictions, perhaps designed fictions, as a way of describing the sometimes peculiar imaginings that get brought upstairs from the boys in the basement in the Bureau of Coming Attractions. We have our Bureau of Urban Scouting, evolving its own practice of observation and, perhaps of more interest, a variety of instruments and procedures for seeing the world sideways. Nicolas and I are in the final stages of this short essay for the Situated Technologies project that will include this topic. Literally in the final stages. As in, right now I should be editing a Google Doc rather than writing this, but I let the morning coffee lead me.

So, this is all to say that this blog swerves constructively, probably baffling all eighteen readers into wondering — what the heck is going on here? Where is the editorial consistency? Where’s my code/diagrams/schematics?

To this I only ask that you look for such things even here, as they are always in-the-making, becoming the hardware in the midst of the thinking-through, in the ideas.

As the curiosity-seeker Jack Schulze recently intoned in a wonderfully Talmudic way"No one cares about what you think, unless you do what you think. No one cares what you do, unless you think about what you do. No one ever really cares what you say."

This may explain Jack’s characteristically quiet demeanor. We’re quite verbally agitated here, so we’ll let the last one slip by us. But, the yammering is the thinking-making-doing, sometimes in words, sometimes in thoughts, sometimes in the materialization of our imagination.

With this said, in response to Reader Number Fourteen’s request this morning for “some code”, I share with you this little thing: Code to Test the Memsic 6202 Accelerometer. You may remember this little guy. We used it in our early foray into fabricating surface-mount electronics. With kitchen skillets. We learned this bit of tinker-y hacker-y from our friends over at Spark Fun. It works great. And it’s cheap as rocks.

I can’t say we were super excited about this particular accelerometer, but that’s okay. It’s just an accelerometer after all. If you follow us down toward the foxhole of these things, you’ll find a whole world of accelerometer fanatics with plenty of material to fuss with — smart accelerometers, accelerometers that let you know when they’re falling, accelerometers that tell you the time as well as whether they’re falling, etc. You’ll find some material buried here in the blog archives, to be exhumed with the right incantation of search and category selection parameters.

This code was written for the Atmel 8-bit microcontrollers that live on the Arduino board. It also makes use of the Wire library for the Arduino, and, as well, the two-wire interface (TWI) hardware support on those microcontrollers, making the whole thing pretty easy-peasy.

#include
#include


// TWI (I2C) sketch to communicate with the Memsic MXC6202J accelerometer
// Using the Wire library (created by Nicholas Zambetti)
// http://wiring.org.co/reference/libraries/Wire/index.html
//
// On the Arduino board, Analog In 4 is SDA, Analog In 5 is SCL
// These correspond to pin 27 (PC4/ADC4/SDA) and pin 28 (PC5/ADC5/SCL) on the Atmega8
// Know You're Microcontroller. Check Which One Is On Your Board/Arduino.
// Newer (as of May '09) Arduinos Use The Atmega168. Can You See It?
// The Wire class handles the TWI transactions, abstracting the nitty-gritty to make
// prototyping easy.

void setup()
{
  Serial.begin(9600);
  Serial.println("Naah??");
  Wire.begin(); // join i2c bus (address optional for master)
}

void loop()
{

  byte x_val_l, x_val_h, y_val_l, y_val_h;
  int x_val, y_val;
// transmit to device with address 0x1D
// according to the MXC6202xMP datasheet, the TWI/I2C address of is fixed
// at the factory depending on what the "x" in the part name is
// Read The Data Sheet section "I2C Bus Data Transfer" for descriptions
// of what the part expects to receive as its address. If you do not understand
// how this works, you are guaranteed to get lost/confusted/frustrated.
// 00010000b is the address of the chip I have, or 0x10

  // a little fuzzy in my recollection here. I think this initializes the chip
  // by setting some bits in the Memsic device's 8-bit internal register
  // Not 100% sure why I initialize two bytes.
  Wire.beginTransmission(0x10);
  Wire.send(0x00);
  Wire.send(0xF0);
  Wire.endTransmission();

  delay(100);

  Wire.beginTransmission(0x10);
  Wire.send(0x00);
  Wire.endTransmission();

  // request five bytes of data
  // first one is the internal register, we can ignore that, but lets look at it for giggles
  Wire.requestFrom(0x10,5);
  while(Wire.available()) {
    Serial.print(Wire.receive(), HEX); // drop the internal register on the floor..
  }
  Serial.println("****");

  // next byte is the MSB of the X axis acceleration
  if(Wire.available()) {
    x_val_h = Wire.receive();
  }
  // next byte is the LSB of the X axis acceleration
  if(Wire.available()) {
    x_val_l = Wire.receive();
  }
  // next byte is the MSB of the Y axis acceleration
  if(Wire.available()) {
    y_val_h = Wire.receive();
  }
  // next byte is the LSB of the Y axis acceleration
  if(Wire.available()) {
    y_val_l = Wire.receive();
  }
  // cobble all of this together into 16 bit acceleration values
  // doing the usual bit-shift polka
  x_val = (x_val_h << 8); x_val |= x_val_l;
  y_val = (y_val_h << 8); y_val |= y_val_l;
  // spit it all out across the serial port so we can see it
  Serial.print(x_val_h, HEX); Serial.print(" "); Serial.print(x_val_l, HEX); Serial.print("n");
  Serial.print(y_val_h, HEX); Serial.print(" "); Serial.print(y_val_l, HEX); Serial.print("n");
  Serial.println("===");

 Wire.endTransmission();

 // loop and do it again.
  delay(200);
}

Continue reading Laboratories, Accelerometers And Kitchen Crockery

Mobile Surveillance

A mobile surveillance box which Duncan spied on his ride to the studio. This area might be a gathering place for day laborers to meet prospective employers. So, the question then is has this been installed to discourage them from gathering here? Has there been crime of some sort, beyond something that this rather conservative, law-and-order part of the world would call an illegal gathering, or loitering, despite the fact that such workers would be the ones to mend one’s fence or till one’s rose garden? This object was found here.

I’m not an out-and-out anti-surveillance person. I enjoy observations, especially one’s involving image-making. When you can’t have a conversation with the man behind the curtain, or the observations are not easily accessible for review, comment, dispute, etc., something may be quite wrong, then.

There are things that should be watched closely to make the place more habitable. For example, refugee camps where rape, murder and all things horrible happen should be watched the same way citizen patriots watch the US-Mexican border..but they’re not. The politics of surveillance are often always authoritarian and about control through observation. Things can be turned about, as they often are in order to disrupt the despotic eyeball, observing through a passive, psychological influence.

This thing, a mobile surveillance platform affixed to a far corner of a 7-11 parking lot, is a preposterous, laughable evil eye. It looks almost retro and steampunk — a hand-made affair that drives the comedy of its pathetic influence. It talks to you, which adds to the carnival. It’s got a bunch of off-the-shelf motion detectors bolted to each side that, I’m guessing, detect motion, set off a timer and then belt out a canned, recorded announcement of warning…warning…you have been observed…the authorities have been notified, which sent me into tears of laughter. I felt like I was confronting a home-made RoboCop, built with whatever scraps could be found at the local Radio Shack. @kurt wondered whether you could pop on a set of tires and tow the thing off before anyone knew, which would be hysterical if only to imagine what the “home base” operator would see from their hatch-like monitoring station. Not that I’d do it, of course, but in my imagination — I’d even go through the trouble to gin up a power source so that the kit would keep running. Err…but maybe there’s a tiny man in the box, like the guys who live in small trailers at construction sites to watch over them?

Why do I blog this? A curious, irresistible assemblage of crappy DIY surveillance that just was begging to be taunted. I’m so happy it talks, I just may have to go back and interact with it/him again. It’s like an old, urban robot in this century, made of wood and with an axle for wheel-born mobility. Proto, or Neo RoboCop sort of stuff. Brilliant..it could be Interactive Art, even. Maybe a thesis project is lurking behind this, complete with a faux company website!
Continue reading Mobile Surveillance

Finding The Way – HMC6352 Digital Compass

Friday March 13, 23:53:41

Since I was asked, and asked again, I’ll toss this technotopia solutions nugget to demonstrate that, despite the evidence demonstrated by recent public appearances and weblog postings, we here at the Laboratory are in fact still fully engaged in connecting wires amongst components. Components take a variety of forms, as do the wires. Sometimes bits of silicon strongly encased in hermetically sealed plastic. Other times, cultural components made of different materials. Observations and their conclusions take a variety of paths and sources of inspiration. We enjoy looking at curious people-practices, inspecting them for insights and stories to be told with a variety of resources: objects, images, words.

And so on. More on this point later.

In the meantime, an eager follower has asked for some simple advice that could have been dispatched in an electronic mailing. Instead, The Near Future Laboratory resources room has decided to fold that information into a weblog “posting.”

Wayfinding, of the digital variety has become exceptionally straightforward for those who are okay with writing a dozen or so lines of code for the handy-dandy Arduino and this HMC6352 digital compass which is available as a breakout board off the rack from our friends at Sparkfun.

The compass will give you a perpetual stream of degrees-heading from magnetic north and has interesting adjustments to let you make offset corrections and that sort of thing. It works simply, as all such things should be. It’s a TWI/I2C device, so you get it on the I2C bus, and send commands to its address (42h). Easy-peasy. If you’re doing anything like setting a RAM or EEPROM register, you send the approrpriate command and address. But, for the most part, you’ll just want to tell it to send heading data, right? That’s simple — send the letter ‘A’ (41h) and back comes the heading data. That’s it. Send an ‘A’, get a heading. Send an ‘A’..get a heading. Over and over, or as often as necessary.

Done.

Here’s some Arduino code to get you going!


#include

// http://wiring.org.co/reference/libraries/Wire/index.html
// On the Arduino board, Analog In 4 is SDA, Analog In 5 is SCL
// These correspond to pin 27 (PC4/ADC4/SDA) and pin 28 (PC5/ADC5/SCL) on the Atmega8
//
// These correspond to pin 27 (PC4/SDA/PCINT12/Analog Input 4) and pin 28 (PC5/ADC5/SCL/PCINT13/Analog Input 5) on the Atemga168
// The Wire class handles the TWI transactions, abstracting the nitty-gritty to make
// prototyping easy.

int address = 0x42 >> 1;
 int reading;
void setup()
{
  // this for debugging the data
  Serial.begin(9600);
  // set up
  CLKPR = (1<<clkpce);
  CLKPR = 0;
  // initialize the HMC6352
  Wire.begin(); // join i2c bus (address optional for master)
}

void loop() {

  Wire.beginTransmission(address);
  Wire.send('A');
  Wire.endTransmission();
  //delay(10);
  Wire.requestFrom(address, 2);

   if(2 <= Wire.available())    // if two bytes were received
  {
    reading = Wire.receive();  // receive high byte (overwrites previous reading)
    reading = reading << 8;    // shift high byte to be high 8 bits
    reading += Wire.receive(); // receive low byte as lower 8 bits
    reading /= 10;
    Serial.println(reading);   // print the reading
  }

//  delay(50);
}

Continue reading Finding The Way – HMC6352 Digital Compass

Ubicomp is like a 5 year old wishing for a pink pony

Complete Ubicomp fail. I mean..they can’t even get this most simple of scenarios straightened out and they want to put my refrigerator and toaster oven on the network? WTF. Seriously. Anytime I hear the alpha futurist-y featurists get all excited about some kind of idea for how the new ubicomp networked world will be so much more simpler and seamless and bug-free, I want to punch someone in the eye. They sound like a 5 year old who whines that they want a pink pony for their birthday. Ferchrissake. Just think even once about all the existing hassles that pink pony wishers have brought into the world and be happy that you can still breath the air around you.

Okay. Fancy hotel with all the bells and whistles. Sensor in the bathroom because some over competent architect/engineer or other member of a hubris-heavy discipline assumes I can’t find a light switch because I’m stupid/drunk/tired. Sensor detects my buffoonish/loaded/sleepy body in the bathroom and turns the light on for me. End of “use case.” Only, this sensor just cuts the light on whenever it pleases. In the middle of the night.

Solution: Door closure.

Result: Less sleep and a resentful blog post.

Why do I blog this? Observations about why Ubicomp is done better in sci-fi movies than in real life.
Continue reading Ubicomp is like a 5 year old wishing for a pink pony

Urbanism, Data-Driven


(Some cartogram structures and linkages Pascal created as sensor maps where the geography is an implied and driven — rather than the driving — parameter.)

Fabien Girardin, MIT brainiac and a fellow Near Future Laboratory ‘naut presented his expert and insightful trinity of themes that appear to be the main motivators behind "urban computing", a bit of cocktail party conversation related to this short essay that Kazys Varnelis and Leah Meisterlin wrote, and that Nicolas poked a stick at.

Fabien describes three prime motivators behind the “urban computing” discussion and construction projects. Bears repeating, with some commentary.

1. Creating an opportunistic and optimistic urban environment that is somehow “better” than one without some sort of underlying computational infrastructure. This is the realm of the ubiquitous computing folks. The visions are aspirational — near-future signposts always already just out of reach and endlessly deferred — perhaps this is the definition of industry and academic R&D. Provide curious near-future fictions about possible near-future worlds. Effectively science-fiction expressed through objects and scenarios and large research (instead of film and television production) budgets. (Cf ““Resistance is Futile”: Reading Science Fiction Alongside
Ubiquitous Computing”, Paul Dourish and Genevieve Bell, forthcoming in Personal and Ubiquitous Computing.)

2. Study of the impacts and implications of computational systems and operations in an urban context, performed by GIS folk and urban planners and computer science people. These are studies of the dynamics of data-people sensed in the city, mapped and used to develop insights on urban conditions, or perhaps used as contributing information for design or re-design of urban geography. In some cases the data is interpreted in real-time, such as you might expect to be done to manage loads on cellular data networks, etc.

3. The action, postulating and creative exercises of independent and undisciplinary explorers and adventurers who shuffle and interleave the interesting data points that are anchored to geographies that can be re-mapped. This has brought us such interesting tidbits as the various crime data maps, for example, or the flows of automobiles throughout cities. (Using the geeky, horribly, self-deprecatingly named “mash-ups”.) What is happening here that is most compelling to me at least is that “GIS” activities are becoming something that anyone, without a license or professional sanction can do, inexpensively (i.e. for free and a bit of time). So, anything new here and worth glorifying is this fact — we can be our own map-makers. This is significant in the Foucauldian power-knowledge sense of significant. Cartograms such as the fundraising maps, which started out as a very DIY project, are important because they create new meaning and possibilities for action, or shifts in perspective that can lead to change, rather than stagnation. (There’s a normative element, of course. Visualizations of data with geographies, in the power-knowledge realm of things, are as free to interpretation as anything that alleges to be fact, so they can’t be counted upon to prove much of anything. At worst, they can be enrolled in larger conversations, just like any good knowledge agent.)


(Some more of Pascal’s cartogram structures and linkages. Sensor maps recorded amongst a small group of us and visualized such that the geography is an implied and driven — rather than the driving — parameter.)

I’d add a bit here. How can the experience of space — urban space, just to stick to the most discussed idiom — become fruitfully and playfully data-driven? Mapping data onto geographies by their instrumentalized location in space is okay. It’s a bit knee-jerk, though. What I mean is that re-mapping data with an entirely different basis could possibly produce an entirely different urban experience that may, at worst, be curious and playful. Just to see what comes of this. The Laboratory has been working for way too long on such re-mappings that do not assume that latitude and longitude are the canonical reference points for whatever data gets built on top.

I know..I know. This is weird. And the first project I was involved with that did this — an edition of PDPal that created maps based exclusively on interpreting an “experience” — fought a losing battle. But there are some indicators that this approach is at least worth exploring.

Creating “maps” that have a spatial aspect to them, but that do not use space as the primary or explicit reference datum can then emphasize people-practices or experiences first, with the geographic datum implicit or made into a driven, rather than driving, parameter. Paulos and Goodman’s “Jabberwocky” project comes to mind, as do Twitchr and other mappings of “encounters” and actions that are not expecting to use GPS first-and-foremost.

Situationist Space (Thomas F. McDonough)

Here in the Laboratory we’ve been building several prototype devices that record Bluetooth encounters for later visualization. The first prototype was a small Python script running on a Nokia N70 phone. It was like a little data attractor that would sniff for Bluetooth devices, and then record them in a log file, and send them to a server to be persisted in a database.

Two recent editions used a small, custom-designed device that used the Bluetooth scanning mode of a radio to essentially do the same thing, storing the results in a Flash memory device to be later extracted with a simple USB interface. Lately a bunch of us in the studio have been working with a similar concept in the form of a background sensing application developed at Nokia R&D for S60 devices that does all of this, plus quite a bit more. (Currently in closed alpha, but soon to be available publicly.) The biggest challenge (besides running it on an S60 device..) is making meaning out of all of this. The strongest vectors for me, at least, lead to re-mapping and exploring possibilities playfully, with no specific expectations that there is intelligence in the maps by themselves.


# install first the following files to your phone
# (they will install automatically the needed libraries for the script below):
# aosocket-series60_v20.sis, pdis.sis
# found at: http://pdis.hiit.fi/pdis/download/pdis/

# this script was found from forum.nokia.com

import e32
import appuifw
##import aosocketnativenew
from pdis.lib.logging import *
##import httplib, urllib
from location import gsm_location
import time
import sysinfo
import select

cell = []
init_logging(FileLogger("e:\apache\htdocs\bt_probing.html"))

def tell(string):
    #logwrite(string)
    if e32.is_ui_thread():
        print string
        e32.ao_yield()

# ----------------------------------
from aosocket.symbian.bt_device_discoverer import *
#from socket import * # for obex file send

def discovered(error, devices, cb_param):
    if error == 0:
        global cell
        #tell("start discovery..")
        cell = gsm_location()

        #tell("devices: " + str(devices))
        tell(cell)
        #print location.gsm_location()
        for address, name in devices:
            logwrite("")

            tell(cell[0])
            tell(cell[1])
            tell(cell[2])
            tell(cell[3])
            print location.gsm_location()
            urllib.urlopen("http://smalltown.nearfuturelaboratory.com/upload_bt.jsp",
                           urllib.urlencode([('addr',address),('name',name),
                                             ('imei', sysinfo.imei()),
                                             ('batt', sysinfo.battery()),
                                             ('signal', sysinfo.signal()),
                                             ('cell_0', cell[0]), ('cell_1', cell[1]),
                                             ('cell_2', cell[2]), ('cell_3', cell[3])]))
    else:
        tell("device discovery failure: error %d" % error)
    _discoverer.close()


# -----------------------------------------------------------------------------


while(1):
    try:
        _discoverer = BtDeviceLister()
        _discoverer.discover_all(discovered, None)
        #tell("discovering")
        e32.ao_sleep(15)
        print "scanning again"
    except:
        tell("init failure")
        appuifw.note(u"Fatal error.", "error")

Continue reading Urbanism, Data-Driven

LIS302DL — Wii Accelerometer

Wii Accelerometer

I’ve been wanting to mess with this thing for a spell, but I couldn’t find a breakout board at the usual places, so I just up and made one. The LIS302DL 3-axis accelerometer is used in the Wii’s controller, as best as I know. Cool little 2D barcode on the chip there, huh?

It’s pretty nice — digital, SPI and TWI compatible, with a pair of interrupt signals to wake your whatever up when it sense acceleration above certain thresholds. Competitively priced with respect to the ADXL330 3-axis analog accelerometer I’ve been using. I’ve played with the LIS3LV02DQ, which is also by ST Microelectronics — this one is smaller, and a little cheaper and a much lower pin count.

Wii Accelerometer

Why’s it sitting on an old PCB with a clip holding it down? I got these boards done quite thin for some reason — just ’cause, I guess. Turns out the hot air I normally use to do reflow soldering just about warm up the PCB enough so it goes a bit soft. In a vice grip, it starts to warp! That’s just not good. This is my alternate jig — but, next time I’m back to the regular thickness FR4.

MobZombies Sensor Board Assembly

Wow, what a bit of a learning experience this was. That chip is an Invernsense IDG300 gyroscope. $35 a pop. And its one of these “QFN” (quad, flat, no leads) style packages which basically makes it a pain to work with. I thought I could use this technique of dabbing a bit of solder on each of the pads on the printed circuit board and then put a bit of heat to the board with hot air or an iron on each pad. It “took” but there was no electrical continuity. What I think happened is that the big center ground pad took hold, but the other leads didn’t. It seems like it should have. The alignment was good after eyeballing it. Anyway, it didn’t.

So, after taking the thing on and off a few times because of some shorts I found across a capacitor and crap, I decided to have a go with a bit of solder paste. That was something I was trying to stay away from because the paste is messy and difficult to apply to such small leads (.25mm or .01 inch). This is what you really need a stencil for, I guess.

I dabbed a bit, messed it up, dabbed some more, cleaned up, etc. I basically just put paste on the leads that are actually connected to something. There are lots of non-connects, evidently for factory calibration of the device. With the solder paste on, I placed the chip, messed with it for a bit to try to get it aligned good, which is a bit nerve wracking because I’m trying to avoid accidentally spreading the solder paste around and everything. Finally, it looks good and I put some hot-air to the area. It sort of works when I check the electricals, so I try again, finally getting something. One of the devices seems a bit out of kilter — the rates on one axis when its static seems off, but maybe that can be compensated. We’ll see.

Power, but who knows how well it works? The MCUs are fine, power is fine, the Bluetooth radios there are fine. Haven’t had the nerve to check the gyros though..Those things came on and off so many times, I toasted the board a bit.

Technorati Tags:

A Gyroscope Game Input Control

I’ve been playing with a gyroscope lately as a game input control element for MobZombies. The challenge is to come up with a less cumbersome sensor rig, and less expensive. The sensor will need to communicate with a mobile phone because no one’s going to buy a $2000 tablet pc to play a game. The sensor should also be able to capture forward and backward motion.

The IDG300 gyroscope seemed decent, albeit “expensive” in the context of trying to make an under $100 sensor rig. But, you know..modern times and all.

I ran a few tests to see how well it captured tight and wide turns. I think it will require lots of moving average calculations. The graphs below are 20 sample averages which have also had a 16 point moving average calculation applied to them to smooth out the rough bits.

Tight left turn, basically a slow Whirling Dervish

Forward several steps, turn left, forward several steps, turn right

So, with lots of smoothing, the data looks clean enough to be able to translate turning motion into the equivalent of pressing the “A” or “D” keys to turn your guy left or right. An accelerometer will take care of forward or backward translational movement, I’m pretty sure.

The goal here really is to get to a point of capturing enough embodied movement sufficiently to use physical action as direct input into a game. This is different from the “offline gaming” idea, and closer to the “whoosh” style input.

Technorati Tags: ,