Активная работа форума приостановлена до сборки новой партии онейрографов. Очередь переполнена, прием заказов приостановлен.
Получить информационное письмо о возобновлении приёма заказов:

Дневник Александра Коблова

Ведение дневника — наиболее полезная практика для стимуляции ОС
Ответить
Аватара пользователя
Александр Коблов
Сообщения: 3
Зарегистрирован: 30/04/2020, 15:25
Благодарил (а): 20 раз

Сообщение Александр Коблов »

Создание приборов для осознанных сновидений.


Оптические датчики измерения расстояния (proximity sensors) можно использовать для регистрации движения закрытого глаза во время сна. Они состоят из излучателя инфракрасного света и из фотоприемника. По интенсивности яркости отраженного света, определяется удаленность - расстояние в неабсолютных значениях. Интенсивность отраженного света кроме расстояния зависит и от цвета отражаемой поверхности. Датчики в основном одноканальные, т.е. могут измерять расстояние над собой, до ближайшего объекта, обладающего отражающей способностью, на расстоянии от 0 до 200мм. Чем дальше нужно измерять, тем сильнее нужно подсвечивать ИК светодиодом. На картинке ниже датчик VCNL3020, он имеет два окна, одно светодиода, второе фотоприемника.
изображение.png
изображение.png (52.61 КБ) 18950 просмотров
изображение.png
изображение.png (47.26 КБ) 18950 просмотров
Основное их достоинство в низком энергопотреблении. Инфракрасные светодиоды при своей постоянной работе потребляют достаточно много энергии, а АЦП, i2c интерфейс и остальные элементы датчика по сравнению с ним потребляют незначительно. Экономия достигается за счет того что ИК светодиод подсветки включается примерно на 600 микросекунд для измерения расстояния, а затем тухнет, и так при каждом измерении, ток при этом подается на светодиод большой, около 150-200 миллиампер (регулируется от 5 до 200мА). Например, при измерении расстояния с частотой 64Гц, суммарное время свечения светодиода в секунду составит 64*600=38400мкс, или 38 мс. В одной секунде 1000 мс из которых светодиод светит 38 мс. Но хоть на диаграмме указан широкий угол захвата датчика, по сути он измеряет расстояние только строго над собой. И при смещении маски с датчиком во время сна относительно центра глаза, данные будут искажены.

На картинках ниже показано что глаз имеет выпуклость в центре, там где расположен зрачок, и двигаясь под веком, расстояние от века до датчика меняется.
изображение.png
изображение.png (85.76 КБ) 18950 просмотров
движение->
изображение.png
изображение.png (83.69 КБ) 18950 просмотров
Чтобы это предотвратить смещение датчика относительно центра глаза, нужна либо жесткая фиксация маски с датчиком на лице, что не всегда комфортно либо расположить несколько датчиков над глазом, в виде матрицы или другим способом. Чтобы при смещении, один из датчиков располагался над центром глаза.

Например, как в этом самодельном датчике из 4х сенсоров подключенных к через усилитель к PIC 18 микроконтроллеру:
изображение.png
изображение.png (201.58 КБ) 18950 просмотров


Но при его реализации мне не удалось добиться низкого энергопотребления и высокой чувствительности из-за низкого разрешением АЦП в 10bit. Поэтому я перешел на промышленные датчики типа vcnl3020, у которых разрешение АЦП 16bit.

Среди промышленных есть датчики расстояния с распознаванием движений (gesture sensors), по сути это те же самые датчики расстояния, но имеющие несколько каналов измерения. Они бывают с совмещенными светодиодом и фотоприемниками в одном корпусе например APDS9960. Но у них узкая диаграмма направленности. А нужно более широкую. Поэтому производители сделали датчики с внешними светодиодами подсветки, и их можно разместить на удалении от датчика, тем самым расширив область захвата движений датчиком. Сам датчик выглядит так:
изображение.png
изображение.png (32.53 КБ) 18950 просмотров
изображение.png
изображение.png (106.29 КБ) 18950 просмотров
изображение.png
изображение.png (209.96 КБ) 18950 просмотров
По периметру вокруг него нужно разместить три светодиода подсветки, вот пример отладочной платы vcnl4035x01-sb:
изображение.png
изображение.png (229.97 КБ) 18950 просмотров
На ней видно датчик в центре и три инфракрасных светодиода подсветки. Минусом данной платы является то, что на ней установлены ИК светодиоды с длинной волны 850нм, а это свечение заметно глазу как темно красное. Но его не видно через закрытое веко. Более предпочтительным является использование светодиодов с длинной волны 940нм, это излучение вообще не видно глазом. В документации на VCNL4035 допускается использование светодиодов на 940нм, но тогда снизится чувствительность, согласно диаграмме на 50%.
изображение.png
изображение.png (70.08 КБ) 18950 просмотров
Последний раз редактировалось Александр Коблов 18/06/2020, 16:27, всего редактировалось 1 раз.

