html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Шкатулка с музыкальным замком

Введение




Каких только замков ни придумали! И с хитрым ключом, и на комбинации цифр, и с распознанием частей тела. Однако, мне захотелось сделать замок, который я ещё не встречал. Поскольку я увлекаюсь игрой на пианино, за идеей далеко ходить не пришлось: было решено сделать шкатулку, которая открывается, лишь «услышав» знакомую мелодию.

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



Что получилось




Распознание мелодии


Как известно, то, что мы воспринимаем как звук, можно рассматривать как толчки воздуха в барабанную перепонку. Воздух надавил – нерв зарегистрировал. То, что мы воспринимаем как ноту, можно рассматривать как толчки с постоянным периодом. Иначе говоря, если этот нерв щекотать 130 раз в секунду, то мы «услышим» ноту «до».
Устройство, которое распознаёт ноты, старается понять, сколько раз в секунду ему «щекотали» микрофон и какая получилась частота (и, стало быть, нота). Переход от частоты к ноте – штука простая, есть таблица «частота → нота».

Есть несколько разных алгоритмов, которые превращают данные с микрофона в частоты. Самый известный – преобразование Фурье. Принцип работы таков: на вход подаётся с какой силой воздух давил на микрофон в каждый момент времени. На выходе – сколько какой частоты содержалось. Его работу проще всего объяснить картинкой:



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

Однако, мы пойдём другим путём. Знать, какие именно ноты играют, нам не обязательно. Надо лишь узнать, играет ли в данный момент та нота, которую мы ожидаем. На помощь приходит алгоритм Гёрцеля. Этот алгоритм используется в телефонии, когда надо определить тональный сигнал. Суть проста: алгоритму дают искомую частоту и данные с микрофона, а он отвечает, какова «громкость» искомой частоты.

На реализацию алгоритма можно взглянуть в файле NoteDetector.cpp.

Выбор компонентов


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

ATMega328P с кристаллом на 16Mhz – «мозг» устройства. Выбор пал именно на него, поскольку уж больно просто с ним работать.

Электретный микрофон с усилителем OPA344 – эти два устройства продавались комплектом на одной плате на сайте Sparkfun. Данные с этого устройства можно считывать прямо с аналогового входа микроконтроллера.

Серво Spektrum SPMAS2000L – этот сервопривод открывает и закрывает замок. Я был очень рад, что нашел такую деталь. Серво работает от 3.3V и поддерживает обычный протокол. Это линейный привод, то есть вместо крутящейся головки у привода есть ползунок, который ходит вправо-влево примерно на сантиметр. По бокам – уши для крепления.
Этот моторчик обычно используется в мире авиамоделирования. Насколько я понимаю, им регулируют отклонения элеронов. Почитать про него можно на сайте производителя.

Выключатель TPS2020 – это отличный выключатель с очень низким энергопотреблением в выключенном состоянии (10 μA). Он будет управлять питанием серво.

Регулятор LM2936Z – линейный регулятор на 3.3V с небольшим током в рабочей точке (≤ 15 μA). То, что надо для нашего устройства, которое будет питаться от батарейки.

Зарядное устройство MAX1555 – чип, который управляет зарядкой батарейки и мигает лампочкой, когда батарейка полна.

Схема


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



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



Синие соединения – те, что будут на самой плате. Красные – те, что будут добавлены позже, либо шилдиковыми коннекторами, либо проводами поверх платы.

Создание платы


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

Печатаем схему на прозрачной плёнке и выпиливаем основу для платы:


Плата до лужения и проделывания отверстий:


Платы с одной стороны:


Платы с другой стороны:


Собранные платы:


С другой стороны:


Создание шкатулки


Шкатулка состоит из самой шкатулки и стенок, окружающих схему и моторчик. Я решил купить неотделанную шкатулку, чтобы самому покрыть её краской и лаком. Стенки и вспомогательные детали я заказал на сайте Ponoko: им можно послать чертёж в SVG, а они вырежут её лазером на тонкой фанерке. Чертёж можно найти тут. Вот, как выглядит этот чертёж и его реализация:


Плюс три недели:


После того как эти части были интегрированы в шкатулку, получилось так:


Теперь можно окрасить шкатулку и покрыть её лаком. Я нанёс два слоя краски и два слоя лака, чтоб на века. Пожалуй, ничего особо сложного в этом процессе нет. Разве что шкурить дерево надо очень качественно: места, где схалтурил отчётливо видны. Вот что получилось:


Механизм замка выглядит вот так:


Результат


В результате схема отлично поместилась в шкатулку:


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

Исходный код контроллера, схему и чертёж платы можно найти на Google Code. Я буду рад ответить на любые вопросы, выслушать критику и предложения.

Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

16

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • fausgute
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции