В данном проекте голосовые команды распознаются приложением на Android планшете и передаются на Arduino по Bluetooth для управления электроприборами.
Настройка Android планшета состоит, как показано на скриншоте «А», в наборе пин кода — 1234. Этот пин код связян с Bluetooth модулем Arduino. На скриншоте «В» видно успешное подключение. При повторных запусках приложения ввод пинкода не запрашивается, он запоминается при первом запуске.
На скриншоте «А» показано выполнение команды «выключить все». На скриншоте «В» показано выполнение команды «включить 2».
Эти команды распознаются и включают электроприборы, подключенные к устройству управления.
Устройство управление состоит из четырех розеток, подключенных к электросети 220 в. Включаются розетки с помощью 4-х канальго реле. Включение канала реле выполняется Arduino. Об устройстве управления более подробно.
Приложение для управления голосом разработано в MIT App Inventor.
Эта штука делает очень простую снаружи (и очень сложную внутри) вещь. Передаёт через UART любому микрокомпьютеру текстовую строку того, что сказал пользователь (после ключевого слова Алиса или Яндекс). Фактически, это кусочек Яндекс.Станции для применения в самоделках.
С помощью неё можно собрать робота на Arduino, который будет управляться голосом. Можно сделать любую систему управления чем-либо с голосовым управлением. Можно встраивать голосовое управление в любое устройство.
Такой штуке будут очень рады как любители, так и кружки робототехники. На заглавной фотографии у меня в руке первый и пока единственный экземпляр Aliceduino. Серийные наборы появятся к новому году, точная цена пока не известна.
Микрофоны специально вынесены, чтобы их и платы можно было разместить в разных частях самоделки. Кстати, микрофоны цифровые (в каждый микрофон встроен АЦП).
Микрофонов может использоваться от двух до семи.
Набор состоит из трёх блоков.
Плата SoM содержит процессор, память, модули Wi-Fi, Bluetooth.
Aliceduino может работать в двух режимах. В первом она просто распознаёт речь и передаёт слова в виде текста.
Во втором режиме подключается искусственный интеллект.
Помимо Aliceduino на конференции рассказали о том, как работает беспилотный автомобиль Яндекса и показали всю его начинку, рассказали о системе умного дома, а ещё был неожиданно очень интересный рассказ о том, как Яндекс строил свои ЦОДы.
Трансляция конференции длилась больше пяти часов и я понимаю, что мало кто осилит её просмотр целиком. Могу посоветовать смотреть частями по одному выступлению в день. Поверьте, оно того стоит. Там действительно много интересного.
© 2019, Алексей Надёжин
Второй мой проект — lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Этот проект позволяет голосом управлять бытовой техникой с помощью голоса через приложение для Android. Для управления используется плата Arduino Amega2560, через которую прибор включается / выключается. Вы можете изменить приложение для Android, чтобы добавить больше функций. Скачайте Bluetalk приложение и установить его на свой Android телефон.
Блок питания 0…30 В / 3A
Набор для сборки регулируемого блока питания…
Схема управления состоит из Arduino Mega 2560 (board1). Чтобы включить или выключить реле плата сравнивает входные данные (речь), полученные через Bluetooth с сохраненными данными,.
Модуль Bluetooth (HC-05) подключен через последовательный порт.
Программное обеспечение.
Есть две программы, используемые в данном проекте. Одной из них является скетч для Arduino (Bluetalk.ino), а другой является Android приложение (Bluetalk.apk).
Для программирования Arduino используется программа IDE. Для разработки и изменения Android приложения используется MIT App Inventor, так как она проще в использовании по сравнению с Android SDK. Приложение MIT App Inventor хороша для энтузиастов, при создании небольших приложений для конкретных проектов.
Bluetalk.apk приложение использует функцию распознавания речи Google, и передает текст в Arduino через подключенный Bluetooth модуль (HC-05). Код .apk можно загрузить в MIT App Inventor с помощью импорта файла Bluetalk.
aia. Оба .apk и .aia файлы включены в архив, который можно скачать в конце статьи.Запустите Arduino IDE (v1.6.9) на вашем компьютере и подключите плату Arduino (мы используем Arduino Mega, но вы можем использовать любую другую плату Arduino). Выберите правильный последовательный COM-порт платы, а затем загрузите скетч. Отсоедините кабель от платы Arduino и подключите реле и модуль Bluetooth HC-05. Снова подключить Arduino к компьютеру.
Светодиод на модуле Bluetooth начинает быстро мигать, что означает, что он не подключен. После того, как модуль HC-05 соединиться со смартфоном, светодиод будет мигать сериями по два с некоторой задержкой.
Теперь скажите что-нибудь в свой смартфон и проверьте данные на серийный монитор среде разработки Arduino. После подтверждения того, что вы получаете данные от модуля HC-05, отсоедините кабель и подключите реле к прибору, как показано на схеме. При запуске приложения вам будет предложено ввести пароль (по умолчанию – 1234)
Источник: 2016/10 | ELECTRONICS FOR YOU
Скачать файлы к проекту (1,3 MiB, скачано: 322)Цифровой мультиметр AN8009
Большой ЖК-дисплей с подсветкой, 9999 отсчетов, измерение TrueRMS. ..
После того, как модули мне пришли, я начал с ними играться. Поставил штатный софт, подключил, пообучал, посмотрел возможности. Конечно, функционал этих модулей из коробки достаточно узок — распознавание некоторого количества команд управления роботом (больше они, ИМХО, ни для чего не годятся), зашитых намертво в прошивку на нескольких европейских языках + возможность добавить до 32-х своих собственных команд (то, ради чего модули и заказывались). Также, была очень заманчивая возможность сделать «избу-говорильню» — прошить в модуль наборы звуков, которые потом можно было бы воспроизводить через него как ответы.
Все вроде было замечательно, но меня очень сильно будоражил вопрос: «почему для SmartVR можно писать свои собственные программы, а для EasyVR нельзя?» И черт меня дернул раскопать всю эту кухню глубже.
Начал я с того, что выяснил такой момент — оба модуля работают на абсолютно одинаковых чипах, RSC-4128 компании Sensory. Что-то из услышанного когда-то давно подсказывало мне, что чип хороший, годный, стабильный и использовался в куче всяких роботизированных игрушек типа Furby. Так оно и оказалось.
На сайте разработчика с большим трудом были найдены и выкачаны разные доки — даташит на чип, описание технологических библиотек, СДК, примеры и много-много другого барахла. После изучения всего добра я влюбился в этот чип 🙂 Его возможности, фактически, оказались уникальны: других специализированных однокристальных решений (кроме более старшего семейства этой же фирмы) как-бы и не существовало.
T2SI использует достаточно сложный и интересный подход. Сначала на компьютере в специальной программе (QuickT2SI) формируются словари путем вбивания нужных слов или фраз с клавиатуры. Затем программа, в зависимости от выбранной языковой модели проводит преобразование этих слов и фраз к фонемам (при необходимости результат можно корректировать, вплоть до ручного набора слов фонемами IPA). После этого можно произвести тонкую настройку распознавания и сформировать объектные файлы с данными для вашего набора слов, которые должны быть включены в программу. Таких наборов может быть очень много, а нужный просто выбирается при вызове библиотечной функции распознавания.
Этот метод сложен технически, использует акустические модели фонем для разных языков, нейросети для их распознавания и скрытую марковскую модель (HMM) для статистического анализа и угадывания слов. Соль в том, что самая сложная работа — построение и обучение нейросети и формирование скрытой марковской модели — происходит на компьютере, а в устройство зашивается уже готовая нейросеть (в библиотеке на чипе есть софтовый нейропроцессор и анализатор HMM). Готовая нейросеть и модель содержит в себе только нужные состояния и фонемы для набора, поэтому получается очень компактная и быстрая.
Результат работы этого метода, конечно, впечатляет. Получается очень точное распознавание даже на больших словарях и с разными «говорителями». Но у метода есть для нас один очень большой недостаток. Нет модели русского языка 🙁 Причем, принципиально нет никаких ограничений, чтобы ее сделать, но разработчику, походу, это не особо нужно. Тем не менее, есть возможность использовать более-менее похожие модели испанского/итальянского с некоторыми ограничениями и набирать нужные слова сразу фонемами, но это не так удобно, хотя качество распознавания русских слов, запиленных таким образом, достаточно неплохое.
Второй метод — SD — основан на высчитывании огибающих слова/фразы и, возможно еще какой-то информации, типа FFT и генерации «паттерна» — отпечатка, соответствующего этому слову или фразе. По всей видимости, это какой-то векторный массив, наподобие паттернов, описывающих отпечаток пальца после векторного анализа. Только здесь, в качестве исходной информации выступает не картина папиллярного узора, а захваченная звуковая информация. Каждый паттерн занимает в памяти строго определенное количество байт — 256. Из нескольких паттернов в процессе обучения комбинируется «шаблон» (тоже 256 байт), который затем сохраняется в памяти, присваивается к какому-либо словарю и в дальнейшем можно запустить по этому словарю распознавание.
На практике же, при небольшом словаре с разными по произношению словами, система способна точно распознавать слова, даже если их говорит другой человек, что есть очень и очень хорошо!
На этом же принципе построена и SV — верификация говорящего, «голосовой пароль». Только разница в том, что информация векторизуется по другим признакам, и большее внимание уделяется конкретным характеристикам голоса говорящего. По этому и получается «пароль». А технически оно работает точно так же, как и SD.
Возможно запускать одновременно T2SI и SD/SV распознавание по разным наборам. Библиотечные функции достаточно просты и понятны, есть куча примеров, вполне читабельный хелп и аппноуты. Не утонете.
Для сохранения шаблонов требуется какая-то память. В комплекте библиотеки идет несколько модулей для работы с разными типами навесной памяти. Их достаточно просто подключить и настроить в конфигурационном файле, а библиотека возьмет на себя все остальное. На наших модулях установлена для этих целей I2C память 24LC64, которая как раз и позволяет хранить 32 шаблона. Драйвер для I2C памяти в поставке библиотеки есть. Даже с исходником. Примеры работы тоже есть.
Учтите, что библиотека занимает кучу ресурсов МК, так что оперативки остается порядка 250-300 байт (+ 256 байт RAMY буфера, которые используются для хранения паттернов при обучении SD и работе SD, но их можно использовать под свои нужды, на то есть библиотечные функции). При работе библиотечных функций практически не остается и процессорного времени, так что будьте аккуратны в прерываниях. Некоторым процессам (распознаванию, например) похеру и они просто будут работать дольше, а некоторым (воспроизведению звука) не похеру, и звук может начать трещать или вообще функция осыпется и вернет ошибку, что «недостаточно свободных циклов». Подробнее описано в документации (там такая большая таблица со всеми цифрами потребления). Но это все мелочи и решаются они просто грамотным программированием.
Да. Все программы из комплекта библиотек бесплатны. Кроме QuickT2SI, которая стоит $3500 в полном варианте. Жадность программы лечится скачиванием мною пропатченой версии по ссылкам во вложении к статье — «link.txt».
24LC64 совершенно спокойно перепаивается в 24LC256 и становится возможным хранить уже 128 шаблонов. 24LC512 к сожалению шире корпусом и на плату не влезает 🙂
Питается модуль от 3 до 5 вольт. На пинах, которые используются под UART стоит микросхема-преобразователь уровней (чтоб можно было шпарить до 5 вольт). На остальные пины подавать больше 3 вольт НЕЛЬЗЯ! Спалите пины или чип! Это вам не AVR!
А теперь самое главное, ради чего все затевалось! Разработчики модуля не афишируют эту возможность, но тем не менее, в модуль можно зашить абсолютно любой код! Устроено все так: в РОМе самого чипа сидит загрузчик, с которым может общаться программка «VeeLoader.exe» от VeeaR (из комплекта оригинального софта). А во флешке, которая на 1 мегабайт, собственно и лежит прошивка. Т.к. чип может работать либо со встроенным РОМом, либо с внешним флэшом, то вот и получается наша картина: подцепляем nXM на 3 вольта и чип стартует с вшитого по маске загрузчика, который может спокойно читать и писать флэшку без всяких ограничений или защит через UART. А если мы оставим висеть nXM свободно (на самом деле pull-down внутри чипа на несколько килоом), то чип будет стартовать с внешней флэшки. Таким образом, достаточно просто скормить HEX-файл своей программы VeeLoader’у и, вуаля, он зашьет ее во флэш! Делов-то 🙂
Вот таким образом мы получили достаточно мощный и недорогой инструмент для работы с натуральной речью, который можем лепить сами как захотим, не ограничиваясь рамками прошивки производителя. Можно делать все, на что хватит фантазии 🙂 Тем более, железка и технологии действительно уникальные, интересные и очень качественно вылизанные производителем (ребята из Sensory — молодцы).
Во вложении вы найдете ссылку на архив со всем необходимым (архив с софтом и пилюлями уникален и больше вы его нигде не достанете):
1. Инструментарий Sensory последних версий: QuickT2SI 3.1.7 (с лечивом), QuickSynthesis 5.2.1, библиотеки FluentChip 3.1.6 с примерами и всей документацией, в том числе на чип и железо.
2. Инструментарий Phyton: Project-SE 1.22.00 (с лечивом)
3. Инструментарий VeeaR: VeeLoader.exe и последняя прошивка EasyVR, если захочется вернуть штатный функционал
Все вопросы и пожелания пишите в комментах. Чем смогу — помогу :)
Доброго времени суток, сегодня в условиях изоляции, появилось свободное время, которое можно потратить на хобби, саморазвитие или просто интересно провести время читая Хабр.
Ну что же, надеюсь то, что будет описано ниже, будет интересно публике. Представляю вашему вниманию ещё одну свою самоделку, проект занял у меня почти пол года. Изначально планировал сделать подставку под телевизор в которую собирался вставить самодельный фальш-камин. Затем увидел видео гаражного диванчика с выезжающим баром на одном из ютуб каналов:
Идея очень понравилась, у исполнителя руки из нужного места, немного доработал и добавил своего. Теперь все самоделки надо было объединить в единое целое, так родилась идея камин-бара. Окончательное видение того, что я хочу видеть в результате появилось после просмотра следующего видео:
Итак, как это работает: при включении идет проверка узлов, загрузка, в этот момент бар озвучивает приветствие модным сейчас в мемах — голосом робота, далее устройство готово к эксплуатации.
Для управления предусмотрена сенсорная панель с двумя кнопками, одна — включает камин, другая — бар. Кнопки использовал ttp223. Бар выезжает и заезжает под музыкальное сопровождение, которое выбирается случайным образом. Управление через arduino nano которое регулирует скорость движения электро-стеклоподъемного механизма и посылает в порт плеера df player mini команды) После того как бар открыт, включаются периодические тосты, раз в пять минут. (По идее тут надо налить, выпить, скорее всего, время придется регулировать опытным путем) Так как сейчас на мой взгляд проходит настоящий бум голосового управления, я его тоже добавил. Реализовано на голосовом ассистенте «Дуся» (можно и Алису прикрутить).
Вместо медиацентра использую пока старый телефон, мою свободолюбивую жену очень напрягает фраза активации, но пока все остается без изменений.
Пост носит ознакомительный характер, не буду грузить публику техническими подробностями, если будет интересно, отвечу.
P.S. А вот так работает камин (дрова трещат, в живую смотрится реалистичнее):
© Habrahabr.ru
При создании камеры с нуля плата Arduino может быть не первой вещью, о которой вы думаете. Тем не менее, существует ряд Arduino-совместимых камер. Давайте посмотрим на доступные варианты.
Идея очень понравилась, у исполнителя руки из нужного места, немного доработал и добавил своего. Теперь все самоделки надо было объединить в единое целое, так родилась идея камин-бара. Окончательное видение того, что я хочу видеть в результате появилось после просмотра следующего видео:
Итак, как это работает: при включении идет проверка узлов, загрузка, в этот момент бар озвучивает приветствие модным сейчас в мемах — голосом робота, далее устройство готово к эксплуатации.
Для управления предусмотрена сенсорная панель с двумя кнопками, одна — включает камин, другая — бар. Кнопки использовал ttp223. Бар выезжает и заезжает под музыкальное сопровождение, которое выбирается случайным образом. Управление через arduino nano которое регулирует скорость движения электро-стеклоподъемного механизма и посылает в порт плеера df player mini команды) После того как бар открыт, включаются периодические тосты, раз в пять минут. (По идее тут надо налить, выпить, скорее всего, время придется регулировать опытным путем) Так как сейчас на мой взгляд проходит настоящий бум голосового управления, я его тоже добавил. Реализовано на голосовом ассистенте «Дуся» (можно и Алису прикрутить).
Вместо медиацентра использую пока старый телефон, мою свободолюбивую жену очень напрягает фраза активации, но пока все остается без изменений.
Пост носит ознакомительный характер, не буду грузить публику техническими подробностями, если будет интересно, отвечу.
P.S. А вот так работает камин (дрова трещат, в живую смотрится реалистичнее):
© Habrahabr.ru
При создании камеры с нуля плата Arduino может быть не первой вещью, о которой вы думаете. Тем не менее, существует ряд Arduino-совместимых камер. Давайте посмотрим на доступные варианты.
В период с 2003 по 2008 год продажи цифровых фотокамер выросли втрое, пока смартфоны не изменили ситуацию, и цифровые фотоаппараты быстро не стали популярными. Легко понять, почему телефоны ориентированы на пользователей именно благодаря их камерам
, В конце концов, гораздо проще иметь только одно устройство для переноски.
Войдите в комплект TaskCam. Специально ориентированный на художников и рынок бытовой электроники, он идеально подходит для тех, кто предпочитает создавать свои собственные камеры.
Простое, но элегантное печатное издание TaskCam 3D предназначено для имитации ощущения одноразовой камеры с некоторыми заметными отличиями. Arduino Uno — это мозг операции. Экран TaskCam предоставляет экран для публикации «заданий» пользователю вместе с кобурой батареи, слотом для карты SD и блоком камеры. Все это отлично вписывается в 3D-печатный футляр или корпус по вашему собственному замыслу!
Предназначенная для использования в общественных местах для фотографирования на основе подсказок, TaskCam — новый взгляд на цифровую фотографию. Лучше всех? Проект с открытым исходным кодом, поэтому вы можете бесплатно скачать схемы из CircuitMaker и сделать свою собственную печатную плату. 3D-печать рассчитана даже на бюджетные принтеры, что делает ее отличным начинающим проектом для 3D-печати. Наш гид по 3D-печати
поможет вам в этом процессе!
ArduCAM — это модуль SPI, разработанный для использования с микроконтроллерами. Модули работают при достаточно низком напряжении, чтобы получать питание непосредственно от контактов Arduino, но обеспечивают выходное разрешение, достаточно высокое для различных применений.
Это делает устройства ArduCAM SPI идеальными для удаленного видеонаблюдения в домашних условиях. Именно такой подход использует пользователь dmainmon от Instructables в своей камере с питанием ESP8266 с веб-интерфейсом:
В Instructable проекта dmainmon заменяет плату Arduino на совместимый, но лучше оснащенный ESP8266. (Мы также думаем, что ESP8266 побеждает Arduino!
) Это делает камеру беспроводной, а включенный код поддерживает статические изображения и потоковую передачу видео в браузер.
Эта сборка находится всего в одном шаге от автоматизированной системы наблюдения. Тем не менее, опытные пользователи IFTTT (наше руководство IFTTT
) может использовать плагин для периодического сохранения изображений в Dropbox.
Немногие вещи круче, чем рука робота с автоматическим слежением. Один из них — пистолет с дротиком из пены, прикрепленный к руке робота с автоматическим слежением. Сочетая несколько частей из линейки RobrosGeek компании Trossen Robotic, этот автоматический снайперский стол робота с отслеживанием цвета использует модуль камеры Pixy в сочетании с Arduino для отслеживания целей.
Руководство команды Trossen Robotics для Arduino Project Hub охватывает каждый элемент для настройки автономного прицельного робота. Они также предоставляют ссылку для покупки всех частей, необходимых для его создания. В то время как есть более дешевые варианты для первого проекта робототехники Arduino
, этот выигрывает очки за то, что очень, очень круто.
Несмотря на то, что камера Arduino Yun, похожая на камеру безопасности ESP8266, ранее описывалась в этой статье, имеет существенное отличие. Он подключается к плате через USB.
Это имеет несколько явных преимуществ. Веб-камеры USB легко доступны, и многие бюджетные USB-видеоустройства находятся на бюджетном конце спектра. Это делает этот проект идеальным для тех, кто хочет возиться с камерами на платформе Arduino, не покупая дорогостоящие детали, которые они могут никогда не использовать.
Когда срабатывает датчик движения, изображения с веб-камеры сохраняются на SD-карте Yun перед загрузкой в Dropbox пользователя через Temboo для последующего просмотра. Настройка также позволяет передавать потоковое видео непосредственно на YouTube, что делает этот проект не просто еще одной домашней системой безопасности, но уникальным методом потоковой передачи в реальном времени.
Однако у этого метода есть предостережение. Arduino Yun был «удален» в рамках проекта Arduino, и хотя платы по-прежнему доступны у сторонних поставщиков, их может быть нелегко найти. Тем не менее, некоторые доски клонов, которые будут выполнять аналогичную функцию, и экраны Arduino, такие как Dragino Yun Shield, имеют такую же функциональность, что и оригинальная Arduino Yun.
Наличие робота для заказа — одно из лучших ощущений в мире. Хотя может пройти некоторое время, прежде чем мы можем случайно попросить нашего робота-дворецкого приготовить нам еду, небольшая хитрость может принести вам послушного маленького работника робота сегодня!
KureBas Robotics объединила голосовую активацию, дешевую экшн-камеру и двухколесного робота-робота с оружием для создания своего робота для чистки стола Arduino.
Комбинируя функцию Wi-Fi экшн-камеры с системой Bluetooth для управления движением робота, KureBas использовал камеру многократного использования, а не дорогостоящий блок только с микроконтроллером. Дистанционное управление роботом вместе с голосовой активацией стало возможным благодаря приложению Android, разработанному разработчиком проекта, которое можно загрузить со страницы учебника.
Есть много проектов DIY камеры
которые не используют Arduino, но для полностью интегрированных проектов, платформа Arduino наряду с другими подобными микроконтроллерами добавляет новый элемент в цифровую фотографию.
Корпорация Google начинала свою деятельность как поисковик, и на данный момент поиск информации с помощью мобильных устройств так и остается одним из главных направлений развития. С каждым обновлением системы телефона/планшета, Google Play Services и отдельных программ появляется все больше новых функций, призванных облегчить жизнь пользователю. В этой статье я расскажу о наиболее полезных голосовых командах, контекстном поиске Now on Tap, а также покажу, как настроить телефон для выполнения любых голосовых команд, в том числе с помощью Tasker. Ведь именно об этом мы так мечтали, читая произведения фантастов в детстве.
Традиционно все новейшие разработки от «корпорации добра» внедряются на устройствах линейки Nexus. Так было и с голосовым управлением, и с Google Now, системой подачи информации в виде набора кaрточек. За Google Now, простой поиск Google и голосовой поиск отвечает одно приложение, это Google. Оно входит в комплект стандартных приложений от компании Google и доступно на любом сертифицированном Android-смартфоне.
Ранее голосовое управление активировалось только при нажатии на значок микрофона при открытой программе поиска (или на виджеты на рабочем столе). Затем появился лаунчер Google Старт, который позволил выполнять голосовые команды прямо с рабочего стола (с помощью фразы «Ok, Google»). Начиная с Android 4.4 та же возможность стала доступна и в других лаунчерах, но только при условии, что лаунчер явно поддерживает такую возможность (почти все популярные лаунчеры поддерживают).
Также существует несколько смартфонов с продвинутой функцией голосового управления, активируемoй, даже если экран смартфона выключен. Например, MOTO X содержит отдельный процессор с очень низким энергопотреблением, который только и занимается, что в фоновом режиме слушает все окружающие звуки на предмет ключевой фразы.
Виджет поиска на рабочем столе
Настройки голосового поиска
Простой поиск информации, конечно же, самая главная функция Google Now. Причем он достаточно интеллектуален, чтобы понимать контекст, а значит, команды можно объединять в цепочки. Например, если сказать: «О’кей, Google, кто президент Никарагуа?», то поиск выдаст ответ «Даниэль Ортега». А если далее спросить «Сколько ему лет?», то ответ будет «Семьдесят лет». Google Now понимает массу команд, приведу десять наиболее полезных.
Описанию этого сервиса было уделено отдельное пристальное внимание на презентации Android 6.0 Marshmallow. И преподносился он как одна из основных особенностей новой прошивки. Но более-менее нормальную функциональность в России мы получили только в декабре. В официальном русском переводе он называется контекст от Now.
[ad name=»Responbl»]
Как это работает? «Когда вы запускаете контекст от Now, Google анализирует все, что вы видите на экране, и ищет информацию в соответствии с этими данными» — вот официальное описание со страницы поддержки. На деле это значит, что вместо того, чтобы выделять и копировать интересующие фразы на экране, затем открывать поиск и вставлять фразу, можно просто нажать и удерживать кнопку «Домой». После этого Google предложит варианты для найденных ключевых фраз. Это могут быть картинки, видео, предложение открыть это место на картах, новости. Может предложить открыть сайт организации или сделать звонок, открыть профиль Facebook или посмотреть Twitter-аккаунт знаменитостей, добавить заметку. При наличии соответствующих приложений на устройстве после тапа на иконке страница откроется сразу внутри приложения. При прослушивании музыки из разных приложений можно одним нажатием вызвать подробную информацию об исполнителях, альбомах, клипах на YouTube и прочем.
Работа Now on Tap на примере «ВКонтакте»
Так же как и в десктопной версии поиска, в голосовом поиске есть пасхалки. Приведу только несколько команд, остальные можешь узнать по этой ссылке. К сожалению, почти все они срабатывают только на английском языке и с английским интерфейсом или при выбранном в настройках только английском языке.
«Do a barrel roll».
«Make me a sandwich!»
«Sudo make me a sandwich!»
«When am I?»
«Beam me up, Scotty!»
«Up up down down left right left right».
«What does the fox say?»
Если после всего прочитанного тебе все равно не хватает команд для воплощения своих фантазий, то, имея немного времени, можно настроить Google Now на выполнение практически любых команд. Для этого нам понадобятся прежде всего Tasker и плагин AutoVoice.
С помощью Таскера можно совершать множество действий: запускать приложения, контролировать звук, запускать скрипты, управлять экраном, проводить манипуляции над файлами, нажимать кнопки на экране, управлять media, делать запросы HTTP Get и Post и реагировать на них, управлять расширенными настройками телефона. И все это можно делать, отдавая голосовые команды. А с помощью множества плагинов функциональность расширяется еще больше.
[ad name=»Responbl»]
Для начала работы необходимо включить пункт Google Now Integration внутри AutoVoice. В Таскере необходимо создать отдельный профиль для каждой команды или группы команд. Как обычно, для составления профилей рекомендую в настройках Таскера включать английский. Для тестового профиля составим голосовую команду выключения звука. Для этого создадим новый профиль с параметрами Event → Plugin → AutoVoice Recognized. Заполняем следующие поля:
Для действия используем Audio → Ringer Volume и Audio → Notification Volume. Для контроля срабатывания можно добавить всплывающее уведомление через Alert → Flash и в поле Text ввести «Выключил».
Команды «выключи вайфай» работают сразу в Google Now, а «выключи звук» предлагает открыть настройки. И после перехвата команды через Таскер и ее выполнения все равно остается на текущем экране с запросом. Поэтому к действиям дополнительно добавим App → Go Home. Ну а чтобы позабавить друзей, во всех профилях для управления голосом можно первым действием поставить Alert → Say и ввести фразу «слушаюсь, хозяин». Тогда телефон в ответ на команды будет реагировать голосом.
Настройка профиля | Настройка действий |
С помощью дополнительных плагинов, например AutoRemote, можно управлять другими устройствами на Android. А если на комп поставить EventGhost, то с помощью многочисленных плагинов можно сделать немало интересного. Одним из самых полезных применений будет настройка умного дома, но это отдельная большая история. У Жуана Диаса (Joao Dias), разработчика всех Auto*-плагинов, есть также дополнение и для компа, что позволяет интегрировать управление мобильными устройствами через голосовой помощник Cortana на десктопе.
Таскер — это хардкор. Можно творить потрясающие вещи, но для этого нужно освоить много информации, разбираться в переменных, регулярных выражениях и прочем. Для тех, кто не хочет возиться с Таскером, есть большое количество программ, которые используют возможности голосового управления, но имеют более понятный и доступный интерфейс и просты в обращении. Остановлюсь на трех.
Программа позволяет изменить ключевую фразу с «Ok, Google» на любую другую. К сожалению, после одного из обновлений сервисов и запроса от Google перестала работать с Google Engine, оставив только PocketSphinx. В связи с этим для ключевой фразы подходят только английские словосочетания, но раньше можно было удивлять присутствующих обращением к телефону «эй, ты» или «слушай команду».
Тем не менее разработчик обещает все поправить в следующих обновлениях. Из других функций можно отметить запуск распознавания по датчику приближения (два взмаха руки) и по встряске телефона. Как и MOTO X, поддерживает распознавание при выключенном экране, но, к сожалению, это очень сильно отражается на батарее, поэтому актуально для телефона на зарядке или автомобильных медиацентров на Android с постоянным питанием. Работает с Bluetooth-гарнитурой, имеет интеграцию с Таскером, может зачитывать текстовые сообщения.
Open Mic+ for Google Now
Еще одна программа от разработчика Open Mic+. Интегрируется с Google Now и позволяет использовать расширенный набор команд. В списке поддерживаемых есть следующие: включить/выключить беспроводную точку доступа, приостановить/возобновить музыку, следующая/предыдущая песня, непрочитанные СМС/gmail (озвучит их голосом), громкость <х>, блокировка телефона, сделать снимок, сделать селфи. Также можно включить диктофон, управлять подсветкой, автоповоротом экрана. С рутом можно выключить/перезагрузить телефон, очистить уведомления, включить режим «В самолете». Для поддерживаемых функций можно менять команды на свои. Также имеет интеграцию с Таскером, позволяя включить для каждой задачи срабатывание по названию Task. Есть модуль для Xposed, позволяющий использовать Commandr с Android Wear.
Commandr for Google Now
Ну и наконец, детище российских разработчиков — русскоязычный голосовой ассистент Дуся, который объединяет в себе все преимущества описанных приложений и утилит. Как и Tasker, Дуся позволяет создавать свои голосовые функции (они называются «скрипты»), причем в намного более понятной и простой форме (есть справка на русском, видеоуроки) и с более мощными функциями работы именно с речевыми командами. Вдобавок здесь есть и свой онлайн-каталог готовых скриптов, созданных другими пользователями. На момент написания статьи их было около ста.
Так же как и Commandr, Дуся умеет интегрироваться с Google Now, а также имеет множество видов других бесконтактных активаций — встряхиванием, взмахом, гарнитурой, поднесением к уху и в том числе и своей фразой активации на русском. А если хочется использовать интерфейс, то и он есть, очень простой, быстрый и функциональный. Среди функций есть 25 наиболее часто востребованных, есть даже управление умными домами и домашними кинотеатрами.
Возможности ассистента Дуся
Сегодня функции голосового поиска в смартфонах очень развиты, и, как ты смог убедиться, разработчики предлагают нам не просто набор команд для поиска информации, а полноценную систему управления смартфоном, которую при определенных усилиях можно интегрировать с домашним компом и даже умным домом. Так что, если тебе удобнее управлять всем этим с помощью голоса, у тебя есть для этого все необходимое.
Click to rate this post!
[Total: 24 Average: 3.6]// ---- ЦЕНТРАЛЬНЫЙ БЛОК - Умный дом // Программный код интеллектуальной домашней системы Arduino - Central Unit. // На основе платы Arduino / Genuino 2560, адаптеров Bluetooth HC-05, приемника RF 315/433 МГц, ИК-приемника, считывателя и программатора MFRC-522, // Модуль Elechouse VR3, драйверы дисплея TM1637, ЖК-экран ST9720 (12864), матричная клавиатура 4x4, чип DS3231 RTC, 4-канальная плата реле, // Голосовые чипы ISD1820PY с усилителем LM386, активными и управляемыми NE555 зуммера.// // Он управляет настольным освещением и медиаплеером (как локальными устройствами), а также управляет другим блоком системы, // Термостат через Bluetooth. Эти устройства подключаются и синхронизируют каждый заказ автоматически, поэтому в системе нет недостающей или устаревшей информации. // // Центральный блок принимает команды Bluetooth (например, Android), голоса (речь), ИК- и РЧ-пульта ДУ и клавиатуры для управления // локальные устройства, или пересылает команду на блок термостата и получает от него отчеты о рабочем состоянии.// Вся система может быть заблокирована картами RFID (с полнофункциональным меню обработчика карт). // Все системные настройки и информация (RFID-карты, заблокированное / разблокированное состояние, состояние устройства, будильник и т. Д.) Хранятся в EEPROM. // // Другая часть системы - это термостат на базе Arduino Nano, термодатчик DS18B20, Bluetooth HC-05, OLED-дисплей I2C 128X64. // Управляет газовым котлом НАГРЕВАТЕЛЬ, вентилятором ВЕНТИЛЯЦИЯ и ОСВЕЩЕНИЕМ кухни. Программа обнаруживает аппаратные ошибки и окно // открытие - в этих случаях нагреватель останавливается и / или не запускается.// Работает в единицах Цельсия и Фаренгейта (при изменении преобразует сохраненные предыдущие значения температуры) и вычисляет стоимость природного газа. // ------------------------------------------------ -------------------------------------------------- ---------------------------------- // // Разработано, построено и запрограммировано // Дьюла Оси. // Все права защищены. // ------------------------------------------------ -------------------------------------------------- ---------------------------------- // ---- MFRC-522 и безопасность системы #include#include #define SS_PIN 53 // RST: 48, MISO: 50, MOSI: 51, SCK: 52, SDA: 53 #define RST_PIN 48 MFRC522 rfid (SS_PIN, RST_PIN); // экземпляр класса MFRC522 :: MIFARE_Key key; String strC; // собираем и сохраняем показания #define arrNUIDSize 4 Строка strNUID [arrNUIDSize]; char arrNUID [arrNUIDSize] [20]; // количество строк и длина каждой строки #define lckItems 2 // я -> 0 1 const int lock_strings [lckItems] = {98, 97}; bool заблокировано; // состояние syslock bool cardManager = 0; // я -> 0 1 2 3 4 5 6 7 bool cardBoolSwitches [8] = {1, 1, 0, 0, 0, 0, 0, 0}; // ---- Массив операторов двоичных карт и кодов состояния процесса // [i] FUNCT // 0 было замечено (temp = 1) // 1 получаем NUID (вызов при запуске) // 2 еще не сохранены // 3 удаляем // 4 уже сохранены // 5 новых NUID // 6 неверный тип карты // 7 памяти заполнены // я -> 0 1 2 3 bool delNUID [arrNUIDSize] = {0, 0, 0, 0}; // помечено для удаления // ---- получение IR # включить const int RECV_PIN = 8; IRrecv irrecv (RECV_PIN); decode_results результаты; // ---- Шестнадцатеричные символы матрицы и кнопки #include константная байтовая матрица R = 4; // Р константная байтовая матрица C = 4; // C char matrixHEXkeys [matrixR] [matrixC] = {// определяет символы на кнопках клавиатур // iR / C -> R0C0 R0C1 R0C2 R0C3 R1C0 R1C1 R1C2 R1C3 R2C0 R2C1 R2C2 R2C3 R3C0 R3C1 R3C2 R3C3 {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {' * ',' 0 ',' # ',' D '} }; byte pinsMatrixR [matrixR] = {40, 42, 44, 46}; // подключаемся к выводам ряда клавиатуры byte pinsMatrixC [matrixC] = {43, 45, 47, 49}; // подключаемся к распиновке колонки клавиатуры CustomKeypad = клавиатура (makeKeymap (matrixHEXkeys), pinsMatrixR, pinsMatrixC, matrixR, matrixC); // инициализируем экземпляр класса NewKeypad int matrixVal; // сохраняет аналоговое значение при нажатии кнопки int sum = 0; // для сбора управляющих кодов с клавиатуры и ИК char sumChar [2]; // преобразовать в char для записи const byte btnAl = 28; // ---- RF 315/330/433 МГц, прием # включить RCSwitch mySwitch = RCSwitch (); const byte pwrRF = 27; bool rfOn; // ---- Дисплей TM1637 #include "SevenSegmentTM1637.h" #include "SevenSegmentExtended.h" константный байт CLK0 = 4; const byte DIO0 = 5; SevenSegmentExtended d0 (CLK0, DIO0); константный байт CLK1 = 6; константный байт DIO1 = 7; SevenSegmentExtended d1 (CLK1, DIO1); char sevenTempr [4]; int sumPrev; // ---- Отображение ST7920 #include "U8glib.h" U8GLIB_ST7920_128X64 u8g (39, 38, 41, U8G_PIN_NONE); // конструктор экрана 13, 12, 9, U8G_PIN_NONE байтовый кадр = 0; bool prntRTC = 0; // ---- Внутренняя последовательная связь и состояние удаленных устройств bool onlink = 1; // 1, чтобы отправить запрос синхронизации для двоичных отчетов, и попытаться переключить блок термостата в // режим onlink при запуске.После неудачной попытки это логическое значение станет нулевым в течение пяти секунд. const int requestInt = 99; // запрос циклических бинарных отчетов String recvdStates; // сохраняем полученный отчет bool gotReport = 0; // Блок термостата был замечен с момента запуска центрального блока const char expiredReport = 'X'; // отчет с истекшим сроком действия пуст, содержит только преамбулу String strTemprRecvd; // сохраняем значение tempr, извлеченное из потока данных, отправленного термостатом // ---- Управление памятью #include // вызовы памяти // я -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 const byte addr [14] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22}; // -------- Карта памяти -------- // // [i] VAL // 0 bool заблокировано // 1 bool УДАЛЕННАЯ ФУНКЦИЯ // 2 bool prntRTC // 3 bool relayDLState // 4 bool relayMPState // ----> byte al [i] VAL // 5 байт al [4] 0 alH0 // 6 байт al [4] 1 alh2 // 7 байт al [4] 2 alM0 // 8 байт al [4] 3 alM1 // ---- // 9 логических значений alOn // 10 bool rfOn // 11 bool vrOn // 12 байт RFID INIT // 13 байт RFID REL // // ------------------------------ байтовый указатель = 0; // ---- Внешняя последовательная связь #define exRXSize 5 char exRX [exRXSize]; // переменная для приема данных из последовательного порта bool auth = 0; константный байт ledAuth = 26; bool startup = 1; // иначе процедура самозащиты будет запускаться при запуске const byte extBTen = 3; // ext bt enable // ---- Местные устройства const byte relayDL = 9; // настольные светильники bool relayDLState; константный байт relayMP = 12; // медиа плеер bool relayMPState; // ---- Строки и связанные функции char inCharFromIntBT; String strCollectFromIntBT; #define strSize 6 Строка str [strSize]; #define functItems 74 // i -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 const String functStr [functItems] = {"ГОТОВ."," Голосовая команда "," Команда Bluetooth "," ИК-код принят "," Код BT отклонен "," РЧ-сигнал принят "," Клавиша нажата "," Медиаплеер есть "," Desklights есть "," CODE = ", "* DEL | ENTER # »,« Центральный блок »,« un »,« заблокировано! »,« Desklights включен. »,« Desklights выключен. »,« Mediaplayer включен. »,« Mediaplayer выключен. »,« Temperature = » , «.», «!», «Термостат Offlink!», «Термостат Onlink!», «ONLINK», «CARD MANAGER», «del:», «A», «B», «C», «D» , «Карта удалена!», «Уже сохранена!», «Новая карта сохранена!», «Память заполнена!», «Неверный тип карты!», «Карта отклонена!», «Карта принята!», «Авторизованный пользователь! »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« УДАЛЕННАЯ ФУНКЦИЯ »,« СКОРО ПЕРЕЗАГРУЗИТЬ СИСТЕМУ »,« Вы может подключиться сейчас."," До свидания. "," ОШИБКА "," Часы настроены. "," Пожалуйста, скажите "," Какая температура "," вы хотите? "," Система "," Функция! "," Пользователь отключен. " , "Тревога принята. "," Тревога отклонена. "," Тревога отключена. "," Тревога включена. «,«: »,« Проснись! »,« РЧ-приемник включен. »,« РЧ-приемник выключен. »,« Целевая температура: »,« [10] - [24] Цельсия »,« [50] - [76 ] Фаренгейт »,« VR3 включен. »,« VR3 отключен. »,« Система заблокирована! »,« Отправка руководства ... »,« Нет подключенного пользователя. »,« Руководство отправлено. »}; #define sevenItems 18 // i -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 const String sevenStr [sevenItems] = {"", "SYS_", "boot", "CArd", "MENU", "dEL", "Add", "A_St", "FULL", "CodE", "- - »,« ЛЭЦ »,« ИГРАТЬ »,« Хорошо »,« БЕ »,« Конн »,« СКАНИРОВАТЬ »,« АЛ »}; // ---- Системные таймеры # включить // ---- Countdn tmr для запроса синхронизации или аннулирования полученного отчета elapsedMillis timer0; // 8-битный таймер ШИМ, используемый функцией elapsedMillis () #define sysTmrExpired 5000 // таймер истечения циклического бинарного отчета [мс] // ---- циклические таймеры для различных функций системы, как показано ниже; #define cycTmrInterval0 200 // используется для вызова RTC #define cycTmrInterval1 800 // значок мигает tmr #define cycTmrInterval2 2400 // семисегментные распечатки по времени #define cycTmrInterval3 5000 // Отображение события NUID #define cycTmrDim 4 bool cTmrUp [cycTmrDim]; // двоичное состояние каждого tmrs беззнаковый длинный cTmrPrev [cycTmrDim]; // предыдущие значения для сравнения // ---- Управление системой # включить uint8_t presc = WDTO_60MS; // ---- ISD1820PY & Buzz const byte play0 = 22; const byte play1 = 23; константный байт LM386 = 25; // я -> 0 1 константный байт зуммер [2] = {13, 24}; // D13 (ШИМ) и D24 // ---- DS3231 #include DS3231 rtc (SDA, SCL); // инициализируем DS3231 с помощью аппаратного интерфейса String strTM; #define RTCArrSize 4 byte tm [RTCArrSize]; byte al [RTCArrSize]; bool alOn; bool alActivated = 0; // временная переменная, становится высокой, если все включено, используется для серийного отчета bool alActive = 0; // временная переменная для сравнения TM и AL, становится высокой, если эти значения совпадают, и // активирует процедуру тревоги, превращая alCnt в 1.байт alCnt = 0; // включает процедуру срабатывания сигнализации продолжительностью более одной минуты, она увеличивается до тех пор, пока // достигаем предела alCntLim. Один alCnt период равен cycTmrInterval2, поэтому занимает 2400 мс. константный байт alCntLim = 255; // ---- VR3 bool vrOn; константный байт ledVrOn = 29; #include #include "VoiceRecognitionV3.h" VR myVR (10, 11); // RX, TX запись uint8_t [7]; // сохраняем запись uint8_t buf [64]; байтовая группа; #define spkHeater (0) #define spkAiring (1) #define spkKitchen (2) #define spkMedia (3) #define spkDesklig (4) #define spkSys (5) #define spkTempr (6) #define spk17 (7) #define spk18 (8) #define spk19 (9) #define spk20 (10) #define spk14 (11) #define spk58 (12) #define spkBack (13) #define spkCost (14) #define spkCost0 (15) #define spkReport (16) #define spkReboot (17) #define spkTime (18) #define spkDisc (19) #define spkSilence (20) // ---- Терминаторы и команда уборщиков const char termCharNull = '0'; const char termChar = 'Z'; const char termCharSpc = ''; char termCharEmpty; const String strTerm; const int intTerm = 0; const bool boolTerm = 0; // ---- Запускать const uint8_t frame1 [] U8G_PROGMEM = { 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC0, 0x7F, 0x01, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0x02, 0x80, 0x7F, 0x01, 0xE0, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC0, 0x7F, 0x01, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0xFE, 0x9F, 0x7F, 0xFF, 0xFF, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC1, 0x7F, 0x81, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xAF, 0xFF, 0x02, 0x81, 0x7F, 0x81, 0xE0, 0xBF, 0xD7, 0xFF, 0xFF, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC1, 0x7F, 0x81, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0x02, 0x81, 0x7F, 0x81, 0xE0, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC1, 0x7F, 0x81, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0x02, 0x81, 0x7F, 0x81, 0xE0, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC1, 0x7F, 0x81, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0x02, 0x81, 0x7F, 0x81, 0xE0, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0x02, 0xC1, 0x7F, 0x81, 0xC0, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0xFF, 0x02, 0x81, 0x7F, 0x81, 0xE0, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0xFF, 0xFE, 0xFF, 0x7F, 0xFF, 0xFF, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0x40, 0x10, 0xA8, 0x7F, 0x00, 0x48, 0x22, 0x09, 0x00, 0xBF, 0x17, 0x08, 0x02, 0xFD, 0xFF, 0x7F, 0x41, 0x10, 0xB8, 0x7F, 0x20, 0x49, 0x22, 0x49, 0x02, 0xBF, 0x2F, 0x08, 0x02, 0xFF, 0xFF, 0xBF, 0xAA, 0xAA, 0xAA, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0x57, 0x55, 0x55, 0xFD, 0xFF, 0x7F, 0x55, 0x55, 0xB5, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xAF, 0xAA, 0xAA, 0xFE, 0xFF, 0xBF, 0xAA, 0xAA, 0xAA, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0x57, 0x55, 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7F, 0x26, 0x49, 0x22, 0x49, 0x32, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x3F, 0x00, 0x49, 0x22, 0x49, 0x00, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x55, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFC, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0x1F, 0xF0, 0xFF, 0xFF, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x0F, 0xE0, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0x07, 0xC0, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x80, 0xFF, 0x03, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0x03, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x80, 0xFF, 0x05, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xDF, 0xFF, 0xFD, 0xDF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x81, 0xFF, 0x05, 0x81, 0xFF, 0x3F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xC1, 0xFF, 0x05, 0xC1, 0xFF, 0x7F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x81, 0xFF, 0x05, 0x81, 0xFF, 0x3F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0x5F, 0xFD, 0xFF, 0xFF, 0x05, 0xC1, 0xFF, 0x05, 0xC1, 0xFF, 0x7F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0x05, 0x81, 0xFF, 0x05, 0x81, 0xFF, 0x3F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0x79, 0x8F, 0xFF, 0xFF, 0x05, 0xC1, 0xFF, 0x05, 0xC1, 0xFF, 0x7F, 0x10, 0x04, 0xFF, 0xFF, 0xFF, 0x7C, 0x3F, 0xFF, 0xFF, 0x05, 0x81, 0xFF, 0x05, 0x81, 0xFF, 0x3F, 0x10, 0x04, 0xFF, 0xFF, 0x7F, 0x7E, 0x3F, 0xFE, 0xFF, 0x05, 0xC1, 0xFF, 0x05, 0xC1, 0xFF, 0x7F, 0x10, 0x04, 0xFF, 0xFF, 0x3F, 0x7D, 0xDF, 0xFC, 0xFF, 0x05, 0x81, 0xFF, 0x05, 0x81, 0xFF, 0x3F, 0x10, 0x04, 0xFF, 0xFF, 0x9F, 0x7B, 0xEF, 0xF9, 0xFF, 0x05, 0xC1, 0xFF, 0x05, 0xC1, 0xFF, 0x7F, 0x10, 0x04, 0xFF, 0xFF, 0x8F, 0x77, 0xF7, 0xF9, 0xFF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0x7F, 0xFF, 0xFF, 0x9F, 0x6F, 0xFB, 0xF1, 0xFF, 0x01, 0x00, 0x55, 0x01, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x5F, 0xFD, 0xF9, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xAF, 0xAA, 0xAA, 0xFA, 0xFF, 0x9F, 0x3F, 0xFE, 0xF1, 0x7F, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0x57, 0x55, 0x55, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7F, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7F, 0xFF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; const uint8_t frame2 [] U8G_PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xF0, 0x87, 0x1F, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x08, 0x60, 0x00, 0x00, 0x00, 0xCE, 0x1F, 0x38, 0x80, 0x21, 0xC0, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x88, 0x80, 0x01, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x22, 0x80, 0x01, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x10, 0x04, 0x03, 0x00, 0x40, 0x20, 0x40, 0x00, 0x01, 0x20, 0x01, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x0C, 0x00, 0x30, 0xC0, 0x1F, 0x00, 0xC6, 0x7F, 0x00, 0x18, 0x00, 0x18, 0xE0, 0x7F, 0x80, 0xC3, 0xDF, 0x02, 0x3E, 0x00, 0x0C, 0xC0, 0xFF, 0x83, 0xF9, 0xFF, 0x02, 0x68, 0x00, 0x06, 0x00, 0xF0, 0x03, 0x1F, 0x01, 0xF0, 0xC1, 0x00, 0x6A, 0x00, 0x80, 0x00, 0x06, 0x07, 0xFC, 0x87, 0x01, 0x82, 0x0F, 0x80, 0x00, 0x00, 0x9E, 0x0F, 0x46, 0x01, 0xC2, 0xB9, 0x81, 0x00, 0x00, 0xF8, 0x21, 0x4C, 0x03, 0x02, 0xF0, 0xC1, 0x00, 0x00, 0x00, 0x70, 0x48, 0x02, 0x02, 0x04, 0x70, 0x00, 0x03, 0x00, 0x7C, 0x58, 0x02, 0x22, 0x06, 0x38, 0x00, 0x2F, 0x00, 0xCF, 0x5B, 0x02, 0x0E, 0x06, 0x1C, 0x00, 0x08, 0xC0, 0xC3, 0x49, 0x03, 0x16, 0x0F, 0x39, 0xF0, 0x09, 0xF8, 0x60, 0x08, 0x03, 0x4C, 0x0F, 0x60, 0x00, 0x0D, 0x5F, 0x70, 0x8C, 0x01, 0x08, 0x3F, 0xC0, 0x03, 0xE0, 0x43, 0x3C, 0x90, 0x01, 0x18, 0xF7, 0x80, 0x01, 0x7E, 0x60, 0x1F, 0xC0, 0x00, 0x18, 0xD7, 0x07, 0xF8, 0x3F, 0xF0, 0x1B, 0x70, 0x00, 0x10, 0x13, 0xFF, 0x7F, 0x30, 0xFC, 0x0C, 0x30, 0x00, 0x10, 0x97, 0xC1, 0x10, 0xA0, 0x7F, 0x04, 0x18, 0x00, 0x10, 0x9F, 0x41, 0x10, 0xF0, 0x4F, 0x06, 0x08, 0x00, 0x10, 0xFF, 0xEF, 0x38, 0xFF, 0x41, 0x03, 0x0C, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x01, 0x04, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x47, 0xC0, 0x00, 0x06, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x40, 0x70, 0x00, 0x03, 0x00, 0x10, 0xEA, 0xFF, 0x67, 0xC0, 0x18, 0x00, 0x03, 0x00, 0x10, 0x5E, 0xC6, 0x60, 0x80, 0x0E, 0x80, 0x01, 0x00, 0x10, 0xCC, 0x84, 0x60, 0x80, 0x07, 0xE8, 0x00, 0x00, 0x10, 0xBC, 0x8C, 0x60, 0xF0, 0x21, 0x72, 0x00, 0x00, 0x18, 0xF0, 0x9F, 0xE1, 0x3F, 0x88, 0x18, 0x00, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0x01, 0x22, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x80, 0x88, 0x07, 0x00, 0x00, 0x18, 0x08, 0x40, 0x01, 0x10, 0xC2, 0x01, 0x00, 0x00, 0x18, 0x20, 0x00, 0x00, 0x46, 0x78, 0x00, 0x00, 0x00, 0x18, 0x01, 0xFF, 0x0F, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x60, 0x80, 0x07, 0x00, 0x00, 0x00, 0x18, 0x30, 0xFE, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const uint8_t frame3 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFF, 0xFF, // 11111111 11111111 01 0xCF, 0xFF, // 11001111 11111111 02 0xC3, 0xFF, // 11000011 11111111 03 0xC0, 0xFF, // 11000000 11111111 04 0xC0, 0x3F, // 11000000 00111111 05 0xC0, 0x0F, // 11000000 00001111 06 0xC0, 0x03, // 11000000 00000011 07 0xC0, 0x0F, // 11000000 00001111 08 0xC0, 0x3F, // 11000000 00111111 09 0xC0, 0xFF, // 11000000 11111111 10 0xC3, 0xFF, // 11000011 11111111 11 0xCF, 0xFF, // 11001111 11111111 12 0xFF, 0xFF, // 11111111 11111111 13 }; const uint8_t frame4 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xDF, 0xFB, // 11011111 11111011 01 0xEC, 0x37, // 11101100 00110111 02 0xF8, 0x1F, // 11111000 00011111 03 0xF0, 0x0F, // 11110000 00001111 04 0x90, 0x09, // 10010000 00001001 05 0xF0, 0x0F, // 11110000 00001111 06 0xF8, 0x1F, // 11111000 00011111 07 0xDC, 0x3B, // 11011100 00111011 08 0xBD, 0xBD, // 10111101 10111101 09 0xFC, 0x3F, // 11111100 00111111 10 0xFD, 0xBF, // 11111101 10111111 11 0xFE, 0x7F, // 11111110 01111111 12 0xFF, 0xFF, // 11111111 11111111 13 }; const uint8_t frame5 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFF, 0xFF, // 11111111 11111111 01 0xFC, 0x3F, // 11111100 00111111 02 0xF8, 0x1F, // 11111000 00011111 03 0xF0, 0x0F, // 11110000 00001111 04 0xF0, 0x0F, // 11110000 00001111 05 0xF0, 0x0F, // 11110000 00001111 06 0xF8, 0x1F, // 11111000 00011111 07 0xFC, 0x3F, // 11111100 00111111 08 0xFD, 0xBF, // 11111101 10111111 09 0xFC, 0x3F, // 11111100 00111111 10 0xFD, 0xBF, // 11111101 10111111 11 0xFE, 0x7F, // 11111110 01111111 12 0xFF, 0xFF, // 11111111 11111111 13 }; const uint8_t frame6 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFE, 0x7F, // 11111110 01111111 01 0xF8, 0x1F, // 11111000 00011111 02 0xF3, 0xCF, // 11110011 11001111 03 0xE7, 0xE7, // 11100111 11100111 04 0xEF, 0xF3, // 11101111 11110111 05 0xCF, 0xF3, // 11001111 11110011 06 0xC0, 0x03, // 11000000 00000011 07 0xC0, 0x03, // 11000000 00000011 08 0xC1, 0x83, // 11000001 10000011 09 0xC1, 0x83, // 11000001 10000011 10 0xC1, 0x83, // 11000001 10000011 11 0xC0, 0x03, // 11000000 00000011 12 0xFF, 0xFF, // 11111111 11111111 13 }; const uint8_t frame7 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFF, 0xFF, // 11111111 11111111 01 0xF3, 0xE7, // 11110011 11100111 02 0xF3, 0xE7, // 11110011 11100111 03 0xF3, 0xE7, // 11110011 11100111 04 0x80, 0x67, // 10000000 01100111 05 0x80, 0x67, // 10000000 01100111 06 0xF3, 0xE7, // 11110011 11100111 07 0xF3, 0xE7, // 11110011 11100111 08 0xF3, 0xC3, // 11110011 11000011 09 0xFF, 0x81, // 11111111 10000001 10 0xFF, 0x81, // 11111111 10000001 11 0xFF, 0xC3, // 11111111 11000011 12 0xFF, 0xE7, // 11111111 11100111 13 0xFF, 0xFF, // 11111111 11111111 14 }; const uint8_t frame8 [] PROGMEM = { 0x00, 0x00, // 00000000 00000000 00 0x00, 0x00, // 00000000 00000000 01 0x0C, 0x18, // 00001100 00011000 02 0x0C, 0x18, // 00001100 00011000 03 0x0C, 0x18, // 00001100 00011000 04 0x7F, 0x98, // 01111111 10011000 05 0x7F, 0x98, // 01111111 10011000 06 0x0C, 0x18, // 00001100 00011000 07 0x0C, 0x18, // 00001100 00011000 08 0x0C, 0x3C, // 00001100 00111100 09 0x00, 0x7E, // 00000000 01111110 10 0x00, 0x7E, // 00000000 01111110 11 0x00, 0x3C, // 00000000 00111100 12 0x00, 0x18, // 00000000 00011000 13 0x00, 0x00, // 00000000 00000000 14 }; const uint8_t frame9 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFC, 0x1F, // 11111100 00011111 01 0xF0, 0x07, // 11110000 00000111 02 0xEE, 0x0B, // 11101110 00001011 03 0xE7, 0x1B, // 11100111 00011011 04 0xC3, 0x39, // 11000011 00111001 05 0xC1, 0x71, // 11000001 01110001 06 0xC0, 0x81, // 11000000 10000001 07 0xC7, 0x41, // 11000111 01000001 08 0xCE, 0x61, // 11001110 01100001 09 0xEC, 0x73, // 11101100 01110011 10 0xE8, 0x3B, // 11101000 00111011 11 0xF0, 0x07, // 11110000 00000111 12 0xFC, 0x1F, // 11111100 00011111 13 0xFF, 0xFF, // 11111111 11111111 14 }; const uint8_t frame10 [] PROGMEM = { 0xFF, 0xFF, // 11111111 11111111 00 0xFC, 0x9F, // 11111100 10011111 01 0xF0, 0xC7, // 11110000 11000111 02 0xE0, 0xE3, // 11100000 11100011 03 0xE0, 0xE3, // 11100000 11100011 04 0xCC, 0xC1, // 11001100 11000001 05 0xDE, 0x81, // 11011110 10000001 06 0xFF, 0xFF, // 11111111 11111111 07 0xC0, 0xBD, // 11000000 10111101 08 0xC1, 0x99, // 11000001 10011001 09 0xE3, 0x83, // 11100011 10000011 10 0xE3, 0x83, // 11100011 10000011 11 0xF1, 0x87, // 11110001 10000111 12 0xFC, 0x9F, // 11111100 10011111 13 0xFF, 0xFF, // 11111111 11111111 14 }; const uint8_t frame11 [] PROGMEM = { 0x1F, 0x03, 0x18, // 00011111 00000011 00011000 00 0x3B, 0x83, 0xB8, // 00111011 10000011 10111000 01 0x79, 0xC1, 0xF0, // 01111001 11000001 11110000 02 0xDA, 0xE0, 0xE0, // 11011010 11100000 11100000 03 0xEB, 0x61, 0xF0, // 11101011 01100001 11110000 04 0xF2, 0xE3, 0xB8, // 11110010 11100011 10111000 05 0xF9, 0xE3, 0x18, // 11111001 11100011 00011000 06 0xF2, 0xE0, 0x00, // 11110010 11100000 00000000 07 0xEB, 0x60, 0x00, // 11101011 01100000 00000000 08 0xDA, 0xE0, 0x00, // 11011010 11100000 00000000 09 0x79, 0xC0, 0x00, // 01111001 11000000 00000000 10 0x3B, 0x80, 0x00, // 00111011 10000000 00000000 11 0x1F, 0x00, 0x00, // 00011111 00000000 00000000 12 }; void setup () { TM1637 (0, 0, 5); readEEPROM (); rtc.начинать(); irrecv.enableIRIn (); mySwitch.enableReceive (0); // приемник на D2 (прерывание 0) SPI.begin (); // инициализация шины SPI rfid.PCD_Init (); // инициализация MFRC522 pinMode (relayDL, ВЫХОД); pinMode (relayMP, ВЫХОД); pinMode (extBTen, ВЫХОД); digitalWrite (extBTen, 0); pinMode (ledAuth, ВЫХОД); digitalWrite (ledAuth, 0); pinMode (ledVrOn, ВЫХОД); for (byte i = 0; i <2; i ++) { pinMode (зуммер [i], ВЫХОД); } pinMode (play0, ВЫХОД); pinMode (play1, ВЫХОД); pinMode (LM386, ВЫХОД); pinMode (pwrRF, ВЫХОД); pinMode (btnAl, ВХОД); Серийный.begin (9600); Serial2.begin (9600); // запускаем последовательную связь со скоростью 9600 бит / с EXT for (byte i = 0; i если (mySwitch.getReceivedValue () == 5592332) {// 010101010101010100001100 задержка (50); // ТРЕХГОСУДАРСТВЕННЫЙ FFFFFFFF0010 if (! onlink) {// RAW 16972,524,1664,1576,572,516,1656,1596,556,544,1644,1604,556,508,1660,1584,580,528,1648,1588,552,540,1648,1596,564,500,1668 , 1576,576,516,1668,1596,548,516,1664,508,1668,532,1656,500,1672,1592,576,1552,640,464,1676,504,1664, strSelector (21); // PulseLength: 545 микросекунд Протокол: 1 } еще { intTX (0, 42); strSelector (5); } } // btn 'B' - Кухонные светильники если (mySwitch.getReceivedValue () == 5592512) {// 010101010101010111000000 задержка (50); // FFFFFFFF1000 if (! onlink) {// 16952,528,1644,1596,532,524,1648,1588,564,528,1636,1596,544,512,1656,1588,564,508,1652,1580,568,516,1656,1580,552,508,1664, 1552,612,476,1680,1584,540,1584,568,1588,564,508,1656,528,1644,524,1656,500,1668,508,1664,504,1672, strSelector (21); // PulseLength: 546 микросекунд Протокол: 1 } еще { intTX (0, 82); strSelector (5); } } // btn 'C' - Медиаплеер если (mySwitch.getReceivedValue () == 5592323) {// 010101010101010100000011 задержка (50); // FFFFFFFF0001 relayHandlerMP (2); // 16980,532,1640,1588,580,504,1660,1608,540,536,1648,1608,540,516,1656,1580,588,496,1676,1596,552,536,1636,1580,588,488,1688,1580,560,520,1664, 1564,592,484,1672,512,1668,516,1668,520,1652,504,1664,536,1644,1608,564,1584,556, strSelector (5); // PulseLength: 546 микросекунд Протокол: 1 } // btn 'D' - настольные лампы если (mySwitch.getReceivedValue () == 5592368) {// 010101010101010100110000 задержка (50); // FFFFFFFF0100 relayHandlerDL (2); // 16996,528,1644,1596,544,508,1664,1576,584,496,1668,1568,580,536,1644,1588,560,500,1660,1564,604,484,1708,1580,524,524,1652,1580,568,532,1656, 1580,556,508,1668,512,1668,1576,568,1600,552,508,1672,520,1672,484,1676,504,1664, strSelector (5); // PulseLength: 546 микросекунд Протокол: 1 } } mySwitch.resetAvailable (); } } // ---- Начало последовательности обработки матрицы void btnRecv () { // --------------------- Принятые клавиши на главном экране ---------------------- ---------------------------------------------- // // - Удаленные устройства: // 'A': включение / выключение трансляции // 'B': включение / выключение освещения на кухне // '*': включение / выключение нагревателя (15-минутный временной режим) // // - Местная техника: // 'C': включение / выключение медиаплеера // 'D': включение / выключение подсветки // // - Прочие функции: // '0' .. '9': введите команду числового кода, например целевую температуру для // режим термостата [10-24 (по Цельсию) или 50-76 (по Фаренгейту)], // или двузначный контрольный код для доступа к подключенным домашним устройствам или системным функциям (подробности см. ниже).// -> '*': удалить набранный код и вернуться на главный экран // -> '#': введите код // // [нажав первый раз] [второй раз] [третий раз] // '0': печать часов реального времени на ЖК-дисплее -> печать часов реального времени и аварийного сигнала на ЖК-дисплее и включение аварийного сигнала -> отклонение обоих // // '#': войти в меню обработчика RFID // -> 'A': удалить позицию 0 // -> 'B': удалить позицию 1 // -> 'C': удалить позицию 2 // -> 'D': удалить позицию 3 // -> '#': выйти из меню RFID и вернуться на главный экран // ------------------------------------------------ -------------------------------------------------- --------------------- if (digitalRead (btnAl)) { задержка (50); alOn =! alOn; EEPROM.написать (адрес [9], alOn); задержка (40); TM1637 (0, 0, 1); гудение (0, 12, 10, 1); } char customKey = customKeypad.getKey (); if (customKey! = NO_KEY) { if (alCnt> 0) { alOn = boolTerm; EEPROM.write (адрес [9], alOn); задержка (40); alCnt = alCntLim; TM1637 (0, 0, 1); strSelector (59); возвращаться; } гудение (0, 22, 4, 0); if (group! = 0) { группа = 0; возвращаться; } if ((customKey == '0') && (! cardManager) && (sum == intTerm)) { TMandALmanager (); возвращаться; } if (заблокировано) { strSelector (70); возвращаться; } if ((customKey == '#') && (sum == intTerm)) {// меню rfid if (! cardManager) { TM1637 (3, 4, 0); } cardManager =! cardManager; if (! cardManager) { TM1637 (0, 0, 1); } } if (cardManager) { switch (customKey) { case 'A': задержка (50); delNUID [0] = 1; перерыв; case 'B': задержка (50); delNUID [1] = 1; перерыв; case 'C': задержка (50); delNUID [2] = 1; перерыв; case 'D': задержка (50); delNUID [3] = 1; перерыв; } } еще { switch (customKey) { case 'A': задержка (10); if (! onlink) { strSelector (21); } еще { strSelector (6); intTX (0, 42); } перерыв; case 'B': задержка (10); if (! onlink) { strSelector (21); } еще { strSelector (6); intTX (0, 82); } перерыв; case 'C': задержка (10); strSelector (6); relayHandlerMP (2); перерыв; case 'D': задержка (10); strSelector (6); relayHandlerDL (2); перерыв; дело '*': задержка (10); if (sum> intTerm) {// удалить числовой код сумма = intTerm; } еще { if (! onlink) { strSelector (21); } еще { intTX (0, 32); } } перерыв; case '0': Дело 1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': задержка (10); if ((сумма <= 10) && (сумма <= 99)) { сумма = сумма * 10 + (customKey - '0'); } перерыв; дело '#': задержка (10); if (sum == 25) { intTX (0, сумма); задержка (100); wdRst (); возвращаться; } if (sum == 26) { rfOn =! rfOn; digitalWrite (pwrRF, rfOn); EEPROM.написать (адрес [10], rfOn); задержка (40); if (rfOn) { strSelector (63); } еще { strSelector (64); } } if (sum == 27) { vrOn =! vrOn; digitalWrite (ledVrOn, vrOn); EEPROM.write (адрес [11], vrOn); задержка (40); if (vrOn) { strSelector (68); } еще { strSelector (69); } } if (sum == 28) { сумма = intTerm; if (auth) { scr (); strSelector (71); extTX (3); } еще { strSelector (72); } } ... Этот файл был усечен, загрузите его, чтобы увидеть его полное содержимое.
- это крошечные файлы данных, которые хранятся в вашем веб-браузере при посещении веб-сайта. На www.electromaker.io мы используем файлы cookie, чтобы персонализировать ваш опыт и помочь нам выявлять и устранять ошибки.
Использование файлов cookie и аналогичных технологий в течение некоторого времени было обычным явлением, и файлы cookie, в частности, важны при предоставлении многих онлайн-услуг.Таким образом, использование таких технологий не запрещено Правилами, но они требуют, чтобы людям рассказывали о файлах cookie и им был предоставлен выбор в отношении того, какие из их действий в Интернете будут отслеживаться таким образом. (Офис уполномоченного по информации)
Чтобы в полной мере использовать www.electromaker.io, пользоваться персонализированными функциями и гарантировать, что веб-сайты работают на полную мощность, ваш компьютер, планшет или мобильный телефон должен будет принимать файлы cookie.
Наши файлы cookie не хранят конфиденциальную информацию, такую как ваше имя, адрес или платежные реквизиты: они просто содержат информацию о том, как вы используете наш сайт, чтобы мы могли улучшить ваш опыт и исправить любые ошибки.
Если вы предпочитаете ограничивать, блокировать или удалять файлы cookie с www.electromaker.io или любого другого веб-сайта, вы можете использовать для этого свой браузер. Все браузеры индивидуальны, поэтому проверьте меню «Справка» в вашем конкретном браузере (или в руководстве к мобильному телефону), чтобы узнать, как изменить настройки файлов cookie.
Вот список основных файлов cookie, которые мы используем, и для чего мы их используем:
Каждый веб-браузер обрабатывает файлы cookie по-разному, следуйте инструкциям для выбранного браузера:
Привет,
В этом проекте мы собираемся управлять Arduino с помощью голосовых команд с помощью простого приложения для Android, которое я создал с помощью MIT App Inventor.
Вы можете использовать предыдущие ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все детали для ваших проектов по лучшей цене!
Щелкните здесь, чтобы загрузить библиотеку RCSwitch. Установите его и повторно откройте IDE Arduino. Затем откройте пример «ReceiveDemo_Advanced». Загрузите код и откройте монитор последовательного порта.Нажимайте кнопки пульта дистанционного управления, которые собираетесь использовать, и сохраните их.
Нажмите здесь, чтобы загрузить все
Примечание. Если вы хотите отредактировать мое приложение, это то, что вам нужно сделать. Загрузите Voice_Control.aia и загрузите его в MIT App Inventor.
Надеюсь, вы нашли это полезным!
Спасибо за прочтение. Если вам понравился этот пост, возможно, вам понравятся мои следующие, поэтому, пожалуйста, поддержите меня, подписавшись на мой блог и мою страницу в Facebook.
П.С. Нажмите здесь, чтобы узнать, как использовать MIT App Inventor с Arduino
с.P.S. Щелкните здесь, чтобы узнать, как использовать схему передатчика / приемника 433 МГц для управления розетками.
Группа инженеров по обучению
Команда опытных инженеров, делящихся знаниями со всем миром
Группа инженеров по обучению - ведущая команда в индустрии микроконтроллеров с более чем 13 лет опыта в обучении и выполнении практических проектов.
Мы стремимся использовать весь наш практический опыт на этих курсах.Вместо поверхностных знаний - мы углубимся в тему и дадим вам точный - пошаговый план того, как приручить простые, а также сложные темы в легких и легко усваиваемых небольших видеороликах.
Эти реальные знания позволяют легко усваивать знания, и вы можете сразу же применять их в своей жизни и проектах.
Группа инженеров по обучению занимается программированием и микроконтроллерами с 2007 года . Мы участвовали во многих проектах.За эти годы мы получили хорошее представление о потребностях студентов и преподавателей. Мы стремимся делиться с вами всеми нашими коллективными знаниями. По состоянию на 2018 год мы уже обучили более 250 тысяч студентов, из них .
В настоящее время у нас есть более 100+ курсов по Удеми
Педагог и автор «Образовательной инженерии».
Ашраф - педагог, инженер мехатроники, любитель электроники и программирования, производитель .Он создает онлайн-видеокурсы на канале EduEng на YouTube (более 4 миллионов просмотров, более 20 тысяч подписчиков) и автор четырех книг о микроконтроллерах.
В качестве главного инженера по вопросам образования с 2007 года в компании Educational Engineering Team, которую он основал, миссия Ашрафа заключается в изучении новых тенденций и технологий, а также в обучении мира и улучшении его положения.
Педагогическая инженерия предлагает образовательные курсы и учебные курсы, статьи, уроки и онлайн-поддержку для любителей электроники, любителей программирования, любителей микроконтроллеров, студентов STEM и учителей STEM.
Эта команда также работает в качестве инженеров-фрилансеров, помогая многим студентам в их дипломных проектах и предоставляя рекомендации и консультации многим студентам на протяжении многих лет, чтобы помочь им начать свою карьеру.
Основной навык Ашрафа заключается в пошаговом объяснении сложных понятий, которые легко понять, используя видео и текст. Обладая более чем 11-летним опытом преподавания в высших учебных заведениях, Ашраф разработал простой, но всеобъемлющий и информативный стиль обучения, который ценят студенты со всего мира.
Его страсть к микроконтроллерам и программированию и, в частности, к миру Arduino, микроконтроллеров PIC, Rasberry Pi руководил своим личным развитием и своей работой через образовательную инженерию.
Онлайн-курсы Ashraf помогли более 250 000 человек со всего мира стать лучше и сделать отличную карьеру в отрасли.
Группа инженеров по обучению предлагает курс по
Проектирование схем, моделирование и изготовление печатных плат
Arduino, микроконтроллер PIC и Raspberry Pi
Программирование на C, Python и других языках программирования
Промышленное программирование и автоматизация ПЛК
3D-дизайн и моделирование
ESP и IoT World
Для получения дополнительной информации воспользуйтесь ссылками на странице профиля, чтобы следить за разработками группы инженеров по обучению и последними инновациями Ashraf.
Добро пожаловать на этот курс.
Вы узнаете, каков фактический принцип работы голосового управления с Arduino, и начнете использовать распознавание голоса с помощью искусственного интеллекта без сложного кодирования. Вы также узнаете, что вы можете с ним делать и как использовать его для управления собственным Arduino и создания он выполняет любое действие с помощью простых кодов с помощью бесплатного программного обеспечения.
После этого курса вы сможете управлять своими собственными проектами Arduino с помощью ваших собственных голосовых команд, и вы можете использовать их в любом приложении, которое придет вам в голову, которое может облегчить вашу жизнь, поскольку все соединения и кодирование объясняются подробно.
Я уверен, что этот курс выведет вас на новый уровень Arduino Control и откроет для вас новые возможности.
Цель этого курса:
- Вывести управление Arduino на новый уровень с помощью пошагового руководства по управлению Arduino с помощью собственных голосовых команд
Необходимые материалы
Аппаратное обеспечение:
Arduino или клонированную плату Arduino (freeduino), либо вы можете создать свою собственную плату Arduino.
Любой компонент, которым вы хотите управлять своим голосом.
Соединительные провода.
Программное обеспечение:
IRJET приглашает статьи из различных инженерных и технологических дисциплин для Тома 8, выпуск 5 (май-2021)
Отправить сейчас
IRJET Vol-8, выпуск 5, Май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
IRJET приглашает специалистов по различным инженерным и технологическим дисциплинам, научным дисциплинам для Тома 8, выпуск 5 (май 2021 г.)
Отправить сейчас
IRJET Vol-8, выпуск 5, май 2021 г. Публикация продолжается...
Обзор статей
IRJET получил «Импакт-фактор научного журнала: 7,529» за 2020 год.
Проверить здесь
IRJET получил сертификат регистрации ISO 9001: 2008 для своей системы управления качеством.
Рисунок 3 Блок-схема работы системы
с использованием Bluetooth
3,7 Факторы
Факторы, которые могут повлиять на звуковое управление
Система, включает четкое произношение , высота звука,
расстояние микрофона, источник звука, интонация и уровень шума
.Если бы было изменение звука, система
не работала бы. Это произошло потому, что голос
не идентифицирован в созданной базе данных. В то время как
в дистанционном управлении, при использовании bluetooth необходимо учитывать
: расстояние, препятствия и мощность сигнала
. Если вы использовали интернет-сеть, вам нужно было
обратить внимание на уровень скорости интернета. Чем выше скорость интернета
, тем больше вероятность успеха.
4. ЗАКЛЮЧЕНИЕ
По результатам исследования, проведенного путем обзора журналов
, как описано, можно сделать вывод, что дизайн
и реализация, которая была выполнена с использованием голосовых команд
в форме распознавания голоса и распознавания речи
может способствовать повседневной деятельности человека
. Автоматизация управления может быть применена к умному дому
путем управления электронными устройствами, такими как освещение, вентиляторы, телевизоры
, кондиционеры и т. Д., Которые основаны на голосовых командах
.Он также может применяться как система безопасности
, например, автоматическое управление дверьми. Кроме того, приложение голосовых команд
также может применяться к
умных больничных палатах, например, для управления койкой пациента
в больнице и оказания помощи в вызове медсестер. Устройство
также может помочь пользователям с ограниченными возможностями, например, перемещать инвалидную коляску
и распечатывать документы, преобразованные в шрифт Брайля.
СПИСОК ЛИТЕРАТУРЫ
[1] М.Zed, Metode penelitian kepustakaan, Jakarta:
Yayasan Obar Indonesia, 2014.
[2] Sugiyono, Metode penelitian kuantitatif, kualitatif
дан R&D, Bandung: Alfabeta, 2017.
N.[Aktar8]. Джахан и Б. Лала, «Интеллектуальная инвалидная коляска на основе распознавания голоса
и система GPS-слежения
», Международная конференция по электротехнике,
Computer and Communication Engineering,
7-9 февраля 2019.
[4] Б. Манигири, Д. Маладева, Р. Панчал, С. Хакке,
и С. Дичолкар, «Устройство для тиснения шрифтом Брайля
с голосовым управлением», Международный журнал исследований в области
Прикладные научные и инженерные технологии, т.
8, корп. 1, стр. 415-417, январь 2020.
[5] Э. И. Агустин, Т. Р. Юнарди, А. А. Фирдаус,
«Система распознавания голоса для управления электрическими приборами
в умной больничной палате», Телкомника,
т.17, нет. 2, pp. 965-972, апрель 2019 г.
[6] А. Сеппиаван, Нуруссаада и П. Сивиндарто,
«Sistem keamanan pintu pagar otomatis
распознавание голоса menggunakan», Jurnal mahasis TE
т. 2, вып. 6, pp. 1-6, 2014.
[7] Y. Mittal, P. Toshniwal, S. Sharma, D. Singhal, R.
Gupta, и VK Mittal, «Мульти-
с голосовым управлением. функциональная система автоматизации умного дома »на ежегодной конференции IEEE в Индии
, 17-20 декабря,
2015.
[8] Д. Арбаус, Д. А. Прасетья и А. П. Сари,
«Kecerdasan buatan pada sistem pintu otomatis
menggunakan распознавание голоса berbasis raspberry
PI», Jurnal ilmu-ilmu tetem. 12, вып. 3,
pp. 186–196, 2016.
[9] CS Tyagi, M. Agarwal и R. Gola, «Автоматизация дома
с использованием распознавания голоса и Arduino»,
Journal of Recent Trends in Engineering &
Исследования, т. 2, вып.7, стр. 1–6, июль 2016 г.
[10] А. Асни, AFS Рахман и М. Мурсид, «Ранканг
бангун бука тутуп пинту отоматис менггунакан
пенгеналан исйарат тутур» в Seminar Nasional
Inovasi Teknologi Terapan, 2017.
[11] Д. Арияни, Д. Искандар и Ф. Индрияни,
«Умный дверной замок Perancangan menggunakan voice
распознавание berbasis raspberry PI 3», Jurnal cerita,
vol. 4, вып. 2, стр.180–189, август 2018 г.
[12] С. Ариянти, С. С. Ади и С. Пурбаванто, «Система
buka tutup pintu otomatis berbasis suara manusia»,
Электроника, информатика и профессиональное образование,
vol.