Анекдот дня: компания Kohler презентовала умное сиденье-биде для унитаза — с ним можно даже поболтать.
Сиденье работает на базе голосовых помощников Alexa от Amazon или Google Home. Можно контролировать температуру и давление воды в струе для биде и включать подсветку ночью.
А знаете, я считаю голосовое управление умным домом эффектным, но не эффективным. Это когда молод, и делать нечего - можно поиграться - поуправлять светом голосом.
В свое время были простые решения типа управления светом хлопаньем рук, и где это все? Это не практично. В семье из нескольких человек, особенно если есть маленькие дети, всегда стоит шум, голосове управление при шуме - это еще тот геморрой.
Более того, если приходится часто включать/выключать свет, то ничего нет удобнее и практичнее простого выключателя на стене, просто поверьте. Проще пройти миммо нажав кнопку, чем произнести фразу. Да и фраза будет не краткой, если у вас больше одного светильника кооторым Вы управляете.
Я вообще не представляю дествительно умный дом с голосовым управлением, потому что в действительно умном доме огромное количество устройств управления и датчиков.
И если это действительно умный дом, значит его прозрачность должна быть максимальная.
Т.е. Вы не должны ощущать его присутствие. И тем более не должны больтать безумолку.
Просто должны выполняться сценарии без вашего участия. Все что вне сценариев должно управляться привычными, простыми органами управления типа выключателя. В том числе, удаление 'умного дома' не должно никак сказаться на основных функциях дома - свет как могли включить выключателем, так и включаем.
Умный дом - это прозрачное дополнение, которое информирует в случае проблем и выполняет элементарные действия, которые не могут быть негативны, типа выклчения всех не основных приборов после ухода всех из дома.
А иначе - весь этот рынок просто пиар бесполезных решений, с которыми интересно поиграться и не более того.
Я еще не говорю о вопросах безопасности, надежности и прочего устройств на базе WIFI и других безпроводных решений, особенно которые завязаны на заруюежные сервисы(в том числе на сервисы не дружественных стран).
В свете широкого внедрения систем домашней автоматизации возникает потребность в более естественном взаимодействии с «умным домом». Как средство натурального взаимодействия между человеком и машиной, голосовой интерфейс заслуженно занимает высокую популярность. В данной статье я поделюсь своим опытом создания бюджетного автономного голосового ассистента для систем умного дома.
❯ Небольшая предыстория
Больше года назад я нашел в своих закромах одноплатный компьютер Raspberry Pi 4 Model B 8 ГБ. Устройство было куплено за небольшую цену в то время, когда человечество ещё не сошло с ума. Без долгих размышлений, я принял решение создать голосового ассистента на базе этого одноплатного компьютера, чтобы управлять своей системой домашней автоматизации. Бонусом к этой идее шли приватность и автономность. В итоге у меня «родилось» устройство под кодовым именем «Мария».
Но в этой статье не пойдет речь об использовании Raspberry Pi 4 Model B, так как в современных реалиях использование данного одноплатного компьютера стоимостью более $190, трудно назвать бюджетным решением.
❯ Давайте изобретать
Недавно компания Xunlong Software, которая занимается выпуском одноплатных компьютеров под маркой Orange Pi, представила интересное решение — плату Orange Pi Zero 2W с 4 ГБ оперативной памяти, стоимостью $27.
Данное решение вполне подходит для нашего проекта, как в техническом, так и в экономическом плане.
Итак, определимся с конструкцией устройства. Изучив спецификацию Orange Pi Zero 2W, у нас формируется следующий список дополнительных компонентов:
Динамик 52мм (просто он у меня уже был $1,3)
Усилитель низкой частоты (буду использовать PAM8403 $0,9 за 10 шт)
USB микрофон (xingzhaotong $1,5)
Шлейф FFC FPC 24pin тип B ($1)
RGB светодиод
❯ Разработка звуковой платы
Согласно документации, аудиовыходы реализованы на боковом разъеме FPC, а интерфейс I2S отсутствует. По крайней мере, мне не удалось его реализовать на этой плате. Таким образом, в качестве аудиовхода мы будем использовать USB-микрофон. В версии «Мария» я использовал I2S-микрофон, который продемонстрировал отличные результаты. Ниже предоставлена распиновка бокового разъёма.
Исходя из вышесказанного, в процессе разработки у нас получается следующая схема «звуковой платы»:
Так могла бы выглядеть плата при производстве на китайской фабрике:
❯ Изготовление звуковой платы
На тот момент, я разрабатывал прототип, и не было известно, как поведет себя схема звуковой платы. Поэтому пришлось выполнять изготовление прототипа платы в домашних условиях, для меня это дело привычное. Плата изготавливалась с помощью фоторезиста и вытравливалась в растворе перекиси водорода, лимонной кислоты и соли.
Немного были переживания относительно качества вытравливания мелких дорожек, но фоторезист не подвёл, всё получилось хорошо.
Ниже показано тестовое подключение звуковой платы к одноплатному компьютеру с помощью шлейфа FFC FPC:
❯ Настало время творчества! Проектируем корпус
Обычно в своих разработках я использую естественный интеллект. Поэтому пришлось придумывать дизайн корпуса самостоятельно, учитывая особенности печати 3D принтера. Разработку модели корпуса выполнял с помощью FreeCAD, результат моделирования вы можете видеть ниже.
Корпус в собранном виде
Вид снизу
Элементы корпуса были спроектированы с учетом оптимизации процесса печати, при этом качество не пострадало. В процессе печати не используются структуры поддержки. Ножки корпуса выполнены из TPU-пластика, использование флекс пластика предотвращает скольжение умной колонки по поверхности стола.
❯ Сборка умной колонки
Подключение элементов устройства выполняется по следующей схеме:
Как видно из схемы, для управления усилителем используется выход 28 (wPi 18) RPI разъёма, данный выход подключается к контакту звуковой платы с обозначением «SOUND EN». К выходам 26, 24, 22 подключается управление RGB светодиода, который выполняет функцию индикатора при выполнения запросов.
Как я упоминал ранее, в качестве микрофона используется USB микрофон марки xingzhaotong, который выглядит так:
Для установки в корпус колонки, нам необходимо его полностью разобрать и оставить только плату. Данная плата подключается согласно распиновки к соответствующим контактам на звуковой плате GND, DP, DM, VCC.
Давайте приступим к сборке устройства. Предварительная примерка платы Orange Pi Zero 2W:
Примерка динамика
Установка динамика и резонатора. Резонатор одновременно выполняет функцию фиксатора
Вид снизу
Вид сверху без верхней крышки, на верхней поверхности резонатора виден прикрепленный USB микрофон в центре будет размещен RGB светодиод.
Распечатанная на 3D принтере часть корпуса
Вид снизу собранной умной колонки. Также снизу располагаются вентиляционные отверстия для охлаждения платы
Для питания устройства используется модуль с разъёмом USB Type C, который фиксируется в специальном адаптере
❯ Немного программной части
В этой статье я не планировал описывать программную часть устройства, так как это занимает большой объем информации, лучше это сделать в отдельной статье. Но ниже будут предоставлены некоторые моменты по программной настройки устройства.
Операционная система:
В качестве операционной системы я использовал Debian Bullseye c версией ядра 6.1.31, скачать можно на официальном сайте Orange Pi.
Управление GPIO:
Для управления GPIO используется официальная библиотека Orange Pi wiringPi.
После успешной установки Orange Pi wiringPi, мы можем вывести таблицу GPIO:
gpio readall
В итоге мы увидим следующее:
Обратите внимание, что в колонке «V» указано текущее состояние пина RPI. Чтобы изменить состояние, мы можем воспользоваться следующими командами:
gpio mode 18 out # Изменение типа пина вход/выход (in/out) gpio write 18 0 # Изменение уровня пина низкий/высокий (0/1) gpio read 18 # Чтение состояние пина
Пример одного из вариантов управления GPIO из Python скрипта:
import os os.system("gpio mode 18 out") # Изменение типа пина вход/выход (in/out) os.system("gpio write 18 0") # Изменение уровня пина низкий уровень os.system("gpio write 18 1") # Изменение уровня пина высокий уровень os.system("gpio read 18") # Чтение состояние пина
Проверка наличия микрофона в системе:
Чтобы убедиться в правильности подключения микрофона, в консоли необходимо выполнить следующую команду:
Как видим из вывода, устройство USB PnP Sound Device успешно определилось в системе, если устройство отсутствует, то необходимо убедиться в его корректном подключении.
Настройка аудиовыхода:
Чтобы сконфигурировать аудиовыход под наши задачи, в терминале необходимо выполнить следующую команду:
alsamixer
В консоли появится окно с аудио устройствами, нажав F6 необходимо выбрать наше устройство с именем audiocodec и выполнить настройку как отображено ниже на картинке:
После этого можно выполнить алгоритм теста аудиосистемы.
Мы используем линейный выход, поэтому наше устройство имеет имя CDC PCM Codec-0 [CDC PCM Codec-0]. Давайте протестируем вывод звука через наше устройство.
Первое что нужно сделать — это включить наш усилитель с помощью команд:
gpio mode 18 out gpio write 18 1
Далее нам необходимо запустить тест с помощью генератора шума, командой в терминале:
speaker-test -c2 -Dplughw:0,0 # plughw:0,0 - это адрес нашего звукового устройства
Вывод команды:
speaker-test 1.2.4
Playback device is plughw:0,0 Stream parameters are 48000Hz, S16_LE, 2 channels Using 16 octaves of pink noise Rate set to 48000Hz (requested 48000Hz) Buffer size range from 32 to 131072 Period size range from 16 to 16384 Using max buffer size 131072 Periods = 4 was set period_size = 16384 was set buffer_size = 131072 0 - Front Left 1 - Front Right Time per period = 2.742858 0 - Front Left 1 - Front Right Time per period = 5.461073 0 - Front Left 1 - Front Right Time per period = 0.580064
Во время теста должен наблюдаться «белый» шум из динамика, если это произошло, то подключение и настройка аудиосистемы была выполнена корректно.
❯ Итог
В этой статье я попытался описать реализацию аппаратной части своего DIY проекта голосового ассистента для умного дома. Написание статьи отнимает большое количество времени, поэтому программную часть проекта постараюсь описать в следующем материале, если вам будет интересно.
Предугадывая ваш вопрос — «Почему бы не использовать Yandex Алису и подобные коммерческие решения?», сразу же изложу свою мысль:
Я сторонник автономных решений в плане их использования в критической инфраструктуре. А системы умного дома я отношу к этим категориям, поэтому, с моей точки зрения, использование устройств, зависящих от внешних систем, недопустимо. Описанное в статье решение не использует внешних сервисов для распознавания речи, векторизации запросов, синтеза речи и управления устройствами. И, конечно, я имею полный контроль над алгоритмами моего устройства, включая приватность.
Спасибо за ваше внимание! Ниже под спойлером несколько видео работы собранного устройства.
Два года назад по версии BrandZ™ Haier вновь вошел в топ-100 самых ценных брендов мира. Пройдя путь от отдельных продуктов до сценария «умного дома», а от него – к передовой экосистеме IoT, Haier завоевал признание пользователей по всему миру. Приложение hOn – это новый этап погружения в среду умного дома, элементы которого связаны единой сетью.
В этой статье мы подробно расскажем, как подключить кондиционеры Haier, работающие на платформе hOn, к голосовому ассистенту Алиса. Напоминаем, что подключение к IOT- экосистеме доступно для сплит-систем:
•Jade Super Match
•Flexis Super Match
•Coral Expert -20C
•Leader Super Match мульти.
1. При первом подключении WIFI скачайте фирменное приложение hOn из PlayMarket или AppStore.
2. Пройдите регистрацию, используя подсказки в приложении.
3. Запомните или запишите Email и пароль, который использовали при регистрации, данная информация потребуется в дальнейшем.
4. Добавьте новое устройство, следуя инструкциям приложения.
После регистрации новое устройство отобразится в списке и уже тогда можно подключать его к голосовому ассистенту Алиса.
5. Для этого скачайте приложение «Умный дом с Алисой» из PlayMarket или AppStore в зависимости от операционной системы вашего телефона.
6. Выберите «Устройство умного дома».
7. В списке приложений найдите hOn, либо вбейте название в поисковой строке для ускорения поиска и кликните на появившуюся иконку.
8. Прочтите инструкцию и нажмите кнопку «Привязать к Яндексу».
9. Введите, учетные данные своего аккаунта hOn (Email и пароль) и нажмите кнопку Login.
10. После авторизации нажмите кнопку «Обновить список устройств» в нижней части экрана.
11. После подтверждения об успешном добавлении устройства, можно полноценно использовать голосовой ассистент для управления кондиционером.
Поздравляем, теперь вы можете управлять домашним климатом, где бы не находились в реальном времени. И когда бы вы не приехали домой или в офис – погода в доме будет соответствовать вашим желаниям!
Прочитал прост, о том что Тинькофф слушает и решил выложить свою историю. Все уже привыкли к таргетированной рекламе. В прошлом году, закончил я автошколу и успешно купил ниву. Заехал в эту самую школу, к директору. Просто пообщаться. Ну и естественно он спросил, что за машина и все такое. Пообщались и я поехал. Через неделю увиделись и говорит, что ноут показывает запчасти на ниву теперь. Хотя никогда не вводил похожих запросов и ничего такого не искал. Так что ББ слушает нас везде. Имхо - если скрывать нечего, то пусть слушают. Сорян за ошибки.