Saturday, December 10, 2011

Laser Cutting

This week I got to do my first laser cutting at Crash Space. I drew the design in Inskscape, then imported the SVG into Corel Draw for export to the Epilog laser cutter:



It went OK, except a line that was 5.75" in Inskcape ended up 5.25" on the laser cutter. I'm not sure if this is a scaling problem with Corel Draw import or with something else.

Thursday, November 10, 2011

Litiholo Laser Wavelength: 635 nm

The Litiholo Kit is awesome for making holograms at home, but it only comes with one laser. So if you make a bunch of holograms and want to display them all of at once, you are stuck.

A fellow Crash Space member (who runs a cool electroluminescent supply site) was kind enough to run the Litiholo laser through a spectogram. Most of the power is at 637 nm and 638 nm, with some power at 636 nm and 639 nm:


It turns out this is almost exactly the same spectrum as a "5mW 635nm Red Laser Module Focusable Dot" I purchased from DinoDirect for $10!

Monday, November 07, 2011

DTV Talk at Crash Sapce

"Digital Television w/ Thomas Edwards
Upcoming Event: Monday, November 7th @ 8:00pm

Did you know there is high-definition digital TV in the air all around you for free? Thomas Edwards, VP Engineering & Development for the FOX Technology Group, will present on ATSC digital TV, including the history of digital and high definition TV, 8VSB modulation, MPEG transport streams, MPEG-2 video coding, AC-3 audio coding, and PSIP program guide data. There will also be a brief discussion of the new ATSC A/153 Mobile/Handheld DTV standard."

10526 Venice Boulevard Culver City, CA 90232

Sunday, October 30, 2011

Arduinos etc with Ethernet

Now there are some Arduinos with built-in Ethernet. From Freetronics, the EtherTen, which has a Wiznet W5100 chip on board at $69.95. It looks much like an Arduino (including USB port) that happens to also have an Ethernet port. Apparently it works, even with DHCP.

Sparkfun has the Ethernet Pro at $54.95, which also has a W5100 but is a little more slimmed down.

And if instead of an Arduino, you want a ARM Cortex-A8 board that runs Linux, has 60 digital I/Os, and built-in Ethernet, you can try the BeagleBone for $89.

Also in ARM-land is the mBED, ($50.80 from Mouser) which has built-in Ethernet but needs a carrier board with magnetics such as mbed-Xpresso Baseboard ($45.14 with LCD display and VGA out), mbed LPC1768 Workshop Development Board ($25 but barebones), or Mission Control MC-101 baseboard ($45 with lots of screw-down terminals).

Meanwhile the coolest PIC board ever is the MikroElectronica Multimedia Board for PIC32MX7 ($149) that has a touchable TFT display and SD card as well as Ethernet. MikroE also has a bunch of dedicated Ethernet boards.

Finally there is the good old Modtronix SBC65EC ($65) a PIC-based system that has Ethernet and RS-232.

Wednesday, October 19, 2011

Dirac bra-ket notation tutorial

If you are having some trouble with the Dirac bra-ket notation used in Quantum Computing, read carefully this tutorial by Prof. Reddish from UMCP.

Monday, October 10, 2011

Saturday, October 08, 2011

Dorkbot SoCal 46 - Sunday Oct. 16, 2011

Dorkbot SoCal 46

***** Sunday, October 16, 2011
***** 1:00pm-3:00pm
***** Machine Project
***** 1200 D North Alvarado Street
***** Los Angeles, CA 90026
***** Google map of Machine Project

Sean Bonner - Safecast.org
http://www.safecast.org/

Sean Bonner will present Safecast, a global project working to empower people with data, primarily by mapping radiation levels and building a sensor network, enabling people to both contribute and freely use the data collected. Created 1 week after the 3/11 Japan earthquake, Safecast has deployed 25 mobile, 50 handheld, and 50 static radiation sensors.



Carlyn Maw - Store Front Music
http://blog.makezine.com/archive/2011/07/store-front-music-the-diy-edition.html

Carlyn Maw is a co-founder of Crash Space, a hackerspace in Culver City, CA. Carlyn will describe the Crash Space group project "Store Front Music", which allows people who walk past the hackerspace to interact with a music making machine.


