En caso de que alguien viene buscando, he construido recientemente algo que hizo exactamente esto.
He construido tres versiones, todos los cuales trabajan, pero tienen diferentes limitaciones en términos de lo que se está conectando a la gente.
1)versión Pasiva
Una persona tiene un cable conectado a ellos. Este es conectado directamente al pin analógico de la arduino.
Si leer varias veces desde el pin analógico de arduino, usted recibirá una bonita valor aleatorio (básicamente, la persona que está siendo un gran antena). Sin embargo, la suma de este valor varía es bastante constante. Así que, yo analogRead 20 veces, calcular la varianza (ya sabes, la forma más obvia, mediante su escuela de matemáticas). Esta se mantiene constante, mientras que alguien que no está en contacto con nadie.
En el momento que toque a alguien más, la antena es un heck de mucho más grande, y la varianza se incrementa drásticamente.
2)Semi-activo de la versión
Ambas personas tienen los cables conectados a ellos, la persona 1 es del pin analógico de arduino, la persona 2 de tierra del arduino. La varianza de una analogRead es analizada repetidamente. Si las personas no están en contacto, el valor se mueve alrededor, como antes, y una alta varianza se muestra. Cuando las personas entran en contacto, el circuito está conectado a tierra, y el valor llega a 0.
3)versión Activa
Ambas personas tienen los cables conectados a ellos, la persona 1 del pin analógico de arduino, la persona 2 de pin de salida digital. En el pin de salida digital, I salida de una onda cuadrada, en sincronía con mis mediciones del pin analógico. De esta manera, cuando las personas tocan, la variación es muy alto (como es la grabación de 0 1024......0...1024.) Yo uso la resistencia pull-up a la salida de la onda cuadrada, para limitar la corriente, no sé si es realmente cambia mucho, pero me sentía más cómodo puesto que a través de la persona del cuerpo con él.
Debido a la activa de la señal que se utiliza, la parte superior e inferior de los valores de la varianza son bastante constante, por lo que esta versión es que creo que la más precisa.
El punto de medición se ve aproximadamente así:
for(int n=0;n<20;n+=2)
{
pinMode(outpin,INPUT);
digitalWrite(outpin,HIGH); // square wave HIGH (through pull up resistor)
delay(2); // let things settle + don't run analogReads too close together
dataVal[n] = analogRead(inPin);
pinMode(outpin,OUTPUT);
digitalWrite(outpin,LOW);//square wave LOW (as output)
delay(2); // let things settle + don't run analogReads too close together
dataVal[n+1] = analogRead(inPin);
}
// calculate variance of the data values here