Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

46

Измерение пульса с помощью пьезоэлектрического датчика

С вами Джонни Кэтсвилл и сегодня мы будем фиксировать пульс человека с помощью пьезоэлемента 😺

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

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

Когда-то я получил этих красавцев в подарок на али, но так и не использовал для автоуровня 3d принтера, и они пролежали у меня несколько месяцев.

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

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

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

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

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

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

Безусловно, это говнокод! Но это работает!

Теперь о ложке дегтя. Это прежде всего proof of concept, тоесть доказательство практической осуществимости, и алгоритм который я вам сейчас показал — очень и очень плохой, т.к. имеет предрасположенность к ложным срабатываниям, или к несрабатыванию вообще. Это потрясающая технология с большими перспективами, но ей нужна серьезная обработка сигналов с датчика.

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

Показать полностью 9

Реальный световой меч и бластер из Star Wars на ардуино

Всем привет!

Сегодня смотрим потрясающее видео, про световой меч и лазерный бластер, по мотивам фильма "Звездные войны" - "Star Wars". Удивительно, но лазерный луч можно сделать любой длинны или вообще остановить отрезок луча. Для этого нужно только ардуинку. Не верите, тогда смотрите видео и напишите в комментариях как я это смог реализовать?

Подписывайтесь, что бы не пропустить видео о том как это работает

Показать полностью
119

Часы на ИВ-6 и Atmega88p

Ещё одни часы на ВЛИ в безмерную копилку уже существующих. Схема аналогична всем другим уже существующим. Использован преобразователь на КФ1211 для питания сеток и сегментов, также для питания нитей накала (соединены последовательно). Рулит всем Atmega88p, можно заменит на Atmega168, Atmega328, возможно, на Atmega8 тоже будет работать без изменения скетча. В качестве часов реального времени стоит DS3231. Питание 5 вольт подключается через micro usb разъем.

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

Знаю что не совсем в ту ветку пишу, но более подходящей не нашел.
Архив с платой и скетчем https://drive.google.com/file/d/1psb3XmOIOJmYB2F9mVCHGZzAs3L...
Планирую переделать плату с индикаторами, вместо обычных светодиодов поставить адресные, и заказать у китайцев (изготовление платы для индикаторов не самое простое дело). Если кто-нибудь готов повторить такие часы и готов вписаться в заказ плат отпишитесь в коменты. Далее планирую корпус сделать, чертежи естественно будут в общем доступе

Показать полностью 3
60

Как я выводил информер в камеру Hikvision

Длиннопост-кулстори о марафоне разработчика длиной почти в сутки.

ВОРНИНГ! Пост не претендует на звание точной инструкции, хотя и содержит некоторые полезные указания ближе к концу. Ну и как всегда - автор не несет ответственности за Ваши действия и возможный ущерб.

Поступило техническое задание: придумать, как бы вывести текст на изображение с камеры. В идеале - вывести информер для отображения температуры, получаемой с погодной станции Народного мониторинга Dozor Meteo. При необходимости изменять прошивку станции можно, но лучше нельзя. Для экспериментов была выдана камера Hikvision DS-2CD2012, но, думаю, у всех творений этой фирмы одинаковый API, поэтому описанный способ применим ко всем камерам этого бренда.
Да, кстати говоря, у большинства камер видеонаблюдения (у Hikvision тоже, разумеется) по умолчанию доступен функционал OSD - наложения текстовых плашек на изображение. Например, на снимке ниже видно, что накладывается дата и текст. И на этой же камере необходимо вывести значение термометра.

Именно таким путём пошел участник одного форума. В теме опубликован скрипт, интегрируемый в систему управления умным домом MajorDoMo, который через штатный API изменял значения полей OSD камеры. На этом же форуме я нашел официальную документацию Hikvision, но о ней позже.

Буквально сразу после постановки задачи в голову пришла простая мысль - написать php-скрипт, который будет формировать пакет, включая в него значение температуры, допустим, из GET-запроса, и отправлять его в камеру, к которой уже проброшены нужные порты. Скрипт этот можно разместить на хостинге, где у меня крутится сайт dubos.tech. В тот момент у меня был только доступ к FTP сервера, поэтому я не видел иных вариантов и сразу взялся это реализовывать. Сразу скажу, что путь этот - тупиковый.

В официальной доке написано, что в камеру нужно передать HTTP PUT запрос, в теле которого должен быть XML-файл с информацией. В итоге я весь вечер изучал вопрос отправки PUT запросов через PHP curl. Все варианты заканчивались ответом камеры "3 - Device Error". Да, именно к PHP у меня претензий нет, ибо составленный вручную PUT запрос тоже не прошел.

Практически отчаявшись я, руководствуясь наработками разработчика joonhshin, написал скрипт, который по расписанию (статья про cron для начинающих, которая мне очень помогла) запускался на Raspberry Pi. Этот скрипт я планировал перенести на один из роутеров, которые, как принято, работают круглосуточно и могут без особого труда взять на себя эту обязанность.

Честно говоря, идея с роутерами тоже не оправдала себя. В наличии были два Mikrotik'а, ZyXEL Keenetic и пара дешёвых TP-Link с прошивкой OpenWRT. Язык скриптования RouterOS от Mikrotik был мне чужд, поэтому этот вариант отпал почти сразу. Роутеры на OpenWRT тоже "пролетели", поскольку на них банально не хватило места для установки линуксовой утилиты curl. А мой любимый Keenetic тоже остался не у дел, поскольку в штатной прошивке нет полноценного доступа к SSH-консоли.

