Какая точность у китайских пульсоксиметров в сравнении с профессиональными медицинскими?

Сразу после начала коронавирусной пандемии я заказал на Aliexpress пульсоксиметр для контроля за состоянием легких мамы, работающей в больнице. В начале эпидемии она довольно продолжительное время болела, поэтому заказал на всякий случай.

Модель выбирал довольно долго, остановился на этом варианте за 929 руб.

Сравнение китайского пульсоксиметра с профессиональным медицинским

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

После приобретения периодически появлялись мысли, насколько показания относительно недорогого китайского пульсоксиметра соответствуют профессиональным медицинским пульсоксиметрам. Возможности потестировать у меня не было, так что приходилось «верить на слово».

Возможность сравнить показания прибора с профессиональным медицинским появилась неожиданно. Дядя подхватил, похоже, ковид. Когда я его привез к нам домой и замерил сатурацию оксиметром, то она была ниже приемлемых 92, поэтому вызвали скорую.

Визуально бригада была оснащена пульсоксимтром CMS 60D с ценой порядка 12 тыс., имеющим все необходимые сертификации.

Врач скорой сравнила показания её профессионального медицинского пульсоксиметра с моим китайским. «Китаец» измеряет пульс точно, показатели пульса и SpO2 совпали. Так что вполне можно использовать этот бытовой пульсоксиметр для оценки состояния легких.

Рубрика: IT рецепты | Оставить комментарий

Спасение утопающих — дело рук самих утопающих!?

Туроператоры: «Спасение утопающих — дело рук самих утопающих» / Статьи на  Profi.Travel

Давеча зашел спор с моим дядей, который утверждал, что власть имущие за время карантина угробили здоровье россиянам. В частности, в этом «геноциде» 🙂 он один из пострадавших (очевидцев). Из-за того, что он был ВЫНУЖДЕН в комфорте работать на удаленке и не нужно было пешком ходить на работу, ухудшилось его здоровье, в частности, появилась одышка. Ну, а с психическим, так вообще полный шлак — отсутствие социума, пообщаться не с кем лично.

На мой вопрос, «а че ты не ходил на Щелковский хутор, что в 5 минутах от дома?» было озвучено, что это «не та мотивация». Когда человек ходит на работу — это очень мощная, вынужденная мотивация. Когда то-же время надо потратить на то, чтобы пешком погулять по Щелковскому, то это уже низкопробная мотивация и её недостаточно, чтобы сдвинуть тыльную часть с места.

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

Я работаю на удаленке уже третий год (моё осознанное желание) и чтобы поддерживать здоровье приходится бегать по утрам (зима — не повод отлынивать), плавать в бассейне (с карантином пришлось прекратить), гулять по Щелковскому и пр. Как ни странно, никто из правительства нижегородской области не препятствует этим занятиям. 🙂

И тут встает животрепещущий вопрос, почему на утренних пробежках я вижу очень мало бегунов? Видимо, представители власти стоят у дверей и не пускают сознательных граждан предаваться спортивным утехам. Дозволенный маршрут только один: дом — работа — магазин. Отклонение — попытка к бегству со строжайшими наказаниями. 🙂

Причем, таких танцоров, которым все время че-то мешает, в России преобладающее большинство. Это касается не только вопросов самостоятельного занятия спортом, но и вообще всего, что окружает. Эти танцоры обладают великолепным воображением. Они уверены, что «за рубежом» правительства искренне заботятся о благе населения. Видимо, ходят по домам и выпинывают на пробежку. 🙂 При этом редкие из них бывали заграницей. В лучшем случае в качестве туриста в Турции.

Мне довелось побывать в разных странах. Кое-где я был довольно продолжительное время, но че-то не слышал о такой «поджопной стимуляции». Например, в UK довольно основательно выпивают, не принципиально Англия, Шотландия или Ирландия. Разве что в в Уэльсе не видел людей блюющих на улице. 🙂 Но я туда всего на день заехал. Хотя, не исключаю, что это туристы так развлекаются. Однако, визуально у меня сложилось, что русские — дети в плане выпивки по сравнению с ними. 🙂 Хотя лет 20 назад, ситуация в России была столь же неэстетичной.

