Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Seguimiento del movimiento ocular mediante el sensor de infrarrojos

Componentes y suministros

SparkFun Arduino Pro Mini 328 - 5V / 16MHz
× 1
Complemento de mochila Adafruit LiIon / LiPoly para Pro Trinket / ItsyBitsy
× 1
Tira de NeoPixel
× 1
Sensor de reflectancia QTR-1A
× 1
Batería LiPo de 3,7 V
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Usé un sensor de infrarrojos para detectar los movimientos de los ojos y controlar el LED.

Bola de ojos LED NeoPixel

Se utiliza cinta LED NeoPixel. El LED es de 68 unidades.

El LED se fija al recipiente con cinta de doble cara y se conecta en el siguiente orden.

Seguimiento del movimiento ocular

Esquemas

Sensor

Usé dos sensores QTR - 1A para el seguimiento ocular. QTR - 1A se colocan en una hoja de plástico a una distancia aproximada del ancho del ojo.

La parte del sensor y la parte del microcontrolador se fijaron a las gafas con un clip respectivamente.

Código Arduino

Cuando el iris se acerca a un sensor, la luz reflejada disminuye y el valor del sensor aumenta. Por el contrario, cuando el iris se aleja, la luz reflejada aumenta y el valor del sensor del foto reflector disminuye.

El movimiento derecho e izquierdo de la pupila del globo ocular LED detecta el aumento y la disminución de un valor de sensor y lo controla.

Cuando parpadea, ambos valores del sensor disminuyen, por lo que si los dos valores del sensor disminuyen simultáneamente, los párpados del globo ocular LED bajarán.

  #include  #include  #define NUM_SENSORS 2 // número de sensores utilizados # define NUM_SAMPLES_PER_SENSOR 10 // promediando # define EMITTER_PIN QTR_NO_EMITTER_PIN int, sensorVSensoralLRL int, en sensorVSensoralLRL; #define PIN A3Adafruit_NeoPixel led =Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum =24; int pupilNum =12; uint32_t color; int brillo =40; byte eyeColor; int LR =7; boolean lid =false; int cnt =0; // Animación L&R de ojo negro en blackLED [15] [24] ={{12,32,35,55,68,68,68,68,68,68,68,68,68,68,68, 68,68,68,68,68,68,68,68,68}, {12,13,31,36,54,55,68,68,68,68,68,68,68,68,68, 68,68,68,68,68,68,68,68,68}, {11,13,14,30,37,53,54,56,68,68,68,68,68,68,68, 68,68,68,68,68,68,68,68,68}, {10,11,14,15,29,38,52,53,56,57,68,68,68,68,68, 68,68,68,68,68,68,68,68,68}, {9,10,11,12,15,16,28,33,34,39,51,52,55,56,57, 58,68,68,68,68,68,68,68,68}, {0, 8, 9,10,11,12,13,16,17,27,32,35,40,50,51, 54,55,56,57,58,59,67,68,68}, {0, 1, 7, 8, 9,10,13,14,17,18, 26,31,36,41,49,50,53,54,57,58,59,60,66,67}, {1, 2, 6, 7, 8, 9,14,15,18,19, 25,30,37,42,48,49,52,53,58,59,60,61,65,66}, {2, 3, 5, 6, 7, 8,15,16,19,20, 24,29,38,43,47,48,51,52,59,60,61,62,64,65}, {3, 4, 5, 6, 7,16,17,20,21,23, 28,39,44,46,47,50,51,60,61,62,63,64,68,68}, {4, 5, 6,17,18,21,22,27,40,45, 46,49,50,61,62,63,68,68,68,68,68,68,68,68}, {4, 5,18,19,26,41,48,49,62,68, 68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {4,19,20,25,42,47,48,63,68,68, 68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {20,21,24,43,46,47,68,68,68,68, 68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {21,23,44,46,68,68,68,68,68,68, 68,68,68,68,68,68,68,68,68,68,68,68,68,68}}; // animación L&R del alumno en el LED [15] [12] ={{33,34,68 , 68,68,68,68,68,68,68,68,68}, {32,33,34,35,68,68,68,68,68,68,68,68}, {12,31 , 32,33,34,35,36,55,68,68,68,68}, {12,13,30,31,32,33,34,35,36,37,54,55}, {13 , 14,29,30,31,32,35,36,37,38,53,54}, {14,15,28,29,30,31,36,37,38,39,52,53}, {15,16,27,28,29,30,37,38,39,40,51,52}, {16,17,26,27,28,29,38,39,40,41,50,51 }, {17,18,25,26,27,28,39,40,41,42,49,50}, {18,19,24,25,26,27,40,41,42,43,48,49 }, {19,20,23,24,25,26,41,42,43,44,47,48}, {20,21,22,23,24,25,42,43,44,45,46 , 47}, {21,22,23,24,43,44,45,46,68,68,68,68}, {22,23,44,45,68,68,68,68,68,68 , 68,68}, {22,45,68,68,68,68,68,68,68,68,68,68}}; // Animación de parpadeo en el párpado =0; int eyelidNum [8] ={0, 4,8,16,24,34,44,56}; int eyelidLED [56] ={64,65,66,67,58,59,60,61,56,57,62,63,49,50, 51,52,47,48,53,54,38,39,40,41,46,55,36,37,42,43,26,27,28,29,35,44,24,25,30, 31,15,16,17,18,34,45,23,32,13,14,19,20,6,7,8,9}; QTRSensorsAnalog qtra ((unsigned char []) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues ​​[NUM_SENSORS]; void blink (int eyelid, int LR) {if (eyelid! =8) {// Peltre para (uint16_t i =0; i  0.985 &&rasioR <0.985) {// correcto para (int i =LR; i <12; i ++) {blink (0, i); retraso (40); LR =i; }} else if (rasioL <0.985 &&rasioR> 0.985) {// dejó para (int i =LR; i> 2; i -) {blink (0, i); retraso (40); LR =i; }} else if (lid ==false &&rasioL <0.96 &&rasioR <0.96) {// Parpadeo cercano para (int i =1; i <9; i ++) {blink (i, LR); retraso (40); lid =verdadero; }} else if (lid ==true &&rasioL> 0.96 &&rasioR> 0.96) {// Parpadeo abierto para (int i =8; i> 0; i -) {blink (i, LR); retraso (40); lid =falso; }} else if (lid ==false &&rasioL> 0.96 &&rasioR> 0.96) {// normal // cnt ++; // párpado =0; if (LR <=7) {for (int i =LR; i <=7; i ++) {blink (0, i); retraso (40); LR =i; }} else {for (int i =LR; i> =7; i -) {blink (0, i); retraso (40); LR =i; }} Serial.println ("通常 時"); } // Actualización del valor inicial if (cnt> 10) {iniSensorValL =sensorValL; iniSensorValR =sensorValR; cnt =0; }}  

Operación


Proceso de manufactura

  1. ¿Qué nos llevó de nuevo a utilizar materiales naturales en el diseño de productos?
  2. Sensor de luz pulsada
  3. Biblioteca Python del sensor de temperatura TMP006 con Raspberry pi,
  4. Sensor de temperatura Python y Raspberry Pi
  5. Sensor de seguimiento de línea con RPi
  6. Sensor de movimiento, alarma, grabación de video en HA en Raspberry Pi
  7. Sistema de sensor de movimiento por infrarrojos de bricolaje para Raspberry Pi
  8. Sensor de movimiento con Raspberry Pi
  9. ¡Tanques láser Leap Motion!
  10. DIY Sensor infrarrojo de latidos del corazón con Arduino
  11. Medición de temperatura del sensor infrarrojo