Diferencia entre revisiones de «Detector de mentiras con arduino»
(Página creada con «== Fase de investigación == Buscar en Google "detector de mentiras arduino" y "arduino lie detector". [http://blog.teslabem.com/detector-de-mentiras-utilizando-arduino/...») |
|||
(No se muestran 20 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Fase de investigación == | == Fase de investigación == | ||
Buscar en Google "detector de mentiras arduino | Buscar en Google "detector de mentiras arduino". | ||
[ | La mayoría de resultados refieren a este [https://create.arduino.cc/projecthub/BuildItDR/arduino-lie-detector-a0b914 artículo de create.arduino.cc]. | ||
El proyecto en si es muy fácil. No es mas que una lectura de una señal analógica, visualizar la lectura usando el "Serial Plotter" del IDE de Arduino, calibrar tres niveles, y un simple IF que enciende 3 LEDs. | |||
Vamos a probarlo. | |||
== Requisitos y materiales == | |||
Siempre interesa tener actualizado el IDE y las librerías, uso IDE 1.8.5 y librerias y placas actualizadas a día de hoy (Abr 2018). No se puede hacer con IDEs muy antiguos porque no traian el Serial Plotter. | |||
Materiales, aparte de lo obvio (arduino, cables, etc) | |||
* 3 LEDs (no son estrictamente necesarios) | |||
* Papel de aluminio | |||
* Esparadrapo o similar | |||
* Resistencias variadas, entre 2K y 10K. | |||
* Cables de cobre multifilamento (mejor que monofilamento) para los sensores, para que hagan mejor contacto | |||
== Construcción == | |||
El artículo lo hace con el [https://store.arduino.cc/arduino-nano arduino nano], yo lo hice con el [https://www.arduino.cc/en/Main/ArduinoBoardDuemilanove duemilanove], para el caso debería dar lo mismo. | |||
El cableado es muy similar al de el artículo, pero para mi montaje la resistencia de 2K que propone no me daba apenas variaciones en el gráfico, funcionó mucho mejor con una de 10K. | |||
Los cables negro/blanco y rojo/blanco en el esquema van a los sensores de aluminio. Interesa que sean cables multi-filamento. | |||
Para el contacto entre los cables multi-filamento y los sensores no hace falta complicarse, si dejamos la tira de aluminio un poco tensa con ayuda del esparadrapo, el cable se sujeta solo entre el aluminio y el dedo. | |||
[[Archivo:Detector bb.png|500px]] | |||
OJO: el diagrama de arribe tiene un error, los dos cables negros verticales no van a VCC, van a tierra, es decir no terminan en la fila de más abajo (VCC) sino en la penúltima (GND). | |||
Algunas imágenes más que ilustran el montaje y los sensores. | |||
<gallery mode="packed" heights=240px> | |||
Archivo:Serial plotter.png|Serial Plotter | |||
Archivo:Cable multifilamento.jpg|Cable multifilamento | |||
Archivo:Detector03.jpg|Detalle de los sensores | |||
Archivo:Detector02.jpg|Los sensores en los dedos | |||
Archivo:Detector04.jpg|Detalle del montaje | |||
</gallery> | |||
== Código == | |||
<syntaxhighlight lang="C" line> | |||
int NIVEL_VERDE=75; | |||
int NIVEL_AMARILLO=80; | |||
int NIVEL_ROJO=95; | |||
void setup() | |||
{ | |||
Serial.begin(9600); | |||
pinMode(2, OUTPUT); | |||
pinMode(3, OUTPUT); | |||
pinMode(4, OUTPUT); | |||
digitalWrite(2, HIGH); | |||
delay(500); | |||
digitalWrite(3, HIGH); | |||
delay(500); | |||
digitalWrite(4, HIGH); | |||
delay(500); | |||
} | |||
void loop() | |||
{ | |||
int lectura = analogRead(A0); | |||
if ( lectura > NIVEL_ROJO) | |||
{ | |||
digitalWrite(4, HIGH); | |||
digitalWrite(3, HIGH); | |||
digitalWrite(2, HIGH); | |||
} | |||
else | |||
{ | |||
if ( lectura > NIVEL_AMARILLO) | |||
{ | |||
digitalWrite(4, LOW); | |||
digitalWrite(3, HIGH); | |||
digitalWrite(2, HIGH); | |||
} | |||
else | |||
{ | |||
if ( lectura > NIVEL_VERDE) | |||
{ | |||
digitalWrite(4, LOW); | |||
digitalWrite(3, LOW); | |||
digitalWrite(2, HIGH); | |||
} | |||
else | |||
{ | |||
digitalWrite(4, LOW); | |||
digitalWrite(3, LOW); | |||
digitalWrite(2, LOW); | |||
} | |||
} | |||
} | |||
Serial.println(lectura); | |||
delay(20); | |||
} | |||
</syntaxhighlight> | |||
== Usandolo == | |||
A mi como detector de mentiras ... pues no funcionó, no detectaba variaciones, ni muchas ni pocas, estaba la gráfica plana. | |||
La manera mas interesante que encontré de generar variaciones fue con presión. Poniendo la mano en el borde de la mesa y apretando los electrodos y soltando se generaba la siguiente gráfica. | |||
[[Archivo:Detector01.png|800px]] | |||
De forma consistente, con la mano relajada esta en torno a los 70 y con ella apretada entre 90 y 100. Ajustando los valores de las variables globales <code>NIVEL_VERDE</code>, <code>NIVEL_AMARILLO</code> y <code>NIVEL_ROJO</code> puedes jugar a ir encendiendo y apagando los LEDs con la presión de la mano. Otro experimento posible y curioso es jugar con otras variables corporales y ver como influyen en la gráfica, por ejemplo a mi me funcionó con la respiración, respirando fuerte y rápido se observaban cambios en la gráfica con respecto a la respiración en reposo. | |||
Cosas que influyen en los valores que obtenemos y sobre todo en lo que interesa, que es que se muevan en vez de permanecer plano, es decir con que tenemos que jugar si la grafica apenas se mueve: | |||
* construcción de los sensores, que esten apretados, que el contacto con el cable sea bueno, su tamaño, etc | |||
* el valor de la resistencia | |||
¡Ale, a jugar y a pasarlo bien! | |||
[[Category:Arduino]] | |||
[[Category:Circuitos]] | |||
[[Category:3oESO]] | |||
[[Category:4oESO]] |
Revisión actual - 09:38 1 jun 2024
Fase de investigación
Buscar en Google "detector de mentiras arduino".
La mayoría de resultados refieren a este artículo de create.arduino.cc.
El proyecto en si es muy fácil. No es mas que una lectura de una señal analógica, visualizar la lectura usando el "Serial Plotter" del IDE de Arduino, calibrar tres niveles, y un simple IF que enciende 3 LEDs.
Vamos a probarlo.
Requisitos y materiales
Siempre interesa tener actualizado el IDE y las librerías, uso IDE 1.8.5 y librerias y placas actualizadas a día de hoy (Abr 2018). No se puede hacer con IDEs muy antiguos porque no traian el Serial Plotter.
Materiales, aparte de lo obvio (arduino, cables, etc)
- 3 LEDs (no son estrictamente necesarios)
- Papel de aluminio
- Esparadrapo o similar
- Resistencias variadas, entre 2K y 10K.
- Cables de cobre multifilamento (mejor que monofilamento) para los sensores, para que hagan mejor contacto
Construcción
El artículo lo hace con el arduino nano, yo lo hice con el duemilanove, para el caso debería dar lo mismo.
El cableado es muy similar al de el artículo, pero para mi montaje la resistencia de 2K que propone no me daba apenas variaciones en el gráfico, funcionó mucho mejor con una de 10K.
Los cables negro/blanco y rojo/blanco en el esquema van a los sensores de aluminio. Interesa que sean cables multi-filamento.
Para el contacto entre los cables multi-filamento y los sensores no hace falta complicarse, si dejamos la tira de aluminio un poco tensa con ayuda del esparadrapo, el cable se sujeta solo entre el aluminio y el dedo.
OJO: el diagrama de arribe tiene un error, los dos cables negros verticales no van a VCC, van a tierra, es decir no terminan en la fila de más abajo (VCC) sino en la penúltima (GND).
Algunas imágenes más que ilustran el montaje y los sensores.
Código
int NIVEL_VERDE=75;
int NIVEL_AMARILLO=80;
int NIVEL_ROJO=95;
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(4, HIGH);
delay(500);
}
void loop()
{
int lectura = analogRead(A0);
if ( lectura > NIVEL_ROJO)
{
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
}
else
{
if ( lectura > NIVEL_AMARILLO)
{
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
}
else
{
if ( lectura > NIVEL_VERDE)
{
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
}
else
{
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
}
}
}
Serial.println(lectura);
delay(20);
}
Usandolo
A mi como detector de mentiras ... pues no funcionó, no detectaba variaciones, ni muchas ni pocas, estaba la gráfica plana.
La manera mas interesante que encontré de generar variaciones fue con presión. Poniendo la mano en el borde de la mesa y apretando los electrodos y soltando se generaba la siguiente gráfica.
De forma consistente, con la mano relajada esta en torno a los 70 y con ella apretada entre 90 y 100. Ajustando los valores de las variables globales NIVEL_VERDE
, NIVEL_AMARILLO
y NIVEL_ROJO
puedes jugar a ir encendiendo y apagando los LEDs con la presión de la mano. Otro experimento posible y curioso es jugar con otras variables corporales y ver como influyen en la gráfica, por ejemplo a mi me funcionó con la respiración, respirando fuerte y rápido se observaban cambios en la gráfica con respecto a la respiración en reposo.
Cosas que influyen en los valores que obtenemos y sobre todo en lo que interesa, que es que se muevan en vez de permanecer plano, es decir con que tenemos que jugar si la grafica apenas se mueve:
- construcción de los sensores, que esten apretados, que el contacto con el cable sea bueno, su tamaño, etc
- el valor de la resistencia
¡Ale, a jugar y a pasarlo bien!