+7-960-0655211 (Билайн)
+7-987-4207734 (МТС)
интернет-магазин
доставка по России и СНГ
работаем с 2010 года

Twitch - Ваш роботизированный питомец

ГлавнаяИнформацияСтатьи

Twitch - Ваш роботизированный питомец







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

Twitch возник из проекта «Adafriend Virtual Pet Cube» Джона Волла, который сделан на Adafruit Pro Trinket, светодиодной матрице и корпусом распечатанном на 3D-принтере. У меня уже была Arduino Uno и было не интересно распечатывать на 3D-принтере, с этого проект и начался.
Использовал много кода из исходного проекта, так как мне нравились анимированные глаз и различные эмоции, которые он мог изобразить. Затем добавил крепление для поворота/наклона, емкостный датчик касания и шилд Adafruit Wave, чтобы дать моему питомцу голос.
Для успешно завершения этого проекта, у вас должны быть хорошие навыки пайки. Было бы полезно, если бы Вы до этого делали хотя бы один проект на Arduino, чтобы смогли настроить программное обеспечение Arduino и загрузить скетчи. Также желательно иметь опыт отладки кода, поскольку мой далеко не идеален.



Шаг 1: необходимые детали

  • Arduino Uno
  • Adafruit Wave Shield 1.1
  • Комплект Mini Pan Tilt с 2 сервоприводами
  • Светодиодный модуль Adafruit Small 1.2" 8x8 LED Matrix w/I2C Backpack
  • Емкостный датчик касания AT42QT1070
  • Динамик для воспроизведения аудиофайлов
  • SD-карта для хранения ваших звуков
  • Источник питания для Arduino. Сервоприводы потребляют слишком много энергии для работы от 5В USB
  • Макетная плата
  • Коробку для электроники - я использовал деревянную 4X4X3, которую получил от Майкла
  • Провода, припой и прочее

Шаг 2: подготовка – Wave Shield, светодиодная матрица и крепление поворота/наклона





Следуйте инструкциям, чтобы собрать Wave Shield. Скопируйте как минимум один файл на SD-карту и убедитесь, что правильно работает скетч dap_hc (информацию о подготовке файла смотрите в следующем шаге). Используйте вывод в последовательный порт для помощи при отладке. Сначала будет выведена отладочная информация о количестве оперативной памяти и найденных именах каталогов и файлов, затем воспроизведет их. Хоть навыки есть, но с пайкой были проблемы и пришлось перепроверять каждую точку пайки, пока не заработало. Запаяйте динамик к контактам возле разъема для наушников на шилде.
Затем припаяйте светодиодную матрицу к плате. Будьте внимательны при пайке, в первый раз я вставил светодиодную матрицу не той стороной. Библиотека Backpack поставляется с примером скетча. Прежде чем продолжить, убедитесь, что этот скетч правильно работает.
Соберите набор поворота/наклона, модуль светодиодной матрицы хорошо к нему подходит.

Шаг 3: подготовка SD-карты

В проекте используются воспроизведение wave файлов на аудио шилде для передачи четырёх эмоций (грустный, счастливый, злой и нейтральный) и при срабатывании емкостного датчика касаний. Я использовал около 10 отрывков из фильмов для различных состояний, но Вы можете выбрать песни, звуки животных или что угодно. Звуки взяты с сайта www.moviewavs.com, которым пользуюсь с конца 1990-х. Хотя он не обновляется так часто, как раньше, очень рекомендую его.
Аудио шилд поддерживает 8.3 имена файлов, я использовал имена из двух цифр для экономии памяти микроконтроллера. Уверен, что есть более эффективный способ, но не смог его придумать.
Для воспроизведения аудио, оно должно быть моно, с частотой дискретизации не более 22кГц и не более 16-бит. Для подготовки файлов использовалась программа Audacity. В этом руководстве описан и другой способ как можно подготовить файлы.
Подобранные звуки переименовал следующим образом:

  • Звуки при срабатывании емкостного датчика 1.WAV - 8.WAV
  • Нейтральные звуки 10.WAV - 19.WAV 
  • Злые звуки 30.WAV - 39.WAV 
  • Грустные звуки 50.WAV - 59.WAV 
  • Счастливые звуки 70.WAV - 79.WAV
  • Скопируйте звуки в корневую директорию SD-карты, которую затем вставьте в аудио шилд.

Шаг 4: соединяем всё вместе




Аудио шилд использует выводы 10, 11, 12 и 13 для работы с SD-картой, а выводы 2,3, 4 и 5 для ЦАП, поэтому мы не можем использовать эти выводы ни для чего другого.
Выводы A4 и A5 на Arduino - это линии I2C, которые используются для управления светодиодной матрицей. A4 подключается к SDA с меткой «D» (данные) на плате, а A5 к SCL с меткой «C» (тактирование) на плате.
Цифровые выводы 6 и 9 используются для управления сервоприводами. 6 подключен к сервоприводу «X» (вверх и вниз), а 9 подключен к сервоприводу «Y» (влево и вправо).
Антенны подключены к входам 0 и 1 платы емкостного датчика, а выходы 0 и 1 к A0 на Arduino. Если не планируете реализовывать различную реакцию для каждой антенны, можно обе сразу подключить к одному входу датчика и соответственно один выход к A0.



Шаг 5: код

В коде используется библиотека SoftwareSerial, поскольку аудио шилд вызывает конфликт с таймером на Arduino. Если вы знакомы со стандартной библиотекой сервоприводов, она работает точно так же, хотя для обновления сервоприводов требуется каждые 50мс вызывать «SoftwareServo::refresh()». Вы увидите это в коде.
Программа также использует библиотеки LED_Backpack  и GFX.
Код Twitch.ino.

Шаг 6: возможные следующие шаги 

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


Автор оригинальной статьи: drum303

Перевод и адаптация: Robototehnika.ru