Очевидно, правительство UK (в некоторых других, немногим лучше) принуждает граждан участвовать в злоупотреблении алкоголем, искренне заботясь о благосостоянии страны. В Голландии, вообще пошли дальше, чтобы людям было хорошо, можно и травку употреблять. Вот это забота государства, я понимаю. 😉

Осенью выдернул дядю в Крым, навестить его однополчанина. Виктор, имея травмированный позвоночник и находясь на пенсии, как-то находит в себе мотивацию ежедневно ходить пешком, поднимаясь на 5 этаж, забираться в горы, плавать и даже проводить экскурсии для приезжающих, так, для поддержания тонуса.

Дохода ему вполне хватает на пропитание и на пополнение винного погребка, так что такие активности явно не мотивация для него. При этом вид из квартиры на бухту в Новом Свете шикарный, запасы замечательного крымского алкоголя неисчислимы.

За время нашего пребывания мы вряд ли нанесли серьезный ущерб его винному погребку. По всему выходит, у него очень сильная демотивация выдвигаться куда-то. Будучи человеком рациональным он должен все время проводить в квартире, наслаждаясь видом и алкоголем и делая короткие вылазки на рынок для закупки мяса для мангала, который находится там-же, на балконе. 🙂 Но зачем-то он лезет в горы. Смысл?

Ну и, напоследок, про психологию. Желание спихнуть ответственность за свою жизнь на других — это хорошо изученная «позиция жертвы». Что-то делать — это слишком трудозатратно, проще и быстрее обвинить кого-то в своих бедах. Хотя, по-сути, «плохому танцору» всегда что-то мешает для своей реализации, а чтобы стать хорошим танцором нужно что-то делать. Но это уже «хорошая мотивация» нужна, проще найти крайнего. 🙂

Думаю актуальность высказывания «В России две беды: дураки и дороги» все-же снижается. Дороги становятся лучше, а дураков не больше, чем в других странах. А вот «взрослых детей», за которыми нужен постоянный пригляд и стимуляция кем-то, пока что хватает. 🙂

Рубрика: Здоровье, О жизни, Психология | Оставить комментарий

Интеграция Colab и локального Jupyter Notebook

Conda удобна для разработки приложений на Python с использованием JupyterLab/Jupyter Notebook. При работе с нейронками в Google Colab к интерфейсу адаптированного Google-ом Jupyter Notebook привыкаешь и возвращаться в интерфейс обычного Jupyter Notebook уже непривычно. Файл ipynb можно открыть и в Colab и в JupyterLab/Jupyter Notebook.

При сохранении ipynb из Google Colab файл сохраняется на Google Drive. Conda поддерживает работу с GDrive. Файл можно открывать с Google Drive и в Colab и в Conda Jupyter, но хотелось бы еще и интерфейс использовать Colab, при этом работать на локальном ПК, если не нужны GPU.

Настройка интеграции несложная:

Шаг 1: Инсталляция Jupyter

Открываем терминал в Anaconda Navigator

В консоли набираем:

conda install -c conda-forge jupyterlab

or pip:

pip install jupyterlab

Детальную информацию можно найти здесь.

Шаг 2: Установка серверного расширения Jupyter для использования WebSocket для проксирования HTTP трафика

Нужно установить расширение jupyter_http_over_ws командой:

pip install jupyter_http_over_ws

И затем активировать расширение:

jupyter serverextension enable --py jupyter_http_over_ws

Более подробная инфомация о расширении в GitHub.

Шаг 3: Запуск локального сервера Jupyter

Нужно запустить локальный сервер Jupyter который позволит создать WebSocket соединение с фронтенда Colab. Это делается следующей командой:

jupyter notebook --NotebookApp.allow_origin='https://colab.research.google.com' --port=8888 --NotebookApp.port_retries=0

После запуска сервера в терминале будет выведено сообщение c URL с токеном для авторизации в Colab. Нужно скопировать этот URL.

Порт 8888 оказался занят, поэтому пришлось выбрать другой порт: 8008.

Копируем http://localhost:8008/?token=31150bd7ca7da33f5a49afcb1d01c4d39c25d8fcde34e2fa

Шаг 4: Соединение локального Jupyter к Colab

Прееходим в Colab и выбираем «Подключиться к локальной среде выполнения» («Connect to local runtime»).

Или в английской версии Colab:

Вставляем скопированную строчку в поле Backend URL и CONNECT:

Если Colab соединится с локальным backend-ом на ПК/сервере, то проставится галка:

При повторных поключениях достаточно пройти шаг 3 и 4.

Деинсталляция

Для отключения и удаления расширения jupyter_http_over_ws нужно запустить:

jupyter serverextension disable --py jupyter_http_over_ws
pip uninstall jupyter_http_over_ws

Полезные статьи

Рубрика: IT рецепты | Метки: , , | Оставить комментарий

Жизнь, смерть и 2020 год

Телевизионный фильм «Знакомьтесь, Джо Блэк» на канале «ТВ-3» , Владивосток
Кадр из фильма «Знакомьтесь, Джо Блэк»

2020 год стал для меня довольно обильным на смерти. Чтоб там не говорили ковид диссиденты и сторонники теории заговоров, но эта штука работает. Сначала приходили слухи о смертях родителей близких мне людей. Затем «снаряды начали рваться все ближе». От этого становится как-то не по себе.

Пару недель назад схоронили директора по производству компании «Эван» Александра Шибанова (48 лет). Мне очень нравился этот человек. Бывает, встречаешься с кем-то первый раз и за секунды разговора понмаешь, твой это человек или с ним лучше сохранять настороженные отношения. Он ушел быстро. Отвезли в Семашко и там определили 57% поражение легких. Полторы недели болезни, а затем за 3 дня поражение стало 90%, впал в кому и не вернулся. 🙁 Двое детей дошкольного возраста. 🙁 С ним было очень комфортно. Как-то по-семейному комфортно. Коллега из компании с которой работали совместно с ним отметил, что у него было ощущение, что с Александром «как с заботливым отцом».

Вчера коллега из Строительного университета сообщил о том, что умер мой тесть Бодров Валерий Иосифович (1941 г.р.). Мы с ним не общались с развода, больше 6 лет. Видимо, теща запретила, судя по тому как резко он перестал отвечать на мои телефонные звонки. Это ещё один человек к которому симпатия возникла с первых минут знакомства. Добродушный гигант под два метра ростом с которым я, при своих не маленьких 184, чувствовал малышом и открытой улыбкой от которого веяло каким-то приятным теплом. Человек, мнение которого было для меня важно.

Мы много времени проводили в беседах. Он рассказывал про отопление и вентиляцию помещений. Будучи завкафедрой с одноименным названием, очень любил предмет и мог увлеченно рассказывать о нюансах проектирования часами. Мне было интересно его слушать.

Сидели на деревянном настиле дорожки на даче, припекало летнее солнышко и обсуждали технологии отопления и вентиляции. И было в этом диалоге что-то тягуче-расслабленное. Когда никуда не торопишься и наслаждаешься общением с человеком, которого очень уважаешь и любишь. Любишь как деда или отца, хотя, казалось-бы не то, чтобы родня. Просто в какой-то момент времени судьба свела на время.

Я на него обижался после развода, что он сначала согласился встретится со мной переговорить, а потом резко-неожиданно передумал. Догадывался, что это из-за его супруги и мне печально было признавать этот его «прогиб». Для меня это было некоторым предательством. Предательством отношений. Что вот так единомоментно можно взять и прекратить общение. Выбросить десять с лишним лет. У меня это как-то не укладывалось в голове… Когда я потом разбирался с прошлым, практикуя гештальт-терапию на гештальт-интенсиве («масло масляное» 🙂 ), общаясь с психологом, этот момент мне вспомнился. Сильно, видать, засел…

Тогда для меня очень важна была эта беседа. Мне было очень плохо. Нужно было поговорить с близким человеком на территории, которая неожиданно стала для меня чужой. «Свой среди чужих, чужой среди своих». Беседа с тех пор так и не состоялась. Я просто «забил» на попытки встретится, поняв, что это, в общем-то, уже ничего не решит и «все, что ни делается — к лучшему»…, наверное. Либо это просто бегство от того, что сложно разрешить…