Аватара пользователя
Александр Коблов
Сообщения: 3
Зарегистрирован: 30/04/2020, 15:25
Благодарил (а): 20 раз

Сообщение Александр Коблов »

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

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

В качестве испытательного макета была выбрана отладочная ардуино совместимая плата микроконтроллера nrf52832:
изображение.png
изображение.png (428.53 КБ) 18949 просмотров

Датчик VCNL4035 был закреплен на маску:
изображение.png
изображение.png (325.83 КБ) 18949 просмотров

Плату датчика пришлось доработать, удалив один транзистор и несколько резисторов, и установил перемычки, чтобы все 3 канала работали на одинаковое расстояние. По умолчанию в этой плате первый канал запитан через транзистор для увеличения дальности обнаружения движения. Это достигалось за счет более яркого свечения одного светодиода подсветки. Теперь три канала равны:
изображение.png
изображение.png (501.6 КБ) 18949 просмотров

Написал в среде Ардуино драйвер для инициализации, считывания, и передачи в компьютер данных с датчика VCNL4035, фрагмент:
изображение.png
изображение.png (189.83 КБ) 18949 просмотров

Видео отображения сырых данных:

Написал программу для визуализации сырых данных полученных с датчика vcnl4035:
Движение глаз влево-вправо:
изображение.png
изображение.png (206.87 КБ) 18949 просмотров

Движение глаз вверх-вниз:
изображение.png
изображение.png (185.64 КБ) 18949 просмотров

Беспорядочное движение глаз:
изображение.png
изображение.png (209.84 КБ) 18949 просмотров

Держу в центре, потом вправо до упора, держу там, потом возвращаю в центр:
изображение.png
изображение.png (195.25 КБ) 18949 просмотров


Для определения местоположения точки (пальца или глаза) внутри треугольника из трех светодиодов подсветки, было реализовано два алгоритма:
изображение.png
изображение.png (197.77 КБ) 18949 просмотров

Первый, через трегонометрические функции, парно строились окружности в соответствии разности между двумя соседними светодиодами, точка касания окружностей является вершиной маленького треугольника, центр тяжести которого отображается черной точкой.
изображение.png
изображение.png (87.71 КБ) 18949 просмотров

Второй, по х просто через разность между нижними двумя светодиодами, а по у разность двух нижних по отношению к верхнему.

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

Первый способ на скриншоте отображен снизу (три точки), а второй сверху (синий глаз).

На видео видно как это отображается при движении пальцем над датчиком:


Аватара пользователя
Sinin
Сообщения: 508
Зарегистрирован: 30/04/2020, 1:55
Благодарил (а): 196 раз
Поблагодарили: 757 раз

Сообщение Sinin »

Всё это очень интересно и полезно. Спасибо. Теперь осталось записать ночные данные. Сложность будет, я так думаю, с фиксированием положения датчика относительно центра глаза. Но если это удастся, то мы получаем новый качественный инструмент для работы с сигналами. И бойца с гипнограммами. Потому что по этим данным, если удастся их записать, вполне можно стадировать БДГ и первую стадию. Третью и вторую, конечно, мы не выделим, как и тоническую БДГ. Но тем не менее это уже очень ценно и практически применимо сразу по нескольким направлениям.

:thumbup:

Я пожалуй тоже приобрету эту плату для экспериментов и сопряжения с онейрографом. :solder:

Ответить