К счастью, примерно в это время я получил доступ к SSH-консоли сервера хостинга. Линуксоиды знают, что если у человека есть доступ к консоли linux, у человека есть доступ ко всему. Теперь можно модифицировать скрипт, чтобы он забирал данные с сервера Народного мониторинга и выводил их на камеру.

Обратите внимание, что значения posX и posY обязательно должны быть кратны 16 (например, 0, 16, 32, 48 и т.д.)

Для работы скрипта нужно зарегистрировать на сайте Народного мониторинга приложение (Профиль - Мои Приложения - Новый ключ) и ввести ключ в строку key=... (без скобок и кавычек). В uuid=... ввести любой md5-хэш - это необходимо для работы API.

Далее нужно получить ID датчика. Первым делом нужно открыть окошко устройства на сайте Народного мониторинга. В строке с интересующим нас датчиком есть строка "S*****". Число после буквы S - и есть искомый ID. (Занимательно, что такой просто способ я обнаружил только при написании статьи, раньше же пользовался более сложным вариантом).

В последней строке скрипта, понятно, указываются данные для доступа к камере.

Чтобы скрипт запускался автоматически через равные промежутки времени, нужно сконфигурировать планировщик cron, но об этом написано множество статей, учитывающих специфику для разных систем. Обратите внимание, что API Народного мониторинга не позволяет осуществлять запросы чаще, чем 1 раз в минуту. Советую ставить интервал от 5 минут, поскольку большинство датчиков (в том числе и Dozor Meteo) отправляют показания с такой периодичностью или реже.

Таким образом, задание практически выполнено. Сегодня на объекте, где нужно измерять температуру, установили новую погодную станцию, поэтому примерно через сутки (когда сервис мониторинга одобрит новое устройство) я установлю информер на рабочую камеру. Посмотреть результат работы можно будет на сайте koktebel.top.

Показать полностью 4
118

Борьба с bluetooth модулями HC-05 и HC-06 + Arduino

Много букв, постарался чуток с юмором. Записки начинающего ардуинщика.
Понадобилось мне для одной самоделки с arduino прикрутить bluetooth. Погуглив, выбор пал на модули bluetooth HC-06. Купил, успешно прикрутил, но захотелось мне сменить имя и пароль. В общем то в гугле валом инфы по этому поводу. Да не тут то было. На youtube и в блогах у людей все прекрасно, меняют имена и пароли, смотрят версию, меняют скорость, а на деле не работает!
Не воспринимает AT команды ни HC-05 и HC-06 через ардуину.
Сначала я купил HC-06, потом купил HC-05, перепробовал многое, описанное в статьях.
В итоге понял что мои китайские ардуинки не работают правильно, а именно RX и TX не передается.
Это можно понять замкнув их на ардуине и попробовать в мониторе порта отослать что угодно, при замкнутых  RX и TX отосланное вернется. А вот у меня не вернулось. (Должен быть залит пустой скетч в ардуинку)
В статьях и на форумах народ мучился вопросом почему через аруинку нельзя сменить пароль и название bluetooth модуля. Да и вообще AT команды не работают. Одни ставили крест на CH340G мол он плохой и надо что то другое итд.

Многие выходили из положения покупая отдельно модуль USB- UART на другой микросхе которую они хвалили, и у них все получалось, другие писали мост с сериал порта на цифровые выходы, пробовал, но не работало.
Может получилось бы и у меня с модулем, но я купил не тот модуль!) А это и к лучшему, потому что я раскопал почему не работает RX и TX в китайских Arduino.
В моем древнем компе есть физический COM порт, и я решил шить через него, и купил переходник с преобразователем уровней MAX3232, а не UART! 

Ну с arduino я недавно, и про UART я знал мало, да и сейчас еще не знаю всего)
Я еще тот динозавр который помнит AT команды диалаповских модемов.
Я не понимал, почему в терминале (отдельная программа) на мои AT - команды возвращается кириллица, в виде букв - "я"  "яя " итд
"яя дас ист фантастиш" подумал я, мне модуль стал отвечать! Я очень обрадовался что он жив! Да, но почему на "немецком" и в кириллице он отвечает?)) .. или [00] [01] итд. В общем ответы были, да не те, да потому что это не UART! это я понял позже.
Ехать еще раз на другой конец города за правильным модулем USB- UART я не хотел.
Начал гуглить глубже, почему не работает RX и TX в ардуине? и нашел!
Один разработчик в своей самоделке докопался почему нет ответа через ардуинку, оказалось китайцы мать их, запаяли резисторы большего номинала, по 1кОм.  Если заменить их на 220 Ом, все начинает прекрасно работать! Фото прилагаются. Это Arduino Uno (китайская копия)
Необходимо заменить резисторы R8 и R9 на 220 Ом.

А это мои запаянные резисторы на 220 Ом, правда не смд но у меня Uno в пластиковой коробке, и деформация с замыканием исключены.

Вот где эти резисторы на Arduino Nano многие на форумах как раз мучаются с этой версией ардуинки.
В итоге я прошил HC-05 и HC-06, правда AT команды для них немного различаются, но это все легко гуглится.

Надеюсь что эта информация поможет кому-то сэкономить время и нервы.

Всем удачи.

Показать полностью 5
Отличная работа, все прочитано!