НЕСТАНДАРТНЫЙ Детектор хлопков (только хлопков)
- Войдите на сайт для отправки комментариев
Занялся такой проблемой: создание детектора хлопков, чтобы исключить реагирование на другие звуки.
Пытался построить устройство на основе програмного фильтра, по следующему алгоритму : при срабатывании детектора, ардуино записывает в массив состоящий из 500 ячеек каждый такт. Таким образом записал 100 хлопков. Получилась очень грязная картина синусоиды. С Очень расплывчатыми периодами подъема и спада синусоиды.
На других форумах мне посоветовали сделать аппаратный фильтр звука вместе с программным. Но представления о том как это сделать равны 1- 2 %
На других форумах дали несколько вариантов как решить эту проблема, ниже приведу парочку из них:
"Анализатор спектра на ардуино))), ну даже быстрое преобразование фурье для 8 битного контроллера задача не простая.
Можно попробовать реализовать корреляцию сигналов, но это нужно сделать таблицу, в которую ещё нужно заполнить, далее нужно измерять уровень при помощи АЦП и считать, и организовать смещение массива, вобщем-то тоже нужно постараться.
А если взять компаратор, выставить порог срабатывания при котором он будет переключаться, выход компаратора, повесить на счетчик, скажем того же ардуино, но счетчик будет тактироваться внешним сигналом компаратора, задача просто скажем каждые 50мс смотреть чего там насчитал таймер, если настроить так чтобы за 1 хлопок регистрировал от 3 до 7 переключений, и соответственно если это так, регистрировать хлопок.
PS: сам я это не проверял, это просто идея)))"
Вот второй совет: en555 lm358 что то на них похожее если хлопок то сначала его обработает en555 задаст частоту после два операционника они эту частоту фильтруют по продолжительности импульса после когда импульс сформированный кидаем его на лапку контролера и программно описываем задержку после чего опршиваем лапку и смотрим что там происходит если импульс длица значит разговор если нет значит хлопок ну перд микрофоном я бы еще простой частотный фильтр бы применил
Как видите, в этих советах нет четких последовательностей.
Буду очень признателен если вы поможите:
1) Понять каким образом можно создать аппаратный фильтр (желательно на пальцах) Если не трудно с пояснением принципа работы каждого из элементов.
2) Сформировать последовательный список задачь , который поможет решить эту проблему.
P.S. Я ЗАИНТЕРЕСОВАН В СОТРУДНИЧЕСТВЕ С ЛЮДЬМИ БОЛЕЕ ЗНАЮЩИМИ ЧЕМ Я( В ЭЛЕКТРОНИКЕ).ГОТОВ ОТБЛАГОДАРИТЬ ДЕНЕЖНО. ТЕХ КТО БУДЕТ СОПРОВОЖДАТЬ МЕНЯ В ЭТОМ ПРОЕКТЕ.
Попробуйте всё-таки сначала программно, не заморачиваясь с фильтрами
вот раз: clap_detector.ino
вот два: библиотеки с fft и fht, после которых брать бин частоты клэпа
http://wiki.openmusiclabs.com/wiki/ArduinoFHT
вот три: пример low-pass программного фильтра, можно, разумеется, сделать и high pass и band pass на частоту хлопка
https://bochovj.wordpress.com/2013/07/07/bass-detection-with-arduino/
Спасибо, вы считаете, что програмный фильтр может все-таки работать? (на стандартном ардуиновском микрофоне)
Если под стандартным вы имеете в виду KY-038 с алиэкспресса ( https://tkkrlab.nl/wiki/Arduino_KY-038_Microphone_sound_sensor_module ), то смело выкидывайте его в ведро, он очень дубовый. Но и с ним сработает, только хлопать надо не далее, чем в 5 см от микрофона.
Микрофон с EBAY. Но тоже китайский.
http://www.ebay.co.uk/itm/1pc-Analog-Sound-Sensor-Board-Microphone-MIC-Controller-For-Arduino-Pop/162351879439?_trksid=p2045573.c100507.m3226&_trkparms=aid%3D555017%26algo%3DPL.CASSINI%26ao%3D1%26asc%3D38661%26meid%3Dac6cfc7e8fb84c979371c352796cd904%26pid%3D100507%26rk%3D1%26rkt%3D1%26
Какой бы вы посоветовали?
Не знаю :), я не звукач; а fft для avr мучил, пробуя вылепить из ардуины vlf sdr, модуль микрофона же подключал для проверки кода.
Kollname, то, о чем Вы пишете, по большому счету является задачей распознавания, которую современная наука разрешить не в состоянии. Поэтому ни о каких четких алгоритмах здесь не может быть и речи.
Можно попытаться нащупать какой-нибудь эмпирический алгоритм, обладающий приемлемым количеством ошибок срабатывания, но для этого нужны некоторые познания: в первую очередь в акустике, ну и как необходимое (нр не достаточное) условие - в радиоэлектронике и программировании.
Суды по Вашим вопросам, ни первым, ни вторым, ни третьим Вы не обладаете. Тогда чего Вы хотите? Если невозможного - сразу бросьте эту затею. Если чему-то научиться, начните с учебника по акустике. Если чтобы за Вас что-то сделали - это в раздел "Ищу исполнителя". Только, боюсь, в последнем варианте никто за такую задачу не возмется. А если и возмется, вряд ли сделает.
У меня конкретная цель - я её упомянул выше. Согласен, что знаний у меня более чем недостоточно. Но это не мешает мне их накопить (хотя это может занять очень много времени). Мне всего-лишь нужно знать куда копать.
P.S. Кто знает сколько мс длится хлопок?
P.S. Кто знает сколько мс длится хлопок?
твой хлопок длится ровно один мой чих.
четыре эха от моего чиха заменяют один мой хлопок.
не хлопай - у меня насморк.
Спасибо, очень полезно!
Боги электроники Помогите!
Как програмно можно создать алгоритм на основе этих частот??
вторая картинка это обычный шум
первая это хлопок
1) сколько по времени длится хлопок?
2) Как (с помощью чего) можно разложить хлопок по частотам?
1. запиши свой хлопок и посмотри в аудиоредакторе длину
2. с помощью того же аудиоредактора.
Я думаю Ваша задача очень абстрактна. Вы попробуйте хотя бы что то написать, глядишь заработает. Со стандартным микрофоном или с каким то еще попробуйте. А когда устаните хлопать выложите сей скетч сюда, может мы тоже его зальем и похлопаем. Если на Вашем скрине с ютуба по горизонтали миллисекунды то хлопок длится 4 мс.
Я бы написал по такому алгаритму. Слушаем эфир, принимаем значение за фон и фильтруем его. Если идет увеличение смотрим на сколько больше фона, если не значительно (параметр значительности регулируем допустим с подстройки для удобства) то перезаписываем уровень громкости фона и слушаем дальше. Если значительный то засекаем сколько он длится. Если больше чем наш хлопок то значит это не хлопок и слушаем дальше. Если хлопок по времени говорим что хлопок. Но это например может быть и стук и резкий чих уважаемого Клапауция...
ну, шо за бред?
кто-то вообще пробовал хлопать в своём жилом помещении чаще, чем два раза в сутки?
ваша собака, жена, тёща, соседка вас на*уй после этого не послали?
вы, сцуко, в замках живёте, где каждый занимает по 300 квадратов студии и эхо от хлопков можно отличить от чиха вашей собаки?
Спасибо, очень полезно!
Боги электроники Помогите!
Хера взываеш среди ночи? Спят усе.
Твоя задача - амплитудная детекция и селекция по длительности. Хлопок по громкости выше чем шум и длится мало. Пиши код и не возропщи нах...
Я так полагаю код который мне скинули работает по тому же принципу. Плохо понимаемый!
Волнует такая проблема. Написал скетч реагирующий на хлопок, но микрофон, который я использую - гавнецо. Исправно работает на расстоянии 50 см. Подскажите пожайлуста, схему усилителя с микрофоном, чтобы можно было расширить возможности детектора до 4-5 метров
Спасибо, что скинул столько полезной информации. Все зашло кроме последнего скетча. Там просит LowPassFilter.c Весь инет прорыл не нашел такой библиотеки
Просто надо быть чуть внимательнее :) http://t-filter.engineerjs.com/
Ох Спасибо, с английским не очень... Я знаю много от вас прошу и уже задолбал Вас. Но в моем конкретном случае, исходя из спектра хлопка какие параметры фильтра выставить лучше?
Обещаю это последняя просьба =)))
то, что там наверху, на картинках - это не спектр хлопка ) ну, допустим, попробуйте, реагировать на частоту где-то около 4-5 кГц
Ок спасибо =)