Говорящая Arduino шапка Деда Мороза

Общие сведения:

В этом уроке мы создадим шуточное устройство, которое можно использовать как украшение новогоднего стола, а именно говорящую Arduino-шапку Деда Мороза, реагирующую на движение в зоне видимости датчика расстояния и читающую стихи (но вы можете заставить её делать практически всё, что угодно).

Видео:

Нам понадобится:

    Для реализации проекта нам необходимо установить библиотеки:

    • DFPlayer Mini mp3 Arduino Library V1.3 — для работы с плеером;
    • iarduino_HC_SR04_int — для работы с ультразвуковыми датчиками расстояния;
    • iarduino_NeoPixel — для работы с адресными светодиодами NeoPixel;
    • Servo — входит в стандартный набор библиотек Arduino IDE и не требует дополнительной установки;

    О том, как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE.

    Описание работы устройства:

    После подачи питания говорящая Arduino-шапка готова к работе.

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

    Схема сборки:

    Arduino / Piranha UNO:

    Batery Shield:

    Установите Battery Shield на Arduino / Piranha UNO:

    Trema Shield:

    На Battery Shield установите Trema Shield:

    MP3-плеер:

    Подключите MP3-плеер к Trema Shield и динамик к MP3-плееру:

    Так как выводы 0 и 1 зарезервированы под RX и TX, перед загрузкой скетча необходимо отключить плеер от платы, а после загрузки и перед использованием подключить обратно.

    Датчик расстояния

    Подключите датчик расстояния HC-SR04 к Trema Shield:

    Сервопривод

    Подключите Сервопривод к Trema Shield:

    Адресные светодиоды:

    Подключите адресные светодиоды NeoPixel к Trema Shield:

    Trema-модули NeoPixel соединены друг c другом, а первый модуль можно подключить к любому выводу Arduino (в скетче используется вывод D4). Чем больше модулей в цепи, тем больше тока она потребляет, поэтому в схеме используется стабилизированный источник питания Battery Shield на 5В постоянного тока.

    ПВХ-конструктор

    Так как проект не предполагает использования готовых корпусов, для изготовления всех необходимых элементов корпуса воспользуемся готовыми пластинами №1, №2 и №3 из которых, используя любой режущий инструмент, можно вырезать детали необходимого размера. Более подробно о том, как это сделать, вы можете увидеть в видео выше.

    В данном проекте мы сделали следующие детали (размер одной "пустой" клетки 5х5мм, размеры приведены по количеству "сквозных" клеток):

    • 1х пластина для основания 12х13;
    • 1х пластина для крепления Piranha Uno 12х9;
    • 4х опоры 5х3;
    • 2х пластина для крепления сервопривода 11х4;
    • 1х узкая пластина для крепления верхней "губы" 8х4;
    • 1х широкая пластина для имитации верхней "губы" 8х7;
    • 1х широкая пластина для имитации нижней "губы" 7х5;
    • 2х квадрат для крепления модуля NeoPixel 5х5;
    • 1х перемычка для крепления двух модулей NeoPixel 12х3;
    • 1х пластина для крепления ультразвукового датчика расстояния 12х10;

    Код программы (скетч):

    Алгоритм работы скетча:

    До кода void setup() определяются переменные, подключаются необходимые библиотеки.

    В коде void setup() инициализируется MP3-плеер, адресные светодиоды NeoPixel, датчик расстояния, сервопривод, выключаются светодиоды, если до этого они горели.

    Код void loop() делится 2 части:

    • ЧАСТЬ 1: Проверяется, обнаружил ли датчик расстояния препятствие в указанной зоне:
      • Если да, то запускается трек с мелодией (который при каждом следующем срабатывании увеличивается на 1), ставится флагflg_moroz или flg_terminator в данной зоне (в зависимости от трека, который будет играть), обнуляется счётчик времени timer1, фиксирующий наступление события, чтобы в следующий раз оно сработало через время hcsr_waiting_time_near, настраивается время action time для каждого конкретного трека;
    • ЧАСТЬ 2: Проверяется, был ли установлен флаг наличия препятствия:
      • Если был установлен флаг flg_moroz:
        • Проверяем, истекло время выполнения анимации timer1 + action_time или нет;
          • Если не истекло, то задаём режим работы светодиодных модулей (строки 60-73) и сервопривода (строки 75-202);
          • Для того, чтобы соотнести слова трека и движение сервопривода, применён следующий метод:
            • на букве "А" сервопривод отклоняется на 45 градусов;
            • на всех гласных, кроме "А", сервопривод отклоняется на 20 градусов;
            • на всех согласных сервопривод не отклоняется (0 градусов);
            • Помимо этого, вам понадобится любой аудиоредактор, чтобы можно было определить время произнесения тех или иных букв с точностью до миллисекунд;
          • Если истекло, то гасим все светодиоды и сбрасываем флаг;
      • Если был установлен флаг flg_terminator:
        • Проверяем, истекло время выполнения анимации timer1 + action_time или нет;
          • Если не истекло, то задаём режим работы светодиодных модулей (строки 216-226) и сервопривода (строки 228 - 235);
          • Для того, чтобы соотнести слова трека и движение сервопривода, применён следующий метод:
            • на букве "А" сервопривод отклоняется на 45 градусов;
            • на всех гласных, кроме "А", сервопривод отклоняется на 20 градусов;
            • на всех согласных сервопривод не отклоняется (0 градусов);
            • Помимо этого, вам понадобится любой аудиоредактор, чтобы можно было определить время произнесения тех или иных букв с точностью до миллисекунд;
          • Если истекло, то гасим все светодиоды и сбрасываем флаг;

    Про треки:

    Для того, чтобы плеер верно мог воспроизвести ваши треки, их необходимо разместить на SD-карте следующим образом:

    1. Переименуйте все ваши треки, которые вы хотите воспроизвести с плеера, используя следующую форму: 000Х.mp3, где Х - порядковый номер трека;
    2. Создайте в основной директории карты новую папку и переименуйте её в "mp3";
    3. Скопируйте ваши переименованные файлы с компьютера на карту памяти;

    Готово! Теперь, зная количество и названия треков, внесите изменения в скетче там, где указывается порядковый номер трека и условия его воспроизведения (строки 43-53)

      Ссылки:

      Теги: Nanometer 0


      Станьте первым!

      Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!