Simple foot scanner using Arduino.

I want to make a simple foot scanner which will give you the length and width of your foot, The scanner should work and behave like a normal mat, but when somebody steps on it i should be able to get the scan of their foot sole.

I am thinking of using 100's of pressure or capacitive sensors to make a a mat like this. But i have few queries:

  1. Should i use pressure or capacitive sensors?
  2. How can i interface more than 100 sensors on a single arduino? As it has just 20 IO pins ?
  3. If you know, please provide a link to one such cheap pressure or capacitive sensor.

Am i headed in the right direction, or are there any other simpler approaches for this?

Example of the output i am expecting from this mat:
.

Please let me know if you need more info? I have already experimented with camera based solution but then the scanner needs to be a box instead of a mat.

As a first step you should decide what resolution you need the measurement to be to. Then calculate how many sensors you will require (I expect it might be ~500). If you think it practical to wire up that many sensors the next step would be to identify a sensor of the required size and performance and, assuming you find one calculate the cost.

A mat is flexible, I doubt this device will be like a mat, at best it will be a solid board.

If you don't exclude boxes then people could put their feet in the corner of a box pressed against two edges (to keep the foot square with the box) and you could then scan the length and width width of the foot with two lasers and two LEDs moved by stepper motors.

Piece of glass with a camera underneath it?

Thanks Radman,

Right now i am completely against the box. If i have to use a box i can just use a wide lens camera to get foot dimensions, using lasers and motors for that sounds like a overkill.

If not mat, i think a plate will also work, are there such already made plates available, which have sensors many sensors such as(pressures, resistive force sensors, capacitive) ? If i had to made the plate myself, can i interface so many sensors with just one arduino ?

Also, Can you tell me which sensors might be best for my use case?

I am using this code ( Arduino Playground - CapacitiveSensor) to detect touch on various surfaces, but as the arduino digial pins are limited to 15 i am unable to use it for more than 15 touch sensors. Is is possible in any way to use a single arduino with more than 100 touch inputs? Any help will be much appreciated, i am really new to this stuff.

Describe your project as there may be a better way to go.

However, yes, you can get digital IO shields that increase the number of digital IO pins on the arduino. Depending on your project, you may also be able to use a matrix approach where 100 inputs is actually a 10x10 matrix. This only uses 20 inputs to determine 100 unique positions.

Due to the way that code works however, I'm not sure if the Arduino is fast enough to cope with 100 inputs in this form.

Thanks arduinodlb,

Regarding my project, i am trying to build a foot-scanner mat. Which will give me the area of users foot when somebody will put their foot on the mat. For this i though of using many digital pins with the capsense code.

Is there any other simpler solution??

Hmm, Atmel parametric table says '328P has 16 touch channels.

I don't know anything about them outside of this:
6. Capacitive Touch Sensing
The Atmel® QTouch® Library provides a simple to use solution to realize touch sensitive interfaces on most Atmel AVR® microcontrollers. The QTouch Library includes support for the Atmel QTouch and Atmel QMatrix® acquisition methods.
Touch sensing can be added to any application by linking the appropriate Atmel QTouch Library for the AVR Microcontroller. This is done by using a simple set of APIs to define the touch channels and sensors, and then calling the touch sensing API’s to retrieve the channel information and determine the touch sensor states.
The QTouch Library is FREE and downloadable from the Atmel website at the following location:
www.atmel.com/qtouchlibrary. For implementation details and other information, refer to the Atmel QTouch Library User Guide - also available for download from Atmel website."

"Capacitive Touch
Atmel QTouch® Library makes it simple for developers to embed capacitive-touch button, slider, and wheel functionality into general-purpose AVR microcontroller applications. The royalty-free QTouch Library provides several library files for each device and supports different numbers of touch channels, enabling both flexibility and efficiency in touch applications. By selecting the library file supporting the exact number of channels needed, developers can achieve a more compact and efficient code using less RAM."

You can use the parameter search here to see what chips might offer more. Use the Show/Hide feature to add Q-touch channels to the display, and hide some of the other stuff.

