Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
MicroDot - это самодельная «кнопка» Alexa, предназначенная для подключения к LattePanda или Raspberry Pi с установленным приложением Alexa Sample. Это небольшой динамик со светодиодами и сенсорной / речевой активацией, который идеально подходит для использования на рабочем столе или в автомобиле.
* LattePanda для этого проекта любезно предоставлен DFRobot
Шаг 1. Обзор системы
ЛАТТЕ ПАНДА
LattePanda - это небольшой (размером с Raspberry Pi) компьютер с Windows 10 со встроенным Arduino для взаимодействия с реальным миром. Это действительно здорово - и это хорошая замена Raspberry Pi - особенно если у вас (как и я) есть проблемы с освоением Linux.
Я установил приложение Alexa Sample на Panda и реализовал свой собственный механизм пробуждения на основе встроенного в Windows SDK распознавания речи.
МИКРОДОТ
MicroDot состоит из небольшого усилителя и динамика с сенсорной решеткой и сине-белой светодиодной матрицей. Изначально MicroDot был разработан для размещения на приборной панели в моей машине, чтобы обеспечить мое автомобильное решение Alexa (в сочетании с моим предыдущим проектом - автомобильной стереосистемой с поддержкой Alexa). Мне нужна была не только функция пробуждения, но и активация касанием, потому что Алекса будет трудно услышать мое слово пробуждения, когда музыка будет громкой! (После активации Panda отправит сигнал в стереосистему, чтобы уменьшить громкость, пока Алекса слушает / говорит).
RASPBERRY PI
Для тех, кто более свободно владеет «Raspberry Pi», я описал в конце этого руководства, как связать MicroDot с Rapsberry Pi 3.
Шаг 2: Схема MicroDot
ЧАСТИ
6 резисторов SMD 220R 2 резистора SMD 470R 1 конденсатор SMD 10 мкФ 1 модуль сенсорного датчика TTP223 (https://www.ebay.com/itm/192097635565) 1 модуль усилителя PAM8403 3 Вт (https://www.ebay.com/ itm / 221895096190) 1 линейный потенциометр для большого пальца 10K (https://www.ebay.com/itm/401105807680) 1 керамический конденсатор 50 пФ 3 синие светодиоды 3 мм 3 белых светодиода 3 мм 3 мм 1 динамик 1,7 дюйма 4 Ом 3 Вт 1 тонкий черный кабель от старые наушники 1 x тонкий черный удлинительный USB-кабель длиной 1 м *
СТРОИТЕЛЬСТВО
Печатная плата MicroDot была изготовлена методом утюга на тонере на односторонней плате толщиной 0,8 мм - при такой толщине ее можно грубо нарезать острыми ножницами, а затем легко отпилить. Сначала установите все компоненты для поверхностного монтажа.
К сенсорной поверхности сенсора необходимо подключить провод, поэтому нужно соскрести небольшую область, чтобы к ней припаять. Я обнаружил, что в исходном режиме датчик был слишком чувствительным - он работал нормально, но после установки в корпус он часто срабатывал ложно из-за близости к металлическому динамику. Я заземлил металлический динамик - это немного помогло, но в конце концов мне пришлось обратиться к таблице данных.
В таблице данных TTP223 указано, что вы можете настроить чувствительность, поместив конденсатор (от 0 до 50 пФ) между сенсорным датчиком и землей. Датчик нормально работал с конденсатором 50пФ. Вы можете увидеть его размещение на картинке в следующем разделе.
Для подключения MicroDot к Panda используются два кабеля: - тонкий черный кабель от старой пары наушников для подключения аудио; - тонкий кабель USB использовался для подключения к GPIO (сенсорный датчик / светодиоды). Вам понадобится кабель с 6 отдельными разъемами (5 внутренних + экран). * Помните, что некоторые дешевые USB-кабели не имеют отдельного заземляющего контакта / экрана, или эти два могут быть подключены внутри (проверьте это, прежде чем разрезать кабель, убедившись, что есть непрерывность между внешними металлическими частями вилки и розетки. вилки, и что между заземляющим контактом и внешними металлическими частями нет непрерывности).
Используйте соединения USB-кабеля: красный = + 5 В, экран = GND, черный = сенсорный датчик, белый = белые светодиоды, зеленый = синие светодиоды. Вместо того, чтобы просто отрезать мопсы и подключать проводку, вы можете сделать то же, что и я. оставьте вилки включенными, отрежьте один длинный участок и один короткий (скажем, 200 мм) и вставьте два конца кабеля вместе. Таким образом, блок съемный. Просто убедитесь, что вы не подключаете к нему никаких реальных USB-устройств и не подключаете его к обычному USB-порту!
Шаг 3: Построение MicroDot
НАПЕЧАТАННЫЕ ЧАСТИ 3D
В прикрепленном zip-файле есть четыре детали, напечатанные на 3D-принтере: 1. Основная оболочка MicroDot - напечатана черным PLA2. База MicroDot - напечатана черным PLA3. Светодиодное кольцо - напечатано из белого PLA (прозрачное или полупрозрачное может быть лучше для более равномерного рассеивания света) 4. Прокладка для печатной платы - любого цвета - между динамиком и печатной платой.
Болты и гайки М2 используются для прикручивания основания к корпусу. Три болта M2 нужно вплавить в пазы на внутренней стороне корпуса. Они довольно маленькие, и вам может потребоваться «припаять» их на место с помощью дополнительной нити накала.
СВЕТОДИОДНЫЙ Массив
Белый и синий светодиоды устанавливаются в матрицу поочередно, как показано на рисунках. Выводы загибаются под углом 90 градусов к нижней части светодиода, и выводы вплавляются в кольцо горячим паяльником (обратите внимание на полярность). Нижняя часть светодиодов опилена, чтобы они были плоскими по отношению к поверхности кольца.
Катоды светодиодов соединены вместе проволочным кольцом, и они подключаются к самому нижнему контакту разъема. Другие контакты заголовка должны быть чередующимися синими / белыми для каждого отдельного светодиода.
СОСТАВЛЯЕМ ВМЕСТЕ
Решетка была вырезана из настольного бумажного держателя (на фото) с припаянной к одному краю проволокой. Сначала он вставляется в корпус, а затем в светодиодную матрицу (она должна быть вставлена под углом, как показано на рисунке, с прорезью, совмещенной с одним из штырей для винтов). Далее идет динамик (оберните верхнюю часть тонкой лентой, чтобы изолировать ее от края печатной платы). Затем прокладка, и печатная плата просто сидит сверху. Прикрутите основание, чтобы все было вместе.
При подключении аудиокабеля к LattePanda я обнаружил, что мне нужно использовать фильтр контура заземления звука (https://www.ebay.com/itm/371801191297), чтобы получить хороший звук. Обратите внимание, что на фотографиях я использую аудиовыход своего видеоадаптера HDMI-VGA, но вполне нормально использовать встроенный аудиовыход.
Вам также понадобится usb-микрофон (https://www.ebay.com/itm/332148968227).
Шаг 4: ЛаттеПанда
НАСТРАИВАТЬ
Panda выпускается в моделях 2G / 32G и 4G / 64G с лицензией Windows 10 или без нее. Я использовал модель 2G / 32G с лицензией Windows 10:
Пожалуйста, ознакомьтесь с официальной документацией по настройке вашего LattePanda (https://docs.lattepanda.com) Здесь нет ничего слишком сложного, но обратите внимание на инструкции по включению вашей Panda (https://docs.lattepanda.com/ content / getStarted / powe…).
Мне показалось, что с первого раза все заработало (что приятно отличается от моего опыта с Raspberry Pi).
Важным моментом является то, что вам действительно нужно какое-то охлаждение для Panda. Я использовал несколько наклеенных радиаторов сверху и снизу (нижняя сторона становится особенно горячей).
На этой схеме подробно описаны входы и выходы Arduino: https://docs.lattepanda.com/content/hardware/inputs … Мы будем использовать массив из 3-х контактных разъемов с левой стороны для подключения к MicroDot (D9, D10 и D11), а также гнездо аудиовыхода.
Шаг 5: LattePanda - Установите пример приложения Alexa
СКАЧАТЬ
Приложение Alexa Sample доступно здесь:
github.com/alexa/alexa-avs-sample-app/
Нажмите кнопку «Клонировать» или «Загрузить» и загрузите файл в формате.zip.
Создайте каталог на диске c C: / ALEXA и извлеките содержимое zip-архива, чтобы заархивированный каталог с именем samples находился непосредственно в каталоге ALEXA (то есть C: / ALEXA / samples \…)
УСТАНОВКА
Официальные полные инструкции по установке в Windows находятся здесь:
github.com/alexa/alexa-avs-sample-app/wiki…
Есть несколько шагов, и это займет некоторое время, но я обнаружил, что с Windows все прошло гладко с первого раза.
Вам понадобится хороший текстовый редактор для редактирования некоторых файлов конфигурации (Блокнот не подходит, так как файлы имеют окончания строк в стиле Linux). Я использовал Notepad ++, который доступен здесь:
Несколько примечаний к официальным инструкциям:
Часть 3 - Зависимости
Моя Panda 64-битная, поэтому я загрузил все 64-битные версии, но если вы устанавливаете на 32-битную систему, вам нужно будет использовать 32-битные версии. Примечание: не смешивайте 32- и 64-битные версии зависимостей.
Ссылка, показанная для медиаплеера VLC, приведет вас к 32-битной версии. Чтобы получить 64-разрядную версию, перейдите по этой ссылке: https://www.videolan.org/vlc/download-windows.html и на кнопке загрузки щелкните стрелку, а затем - Установщик для 64-разрядной версии.
Для установки JDK я использовал версию: jdk-8u144-windows-x64 Для nodejs, которые я использовал: Установщик Windows (.msi) 64 бит Для Maven: apache-maven-3.5.0-bin.zip Для OpenSSL я использовал: Win64 OpenSSL v1.1.0f
Часть 5 - Метод аутентификации
Выберите 5a - сервер Nodejs. Если при запуске команды npm вы получаете сообщение об ошибке, вам необходимо добавить каталог nodejs в переменную среды path (это объясняется в инструкциях, как это сделать).
Часть 6 - Запуск примера приложения
При редактировании файла config.json установите для wakeWordAgentEnabled значение true, поскольку в следующем разделе мы будем устанавливать собственный механизм слова пробуждения (механизм слова пробуждения, включенный в пример приложения, работает только с Linux).
Если вы получаете сообщение об ошибке при выполнении команды mvn, вам необходимо добавить каталог maven / bin в переменную среды пути.
Когда вы запустите приложение, вы должны увидеть графический интерфейс, показанный на скриншоте. Когда вы нажмете на значок, вы сможете поговорить с Alexa. Это базовое приложение Alexa, но нам понадобится нечто большее!
Следующими шагами будет установка пользовательского механизма пробуждения, чтобы вы могли просто сказать «Alexa» для активации, а также иметь возможность использовать сенсорный датчик через вход Arduino. Нам также нужно сделать так, чтобы приложение запускалось автоматически при запуске и загоралось несколько светодиодов, когда Alexa слушает и говорит.
Шаг 6: LattePanda - Установите пользовательский движок WakeWord
WAKEWORD ENGINE
Механизм WakeWord позволяет разбудить Alexa по произнесенному слову (обычно «Alexa»), вместо того, чтобы нажимать кнопку. В примере приложения есть два варианта движка WakeWord: сенсорный или KITT. AI. Однако реализация для них в примере приложения работает только для Linux. Оба эти движки также подчиняются определенным лицензионным требованиям.
Здесь я реализую настраиваемый движок слова пробуждения, основанный на собственном SDK распознавания речи Windows 10. Таким образом, это также не требует каких-либо дополнительных лицензионных требований.
УСТАНОВИТЬ ЗАВИСИМОСТИ
Microsoft Speech Platform - среда выполнения (версия 11) https://www.microsoft.com/en-gb/download/details.a…x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi (32-разрядная версия) или x64_SpeechPlatformRuntime / SpeechPlatformRuntime.msi (64-разрядная версия)
Платформа Microsoft Speech Platform - языки времени выполнения (версия 11)
Мой собственный движок WakeWord был написан на C # в Visual Studio 2017. Я предоставил здесь окончательный исполняемый файл, а также исходный код. Если вы хотите скомпилировать его самостоятельно, то вам также понадобится это:
Microsoft Speech Platform - комплект для разработки программного обеспечения (SDK) (версия 11) https://www.microsoft.com/en-gb/download/details….|x86_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi (32-разрядная версия) или x64_MicrosoftSpeechPlatformSDK / MicrosoftSpeechPlatformSDK / MicrosoftSpeech 64 бит)
Поместите WakeWordPanda.exe (и alexa_run.bat) в каталог ALEXA. Эта программа выполняет следующие задачи: - Прослушивает слово пробуждения "Alexa" - Контролирует сенсорный датчик ввода - Управляет СИНИМ и БЕЛЫМ светодиодами
Обратите внимание, что я разработал это на другом компьютере с Windows 10, поэтому мне не нужно было устанавливать Visual Studio на LattePanda, так как я не хотел использовать гигабайты. Я подключил Arduino Uno с установленной StandardFirmata (https://www.lattepanda.com/docs/#SetuptheArduino) к компьютеру разработчика, чтобы я мог также разрабатывать с входами / выходами Arduino. Исходный код Visual Studio также прилагается, если вы хотите изменить и / или скомпилировать его самостоятельно.
ИЗМЕНИТЬ КЛИЕНТА JAVA
Клиенту Java нужно добавить в код несколько дополнительных строк. Это необходимо для правильной работы светодиодов:
Когда Alexa слушает, в движок WakeWord отправляется сигнал PAUSE_WAKE_WORD_ENGINE. Я использовал этот сигнал, чтобы узнать, когда включить СИНИЙ (светодиод прослушивания Alexa). При получении сигнала RESUME_WAKE_WORD_ENGINE синий светодиод гаснет, а БЕЛЫЙ (светодиод, говорящий с Alexa) включается. Дополнительный код отправляет еще один сигнал RESUME_WAKE_WORD_ENGINE, когда Алекса перестает говорить, чтобы движок WakeWord знал, когда выключить белый светодиод.
Перейдите к: C: / ALEXA / samples / javaclient / src / main / java / com / amazon / alexa / avs и откройте AVSController.java в текстовом редакторе. Скопируйте код из прикрепленного файла Extra_Code.txt. Его нужно вставить в двух местах:
1. В функции public void onAlexaSpeechFinished () сразу после оператора: loadedDirectiveThread.unblock ();
2. В функции private void handleAudioPlayerDirective (директива Directive) непосредственно перед оператором: player.handleStop ();
Я также изменил назначение сигнала CONFIRM, чтобы движок WakeWord знал, ответила ли Алекса. Это необходимо для отмены 5-секундного тайм-аута, который произойдет, если нет ответа. Скопируйте код из Extra_Code2.txt и вставьте в одно место:
1. В функции public void onAlexaSpeechStarted () сразу после оператора loadedDirectiveThread.block ();
Теперь вам нужно перекомпилировать Java-клиент. Откройте командную строку и перейдите к C: / ALEXA / samples / javaclient. Введите: mvn install, чтобы перекомпилировать.
Если вы запустите Companion Service и приложение Java Alexa, как раньше, а затем дважды щелкните WakeWordPanda.exe, подождите, пока он подключится, и тогда вы сможете активировать Alexa, сказав «Alexa».
МИКРОДОТ
Если вы подключите USB-кабель MicroDot к LattePanda, как показано на схеме, и подключите аудиокабель, теперь он должен быть полностью функциональным. Произнесение слова пробуждения или прикосновение к решетке должно активировать Alexa, и должны загореться синие светодиоды. При ответе Alexa должны загореться белые светодиоды.
НАСТРОЙКА АВТОМАТИЧЕСКИЙ ЗАПУСК
Вместо того, чтобы вводить все команды вручную для запуска всего, вы можете использовать сценарий alexa_run.bat. Это будет ждать подключения к Интернету, а затем вызывать отдельные модули (сопутствующий сервис, Java-клиент, механизм пробуждения).
Последний шаг - сделать так, чтобы все запускалось автоматически при запуске:
1. Щелкните правой кнопкой мыши auto-run.bat и выберите создать ярлык. 2. Нажмите ctrl + R и введите shell: startup. Это откроет папку автозагрузки 3. Перетащите созданный вами ярлык в папку автозагрузки.
Теперь Alexa будет автоматически запускаться при запуске (инициализация после запуска занимает около 30 секунд).
Шаг 7: MicroDot для Raspberry Pi
(Если вы хотите использовать Raspberry Pi 3 вместо LattePanda).
СКАЧАТЬ
Загрузите пример приложения Alexa отсюда:
Нажмите кнопку «Клонировать» или «Загрузить» и загрузите файл в формате.zip. Разархивируйте так, чтобы папка alexa-ava-sample-app оказалась на рабочем столе.
УСТАНОВКА
Следуйте официальным полным инструкциям здесь (примечание: настройте так, чтобы папка alexa-ava-sample-app на рабочем столе):
github.com/alexa/alexa-avs-sample-app/wiki…
Есть много руководств, как сделать это с Raspberry Pi в сети. Я устанавливал это пару раз на Raspberry Pi, и ни разу это не прошло так гладко, как установка на WIndows 10 (неудивительно - Linux получает меня каждый раз). Основные проблемы, с которыми я столкнулся:
1. Правильная работа звука и микрофона. См. Здесь https://github.com/alexa-pi/AlexaPi/wiki/Audio-set …, если у вас тоже есть эти проблемы.
2. Проблемы с версией JDK. См. 4.3 в официальных инструкциях и примечание в файле pom.xml, в котором говорится о переопределении версии при выполнении команды mvn exec: exec (т.е. мне пришлось добавить этот переключатель -Dalpn-boot.version = 8.1.6.v20151105). Обратите внимание, что эта команда включена в мой сценарий запуска (alexa_startup.sh).
3. Заставить работать механизм слов пробуждения Sensory (https://github.com/Sensory/alexa-rpi)
Как только вы сможете запустить все это с помощью ручных команд, как указано в инструкциях, продолжайте установку MicroDot.
ПОДКЛЮЧЕНИЕ МИКРОДОТ
Вы не можете напрямую подключить MicroDot к GPIO, потому что он потребляет слишком большой ток. Вам потребуются: 2 транзистора 2N3904 для управления светодиодами, резисторы 1x2K2 и 1x3K3 для понижения напряжения сенсорного датчика до 3,3 В (MicroDot будет питаться от источника питания 5 В). См. Прилагаемую схему. Возможно, вы захотите сделать для этого печатную плату, но я только что установил эти компоненты на задней стороне 8-контактного розетки.
ИНДИВИДУАЛЬНЫЙ ДВИГАТЕЛЬ (СЕНСОРНЫЙ)
Разархивируйте содержимое прикрепленной zip-папки в папку alexa-avs-sample-app. Есть два файла: wake.py - скрипт на Python, который представляет собой настраиваемый (сенсорный) механизм пробуждения для MicroDot alexa_autostart.sh - скрипт для запуска всего. Щелкните правой кнопкой мыши свойства и выберите «Выполнить: кто угодно» на вкладке разрешений.
Вам понадобится установленный python для запуска механизма пробуждения. Вам также понадобится библиотека GPIO (https://makezine.com/projects/tutorial-raspberry-p…). Она уже должна быть установлена в последней версии Raspbian.
Чтобы запустить все, введите в терминал: cd / home / pi / Desktop / alexa-avs-sample-appsudo./alexa_startup.sh
НАСТРОИТЬ АВТОЗАПУСК
Чтобы настроить автоматический запуск Alexa при загрузке, откройте терминал и введите:
cd /home/pi/.config/lxsession/LXDE-pisudo nano автозапуск
и добавьте строку и сохраните:
@ / home / pi / Desktop / alexa-avs-sample-app / alexa_autostart.sh
Перезагрузитесь, и приложение Alexa должно запуститься автоматически.