В любом случае вспоминать я о Валерии Иосифовиче буду по тем солнечным летним денькам на его даче и беседам. В размеренных разговорах на деревянном настиле или в баньке.

Как сказал мой дядя, узнав о смерти Валерия Иосифовича: «Катя там осиротела». Катя — моя дочь. C Катюшей общение также прервалось с развода. 🙁

Вчера ночью пришла ещё одна печальная новость. Умерла близкая подруга мамы — Людмила Белоконь. Очень шебутная женщина, назвать которую бабушкой или старушкой — язык не поворачивается. Море энергии. С ней у мамы была особая связь. Они много куда ходили вместе: музеи, выставки, кино, театры, кафе и пр. Инициатором чаще всего была Людмила. Они реально «тусовались». Нашлись cхожие по энергетике. И мне от этого было как-то спокойно. Я знал, что когда мама с Людмилой — у них все хорошо.

Мама, узнав о этой новости долго рыдала у меня на груди. Осиротела. 🙁 Я не знал, что делать, с трудом пытаясь понять, как такое могло произойти. Такой живой, шебутной, неугомонный человек, любящий жизнь… 🙁

Она меня временами раздражала, своей напористостью хохлушки, названивая мне на телефон, когда не могла разыскать маму. Та, как обычно, забывала телефон в другой комнате и не слышала. Я отвечал на звонок и если был дома, нес телефон маме, чтобы они договорились куда пойти. Нередко Людмила попадала на совещания и я от этого злился. 🙁

При всех их различиях — они хорошо дополняли друг-друга. Возможно, из-за сходства по многим моментам, бывало, обижались. Больше всего раздражает «зеркало»: «В чужом глазу соринку видно…».

Когда обижались — мирились. Причем, чаще инициатором была Людмила, при всей её напористости, местами граничащей с наглостью, ей хватало мудрости «прогнутся» и первой позвонить. Маме эти первые шаги, «ломка», всегда давались с большим трудом.

У неё были непростые отношения с дочерью и внучкой. Она часто заходила к маме «отвести душу». Меня такие частые визиты временами раздражали, но в то-же время я чувствовал, что ей очень одиноко и тоскливо. Хотя, казалось-бы, должна быть любящая семья, которая во всем поддерживает…

Она так много занималась с внучкой, но близкие почему-то об этом забыли… Я этого не понимал, хотя характер у неё и был «не сахар», но не настолько-же, чтобы маленькую собачонку любить больше, чем родную бабушку и маму. В мире что-то странное творится…

В прошлом врач — она старательно берегла себя, ходила в хирургических перчатках, маске, пользовалась санитайзерами и пр. средствами гигиены. Использовала всякие противовирусные. Регулярно посещала врачей, делала анализы, лечила малейшие отклонения от нормы. Она хотела жить. Однако, от ковида не убереглась. Как сказала её внучка, Иванка, скорее всего это она из школы принесла. Хотя, может это совсем и не так. Это судьба…

Она хорошо готовила и иногда приносила пироги и пр. И любила жареную картошку, которую я делал на скорую руку. Хотя у неё были небольшие проблемы с поджелудочной, она просила маму, чтобы та просила меня пожарить её любимое блюдо. Мне почему-то приятно было для неё готовить. Иногда возникало ощущение, что это моя бабушка, давно ушедшая. Я мог поворчать, но скорее для соблюдения некоторой дистанции, чтобы отношения не переросли совсем в близкие. Насколько мог я поддерживал её, стараясь снять это чувство брошенности. Если честно, то мне будет её тоже не хватать. Возможно, даже очень не хватать. «Своя среди чужих, чужая среди своих». 🙁

Рубрика: О жизни, Отношения, Семья | Метки: | Оставить комментарий

Garmin Fenix 3 с совместимым HRM ремнем KYTO

Часы Garmin Fenix 3 — один из лучших вариантов для отслеживания спортивной нагрузки. Батареи хватает на две недели работы, что очень приятно в сравнении, например, с iPhone часами. Однако, светодиодный детектор пульса все-же не столь точен в определении пульса, как нагрудный HRM ремень. С одной стороны для человека купившего Garmin Fenix 3 цена оригинального ремня за ~6000 руб. может показаться не слишком значительной.

