Создание приборов для осознанных сновидений.
Оптические датчики измерения расстояния (proximity sensors) можно использовать для регистрации движения закрытого глаза во время сна. Они состоят из излучателя инфракрасного света и из фотоприемника. По интенсивности яркости отраженного света, определяется удаленность - расстояние в неабсолютных значениях. Интенсивность отраженного света кроме расстояния зависит и от цвета отражаемой поверхности. Датчики в основном одноканальные, т.е. могут измерять расстояние над собой, до ближайшего объекта, обладающего отражающей способностью, на расстоянии от 0 до 200мм. Чем дальше нужно измерять, тем сильнее нужно подсвечивать ИК светодиодом. На картинке ниже датчик VCNL3020, он имеет два окна, одно светодиода, второе фотоприемника.
Основное их достоинство в низком энергопотреблении. Инфракрасные светодиоды при своей постоянной работе потребляют достаточно много энергии, а АЦП, i2c интерфейс и остальные элементы датчика по сравнению с ним потребляют незначительно. Экономия достигается за счет того что ИК светодиод подсветки включается примерно на 600 микросекунд для измерения расстояния, а затем тухнет, и так при каждом измерении, ток при этом подается на светодиод большой, около 150-200 миллиампер (регулируется от 5 до 200мА). Например, при измерении расстояния с частотой 64Гц, суммарное время свечения светодиода в секунду составит 64*600=38400мкс, или 38 мс. В одной секунде 1000 мс из которых светодиод светит 38 мс. Но хоть на диаграмме указан широкий угол захвата датчика, по сути он измеряет расстояние только строго над собой. И при смещении маски с датчиком во время сна относительно центра глаза, данные будут искажены.
На картинках ниже показано что глаз имеет выпуклость в центре, там где расположен зрачок, и двигаясь под веком, расстояние от века до датчика меняется.
движение->
Чтобы это предотвратить смещение датчика относительно центра глаза, нужна либо жесткая фиксация маски с датчиком на лице, что не всегда комфортно либо расположить несколько датчиков над глазом, в виде матрицы или другим способом. Чтобы при смещении, один из датчиков располагался над центром глаза.
Например, как в этом самодельном датчике из 4х сенсоров подключенных к через усилитель к PIC 18 микроконтроллеру:
Но при его реализации мне не удалось добиться низкого энергопотребления и высокой чувствительности из-за низкого разрешением АЦП в 10bit. Поэтому я перешел на промышленные датчики типа vcnl3020, у которых разрешение АЦП 16bit.
Среди промышленных есть датчики расстояния с распознаванием движений (gesture sensors), по сути это те же самые датчики расстояния, но имеющие несколько каналов измерения. Они бывают с совмещенными светодиодом и фотоприемниками в одном корпусе например APDS9960. Но у них узкая диаграмма направленности. А нужно более широкую. Поэтому производители сделали датчики с внешними светодиодами подсветки, и их можно разместить на удалении от датчика, тем самым расширив область захвата движений датчиком. Сам датчик выглядит так:
По периметру вокруг него нужно разместить три светодиода подсветки, вот пример отладочной платы vcnl4035x01-sb:
На ней видно датчик в центре и три инфракрасных светодиода подсветки. Минусом данной платы является то, что на ней установлены ИК светодиоды с длинной волны 850нм, а это свечение заметно глазу как темно красное. Но его не видно через закрытое веко. Более предпочтительным является использование светодиодов с длинной волны 940нм, это излучение вообще не видно глазом. В документации на VCNL4035 допускается использование светодиодов на 940нм, но тогда снизится чувствительность, согласно диаграмме на 50%.
Активная работа форума приостановлена до сборки новой партии онейрографов.
Очередь переполнена, прием заказов приостановлен.
Получить информационное письмо о возобновлении приёма заказов:
Получить информационное письмо о возобновлении приёма заказов:
Дневник Александра Коблова
- Александр Коблов
- Сообщения: 3
- Зарегистрирован: 30/04/2020, 15:25
- Благодарил (а): 20 раз
Последний раз редактировалось Александр Коблов 18/06/2020, 16:27, всего редактировалось 1 раз.
- Александр Коблов
- Сообщения: 3
- Зарегистрирован: 30/04/2020, 15:25
- Благодарил (а): 20 раз
Соответственно придется увеличивать время подсветки и энергопотребление. Тут еще придется решить что важнее, т.к. прибор должен иметь питание от ограниченного заряда аккумулятора.
Три канала кроме расширения области видимости могут предоставить дополнительную возможность в виде распознавания направления движения взгляда, при условии достаточно точного расположения над глазом. Таким образом, чтобы центр глаза находился в центре треугольника из светодиодов.
В качестве испытательного макета была выбрана отладочная ардуино совместимая плата микроконтроллера nrf52832:
Датчик VCNL4035 был закреплен на маску:
Плату датчика пришлось доработать, удалив один транзистор и несколько резисторов, и установил перемычки, чтобы все 3 канала работали на одинаковое расстояние. По умолчанию в этой плате первый канал запитан через транзистор для увеличения дальности обнаружения движения. Это достигалось за счет более яркого свечения одного светодиода подсветки. Теперь три канала равны:
Написал в среде Ардуино драйвер для инициализации, считывания, и передачи в компьютер данных с датчика VCNL4035, фрагмент:
Видео отображения сырых данных:
Написал программу для визуализации сырых данных полученных с датчика vcnl4035:
Движение глаз влево-вправо:
Движение глаз вверх-вниз:
Беспорядочное движение глаз:
Держу в центре, потом вправо до упора, держу там, потом возвращаю в центр:
Для определения местоположения точки (пальца или глаза) внутри треугольника из трех светодиодов подсветки, было реализовано два алгоритма:
Первый, через трегонометрические функции, парно строились окружности в соответствии разности между двумя соседними светодиодами, точка касания окружностей является вершиной маленького треугольника, центр тяжести которого отображается черной точкой.
Второй, по х просто через разность между нижними двумя светодиодами, а по у разность двух нижних по отношению к верхнему.
Второй способ математически выполнить гораздо легче, и он показал такой же результат как и первый.
Первый способ на скриншоте отображен снизу (три точки), а второй сверху (синий глаз).
На видео видно как это отображается при движении пальцем над датчиком:
Три канала кроме расширения области видимости могут предоставить дополнительную возможность в виде распознавания направления движения взгляда, при условии достаточно точного расположения над глазом. Таким образом, чтобы центр глаза находился в центре треугольника из светодиодов.
В качестве испытательного макета была выбрана отладочная ардуино совместимая плата микроконтроллера nrf52832:
Датчик VCNL4035 был закреплен на маску:
Плату датчика пришлось доработать, удалив один транзистор и несколько резисторов, и установил перемычки, чтобы все 3 канала работали на одинаковое расстояние. По умолчанию в этой плате первый канал запитан через транзистор для увеличения дальности обнаружения движения. Это достигалось за счет более яркого свечения одного светодиода подсветки. Теперь три канала равны:
Написал в среде Ардуино драйвер для инициализации, считывания, и передачи в компьютер данных с датчика VCNL4035, фрагмент:
Видео отображения сырых данных:
Написал программу для визуализации сырых данных полученных с датчика vcnl4035:
Движение глаз влево-вправо:
Движение глаз вверх-вниз:
Беспорядочное движение глаз:
Держу в центре, потом вправо до упора, держу там, потом возвращаю в центр:
Для определения местоположения точки (пальца или глаза) внутри треугольника из трех светодиодов подсветки, было реализовано два алгоритма:
Первый, через трегонометрические функции, парно строились окружности в соответствии разности между двумя соседними светодиодами, точка касания окружностей является вершиной маленького треугольника, центр тяжести которого отображается черной точкой.
Второй, по х просто через разность между нижними двумя светодиодами, а по у разность двух нижних по отношению к верхнему.
Второй способ математически выполнить гораздо легче, и он показал такой же результат как и первый.
Первый способ на скриншоте отображен снизу (три точки), а второй сверху (синий глаз).
На видео видно как это отображается при движении пальцем над датчиком:
- Sinin
- Сообщения: 508
- Зарегистрирован: 30/04/2020, 1:55
- Благодарил (а): 196 раз
- Поблагодарили: 757 раз
Всё это очень интересно и полезно. Спасибо. Теперь осталось записать ночные данные. Сложность будет, я так думаю, с фиксированием положения датчика относительно центра глаза. Но если это удастся, то мы получаем новый качественный инструмент для работы с сигналами. И бойца с гипнограммами. Потому что по этим данным, если удастся их записать, вполне можно стадировать БДГ и первую стадию. Третью и вторую, конечно, мы не выделим, как и тоническую БДГ. Но тем не менее это уже очень ценно и практически применимо сразу по нескольким направлениям.
Я пожалуй тоже приобрету эту плату для экспериментов и сопряжения с онейрографом.
Я пожалуй тоже приобрету эту плату для экспериментов и сопряжения с онейрографом.