Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Отслеживание движения глаз с помощью инфракрасного датчика

Компоненты и расходные материалы

SparkFun Arduino Pro Mini 328 - 5 В / 16 МГц
× 1
Надстройка Adafruit LiIon / LiPoly Backpack для Pro Trinket / ItsyBitsy
× 1
полоса NeoPixel
× 1
Датчик отражения QTR-1A
× 1
Литий-полимерная батарея 3,7 В
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Я использовал инфракрасный датчик, чтобы определять движения глаз и управлять светодиодом.

Светодиодный шар для глаз NeoPixel

Используется светодиодная лента NeoPixel. Светодиод 68 шт.

Светодиод крепится к чаше с помощью двустороннего скотча и подключается в следующем порядке.

Отслеживание движения глаз

Схемы

Датчик

Я использовал два датчика QTR - 1A для отслеживания взгляда. QTR - 1A размещаются на пластиковом листе на расстоянии примерно ширины глаза.

Сенсорная часть и часть микроконтроллера крепились к очкам с помощью зажима соответственно.

Код Arduino

Когда диафрагма приближается к одному датчику, отраженный свет уменьшается, а значение датчика увеличивается. И наоборот, когда диафрагма удаляется, отраженный свет увеличивается, а значение датчика фотоотражателя уменьшается.

Движение зрачка светодиодного глазного яблока вправо и влево определяет увеличение и уменьшение одного значения датчика и контролирует его.

При мигании значения обоих датчиков уменьшаются, поэтому, если значения двух датчиков уменьшаются одновременно, веки светодиодного глазного яблока опускаются.

  #include  #include  #define NUM_SENSORS 2 // количество используемых датчиков #define NUM_SAMPLES_PER_SENSOR 10 // усреднение # define EMITTER_PIN QTR_NO_EMITTER_PIN int iniSensorLorVal;; #define PIN A3Adafruit_NeoPixel led =Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum =24; int pupilNum =12; uint32_t color; int яркость =40; byte eyeColor; int LR =7; логический lid =false; логический lid =false cnt =0; // Черный глаз L&R анимацияint 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}, {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&Rint 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}}; // Анимация морганияint eyelid =0; int eyelidNum [8] ={0, 4,8,16,24,34,44,56}; внутреннее векоLED [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) {// Pewter for (uint16_t i =0; я  0.985 &&rasioR <0.985) {// правильно для (int i =LR; i <12; i ++) {blink (0, i); задержка (40); LR =i; }} else if (rasioL <0.985 &&rasioR> 0.985) {// осталось для (int i =LR; i> 2; i -) {blink (0, i); задержка (40); LR =i; }} else if (lid ==false &&rasioL <0.96 &&rasioR <0.96) {// Мигает близко для (int i =1; i <9; i ++) {blink (i, LR); задержка (40); крышка =правда; }} else if (lid ==true &&rasioL> 0.96 &&rasioR> 0.96) {// Мигает открыто для (int i =8; i> 0; i -) {blink (i, LR); задержка (40); крышка =ложь; }} else if (lid ==false &&rasioL> 0.96 &&rasioR> 0.96) {// нормально // cnt ++; // веко =0; если (LR <=7) {для (int я =LR; я <=7; я ++) {blink (0, я); задержка (40); LR =i; }} else {для (int я =LR; я> =7; я -) {blink (0, я); задержка (40); LR =i; }} Serial.println ("時"); } // Обновление начального значения if (cnt> 10) {iniSensorValL =sensorValL; iniSensorValR =sensorValR; cnt =0; }}  

Операция


Производственный процесс

  1. Что привело нас к использованию натуральных материалов в дизайне продуктов?
  2. Датчик импульсного света
  3. Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
  4. Датчик температуры Python и Raspberry Pi
  5. Датчик отслеживания линии с RPi
  6. Датчик движения, тревога, запись видео в HA на Raspberry Pi
  7. Самодельная инфракрасная система датчиков движения для Raspberry Pi
  8. Датчик движения с использованием Raspberry Pi
  9. Лазерные танки Leap Motion!
  10. Измерение температуры инфракрасным датчиком