Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Маска с открывающимся ртом и улыбкой своими руками

    Маска с открывающимся ртом и улыбкой своими руками

    Приветствую, Самоделкины!
    Из этой статьи вы узнаете, как своими руками из доступных китайских компонентов сделать что-то подобное:

    В общем, как обычно насоздаём себе проблем и попытаемся их решить. Вроде ничего особенного, но давайте разберем, как это все-таки работает и как такое можно повторить. Дальнейшая инструкция взята с YouTube канала «AlexGyver».

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

    Так же готовая система реагирует на звук голоса. По крайней мере других адекватных способов тут не придумать. Причем, чем громче мы говорим, тем шире при этом открывается рот. А что же насчёт включения улыбки? Ну что-нибудь придумаем…

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

    Также понадобится какой-нибудь аккумулятор. Отлично впишется, например, вот такой весьма компактный литий-ионный пакетик.

    Основой этого проекта будет всем известная платка Arduino Nanо, она и свяжет в единую систему адресную светодиодную ленту и микрофон.

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


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

    Начнём с того, что соберём и спаяем систему. Соединяться всё будет по следующей схеме:





    Никакие повышающие DC-DC преобразователи здесь не нужны, заряженной литиевой банки достаточно для питания и платы Ардуино нано и адресной светодиодной ленты, по крайней мере, примерно до 3.5В всё отлично работает.

    Теперь перейдем к программной части. Первым делом нам нужно обработать звук. Микроконтроллер получает звук в качестве колебаний напряжения. Соответственно, чем громче звук - тем шире размах колебаний. Всё что нам необходимо сделать для определения итоговой громкости – это с некоторым шагом, например 10мс, то есть другими словами 100 раз в секунду, делать выборку из пары сотен измерений. Далее в каждой выборке необходимо найти максимальное значение, и в итоге у нас получится громкость звука, которую мы измеряем в реальном времени.



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


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

    Полученный диапазон значений переводим в числа от 0 до 7 с шагом в единицу.


    В итоге мы имеем 8 ступеней громкости с автоматической подстройкой нижнего порога чувствительности.
    Теперь давайте разбираться с лентой.

    Данная светодиодная лента, а в таком виде уже полноценная матрица, позволяет управлять отдельно каждым своим светодиодом.

    Автор спаял матрицу 8 на 8, потому что в 1 байте у нас 8 бит, она и будет отображать сам рот. Нам необходимо выводить размер рта в зависимости от громкости, а громкость, как мы помним, у нас имеет 8 значений (уровней). Соответственно для этой задачи нам понадобится 8 кадров рта.

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

    Дабы упростить задачу по рисованию рта при различных уровнях громкости голоса можно воспользоваться программой Image Processor. Вот так она выглядит:

    Данная программа позволяет преобразовывать картинки в код для вывода на дисплей. Указываем необходимый нам размер 8х8, и выбираем режим 8 пикселей на 1 байт.

    Далее берём кисть, рисуем и видим результат.


    Повторяем процедуру еще 7 раз.



    Готово. Немножечко причешем массивы.

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

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

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


    С программной частью все, можно приступать к монтажу электроники в маску.

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

    Мы можем измерить примерную частоту звука, и сделать, например так, что если пропеть определенную ноту в течение, например 1 секунды, включится (отобразится на матрице) определенная эмоция. Например, низкая частота пусть будет грустным смайлом, а чуть более высокая – улыбкой.

    Нам понадобится завести звук с микрофона на другую ногу через конденсатор следующим образом:

    Далее используем библиотеку быстрого преобразования хартли, которая нам выведет спектр частот. Вот так это выглядит:


    Каждый столбик данных отвечает за определённый диапазон частот. Соответственно, чем громче звук в этом микродиапазоне частот, тем больше его значение. Чистую частоту он видит и распознает замечательно, но с распознаванием человеческого голоса не все так просто. Дело в том, что голос человека не имеет одного определенного тона, на спектре можно увидеть и другие, так называемые обертоны.

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

    Таким образом мы сразу отделим мух от котлет и низкие частоты от высоких, получим так сказать приведённую частоту.

    Ну и остается дело за малым: проверять текущую частоту, смотреть в каком диапазоне она меняется. Если, например, за 1 секунду она сильно не изменилась, то программа считает, что человек активировал одну из эмоций.


    Напомню, что эмоций у нас всего две, одна на низкие частоты, вторая на чуть повыше. Рисуем необходимые смайлики все в той же программе Image Processor и добавляем их в код.



    Ну вот, собственно и всё. Вот такой в результате получился весьма интересный проектик. Благодарю за внимание. До новых встреч!



    [b]Видеоролик автора:

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Термометр с линейной индикацией

    10
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    5
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    6.5
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 7.17 из 10 (голосов: 2 / История оценок)

    Добавить комментарий

      • smilesmilesxaxaokdontknowyahoonea
        bossscratchfoolyesyes-yesaggressivesecret
        sorrydancedance2dance3pardonhelpdrinks
        stopfriendsgoodgoodgoodwhistleswoontongue
        smokeclappingcraydeclarederisivedon-t_mentiondownload
        heatirefullaugh1mdameetingmoskingnegative
        not_ipopcornpunishreadscarescaressearch
        tauntthank_youthisto_clueumnikacuteagree
        badbeeeblack_eyeblum3blushboastboredom
        censoredpleasantrysecret2threatenvictoryyusun_bespectacled
        shokrespektlolprevedwelcomekrutoyya_za
        ya_dobryihelperne_huliganne_othodifludbanclose
    5 комментариев
    Korolev
    Автор заказал несколько стильных чёрных масок, чтобы в дальнейшем методом подбора, выбрать из них самую подходящую, чтобы можно было удобно её препарировать, чтобы она нормально просвечивалась и всё такое
    А под "и всё такое" подразумевается удобство стирки или утилизации? smile
    Такой вот комплект масок обошелся автору в 1000 рублей
    Добавим стоимость всего остального и получим одноразовую "улыбку на миллион"!
    В общем, как обычно насоздаём себе проблем и попытаемся их решить ... это модная медицинская маска
    Думаю модная - массовая, а в единственном экземпляре - это эксклюзив. smile
    Никакие повышающие DC-DC преобразователи здесь не нужны, заряженной литиевой банки достаточно для питания и платы Ардуино нано и адресной светодиодной ленты, по крайней мере, примерно до 3.5В всё отлично работает
    Работает, но не долго, и аккумулятору - кирдык!
    P.S. Дышать-то через матрицу как? scratch
    pogranec
    feonor12,
    недели. в подробности не вдавался, вскользь просмотрел
    feonor12
    pogranec,
    Дык а название видео? "Вызов принят...бла бла бла"
    И 1 - 1,5 чего? Дня, недели, литра? smile
    pogranec
    feonor12,
    Я подобную маску на instructables с 1-1,5 назад видел.
    feonor12
    Шустрый парниша. Гувер это видео только добавил, посмотреть ещё времени не было, а он уже тут как тут)

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

    Последние комментарии

    Все комментарии