Но мне не хотелось тратится на оригинальный ремень, поэтому я задался целью найти нечто работающее из представленных на Aliexpress. Мне понравился ремень довольно известного китайского производителя фитнес-продуктов KYTO. Ссылка на сайт производителя.

HRM ремень приобретал на официальном сайте производителя на Aliexpress «монитор сердечного ритма KYTO HRM-2809″ по цене около 1300 руб. Выглядит эстетично, удобен в носке.

Ремень поддерживает синхронизацию с устройствами по Bluetooth 4.0 BLE и ANT+, поэтому достаточно универсален как при работе с различными мобильными приложениями на смартфонах, так и при синхронизации с различными фитнес-устройствами. Защита от брызг — IPX5 (Защита от водяных струй. Вода, направляемая на оболочку в виде струй с любого направления, не должна оказывать вредного воздействия.).

Точность устройства достаточно высока, судя по информации со страницы производителя на Aliexperss. Это показывает сравнение сделанное доктором с медицинским электрокардиографом.

Heart-rate-monitor-kyto2809_03
Сравнение Kyto 2809 с электрокардиографом

Для подключния устройства к Fenix 3:

  • Я надел ремень на грудь, слегка смочив.
  • Зашел в Fenix 3 в меню: Settings ->Sensors -> Add new.
  • После детектирования нового сенсора Garmin Fenix 3 нашел устройство HR-4420. Почему такое название — не понятно.
  • Garmin Fenix 3 начал показывать пульс. К сожалению, интерфейс Garmin Fenix 3 не позволяет понять с какого сенсора берется пульс, с ремня или браслета.
  • Снял часы. Поприседал, пульс на Fenix 3 увеличился.

Второй способ понять, что Garmin Fenix 3 подключился к совместимому HRM ремню Kyto — зайти в My Stats -> Lactate Threshold -> Do Guided Test. Если нагрудный ремень не поключен, то будет сообщение «Heart Rate Monitor Required». При подключении ремня-пульсомера надпись пропадает и появляются пункты меню для прохождения теста.

Ремень для определения пульса работает, так что можно не тратится на дорогой Garmin оригинальный HRM нагрудный ремень.

Рубрика: IT рецепты, Здоровье | Оставить комментарий

Снятие показаний с датчика тока 4..20 мА на АЦП ESP32

В предыдущих статьях («Сравнение АЦП (ADC) ADS1115 и ESP32«, «Конвертер тока 4..20 mA в напряжение XY-ITOV«) я подробно описал работу с АЦП ESP32 для замеров с датчиков тока 4..20 мА. В схемотехнике использовался простой вариант подключения сопротивления на вход АЦП ESP32 для замера величины падения напряжения.

Улучшим схему, добавив операционный усилитель перед входом АЦП. У операционного усилителя (ОУ) большое сопротивление, что позволит снизить влияние входного сопротивения АЦП на показания. Ну и дополнительно ОУ защитит вход АЦП от перегрузки по напряжению. Схема a) из учебника. 🙂

Если посмотреть техническую документацию на ESP32, то в ней указано, что при напряжении VDD_A = 3.3V:

  • 0dB ослабление (ADC_ATTEN_DB_0) дает диапазон до 800 mV.
  • 2.5dB ослабление (ADC_ATTEN_DB_2_5) дает диапазон до 1100 mV.
  • 6dB ослабление (ADC_ATTEN_DB_6) дает диапазон до 1350 mV.
  • 11dB ослабление (ADC_ATTEN_DB_11) дает диапазон до 2600 mV.

Из-за характеристики АЦП наиболее точные результаты измерений получаются в более узком диапазоне, чем заявлено в документации. На начальном и конечном участке более или менее линейная характеристика АЦП изгибается и становится более пологой, поэтому измерения очень неточные. В документации указаны рекомендуемые диапазоны измерений:

