" title="Написать письмо">Написать письмо
Донаты на карту ВТБ:
2200 4002 2461 6363

Статистика

Пользователи : 1
Статьи : 2400
Просмотры материалов : 9328987
 
Телеметрия дыхания во сне (30.03.2026). Печать E-mail
2026 - Март
30.03.2026 13:50
Save & Share
Использовал датчик газа и кислородную маску для создания конструкции анализа дыхания во сне (обнаружение апноэ: как провал вниз сигнала датчика CO2). Наладив сохранение телеметрии на SD-карту, используя парадигму универсальной схемы для датчиков, - удалось собрать приблуду и заснуть с ней ночью. Телеметрия снята почти корректно, но оформить как прибор эту приблуду мешает маленький медицинский нюанс (похожий нюанс уже испортил телеметрию пульса - создание медицинских приборов это писец).



Механические моменты сборки конструкции и программирование:
- для датчика используется аналоговый вход Arduino - можно позволить любую адекватную длину провода, а не как метр с I2C. Подтягивающий резистор 82кОм на GND - и точность съёма резко увеличивается, отпадает необходимость создания фильтра для сглаживания постоянно пляшущих показаний. Единственное, провод питания должен обеспечивать 200мА: датчик греется и жрёт много;
- модуль работы с SD расположил прямо рядом с USB-питанием 5В, используя IDC-кабель ~90см. Универсальные 5В ниже необходимого минимума для Arduino - однако хватает для выполнения задачи;
- использовал micros, как более точную относительно millis, - но тоже зря: используется Delay в исходниках, а его точность - как у millis. Телеметрия: бинарная, 2Б значение, 4Б время. Сохраняется как int и float - но всё сохраняется как uint8_t (языками программирования читаются как short int и int). Использовал Borland C++ Builder v.6.0, позаимствовав исходники из другого проекта;
- эластичный бинт приклеил к маске снаружи, на суперклей, с обжимом крокодилами (которые потом пришлось аккуратно отдирать). Скорее всего, ошибка: надо было армированной лентой зафиксировать, а потом часть отклеить и отрезать. Держится, даже если тянуть несильно.




Итак, маску на лицо, проверка отсутствия гипоксии дыханием минут 5 - и баиньки:
- во время последнего дрочева платформы внутри бочонка - оторвался наружный светодиод. Оказалось, некритично: при снятии показаний моргает встроенный светодиод на платформе - бочонок прекрасно слабо светится ночью, и возможно оценить частоту моргания светодиода как запись информации с датчика;
- на маске не образуется конденсат и не стекает на лицо;
- но спустя 1.5ч организм выводит из сна. Апноэ? Хуже. Носопырки напрочь высохли. Скорее всего, т.к. датчик нагревается, воздух постепенно сушит ноздри (хотя в краткосрочной перспективе вообще ничего не ощущаешь). И куда его перемещать, чтобы длительно снимать показания, - фиг знает. Можно попробовать на суперклей к одной из боковых отверстий маски или как-то сделать на расстоянии от центрального отверстия маски, чтобы не смещать центр тяжести маски.

Анализ телеметрии кратковременного сна:
- требуется автоматически оценивать повторяемость показаний датчика на протяжение всего времени телеметрии. То есть, соседние показания 400 и 420 - это не 2 числа, а 21. Самое меньшее по повторяемости показание - увеличивается шанс найти апноэ мгновенно;
- анализ резкого изменения показания углекислого газа за определённый период времени. Требуется как число указания этого периода, так и автоматический поиск такого резкого изменения.

Но до этого всего дело не дошло:
- при нажатии на экстренную кнопку - micros() сбивалась и писала какую-то дичь;
- поиск дичи в HEX-редакторе HxD - временно не давал результата из-за бага: поиск позиции ведётся по HEX-значению (DEC сбрасывается обратно при каждом поиске);
- в интернете есть описание такой аппаратной ситуации: нужно цифровой канал через INPUT_PULLUP подключать. Но оказалось всё анальнее и безумно логично.

File.write((uint8_t*)micros(), sizeof(float)); - не равно const float fTime = micros(); + oFile.write((uint8_t*)&fTime, sizeof(float));.

К этому добавились баги TChart билдера - поэтому вот пока вам кусочек дыхания; а я пошёл спать - а потом в Qt (или вообще небинарно в Excel)...


Но интуиция подсказывала, что что-то не так. Мне бы такую интуицию на бирже: удалось скорректировать телеметрию и без серьёзных багов вывести её часть на графике.


Уменьшение углекислоты говорит об уменьшении объёма дыхания. Ну а провал - полный пздц: здравствуй, самое скрытое апноэ (без пробуждения). Остаётся починить исходники, датчик на маске переклеить - и словить на ночной телеметрии, надеюсь, только одну такую штуку.


А потом - отвечать на вопрос "почему"...

График, как минимум, говорит о том, что теперь пожизненно нельзя пить успокоительное и снотворное. Иначе организм может просто не запуститься - смерть во сне.
Обновлено ( 30.03.2026 20:11 )
 
 

Последние новости


©2008-2026. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).

Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год. Политика сайта: написать статью, а потом обновлять ее много лет.
Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
Top.Mail.Ru