Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Suivi du mouvement des yeux à l'aide d'un capteur infrarouge

Composants et fournitures

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
Adafruit LiIon/LiPoly Backpack Add-On pour Pro Trinket/ItsyBitsy
× 1
Bande NeoPixel
× 1
Capteur de réflectance QTR-1A
× 1
Batterie LiPo 3,7 V
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

J'ai utilisé un capteur infrarouge pour détecter les mouvements oculaires et contrôler la LED.

Boule oculaire NeoPixel LED

Du ruban LED NeoPixel est utilisé. La LED est de 68 unités.

La LED est fixée au bol avec du ruban adhésif double face et câblée dans l'ordre suivant.

Suivi des mouvements oculaires

Schémas

Capteur

J'ai utilisé deux capteurs QTR - 1A pour le suivi oculaire. QTR - 1A sont placés sur une feuille de plastique à une distance d'environ la largeur de l'œil.

La partie capteur et la partie microcontrôleur étaient respectivement fixées aux lunettes avec un clip.

Code Arduino

Lorsque l'iris s'approche d'un capteur, la lumière réfléchie diminue et la valeur du capteur augmente. A l'inverse, lorsque l'iris s'éloigne, la lumière réfléchie augmente et la valeur du capteur du photoréflecteur diminue.

Le mouvement droit et gauche de la pupille du globe oculaire LED détecte l'augmentation et la diminution d'une valeur de capteur et la contrôle.

Lors du clignotement, les deux valeurs du capteur diminuent, donc si les deux valeurs du capteur diminuent simultanément, les paupières du globe oculaire LED vont baisser.

#include #include #define NUM_SENSORS 2 // nombre de capteurs utilisés#define NUM_SAMPLES_PER_SENSOR 10 // moyennage#define EMITTER_PIN QTR_NO_EMITTER_PIN int iniValensorValL,;#define PIN A3Adafruit_NeoPixel led =Adafruit_NeoPixel(68, PIN, NEO_GRB + NEO_KHZ800);int blackNum =24;int pupilNum =12;uint32_t color;int luminosité =40;byte eyeColor;int LR =7;boolean lid =false;int cnt =0;//Black eye L&R animationint 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}} ;//élève 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}, {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);valeurs de capteurs int non signés[NUM_SENSORS];clignotement nul (paupière int, LR int) { if (paupière !=8){ //Étain pour (uint16_t i=0; i 0.985 &&rasioR <0.985){ //correct for(int i =LR; i <12; i++){ blink(0, i); retard (40); LR =je; } } else if(rasioL <0.985 &&rasioR> 0.985){ //left for(int i=LR; i>2; i--){ blink(0, i); retard (40); LR =je; } } else if(lid ==false &&rasioL <0.96 &&rasioR <0.96){ // Clignotement fermé for(int i =1; i <9; i++){ blink(i, LR); retard (40); couvercle =vrai; } } else if(lid ==true &&rasioL> 0.96 &&rasioR> 0.96){ //Ouverture clignotante for(int i =8; i> 0; i--){ blink(i, LR); retard (40); couvercle =faux ; } } else if(lid ==false &&rasioL> 0.96 &&rasioR> 0.96) { //normal //cnt++; //paupière =0; if(LR <=7){ for(int i=LR; i<=7; i++){ blink(0, i); retard (40); LR =je; } } else { for(int i=LR; i>=7; i--){ blink(0, i); retard (40); LR =je; } } Serial.println("通常時"); } // Rafraîchissement de la valeur initiale if (cnt> 10){ iniSensorValL =sensorValL; iniSensorValR =sensorValR; cnt =0 ; }} 

Opération


Processus de fabrication

  1. Qu'est-ce qui nous a ramenés à l'utilisation de matériaux naturels dans la conception de produits ?
  2. Capteur à lumière pulsée
  3. Bibliothèque Python du capteur de température TMP006 utilisant Raspberry pi,
  4. Capteur de température Python et Raspberry Pi
  5. Capteur de suivi de ligne avec RPi
  6. Capteur de mouvement, alarme, enregistrement vidéo en HA sur Raspberry Pi
  7. Système de capteur de mouvement infrarouge DIY pour Raspberry Pi
  8. Capteur de mouvement utilisant Raspberry Pi
  9. Mesures de température par capteur infrarouge