http://www.atmel.com/v2PFResults.aspx#(actives:!(8238,8394,8362,8282,8431,8300,8358,8392,8378,8445,8236,8449,8474,8248,8264,8447,8256,8254,8286,8462,8429,8458,8466,8400,8302,8278,8327),data:(area:'',category:'34864[33180]',pm:!((i:8238,v:!(1,16)),(i:8394,v:!(0,14)),(i:8362,v:!(2,27)),(i:8282,v:!(4)),(i:8431,v:!(1,33)),(i:8300,v:!(1,8)),(i:8358,v:!(1,64)),(i:8392,v:!(0,1)),(i:8378,v:!n),(i:8445,v:!(0,3,4,5,6,8)),(i:8236,v:!(0,24)),(i:8449,v:!(1,10)),(i:8474,v:!(0)),(i:8248,v:!(0,1)),(i:8264,v:!(1,5)),(i:8447,v:!(0,1)),(i:8256,v:!(1,2,4)),(i:8254,v:!(3,15)),(i:8286,v:!(0,3)),(i:8462,v:!(0,8)),(i:8429,v:!(1,10)),(i:8458,v:!(0,4)),(i:8466,v:!(1,2,4)),(i:8400,v:!(0,20)),(i:8302,v:!(0,1)),(i:8278,v:!(0,1,2)),(i:8327,v:!n)),view:list),sc:1)

As you are trying to measure the foot, wouldn't you also have to consider the part of the foot that curves up and around to capture the full width? In which case having them step on a piece of memory foam would provide the actual width that would have to fit in a shoe for example. Step on the foam run a scanner over to measure the non-sunken part.

Hi Crossroads,
Thanks for the reply, i will look into it.

Stepping on memory foam will not be a good idea.I am making the person stand on something solid because I don't want to detect the region that curves up as that will help me see if the person is flat foot or not. When i person is flat foot i would get the whole footprint, otherwise i will not get the curved part.

Not to move you away from the arduino, but how about having them step on a scanner or some sort of camera then doing pixel analysis? It would probably give you a more accurate result ultimately. Just a thought.

Thanks for the input, i also initially though the same. But the problem with that is, the whole thing becomes a big box and what i want is a simple plane mat.

You've seen the posts where an LED is used as light sensor, yes?
How about making a panel of small surface mount LEDs (under glass?) and use that to capture what is above it?
Start with GrumpyMike's webpage
www.thebox.myzen.co.uk/Workshop/LED_Sensing.html

Thanks CrossRoads,
the post is very interesting,

In the post he says:
"I did try to expand this into using a 5x7 matrix LED but could not get a light response to a single LED, only columns or rows. That is covering up a whole columns showed light sensitivity likewise covering up a whole row also worked, however covering a single LED showed no effect. I don’t know if this was something to do with the type of LED matrix having light leaking between the spots or if it was the fact they were directly driven off the Arduino pins with no drivers and so had to have high series resistors."

I will look into it and see if the matrix might work or not, using the glass top will i guess affect the response as we will not be able to cover the led directly, and light will always come out of LED and hit the glass. Also, it will look kinda weird with all the LEDs lighting up the surface.

It can definitely be made responsive - see the video here
http://cs.nyu.edu/~jhan/ledtouch/
http://cs.nyu.edu/~jhan/ledtouch/ledtouch.mpg

http://www.pessoal.utfpr.edu.br/msergio/Rossiter2005.pdf

I would go with the same approach as the big multitouch tables do. They shoot IR light under a glass/acrylic surface and then on top of the surface there is a softer transparent rubber-like material that makes the IR light to bounce back in different amount and be registered with a USB webcam.

1 webcam
1 array of IR LED
1 acrylic plate
1 transparent rubber mat (or lay a silicone-surface)
and some opensource software

Why do i need IR, This i can do with webcam only ?

The IR and silicone is what makes the funktion to see different pressures

http://nuigroup.com/forums/viewthread/1982/

http://peauproductions.com/store/index.php?main_page=index&cPath=58_64