Как почувствовать, когда кто-то спит с моим Arduino?

Не обращайте внимания на сталкерский заголовок.

Я подумываю о создании проекта с Arduino, который мог бы определять ваши привычки сна, когда вы спите и сколько вы спите. Было бы удобно, чтобы не приходилось включать/выключать его на ночь; он должен знать, как это сделать.

Некоторые идеи, которые у меня есть:

  • Датчик движения
  • Модель дыхания (если бы микрофон Arduino мог это определить... Я бы удивился, если бы смог)
  • Часы RTC могут помочь определить, сейчас полночь. Обычно Стив не спит в это время по пятницам. Вероятно, он сейчас не спит. Он не всегда сможет вам помочь, но вы можете попробовать таким образом получить более точные результаты.

Как я могу это сделать? (Дополнительные баллы за какой-то алгоритм, который может отличить дремоту от глубокого сна.)

, 👍16

Обсуждение

Вероятно, один из способов определить состояние сна человека — это измерить сердечный пульс и определить, когда пульс опускается ниже порогового значения (различного для каждого человека, но об этом может «угадать» система после нескольких дней работы). Благодаря этому вы даже можете увидеть, были ли у человека кошмары (пульс учащается):-) Это навязчиво (датчик пульса), но это также единственный способ узнать о сне ОДНОГО человека, когда двое находятся в одной комнате., @jfpoilpret

Датчик мозговых волн Neurosky EEG, очевидно, отлично работает с Arduino. Измерьте частоту. До 4 Гц --> медленный сон. До 8-9 Гц ---> быстрый сон. От 8-9 Гц до 16 Гц ---> бодрствует, но глаза закрыты и расслаблены. Выше этого ---> проснулся., @Damon


1 ответ


Лучший ответ:

13

Я действительно сделал что-то подобное, используя PIR-датчик движения.

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

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

Здесь мы видим, что примерно через 30 минут движение тела стало минимальным. Это говорит о том, что в это время я находился в более глубокой стадии сна.

Скачок на 250 минуте (около 4:30 утра) — это когда я проснулся только для того, чтобы понимаю, что могу поспать еще на пару часов. Я помню время было 4:38, когда я посмотрел на часы и уже смотрел на них. Этот означает, что я повернулся лицом к часам, но на самом деле «проснулся» 8 минут спустя, чтобы увидеть время, а затем обернулся (обозначено более коротким пиком на уровне 265).

Данные показывают, что я не мог хорошо спать (по сравнению с период времени от 30 до 240 минут) после однократного пробуждения и наконец встал в 400 минут (7:00 утра), когда я все выключил.

Вот пара сообщений из моего блога, в которых содержится гораздо больше информации.

  • Движения тела во время сна
  • Оборудование интеллектуального будильника
,

Спасибо за ссылки в вашем блоге. У меня есть один вопрос: как вы решаете, что кто-то не читает книгу и не смотрит телевизор, пока что-то делает, лежа на кровати? Это хорошие данные. Вам нужно было выключать проект, когда вы ложились спать?, @Anonymous Penguin

У меня будильник, поэтому ему нужно обнаруживать движения только за полчаса до того, как сработает будильник. Так что это единственный момент, который имеет значение. Ночной график предназначен только для сбора данных, чтобы выяснить, сколько движений/кнопок считается «легким сном, легким пробуждением»., @sachleen

есть ли у вас какие-либо предложения о том, как определить, находится ли он в режиме ожидания или в режиме сна? Возможно, мне придется внести некоторые свои собственные данные..., @Anonymous Penguin

Я бы посмотрел, как выглядит график зависимости сна от различных видов деятельности. Соотнесите это со временем суток (в 3 часа ночи скорее сон, чем чтение). Трудно сказать, не собрав много данных., @sachleen

Чтобы помочь вам в поиске в Google, этот метод называется актиграфией. В Википедии есть достойное введение. Некоторая обработка сигнала, по-видимому, необходима, но ничего слишком сложного или выходящего за рамки возможностей Arduino. Чтобы классифицировать стадии сна (в том числе бодрствования), я бы посмотрел научные статьи по этой теме. Нужно решить, хотите ли вы разместить датчики на своей кровати (легко, с низкой точностью) или на запястье (сложнее, точнее, и вы можете измерять температуру тела, окружающее освещение и проводимость кожи)., @jjm

Я также ищу, как это сделать, и это единственная соответствующая ссылка, которую я смог найти. К сожалению, ссылки на блог устарели. Если бы автор мог объяснить, как проводились измерения. Например, были ли проведены цифровые или аналоговые измерения PIR-датчика?, @Subhani Minhas

@SubhaniMinhas У меня нет исходного кода, но вы можете использовать [машину обратного пути](https://web.archive.org/web/20191115000000*/http://blog.sachleen.com/posts/1353217790/ будильник-оборудование/), чтобы прочитать ссылки на архивные копии. Чтобы ответить на ваш конкретный вопрос, измерения были проведены с помощью сценария Windows Powershell, который записывал временную метку в файл каждый раз, когда последовательный порт Arduino передавал данные. [ПИР-датчик](https://www.sparkfun.com/products/13285) — это цифровой датчик, который меняет положение штифта при обнаружении движения. Он подсчитывает количество движений за период времени., @sachleen