DIY Multi-Touch All The Surfaces

Ever wanted to build a touch table or other touch-input project, but got stuck figuring out the ‘touch’ part? [Jean Perardel] has your back with his multi-touch frame over on IO that makes any surface touch-reactive. In [Jean]’s case, that surface is ultimately a TV inside of a table.

Of course, it’s a bit of a misnomer to say the surface itself becomes touch-reactive. What’s really happening here is that [Jean] is using light triangulation to detect shadows and determine the coordinates of the shadow-casting object. Many barcode scanners and consumer-level document scanners use a contact image sensor (CIS) to detect objects in the path of IR LEDs. These are a low-power, lower-resolution alternative to the CCDs found in high-grade scanners.

As [Jean] explains in the video below, an object placed in the path of a single IR LED facing a sensor array of either type will block the light from reaching the sensors. Keep adding LEDs and their emission angles will begin to overlap, increasing the detection precision. [Jean] reverse engineered a couple of different types of scanners until he found a suitable one. He ended up with CIS that has 2700 light sensors lined up in the space of 20cm (7.87″).

[Jean] designed a 3D-printable frame to hold 96 IR LEDs in stacks of three. A Teensy turns on the LEDs, detects the touch event, calculates the position, and sends those coordinates to a Pi to be displayed on the screen. He eventually went wireless and then built a nice looking touch table to house a 32″ TV.

This is not the only way to build a multi-touch table, nor is it the simplest. Here’s one that uses finger presses to scatter light and an industrial strength projection-based table that was open-sourced a few years ago.

11 thoughts on “DIY Multi-Touch All The Surfaces

  1. Now this is a really cool idea. I had a very similar idea several years back when FTIR touch tech was starting to really pick up popularity. At the time I was learning to implement SAT (Separating Axis Theorem) into a 2D game math library. The part in particular that stuck out to me was the edge lighting required for the DIY FTIR setups. It occurred to me if you instead lit two edges and lined the opposing edges with light sensors. You could in theory solve SAT backwards to find the point of contact (or disruption in this case). Worked some of the math for it out on paper but never found the supplies to actually test it and my income was so spotty that I certainly couldn’t afford to order the supplies so it stayed an idea on paper.

    I’m glad to see such a similar idea actually worked.

    1. It is multi touch as long as the two fingers/objects cast two separate shadows on the sensor from at least one lid led. 5 fingers should be distinguishable. It’s similar to inverse radon transformation, though not with full 360 degrees and divergent wavefronts (point light source) instead of plane waves.

      1. Hi,
        As LonC said, it’s almost multitouch. The new version has LED and sensors all around the screen (2 sides LED and 2 sides sensors), so it’s starting to be good!
        But the number will always depend on the position…

  2. This is a really cool project!
    Also the video does a nice job in explaining the principles in an understandable way.
    However, the problem is that you never really know how to connect the sensor array.
    Reverse engineering a working scanner could be easier then probing in one from the dump.
    But one thing is certain, these sensor arrays are underappreciated in the hobby scene.
    This project might change that.

    1. Hi,
      There is a new video on the project, it’s more complete! (and I corrected my confusion between CIS and CCD)

      I added a success hack on HP CIS sensors bought on Ebay, I wanted to solve the problem you said and be able to buy some sensors knowing the protocol… I also bought some cheaper one, but I need to work a bit more to reverse those one too. ^^
      Thanks! Specialy for the video compliment, it was very long to do it :)

Leave a Reply to JanCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.