Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Rastreamento de movimento ocular usando sensor infravermelho

Componentes e suprimentos

SparkFun Arduino Pro Mini 328 - 5 V / 16 MHz
× 1
Adafruit LiIon / LiPoly Backpack Add-On para Pro Trinket / ItsyBitsy
× 1
NeoPixel strip
× 1
Sensor de refletância QTR-1A
× 1
Bateria LiPo 3,7 V
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Usei um sensor infravermelho para detectar os movimentos dos olhos e controlar o LED.





NeoPixel LED Eye Ball


É usada fita NeoPixel LED. O LED tem 68 unidades.

O LED é fixado na tigela com fita dupla-face e ligado na seguinte ordem.





Rastreamento de movimento ocular




Esquemas

Sensor

Usei dois sensores QTR-1A para rastreamento ocular. QTR-1A são colocados em uma folha de plástico a uma distância de aproximadamente a largura do olho.



A parte do sensor e a parte do microcontrolador foram fixadas aos óculos com um clipe respectivamente.





Código Arduino


Quando a íris se aproxima de um sensor, a luz refletida diminui e o valor do sensor aumenta. Por outro lado, quando a íris se afasta, a luz refletida aumenta e o valor do sensor do foto refletor diminui.

O movimento para a direita e para a esquerda da pupila do globo ocular de LED detecta o aumento e a diminuição de um valor do sensor e o controla.

Ao piscar, os valores de ambos os sensores diminuem, portanto, se os valores dos dois sensores diminuem simultaneamente, as pálpebras do globo ocular de LED irão para baixo.


  #include  #include  #define NUM_SENSORS 2 // número de sensores usados ​​# define NUM_SAMPLES_PER_SENSOR 10 // calculando a média # define EMITTER_PIN QTR_NO_EMITTER_PIN int iniSensorVorValL, em sensor int; #define PIN A3Adafruit_NeoPixel led =Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum =24; int pupilNum =12; uint32_t cor; int brilho =40; byte eyeColor; int LR =7; int blackNum =24; int pupilNum =12; uint32_t cor; int brilho =40; byte eyeColor; int LR =7; cnt =0; // Eye preto L&R animaçãoint 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}}; // pupil L&R animationint pupilLED [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,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}}; // Blink animationint eyelid =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) {// certo para (int i =LR; i <12; i ++) {pisca (0, i); atraso (40); LR =i; }} else if (rasioL <0,985 &&rasioR> 0,985) {// esquerda para (int i =LR; i> 2; i -) {pisca (0, i); atraso (40); LR =i; }} else if (lid ==false &&rasioL <0,96 &&rasioR <0,96) {// Fechando piscando para (int i =1; i <9; i ++) {pisca (i, LR); atraso (40); tampa =verdadeiro; }} else if (lid ==true &&rasioL> 0,96 &&rasioR> 0,96) {// Piscando aberto para (int i =8; i> 0; i -) {blink (i, LR); atraso (40); tampa =falso; }} else if (lid ==false &&rasioL> 0,96 &&rasioR> 0,96) {// normal // cnt ++; // pálpebra =0; if (LR <=7) {para (int i =LR; i <=7; i ++) {pisca (0, i); atraso (40); LR =i; }} else {for (int i =LR; i> =7; i -) {piscar (0, i); atraso (40); LR =i; }} Serial.println ("通常 時"); } // Atualização do valor inicial if (cnt> 10) {iniSensorValL =sensorValL; iniSensorValR =sensorValR; cnt =0; }}  





Operação




Processo de manufatura

  1. O que nos levou de volta ao uso de materiais naturais no design de produtos?
  2. Sensor de luz pulsada
  3. Biblioteca Python do sensor de temperatura TMP006 usando Raspberry pi,
  4. Sensor de temperatura Python e Raspberry Pi
  5. Sensor de rastreamento de linha com RPi
  6. Sensor de movimento, alarme, gravação de vídeo em HA no Raspberry Pi
  7. Sistema de sensor de movimento infravermelho faça você mesmo para Raspberry Pi
  8. Sensor de movimento usando Raspberry Pi
  9. Tanques a laser Leap Motion!
  10. Medições de temperatura por sensor infravermelho