+----------+------------+--------------------------+
|   SoC    | attenuation|   suggested range (mV)   |
+==========+============+==========================+
|          |  0         |     100 ~ 950            |
|          +------------+--------------------------+
|          |  2.5       |     100 ~ 1250           |
|   ESP32  +------------+--------------------------+
|          |  6         |     150 ~ 1750           |
|          +------------+--------------------------+
|          |  11        |     150 ~ 2450           |
+----------+------------+--------------------------+
|          |  0         |     100 ~ 800            |
|          +------------+--------------------------+
|          |  2.5       |     100 ~ 1100           |
| ESP32-S2 +------------+--------------------------+
|          |  6         |     150 ~ 1350           |
|          +------------+--------------------------+
|          |  11        |     150 ~ 2600           |
+----------+------------+--------------------------+

Рассчитаем операционный усилитель, который при максимальном токе на входе 20 mA даст на выходе напряжение меньше 800 mV. Я буду использовать широко распространенный операционный усилитель LM358D. На Aliexpress этот операционный усилитель идет практически наразвес. 🙂

LM358D для снятия данных с датчиков тока 4..20 мА

R2 возьму 10 кОм. На входе перед операционником для конвертации тока в напряжение поставлю сопротивление 15 Ом. Т.е. при токе в 20 мА на входе будет напряжение V = 0,02A * 15 = 0,3 В

По формуле получаем, что R1 = (Vo/V — 1) * R2 = (0,8В / 0,3В — 1) * 10 000 = 16666,67. Ближайший доступный резистор — 16 кОм. Vo = 0,3 * (1 + 16000/10000) = 0,78 В или 780 mV. То, что напряжение на выходе получилось несколько меньше максимального — это хорошо, поскольку у АЦП ESP32 на концах характеристика становится нелинейной, что ухудшает точность измерений. Результаты симуляции.

Моделирование работы преобразователя тока в напряжение для АЦП ESP32

Для АЦП микроконтроллера STM32 можно взять R1 = 9 кОм, а R2 = 1 кОм, поскольку максимальное напряжение на входе АЦП 3.3 В.

Для защиты операционного усилителя от перегрузки можно использовать специализированный чип MAX14626 (4–20 mA Current Loop Protector). Чип позволяет ограничить максимальный ток 30 mA. Кроме того защищает от неправильного подключения («переплюсовки»).

Пример схемы двухканального входа 4..20 mA.

Двухканальный входной каскад датчиков тока 4..20 mA

Площадки R9/R10 для удобства отладки, чтобы не впаивать на этом этапе относительно дорогой чип MAX14626.

Полезные ссылки

Рубрика: IT рецепты | Метки: , | Оставить комментарий

Преобразователи в RS485 (RTU Modbus)

Нередко при прототипировании электронных устройств возникает необходимость быстро попробовать опробованные решения. Например, при решении промышленных задач сбора данных по длинной проводной линии, когда на неё «вешается» множество сенсоров разумно использовать промышленный интерфейсм RS485 с стандартным протоколом передачи данных Modbus RTU. Китайские производители выпустили множество устройств под этот интерфейс. Список некоторых из них ниже.

Термодатчик SHT30 (I2C) в RS485 (RTU Modbus)

Термодатчик DS18B20 (iWare) по RS485 (Modbus RTU)

Ещё одна ссылка на термодатчик DS18B20 (iWare) по RS485 (Modbus RTU).

Аналоговый термодатчик PT100 по RS485 (Modbus RTU)

Аналоговый термодатчик PT100 по RS485 (Modbus RTU)

Измерение тока 0..25mA/4..20 mA в RS485 (Modbus RTU)

Управление 8 цифровыми каналами по RS485 (Modbus RTU)

4-20MA/0-20MA/0-5V/0-10V по RS485 (Modbus RTU)

7-ми канальный модуль сбора напряжения в RS485 (Modbus RTU)

2-х канальный преобазователь напряжения 0-5 V/ 0-10 V в RS485 (Modbus RTU)

2-х канальный вход 3..30 V и двухканальное реле управляемое по RS485 (Modbus RTU)

2-х канальный вход 3..30 V и двухканальное реле управляемое по RS485 (Modbus RTU)

4-х канальный релейный модуль управляемый по RS485 (Modbus RTU)

4-х канальный релейный модуль управляемый по RS485 (Modbus RTU)

Подробное описание работы с модулем в статье по ссылке.

Рубрика: IT рецепты | Оставить комментарий