Jim Jenkins
http://www.jimjenkins.net/

Part sculptor, part engineer, and part choreographer, Jim Jenkins' work primarily features the animation of text and objects to represent a situation or an observation. Inspirations also come from simple movements often found in nature, such as the rhythmic flapping of a bird's wings to the hypnotic swaying of a cat's tail.

Sunday, October 02, 2011

Thursday, September 15, 2011

Augmented Reality in the Dark

A few months ago, I was preparing my Second Head for a Crash Space demo table at an event. I was unsure of the lighting, and thought it might be pretty dark there. ARtoolkit does a good job of augmented reality in good lighting, but if the lighting is not good, the system does not perform well.

So I decided to try to put a large EL panel behind my paper marker to backlight it. I purchased a large white EL panel from EL-Works and a battery-powered inverter. It worked great in dim light, even in the dark, as you can see in this video:

Saturday, September 10, 2011

Trivial quantum computing with QCF

Here is the same trivial quantum computing example I did in QCL in QCF running on Octave.

Again, I start with a two-qubit register psi, initialized to zero. I perform the Hadamard on it to create an equal superposition of states. Then I measure it, getting a different result each time I try it.

Note the two different quantum state notations used. Vector notation is used be default in QCF as it makes computation simpler. But as a human, I prefer binary ket notation, so I go from binary ket to vector notation using bin2vec(), and vector to binary ket notation using pretty().

Also measurement in QCF does not collapse the wavefunction explicitly (although you could do psi=measure(psi) to be more realistic about the measurement process collapsing the waveform).

octave-3.2.3:132> addpath("/pathtoqcf/qcf")
octave-3.4.0:133> psi=bin2vec("00")
psi =

1
0
0
0

octave-3.4.0:134> pretty(psi)
ans = 1|00>
octave-3.4.0:135> psi=hadamard(2)*psi
psi =

0.50000
0.50000
0.50000
0.50000

octave-3.4.0:136> pretty(psi)
ans = 0.5|00> + 0.5|01> + 0.5|10> + 0.5|11>
octave-3.4.0:137> pretty(measure(psi))
ans = 1|10>
octave-3.4.0:138> pretty(measure(psi))
ans = 1|01>
octave-3.4.0:139> pretty(measure(psi))
ans = 1|11>
octave-3.4.0:140> pretty(measure(psi))
ans = 1|01>




Wednesday, September 07, 2011

Messing around with Quantum Computing

If you want to start messing around with Quantum Computing simulators (ahead of actual Quantum Computers being developed), there are a couple of options:

Bernhard Omer's QCL language, developed specifically for QC simulation.

QCF toolbox of Quantum Computing Functions for Matlab and Octave (a free clone of Matlab).

Matt Purkeypile's Cove framework, that could potentially be extended to any language, but currently really only works with C#. He has a number of YouTube videos about it.

Here is a short (and useless) QCL example, where we put a 2-Qbit register into a superposition of states, then measure the Qbits. The first time we try this, we get a 3, the second time we try it, we get a 2:
qcl> qureg s[2]; // set up 2-Qbit register s, initially all zero
qcl> H(s); // apply Hadamard operator to create equal superposition of states
[2/32] 0.5 |0> + 0.5 |1> + 0.5 |2> + 0.5 |3>
qcl> measure s; // now actually measure and collapse wavefunction
[2/32] 1 |3> // result is 3 (0b11)
qcl> reset; // reset Qbits to zero
[2/32] 1 |0>
qcl> H(s); // apply Hadamard operator again
[2/32] 0.5 |0> + 0.5 |1> + 0.5 |2> + 0.5 |3>
qcl> measure s; // measure again
[2/32] 1 |2> // result is 2 (0b10)



Tuesday, September 06, 2011

Friday, September 02, 2011

$35 Linux PC with Ethernet?

Check out the Raspberry Pi, which for $25 will [when released "later in 2011"] get you:
  • 700MHz ARM11
  • 128MB or 256MB of SDRAM
  • OpenGL ES 2.0
  • 1080p30 H.264 high-profile decode
  • Composite and HDMI video output
  • USB 2.0
  • SD/MMC/SDIO memory card slot
  • General-purpose I/O
  • Optional integrated 2-port USB hub and 10/100 Ethernet controller
  • Open software (Ubuntu, Iceweasel, KOffice, Python)
  • ...and for $35 a 10/100 wired Ethernet (though they claim you might be able to use a WiFi USB dongle on the $25 board).

    Regarding GPIO, they say:

    There are approximately 16 spare GPIOs, which are brought out to 1.27mm pin-strip. Voltage levels are 3v3. The connector choice is deliberately annoying to connect to directly; there is no over-voltage protection on the board so the intention is that people interested in serious interfacing will use an external board with buffers, level conversion and analog I/O rather than soldering directly onto the main board.

    We also bring 2x I2C (3v3), I2S and an SPI (3v3) interface out to the same connector. We support one slave interface for I2C and one for SPI.

    Sunday, July 24, 2011

    Dorkbot SoCal 45 Tuesday night July 26

    Dorkbot SoCal 45 & Book Launch: Xtine Borrough, Jonah Brucker-Cohen, Jeremy Rotsztain

    ***** TUESDAY, JULY 26th, 2011
    ***** 7:00pm
    ***** Machine Project
    ***** 1200 D North Alvarado Street
    ***** Los Angeles, CA 90026
    ***** Google map of Machine Project

    Presenters will include...


    1. Xtine Borrough

    http://missconceptions.net
    http://www.routledge.com/books/details/9780415882224/

    xtine is a media artist, educator, editor of Net Works: Case Studies in Web Art and Design (Routledge 2011) and co-author of Digital Foundations (New Riders/AIGA 2009). Informed by the history of conceptual art, she uses social networking, databases, search engines, blogs, and applications in combination with popular sites like Facebook, YouTube, or Mechanical Turk, to create web communities promoting interpretation and autonomy. xtine believes art shapes social experiences by mediating consumer culture with rebellious practices. As an associate professor of communication at CSUF, she bridges the gap between histories, theories, and production in design and new media education. Her website is http://missconceptions.net.

    "Net Works: Case Studies in Web Art and Design" offers an inside look into the process of successfully developing thoughtful, innovative digital media. In many practice-based art texts and classrooms, technology is divorced from the socio-political concerns of those using it. Although there are many resources for media theorists, practice-based students sometimes find it difficult to engage with a text that fails to relate theoretical concerns to the act of creating. Net Works strives to fill that gap. Using websites as case studies, each chapter introduces a different style of web project--from formalist play to social activism to data visualization--and then includes the artists' or entrepreneurs' reflections on the particular challenges and outcomes of developing that web project. Scholarly introductions to each section apply a theoretical frame for the projects. Beyond project summaries, chapters also include an explanation of the websites' technological components; historical, cultural, and ethical perspectives; a list of links; key words; and short online exercises that relate technical skills to individual projects. Combining practical skills for web authoring with critical perspectives on the web, Net Works is ideal for courses in new media design, art, communication, critical studies, media and technology, or popular digital/internet culture.

    Net Works: Case Studies in Web Art and Design (Routledge 2011)

    2. Jonah Brucker-Cohen

    http://www.coin-operated.com
    http://www.scrapyardchallenge.com
    http://www.twitter.com/coinop29

    Jonah Brucker-Cohen is a researcher, artist, and writer. He received his Ph.D. in the Disruptive Design Team of the Networking and Telecommunications Research Group (NTRG), Trinity College Dublin. He is an adjunct assistant professor at Parsons MFA in Design & Technology. He has held a Research Fellow positions at Media Lab Europe and Eyebeam Center for Art and Technology in New York City. His work and thesis focuses on the theme of "Deconstructing Networks" which includes over 77 projects that attempt to critically challenge and subvert accepted perceptions of network interaction and experience. His writing has appeared in numerous international publications including WIRED Magazine, Make Magazine, Neural, Rhizome.org, Art Asia Pacific, Gizmodo and more, and his work has been presented at events and organizations such as DEAF (03,04), Future Everything (2004, 2009), Art Futura (04), SIGGRAPH (00,05),Transmediale (02,04,08), ISEA (02,04,06,09), Institute of Contemporary Art in London (04), Tate Modern (03), Whitney Museum of American Art's ArtPort (03), Ars Electronica (02,04,08), ZKM Museum of Contemporary Art (04-5), Museum of Modern Art (MOMA - NYC)(2008),San Francisco Museum of Modern Art (SFMOMA) (2008), and Palais Du Tokyo, Paris (2009). His work has been reported about in The New York Times, Wired News, Make, El Pais, Gizmodo, Engadget, The Register, Slashdot, The Wire, Rhizome, Crunch Gear, Beyond the Beyond, Neural, Liberation, Village Voice, IEEE Spectrum, The Age, Taschen Books, and more.

    Jonah Brucker-Cohen - Scapyard Challenge

    3. Jeremy Rotsztain

    http://www.mantissa.ca
    http://twitter.com/jmantissa
    http://www.photoribbons.com

    Jeremy Rotsztain is a Canadian digital artist who, taking cues from the practice of painting, works with movies, images, and sound as a kind of malleable and expressive material. In his work, popular narratives, pixels, and sound bites are sampled, transformed, re-arranged and composed in an effort to examine the language and patterns of contemporary media and the shared cultural experiences that we have with them. Jeremy writes custom software, enabling him to collect, edit, and compose with his materials in hybrid and unconventional ways that aren't supported by existing commercial software applications. His work has been screened, performed and exhibited at the Cooper Hewitt and the New York Hall of Science in NYC, Urban Screens in Melbourne, Subtle Technologies and InterAccess in Toronto, Electric Fields in Ottawa, SAT in Montreal, and New Forms Festival in Vancouver.

    Action Painting is a series of animated digital paintings composed using cinematic gestures from Hollywood action flicks. Moving visual elements from popular action films -- explosions, fistfights, car chases, and gunshots-- are used as compositional material to create works in the style of abstract expressionist painters such as Jackson Pollock. Action Painting brings together the adrenalin-filled culture of action cinema and the formalist canon of modernist painting. It is a line of inquiry into spontaneity and self-expression that contrasts user-generated web 2.0 culture against the work of the genius craftsman -- and reflects cinema's use of violence as pure spectacle.

    Jeremy Rotsztain - Action Paintings

    Monday, June 27, 2011

    Second Head

    You may remember my previous effort to have a head track you using PIR sensors.

    Well, it turns out the PIR sensors are great for detecting someone - at first. Then they are useless for 10 seconds. Which doesn't make them great for tracking. So I ended up giving up.

    Then I was reading somewhere on the Interwebzors about someone trying to use a Bluetooth-enabled solid state gyro board for controlling a halloween head. I started thinking, there has to be an easier way. Then I thought about Synn Labs augmented reality work, and hit upon the idea: stick a fiduciary mark on your head:



    The concept is simple: use ARToolkit to track the pan angle of a fiduciary mark, convert to serial data, send to Arduino, have the Arduino set the servo angle of the Robotzone DDP155 pan table.

    Here is my tweak to ARToolkit's simpleLite.c example, a few lines I added to the "if (gPatt_found)" block of the "Display" function:

    FILE *head=fopen("/dev/cu.usbserial-A4000QBg","w");
    char head_turn=90-50*gPatt_trans[2][0];
    fprintf(head,
    "%c",head_turn);
    printf(
    "%d:%c:\n",head_turn,head_turn);
    fclose(head);

    And here is the short Arduino program:

    #include <Servo.h>

    Servo myservo;

    void setup() {
    myservo.attach(
    9);
    Serial.begin(
    9600);
    }

    void loop() {
    int value=40;
    if (Serial.available() > 0)
    {
    value
    = Serial.read(); //reads the incoming byte
    myservo.write(value);
    }
    }



    Wednesday, June 22, 2011

    VIC-20 of the Modern Era: Maximite

    If you miss the VIC-20, here comes the Maximite. BASIC programming, uses PS2 keyboard, VGA out, and based on a PIC32. Prices look aorund $60-$70.

    In a way it reminds my of my old RVHE boards (which are no longer produced). They were incredibly simple to program in BASIC with a very fast interpreter. They didn't have a keyboard/VGA connection, but did have Ethernet you could telnet into! The Ethernet did not DHCP very well though, so they were not as useful as I was hoping.

    Thursday, June 09, 2011

    Arduino Frequency measurement

    I've been thinking about ways audio output from an iPhone could communicate with an Arduino.

    Oh yes, you could use DTMF with an external DTMF detector chip, but what about doing frequency detection without any active external devices?

    Here is a Frequency Measurement Library for Arduino w. Atmega168/328 that needs some external resistors and capacitors, no active devices needed. A 1:1 audio transformer might be wise as well.

    Supposedly this works up to 20 kHz!

    Wednesday, June 08, 2011

    Geiger Counter

    I recently built a geiger counter kit (Chaney Electronics C6981). It can measure the number of times particles of ionizing radiation pass through the tube per minute. So does it work?

    First, let's try it on wood:




    Now, let's try it on granite:



    So indeed, the granite is more than twice as radioactive as the wood!

    Saturday, June 04, 2011

    EthernetDHCP for Arduino

    I have often expressed my sadness about the cheap Ethernet shields for Arduino not having working DHCP.

    Well, it appears there is now an EthernetDHCP Library for the Wiznet-based shield and apparently it actually works.

    But the Wiznet-based shield is still $40. On the horizon, for $46, is the new Microchip-based chipKIT Max32 Arduino-Compatible that has Ethernet on board - but the PHY/magnetics might require a shield that is not yet released.

    Some day we will have an easy-to-program microcontroller for an affordable price that can do DHCP!

    Sunday, May 15, 2011

    Dorkbot SoCal 44

    ***** SUNDAY, June 5, 2011
    ***** 1:00pm
    ***** Machine Project
    ***** 1200 D North Alvarado Street
    ***** Los Angeles, CA 90026
    ***** Google map of Machine Project

    Presenters will include...

    John Carpenter
    http://www.johnbcarpenter.com/

    John Carpenter is an interactive designer and artist who explores complex data and spaces. based in santa monica, he works for morphosis architects (2005-present) as the visual and interactive designer and teaches media arts at loyola marymount university. john earned his MFA from the department of design | media arts in the school of the arts and architecture at UCLA (2009) where his thesis work, Shoreline Equivalent: Qualitative Spaces in Interactive Art, used qualitative observations of sand patterns at the beach to create an immersive, interactive installation that allowed viewers to explore the fluid, dynamic and emergent nature of the shoreline.



    Karl Lautman
    http://www.karllautman.com/

    Karl Lautman makes kinetic sculpture. His work, which is in public, private, and corporate collections and was recently on display at Mindshare LA, explores the tension between what we want or expect machines to do, and their often conflicting agenda. He'll be discussing this theme in more detail, with photos, video, and actual examples of finished and in-process work. The video of his piece, "Ouroborus" (pictured), has been viewed more than 600,000 times on YouTube.



    Alex Braidwood
    http://www.listeninginstruments.com/

    Alex Braidwood will be demonstrating "Noisolation Headphones", an invention for mechanically transforming the relationship between a person and the noise in their environment. Alex Braidwood is a designer and design educator who maintains a practice centered around a process of play, experimentation and research through making. Alex's current work explores methods for transforming the relationship between people and the noise in their environment. Alex earned his BFA in Graphic Design from the College for Creative Studies in Detroit, MI and his MFA in Media Design from the Art Center College of Design in Pasadena, CA.


    Wednesday, March 23, 2011

    Chumby Widget Control of Arduino

    So here is a proof-of-concept of using a Chumby Widget to send commands using XMLsockets to a Python program running on the Chumby, which in turns controls the Arduino over USB serial using Firmata. Note the LED on pin 13 turning on and off when I hit the orange rectangle on the widget:



    Tuesday, March 22, 2011

    xmlsockets in Chumby Widget

    This took me a while to figure out. I don't think there are a lot of people using ActionScript xmlsockets in a Chumby widget to talk directly with the Chumby - they are usually hitting external websites.

    If you want to talk to a python program running on the Chumby itself, you need something like:

    from socket import *
    s
    =socket(AF_INET,SOCK_STREAM)
    s.bind((
    "localhost",6666))
    s.listen(
    1)
    policyFile
    = '<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"><!-- Policy file for xmlsocket://socks.mysite.com --><cross-domain-policy><allow-access-from domain="*" to-ports="6666" /></cross-domain-policy>'
    while 1:
    print "waiting for connection..."
    conn,addr
    =s.accept()
    print "connection made"
    data
    =conn.recv(2000)
    print "data: ",data
    if("policy-file-request" in data):
    conn.send(policyFile)
    conn.close()
    print "connection closed."

    Note the weird XML. You to send that back to the Flash Player in response to a policy-file-request to assure the Player that you have the right to access that socket. After that, your ActionScript can talk freely using xmlsockets with the python program running on the Chumby.

    Saturday, March 19, 2011

    My First Chumby Widget

    So here is my first Chumby Widget:


    This is some pretty simple Actionscript. Now, to try to use XML sockets, this Actionscript appears to work:

    var xmlSocket:XMLSocket=new XMLSocket();
    xmlSocket.onConnect=function() {
    xmlSocket.send(new XML("Hello, World!"));
    }
    xmlSocket.onXML=function(myXML) {
    trace(myXML.firstChild.childNodes[2].firstChild.nodeValue);
    xmlSocket.close();
    }
    xmlSocket.connect("localhost",6666);

    And on the python side:

    >>> from socket import *
    >>> s=socket(AF_INET,SOCK_STREAM)
    >>> s.bind(('localhost',6666))
    >>> s.listen(1)
    >>> conn,addr=s.accept()
    >>> conn.recv(1024)
    'Hello, World!\x00'

    Now I just need to have the Chumby widget XML socket messages control Firmata transmissions to contol the Arduino.

    Followup: Well, the Actionscript and Python worked fine on my laptop, but a Chumby Widget needs a proper "crossdomain.xml" served out for the pair to work...see the next post!

    Monday, March 07, 2011

    Firmatization

    Firmata is based (mainly) on a three-byte MIDI-like message. If you read the protocol and have no background, it won't make any sense. Let's start with a digital output message.

    import serial
    # find your own usb serial port by "ls /dev" and note I changed the Firmata on my Arduino to use 9600 bps
    ser=serial.Serial('/dev/ttyUSB0',9600,timeout=1)
    # 0x91 is the digital write message (0x90) + "port" 1 (on larger board, there might be more ports), the second two bytes are a bitmask of the digital I/O pins in terms of if they should be on or off
    #
    turn on all digital outputs
    ser.write(chr(0x91)+chr(0x7F)+chr(0x7F))
    # turn off all digital outputs
    ser.write(chr(0x91)+chr(0x00)+chr(0x00))
    If that isn't exciting enough, let's enable this over a TCP socket using tcp_serial_redirect.py. One on terminal:

    python ./tcp_serial_redirect.py -p /dev/tty.usbserial-A4000QBg -P 6666
    --- TCP/IP to Serial redirector --- type Ctrl-C / BREAK to quit
    --- /dev/tty.usbserial-A4000QBg 9600,8,N,1 ---
    Waiting for connection on 6666...

    On the other:

    from socket import *
    s=socket(AF_INET, SOCK_STREAM)
    s.connect(('127.0.0.1',6666))

    And you know it is working because terminal 1 will say:

    Connected by ('127.0.0.1', 50961)

    Then on terminal 2, you can turn the Arduino pin 13 LED on/off with:

    s.send(chr(0x91)+chr(0x20)+chr(0))
    s.send(chr(0x91)+chr(0x00)+chr(0))

    (I should note that for now on I am using BlogTrog CodeWindow for my Python)


    Chumbuino and Firmata

    My scheme to establish a simple method for web-enabled / widget-enabled control of an Arduino from a Chumby (aka "Chumbuino") moves forward. Theron Trowbridge suggested the use of Firmata, a MIDI-like protocol, as a standard serial control protocol between the Chumby and the Arduino. I grabbed PDuino (Firmata for PD) and Pyduino (Firmata for Python), loaded up "OldStandardFirmata" on my aging Arduino NG, and was able to get the Pin 13 LED to flip on and off reliably through both.

    Now I need to 1) create a Python program to hit a web service to implement Firmata and 2) then create the web service using Google App Engine

    Follow-on projects include 3) socket-to-serial gateway in Python and 4) tweak Pduino to output to a socket and 5) then xmlsocket-to-serial gateway in Python with 6) Chumby Widget with xmlsockets to control Arduino.

    [it turns out the Chumby widget might be easier than I think, as there already is a Flash Arduino Firmata controller.]

    Saturday, February 26, 2011

    Web Service for Full "Chumbified Ardunio" control?

    You may remember my PHY2PHY-intermediating web service.

    It occurs to me that one could have an intermediating web service that exposes all the aspects of an Arduino through a Chumby One.

    The Chumby could hit the web service every so often (say 1-2 s) to get commands for getting/settings the connected Arduino I/O values.

    Someone has already written a protocol for full serial control of the Arduino, so adding the web service would be simple...

    By the way, should an Arduino on a Chumby be a "Chumbified Arduino" or a "Chumbuino"?

    Arduino to Chumby to UDP

    So after getting Chumby Python + PySerial on a USB stick, I hooked up a USB hub to the Chumby One, hooked up the USB stick to the hub (which ends up at /mnt/usb on the Chumby), and also hooked up the Arduino to the USB hub:




    Then I wrote this program on the Chumby:

    from socket import *
    import serial
    from time import sleep
    ser=serial.Serial('/dev/ttyUSB0',9600,timeout=0)
    s=socket(AF_INET,SOCK_DGRAM)
    s.bind(('',10001))

    while 1:
    data = ser.read(256)
    if len(data) > 0:
    print "Got:",data
    s.sendto(data,('[my server IP addr]',10001))
    sleep(0.5)
    print "not blocked"

    Note that this program is not blocked waiting for Serial input from the Arduino. On my Internet server, I wrote:

    from socket import *
    s=socket(AF_INET,SOCK_DGRAM) # create UDP socket
    s.bind(('[my server IP addr',10001)) # bind to port 10001

    while 1:
    [msg,addr]=s.recvfrom(256) # receive packet of up to 256 bytes
    print "addr:",addr," message:",msg

    Then everything that the Arduino sends out on Serial to the Chumby goes over UDP to my Internet server.

    This is easy!

    Wednesday, February 23, 2011

    Making Holograms

    I once had a holography kit a long time ago (for use with my HeNe laser), but never got around to building the recommended stable sandbox for it, and it got lost in a move.

    This Christmas, Carla bought me the Litiholo Kit. This is the most awesome introductory holography kit ever. First, there is no wet development of the plates. You just expose them for around five minutes, and they are done. It even comes with a blue LED keychain light to use as a "safelight" while you are exposing the film in the dark with the red laser.

    The Litiholo Kit uses a known technique for easy holograms - there is only a single expanded beam cone from a solid-state laser. The part that directly illuminates the film plate is the reference beam, and the part that illuminates the object and bounces off of it is the object beam. There is no need for additional mirrors or lenses to steer the reference beam around separately from the object beam. Plus the system is designed to minimize vibration between the object and the plate, which is one of the biggest source of failed holograms.

    So how was my first five minute exposure?

    Car Hologram and Car

    You can see the hologram above, and the red matchbox car comes with the kit below. I was amazed how easy it was to make a hologram! So I got creative:


    So obviously these are not the best holograms - they are a bit messy, they are small, and because of the angle of illumination you have real limitations on the size and shape of what looks good. But on the other hand, it is incredibly simple, works, and is a great introduction to holography!

    Chumby One and Arduino

    So I got a Chumby One. I loaded this up on the Arduino:

    int ledPin = 13;
    int i=0;

    void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    }

    void loop()
    {
    i=i+1;
    Serial.println(i,DEC);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    }

    Then I plugged the Arduino into the Chumby One USB port, I turned on the Chumby sshd, ssh'ed into the Chumby One, and did this:

    stty -F /dev/ttyUSB0 9600
    while true; do
    read LINE < /dev/ttyUSB0
    echo $LINE
    done

    And boom, I started seeing data coming in from the Arduino. Wow, that was simple!

    Next to get a USB hub so I can have the USB drive with Chumby Python & PySerial on it as well as connecting the Arduino. I assume that would work...


    2 USARTs and new Breath Sensor

    Regarding cheap PHY2PHY (physical to physical interactions over the Internet), I am still convinced that it is hard to beat the Lantronix products for having a solid serial to TCP/UDP/IP/DCHP stack. My best results was with the good old Xport. My results with the Xport Direct and an Xport Arduino Shield have been less than stellar, but it may just be do to the sad state of Arduino SoftwareSerial (even the better versions). Both Lantronix products are around $50.

    My best results were with Comfile CUBLOC that has two USARTS, one for monitoring the system, the other for serial-to-Ethernet. But wait, now you can get the Arduino/Wiring Board-esque Sanguino with 2 USARTS. The Sanguino (no USB) is around $30, the Wiring Board itself is $60 if you need a lot of digi I/O.

    Then I come upon a new Wind Sensor from Modern Device. The anemometer impeller solution was always kind of expensive plus it took a long time to spin down once spun up. I wonder how responsive this one is? At $17, it is also way cheaper.

    Friday, February 18, 2011

    My Phy2Phy SBC obsession

    OK, here is what I want:

    1) Linux SBC with Python (out of the box)
    2) Ethernet with DHCP working (out of the box)
    2) Lots of GPIOs

    I have a Mini2440, but it came with a Linux with unworkable DHCP. Weird. Oh yes, I can download a toolchain and compile my own kernel and load it up to get DHCP working. Maybe I can even compile and get Python going. If I could spend a week straight working on this, sure I could do it.

    Meanwhile I have the SheevaPlug, which does DHCP and Python out of the box, but no easy GPIOs. You can hook it up to an Arduino though. So looks like that will be the answer to my madness.

    On the other hand, I may just go Chumby & Arduino.


    Sunday, February 13, 2011

    Dorkbot SoCal 43 - Feb. 27, 2011

    Dorkbot SoCal 43


    ***** SUNDAY, February 27, 2011
    ***** 1:00pm
    ***** Machine Project
    ***** 1200 D North Alvarado Street
    ***** Los Angeles, CA 90026
    ***** Google map of Machine Project

    Christopher O'Leary
    http://users.design.ucla.edu/~oleary/index.html

    Christopher O'Leary is an artist who works across mediums including video, photography, sound and installation. Utilizing novel lighting and post-production techniques, the creation of his work is tightly controlled, enhancing and building upon the performative aspects of his projects. These activities include performance art, computer-vision systems and non-linear videos.



    Lewis Keller
    http://adagio.calarts.edu/~glewlio/

    Los Angeles based artist Lewis Keller manipulates frequency, timbre and amplitude via performance, installation, fabrication and digital media. His work combines sophisticated technology with crude humble structures, inviting listeners to question their relationships with time, technology, space, sound and silence. He received his BA from Colorado College and his MFA from CalArts.



    Michael Wilson and Chris Weisbart

    Michael Wilson and Chris Weisbart of the Natural History Museum of Los Angeles will be presenting on the incorporation of DIY and open source technologies in the museum exhibit world, where the need for interpretive and educational technology is often not matched by budgets. The team will present a lecture on projects they have developed for the NHM as well as a current project that Michael and Chris have been working on in collaboration with students at New Mexico Highlands University dealing with the Miller-Urey experiment.

    Friday, February 11, 2011

    OpenServo

    I think the OpenServo project is pretty cool! My first scheme on how to do Touch was to read the error voltage from a servo driving the finger to indicate how hard someone was pressing on it. Because of the opacity of the servo circuit, I pretty quickly gave up on this idea, and went with pressure sensitive resistors on the fingertip.

    Now with OpenServo, I could use the actual position register and/or the back EMF register to try to determine position in a touch-over-IP solution, without having to deal with any funky pressure sensors.

    Whether this would actually work or not is unclear, as you would need to apply enough touch pressure to either move the servo at least one notch out of position, or enough to increase the servo power or back EMF reading. But the price is right!

    You know what would go good with the OpenServo? The PIC-MINI-WEB! At $40.95 you get an Ethernet PHY, TCP/IP stack, and it would be easy to I2C over to the OpenServo. Cheap PHY2PHY goodness!