8-900-374-94-44
[email protected]
Slide Image
Меню

Управление голосом ардуино: Распознавание голоса на Arduino или «Do You Know What I Am Saying?». Блог Амперкот.ру

Содержание

Голосовое управление — Android — Bluetooth

Голосовое управление


— Android — Bluetooth — Arduino — Relay

В данном проекте голосовые команды распознаются приложением на Android планшете и передаются на Arduino по Bluetooth для управления электроприборами.

Функцинальная схема управления голосом

Основные компоненты, используемые для управления электроприборами голосом, изображены на рисунке:
Настройка Android планшета

и Arduino по Bluetooth сети

Настройка Android планшета состоит, как показано на скриншоте «А», в наборе пин кода — 1234. Этот пин код связян с Bluetooth модулем Arduino. На скриншоте «В» видно успешное подключение. При повторных запусках приложения ввод пинкода не запрашивается, он запоминается при первом запуске.

Подключение Android планшета

к Arduino по Bluetooth Если пинкод однажды введен и запомнен, то всегда для подключения Bluetooth нужно выполнять следующее:
  • «А» — Нажать кнопку «Bluetooth connection»
  • «B» — Выбрать строку с MAC адресом Bluetooth модуля HC-05
  • «C» — Android планшет подключен к Arduino по Bluetooth
Голосовая команда
В данном проекте голосовые команды распознаются приложением на Android планшете. Это приложение использует голосовую библиотеку Google. Для этого планшет должен быть подключен к интернету.

На скриншоте «А» показано выполнение команды «выключить все». На скриншоте «В» показано выполнение команды «включить 2».

Эти команды распознаются и включают электроприборы, подключенные к устройству управления.

Устройство управление состоит из четырех розеток, подключенных к электросети 220 в. Включаются розетки с помощью 4-х канальго реле. Включение канала реле выполняется Arduino. Об устройстве управления более подробно.

Android приложение — MIT App Inventor / блоки

Приложение для управления голосом разработано в MIT App Inventor.

маленькая революция DIY : ammo1 — LiveJournal

Сегодня я побывал в Яндексе на конференции Яндекс.Железо. Там представили новый продукт, который порадует многих, кто делает что-то электронное своими руками. Это голосовой интерфейс для самоделок Aliceduino.


Эта штука делает очень простую снаружи (и очень сложную внутри) вещь. Передаёт через UART любому микрокомпьютеру текстовую строку того, что сказал пользователь (после ключевого слова Алиса или Яндекс). Фактически, это кусочек Яндекс.Станции для применения в самоделках.

С помощью неё можно собрать робота на Arduino, который будет управляться голосом. Можно сделать любую систему управления чем-либо с голосовым управлением. Можно встраивать голосовое управление в любое устройство.

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

Микрофоны специально вынесены, чтобы их и платы можно было разместить в разных частях самоделки. Кстати, микрофоны цифровые (в каждый микрофон встроен АЦП).

Микрофонов может использоваться от двух до семи.

Набор состоит из трёх блоков.

Плата SoM содержит процессор, память, модули Wi-Fi, Bluetooth.

Aliceduino может работать в двух режимах. В первом она просто распознаёт речь и передаёт слова в виде текста.

Во втором режиме подключается искусственный интеллект.

Помимо Aliceduino на конференции рассказали о том, как работает беспилотный автомобиль Яндекса и показали всю его начинку, рассказали о системе умного дома, а ещё был неожиданно очень интересный рассказ о том, как Яндекс строил свои ЦОДы.

Трансляция конференции длилась больше пяти часов и я понимаю, что мало кто осилит её просмотр целиком. Могу посоветовать смотреть частями по одному выступлению в день. Поверьте, оно того стоит. Там действительно много интересного.


https://www.youtube.com/watch&v=ewXwGFaaaZg

© 2019, Алексей Надёжин


Основная тема моего блога — техника в жизни человека. Я пишу обзоры, делюсь опытом, рассказываю о всяких интересных штуках. А ещё я делаю репортажи из интересных мест и рассказываю об интересных событиях.
Добавьте меня в друзья здесь. Запомните короткие адреса моего блога: Блог1.рф и Blog1rf.ru.

Второй мой проект — lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.

Управление нагрузкой голосом с помощью Arduino и Bluetooth HC-05

Этот проект позволяет голосом управлять бытовой техникой с помощью голоса через приложение для Android. Для управления используется плата Arduino Amega2560,   через которую прибор включается / выключается. Вы можете изменить приложение для Android, чтобы добавить больше функций. Скачайте Bluetalk приложение и установить его на свой Android телефон.

Блок питания 0…30 В / 3A

Набор для сборки регулируемого блока питания…

Схема управления состоит из Arduino Mega 2560  (board1).  Чтобы включить или выключить реле плата сравнивает входные  данные (речь), полученные через Bluetooth с сохраненными данными,.

Модуль Bluetooth (HC-05) подключен через последовательный порт.

В данном варианте применено только одно реле, хотя ничто не мешает увеличить количество реле  путем применения многоканальной платы реле для управления несколькими устройствами. Мега 2560  запрограммирова на сравнение относительных строк (речь).

Программное обеспечение.

Есть две программы, используемые в данном проекте. Одной  из них является скетч для 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. ..

Все о модуле распознавания голоса EasyVR (ex VRbot) / Деталька / Сообщество EasyElectronics.ru


Сегодня я наконец возьму и эпически сорву покрова с этих самых модулей EasyVR, так как тема сисек, ящитаю, практически не раскрыта. Покрова буду «срывать полностью, полностью буду срывать», так что готовьтесь 🙂

Итак, дело началось с того, что мне захотелось добавить управление голосом в автомобиль (систему комфота) и в комнату дома. Хотя, больше, конечно, хотелось «поиграться» и посмотреть, что из этого получится. Про VRBot я уже где-то слышал, но в руках не держал, так что уже знал, что какие-то готовые решения есть.

Копание в интернетах показало, что как таковых VRBot’ов уже не существует и вывело меня на сайт их производителя и переемника VeeaR. Переемником VRBot стал модуль, практически не отличающийся от своего предшественника — EasyVR. Также, появилась более «крутая» его версия — SmartVR, которая позволяла писать аж свои приложения для какой-то там встроенной виртуальной машины. Но для SmartVR необходимо было допиливать хоть и немного, но внешний обвес (либо покупать дорогую плату разработчика), по этому для начала, ничтоже сумняшеся, я заказал пару EasyVR на «поковырять», даже и не думая, что мои ковыряния потом зайдут так далеко…

После того, как модули мне пришли, я начал с ними играться. Поставил штатный софт, подключил, пообучал, посмотрел возможности. Конечно, функционал этих модулей из коробки достаточно узок — распознавание некоторого количества команд управления роботом (больше они, ИМХО, ни для чего не годятся), зашитых намертво в прошивку на нескольких европейских языках + возможность добавить до 32-х своих собственных команд (то, ради чего модули и заказывались). Также, была очень заманчивая возможность сделать «избу-говорильню» — прошить в модуль наборы звуков, которые потом можно было бы воспроизводить через него как ответы.

Распознавание зашитых команд было «человеконезависимое», т.е., по факту, модулю было все равно кто и каким голосом называет команды — он их уверенно распознавал (только нужно было обеспечить правильное произношение). Пользовательские же команды требовали сначала обучения под конкретного пользователя. Еще существовала возможность распознавания конкретного человека по характеристикам голоса — «голосовой пароль», что вполне неплохо работало и тоже было достаточно интересной фишкой.

Все вроде было замечательно, но меня очень сильно будоражил вопрос: «почему для SmartVR можно писать свои собственные программы, а для EasyVR нельзя?» И черт меня дернул раскопать всю эту кухню глубже.
Начал я с того, что выяснил такой момент — оба модуля работают на абсолютно одинаковых чипах, RSC-4128 компании Sensory. Что-то из услышанного когда-то давно подсказывало мне, что чип хороший, годный, стабильный и использовался в куче всяких роботизированных игрушек типа Furby. Так оно и оказалось.
На сайте разработчика с большим трудом были найдены и выкачаны разные доки — даташит на чип, описание технологических библиотек, СДК, примеры и много-много другого барахла. После изучения всего добра я влюбился в этот чип 🙂 Его возможности, фактически, оказались уникальны: других специализированных однокристальных решений (кроме более старшего семейства этой же фирмы) как-бы и не существовало.

Итак, по порядку.

RSC-4128

Чип представляет собой специализированный микроконтроллер на совместимом с 8051 ядре, который несет на себе периферию для записи и воспроизведения звука (микрофонный преамп с АЦП, ЦАП с ШИМ для динамика, аудио-компараторы, фильтры). На чипе есть немного оперативки (4.8 килобайт) и РОМ, размер которого означается последними цифрами названия чипа (в данном случае 128 килобайт). Ядро работает на частоте 14 с лишним мегагерц от внешнего резонатора с PLL. Доступно 5 таймеров (3 обычных, 1 тик-таймер, 1 ватчдог), 8 источников прерываний (от таймеров и от пинов), интерфейс подключения внешней памяти, ускоритель векторной математики. На чипе нет аппаратной периферии связи — UART, SPI, I2C. Есть только GPIO с прерываниями от некоторых пинов, но вопрос этот вполне неплохо решается софт-драйверами. Хорошо работает подсистема энергосбережения (все-таки, чип рассчитан на батарейное питание). С регистрами все очень просто и понятно, никаких заморочек.
Чип может считывать программу либо полностью из внутреннего рома, либо полностью из внешнего (адресуя до 1 мегабайта без изъебств), в зависимости от состояния пина nXM. Также существуют механизмы доступа к разного рода навесной памяти, которые, в общем-то, не очень сильно нужны (ИМХО).
Основная же соль чипа — софт-библиотека FluentChip, которая и реализует все возможности по распознаванию и синтезу, а также много других полезных функций.
FluentChip

Это набор объектных файлов, которые содержат в себе весь волшебный функционал синтеза и распознавания, т.к. чип, по сути — голая болванка с периферией и сам ничего не умеет. Реализован следующий функционал:
  • Воспроизведение звука: с помощью специальной программы QuickSynthesys можно подготавливать библиотеки звуков, слов и предложений из них; музыку для встроенного MIDI-секвенсора. С помощью простых библиотечных функций можно воспроизводить звуки, слова, мидишки со своими инструментами и даже со словами поверх музыки; можно воспроизводить DTMF, пищать и посылать токены SonicNet в любой комбинации. Присутствует очень хорошее сжатие для речи — SX.
  • Запись звука: собственно, запись звука с последующим воспроизведением. Нам не актуально, т.к. для этого нужна особая навесная оперативка или флэшка приличного объема, которую к модулям никак не подключить.
  • Распознавание речи: отдельный разговор. Об этом функционале поговорим ниже.
  • SonicNet: позволяет посылать через динамик и слушать микрофоном специальные посылки-токены, не слышимые человеком и таким образом общаться нескольким устройствам между собой.
  • «Анимация»: набор функций для интерактивной обратной связи. Детектор и предсказатель ритма, детектор высоты тона или ноты, «синхронизатор движения губ» как для заранее зашитых звуковых библиотек, так и работающий в реальном времени с микрофона.
  • SoundSource: используя немного обвеса, возможно соорудить «электронные уши», детектировать положение источника звука и, например, поворачивать устройство или его «голову» к говорящему. Нам, к сожалению, прелестями воспользоваться не удастся ввиду ограниченного числа выведенных GPIO на модуле.
  • Утилитарные функции, типа функций настройки таймеров, доступа к буферам в оперативке, управления питанием, генерации задержек и проч. Есть готовый софтовый драйвер UART.

Теперь поговорим о распознавании речи. Библиотека умеет выполнять два принципиально разных метода распознавания: T2SI (text-to-speaker-independent, «человеко-независимый», говорящим может быть кто угодно) и SD (speaker-dependent, говорить должен тот, кто обучал систему).

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».

Среда разработки

Конечно же, к чему весь этот разговор и должен был привести. Собственно, «где и в чем писАть?». Вариантов тут совсем не много. Точнее говоря, по факту, всего один — решение от Phyton под названием Project-SE. Есть еще компилятор от mikroElektronik’и, но он уже снят с производства и поддержки, да и при этом косой очень. Так что, пользоваться придется Phyton’ом.
Среда очень корявая в плане интерфейса (IAR после нее покажется вам просто каким-то Эклипсом), но к ней за пару дней привыкаешь. Можно даже все настроить под свои нужды (кнопочки всякие, панели).
Никаких тонкостей и особенностей нет — среда заточена конкретно под этот камень. Создаем проект, настраиваем, подключаем библиотеки и всякие сгенерированные объектники со звуками и нейросетями и вперед — пишем на C или ASM. Примеров, опять же повторюсь, очень много. Все предельно просто и понятно.
Единственный, пожалуй, нюанс — конфигурационный файл, который должен быть подключен к каждому проекту — «config.mca». Там описываются настройки библиотек — пины, память, и прочее. Для нашего модуля я написал свой правильный конфиг, который можно скачать по ссылкам из вложения к этой статье.
Да. Продукт Project-SE работает после установки 14 дней в триальном режиме. Триальный режим по сути ничем не отличается от нормального. Просто напросто, по истечении времени продукт начинает жадничать и перестает компилировать. Жадность пропадает после запуска моего специального батника, который сбрасывает этот самый период. Батник можно скачать, опять же, по ссылкам во вложении к этой статье.
Модуль EasyVR

Модуль — штука самодостаточная. На нем установлен весь необходимый обвес, от стабилизатора питания, до памяти и преобразователя уровней напряжения (для UART). Изначально, общение с модулем происходит по UART, также есть разъем для микрофона (с микрофоном в комплекте), разъем для динамика (выход PWM, без динамика в комплекте) и колодка с тремя дополнительно выведенными GPIO + выводы nXM и RST. На модуле установлена флешка в 1 мегабайт максимально адресуемого пространства (на ней изначально хранится прошивка и звуки) и EEPROM 24LC64 для хранения шаблонов SD или какой-нибудь своей информации, типа конфигурации.


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

5 удивительных способов использовать камеру с Arduino

При создании камеры с нуля плата Arduino может быть не первой вещью, о которой вы думаете. Тем не менее, существует ряд Arduino-совместимых камер. Давайте посмотрим на доступные варианты.

1. TaskCam: 3D-печатная цифровая камера

Идея очень понравилась, у исполнителя руки из нужного места, немного доработал и добавил своего. Теперь все самоделки надо было объединить в единое целое, так родилась идея камин-бара. Окончательное видение того, что я хочу видеть в результате появилось после просмотра следующего видео:

Итак, как это работает: при включении идет проверка узлов, загрузка, в этот момент бар озвучивает приветствие модным сейчас в мемах — голосом робота, далее устройство готово к эксплуатации.

Для управления предусмотрена сенсорная панель с двумя кнопками, одна — включает камин, другая — бар. Кнопки использовал ttp223. Бар выезжает и заезжает под музыкальное сопровождение, которое выбирается случайным образом. Управление через arduino nano которое регулирует скорость движения электро-стеклоподъемного механизма и посылает в порт плеера df player mini команды) После того как бар открыт, включаются периодические тосты, раз в пять минут. (По идее тут надо налить, выпить, скорее всего, время придется регулировать опытным путем) Так как сейчас на мой взгляд проходит настоящий бум голосового управления, я его тоже добавил. Реализовано на голосовом ассистенте «Дуся» (можно и Алису прикрутить).

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

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

P.S. А вот так работает камин (дрова трещат, в живую смотрится реалистичнее):

© Habrahabr.ru

5 удивительных способов использовать камеру с Arduino

При создании камеры с нуля плата Arduino может быть не первой вещью, о которой вы думаете. Тем не менее, существует ряд Arduino-совместимых камер. Давайте посмотрим на доступные варианты.

1. TaskCam: 3D-печатная цифровая камера

В период с 2003 по 2008 год продажи цифровых фотокамер выросли втрое, пока смартфоны не изменили ситуацию, и цифровые фотоаппараты быстро не стали популярными. Легко понять, почему телефоны ориентированы на пользователей именно благодаря их камерам

, В конце концов, гораздо проще иметь только одно устройство для переноски.

Войдите в комплект TaskCam. Специально ориентированный на художников и рынок бытовой электроники, он идеально подходит для тех, кто предпочитает создавать свои собственные камеры.

Простое, но элегантное печатное издание TaskCam 3D предназначено для имитации ощущения одноразовой камеры с некоторыми заметными отличиями. Arduino Uno — это мозг операции. Экран TaskCam предоставляет экран для публикации «заданий» пользователю вместе с кобурой батареи, слотом для карты SD и блоком камеры. Все это отлично вписывается в 3D-печатный футляр или корпус по вашему собственному замыслу!

Предназначенная для использования в общественных местах для фотографирования на основе подсказок, TaskCam — новый взгляд на цифровую фотографию. Лучше всех? Проект с открытым исходным кодом, поэтому вы можете бесплатно скачать схемы из CircuitMaker и сделать свою собственную печатную плату. 3D-печать рассчитана даже на бюджетные принтеры, что делает ее отличным начинающим проектом для 3D-печати. Наш гид по 3D-печати

поможет вам в этом процессе!

2. ArduCAM и ESP8266: домашнее наблюдение

ArduCAM — это модуль SPI, разработанный для использования с микроконтроллерами. Модули работают при достаточно низком напряжении, чтобы получать питание непосредственно от контактов Arduino, но обеспечивают выходное разрешение, достаточно высокое для различных применений.

Это делает устройства ArduCAM SPI идеальными для удаленного видеонаблюдения в домашних условиях. Именно такой подход использует пользователь dmainmon от Instructables в своей камере с питанием ESP8266 с веб-интерфейсом:

В Instructable проекта dmainmon заменяет плату Arduino на совместимый, но лучше оснащенный ESP8266. (Мы также думаем, что ESP8266 побеждает Arduino!

) Это делает камеру беспроводной, а включенный код поддерживает статические изображения и потоковую передачу видео в браузер.

Эта сборка находится всего в одном шаге от автоматизированной системы наблюдения. Тем не менее, опытные пользователи IFTTT (наше руководство IFTTT

) может использовать плагин для периодического сохранения изображений в Dropbox.

3. Авто-турель: Робот-стол Снайпер

Немногие вещи круче, чем рука робота с автоматическим слежением. Один из них — пистолет с дротиком из пены, прикрепленный к руке робота с автоматическим слежением. Сочетая несколько частей из линейки RobrosGeek компании Trossen Robotic, этот автоматический снайперский стол робота с отслеживанием цвета использует модуль камеры Pixy в сочетании с Arduino для отслеживания целей.

Руководство команды Trossen Robotics для Arduino Project Hub охватывает каждый элемент для настройки автономного прицельного робота. Они также предоставляют ссылку для покупки всех частей, необходимых для его создания. В то время как есть более дешевые варианты для первого проекта робототехники Arduino

, этот выигрывает очки за то, что очень, очень круто.

4. Arduino Yun Motion активированная камера

Кредит изображения: леди ада / adafruit.com

Несмотря на то, что камера Arduino Yun, похожая на камеру безопасности ESP8266, ранее описывалась в этой статье, имеет существенное отличие. Он подключается к плате через USB.

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

Когда срабатывает датчик движения, изображения с веб-камеры сохраняются на SD-карте Yun перед загрузкой в ​​Dropbox пользователя через Temboo для последующего просмотра. Настройка также позволяет передавать потоковое видео непосредственно на YouTube, что делает этот проект не просто еще одной домашней системой безопасности, но уникальным методом потоковой передачи в реальном времени.

Однако у этого метода есть предостережение. Arduino Yun был «удален» в рамках проекта Arduino, и хотя платы по-прежнему доступны у сторонних поставщиков, их может быть нелегко найти. Тем не менее, некоторые доски клонов, которые будут выполнять аналогичную функцию, и экраны Arduino, такие как Dragino Yun Shield, имеют такую ​​же функциональность, что и оригинальная Arduino Yun.

5. Управляемый голосом робот Arduino

Наличие робота для заказа — одно из лучших ощущений в мире. Хотя может пройти некоторое время, прежде чем мы можем случайно попросить нашего робота-дворецкого приготовить нам еду, небольшая хитрость может принести вам послушного маленького работника робота сегодня!

KureBas Robotics объединила голосовую активацию, дешевую экшн-камеру и двухколесного робота-робота с оружием для создания своего робота для чистки стола Arduino.

Комбинируя функцию Wi-Fi экшн-камеры с системой Bluetooth для управления движением робота, KureBas использовал камеру многократного использования, а не дорогостоящий блок только с микроконтроллером. Дистанционное управление роботом вместе с голосовой активацией стало возможным благодаря приложению Android, разработанному разработчиком проекта, которое можно загрузить со страницы учебника.

Больше проектов DIY Camera для изучения

Есть много проектов 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 понимает массу команд, приведу десять наиболее полезных.

  • Карты и навигация — «поехали/навигация #названиеулицы #номердома». Запустит Google Maps в режиме навигатора по указанному адресу. Также можно указывать город, магазин, организацию и так далее.
  • Калькулятор — «тринадцать процентов от пяти тысяч». Выдаст ответ и форму калькулятора в окне поиска. Голосом можно надиктовывать сложение, вычитание, умножениe, деление, корень числа. Также можно переводить меры весов, длин и прочего.
  • Отправка СМС/сообщений — «написать смс Олег текст я за рулем, перезвоню позже». Отправлять сообщения также можно через WhatsApp, Viber и еще несколько популярных мессенджеров. По упрощенной схеме можно диктовать «сообщение #программа #контакт #текст». Например: «сообщение WhatsApp Олег я за рулем». После этого также голосом можно подтвердить отправку командой «отправить».
  • Набор номера — «позвонить маме». Также можно продиктовать произвольный номер, которого нет в записной книге. При команде «позвонить сестре/брату» можно указать номер из контактов (если записано по-другому), тогда в следующий раз набор будет проходить автоматически.
  • Напоминания и будильники — «разбудить меня в субботу в восемь утра» или «напомнить мне выключить плиту через десять минут». Также можно добавлять мероприятия в Google-календарь. События можно привязывать не только ко времени, но и к месту. Если добавить «напомни мне распечатать текст на работе», то при включенной геолокации и указанном адресе работы (места на карте) напоминание на телефоне всплывет автоматически. Обычный встроенный в приложение «Часы» таймер заводится так же легко.
  • Угадай мелодию — «что это за песня». Запустит раcпознавание играющей музыки.
  • Музыка/видео — «слушать (музыку) #группа #песня». Запустит указанную музыку в Play Music или клип на YouTube. Нормально работает с русскими названиями, но так как английские слова и исполнителей определяет, иногда неправильно интерпретируя под русский язык, то срабатывает не всегда.
  • Фото/видео — «сделай фото / записать видео». Запустит камеру в выбранном режиме.
  • Управление настройками — «выключи вайфай», «включи фонарик».
  • Заметки — «заметка для себя тестовый пароль для сервиса один два три четыре». Добавит заметку в Google Keep.

Now on Tap

Описанию этого сервиса было уделено отдельное пристальное внимание на презентации Android 6.0 Marshmallow. И преподносился он как одна из основных особенностей новой прошивки. Но более-менее нормальную функциональность в России мы получили только в декабре. В официальном русском переводе он называется контекст от Now.

[ad name=»Responbl»]

Как это работает? «Когда вы запускаете контекст от Now, Google анализирует все, что вы видите на экране, и ищет информацию в соответствии с этими данными» — вот официальное описание со страницы поддержки. На деле это значит, что вместо того, чтобы выделять и копировать интересующие фразы на экране, затем открывать поиск и вставлять фразу, можно просто нажать и удерживать кнопку «Домой». После этого Google предложит варианты для найденных ключевых фраз. Это могут быть картинки, видео, предложение открыть это место на картах, новости. Может предложить открыть сайт организации или сделать звонок, открыть профиль Facebook или посмотреть Twitter-аккаунт знаменитостей, добавить заметку. При наличии соответствующих приложений на устройстве после тапа на иконке страница откроется сразу внутри приложения. При прослушивании музыки из разных приложений можно одним нажатием вызвать подробную информацию об исполнителях, альбомах, клипах на YouTube и прочем.

Работа Now on Tap на примере «ВКонтакте»

Пасхалки в поиске Google

Так же как и в десктопной версии поиска, в голосовом поиске есть пасхалки. Приведу только несколько команд, остальные можешь узнать по этой ссылке. К сожалению, почти все они срабатывают только на английском языке и с английским интерфейсом или при выбранном в настройках только английском языке.

«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?»

Tasker

Если после всего прочитанного тебе все равно не хватает команд для воплощения своих фантазий, то, имея немного времени, можно настроить Google Now на выполнение практически любых команд. Для этого нам понадобятся прежде всего Tasker и плагин AutoVoice.

С помощью Таскера можно совершать множество действий: запускать приложения, контролировать звук, запускать скрипты, управлять экраном, проводить манипуляции над файлами, нажимать кнопки на экране, управлять media, делать запросы HTTP Get и Post и реагировать на них, управлять расширенными настройками телефона. И все это можно делать, отдавая голосовые команды. А с помощью множества плагинов функциональность расширяется еще больше.

[ad name=»Responbl»]

Для начала работы необходимо включить пункт Google Now Integration внутри AutoVoice. В Таскере необходимо создать отдельный профиль для каждой команды или группы команд. Как обычно, для составления профилей рекомендую в настройках Таскера включать английский. Для тестового профиля составим голосовую команду выключения звука. Для этого создадим новый профиль с параметрами Event → Plugin → AutoVoice Recognized. Заполняем следующие поля:

  • Command Filter — тут вводим необходимую голосовую команду, в нашем примере: «выключи звук». Если нажать на строку Speak Filter, то команду можно надиктовать.
  • Exact Command — если поставить галочку, то будет срабатывать только на точную команду, иначе может сработать на каждое отдельное слово или форму слова.
  • Use Regex — использовать регулярные выражения. Позволяет настроить распознавание нескольких слов в одном профиле. Если в первом поле ввести «(выключи|выключить) (звук|громкость)» без кавычек, то профиль будет срабатывать на команды «выключи звук», «выключи громкость», «выключить звук» и «выключить громкость».

Для действия используем Audio → Ringer Volume и Audio → Notification Volume. Для контроля срабатывания можно добавить всплывающее уведомление через Alert → Flash и в поле Text ввести «Выключил».

Команды «выключи вайфай» работают сразу в Google Now, а «выключи звук» предлагает открыть настройки. И после перехвата команды через Таскер и ее выполнения все равно остается на текущем экране с запросом. Поэтому к действиям дополнительно добавим App → Go Home. Ну а чтобы позабавить друзей, во всех профилях для управления голосом можно первым действием поставить Alert → Say и ввести фразу «слушаюсь, хозяин». Тогда телефон в ответ на команды будет реагировать голосом.

Настройка профиля

Настройка действий

С помощью дополнительных плагинов, например AutoRemote, можно управлять другими устройствами на Android. А если на комп поставить EventGhost, то с помощью многочисленных плагинов можно сделать немало интересного. Одним из самых полезных применений будет настройка умного дома, но это отдельная большая история. У Жуана Диаса (Joao Dias), разработчика всех Auto*-плагинов, есть также дополнение и для компа, что позволяет интегрировать управление мобильными устройствами через голосовой помощник Cortana на десктопе.

Немного хитростей

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

Open Mic+ for Google Now

Программа позволяет изменить ключевую фразу с «Ok, Google» на любую другую. К сожалению, после одного из обновлений сервисов и запроса от Google перестала работать с Google Engine, оставив только PocketSphinx. В связи с этим для ключевой фразы подходят только английские словосочетания, но раньше можно было удивлять присутствующих обращением к телефону «эй, ты» или «слушай команду».

Тем не менее разработчик обещает все поправить в следующих обновлениях. Из других функций можно отметить запуск распознавания по датчику приближения (два взмаха руки) и по встряске телефона. Как и MOTO X, поддерживает распознавание при выключенном экране, но, к сожалению, это очень сильно отражается на батарее, поэтому актуально для телефона на зарядке или автомобильных медиацентров на Android с постоянным питанием. Работает с Bluetooth-гарнитурой, имеет интеграцию с Таскером, может зачитывать текстовые сообщения.

Open Mic+ for Google Now

Commandr 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);
            }
          }
...

Этот файл был усечен, загрузите его, чтобы увидеть его полное содержимое.
 

Голосовое управление домашней автоматикой с использованием Arduino Uno и Bluetooth

Конфиденциальность и файлы cookie
Файлы cookie

- это крошечные файлы данных, которые хранятся в вашем веб-браузере при посещении веб-сайта. На www.electromaker.io мы используем файлы cookie, чтобы персонализировать ваш опыт и помочь нам выявлять и устранять ошибки.

Использование файлов cookie и аналогичных технологий в течение некоторого времени было обычным явлением, и файлы cookie, в частности, важны при предоставлении многих онлайн-услуг.Таким образом, использование таких технологий не запрещено Правилами, но они требуют, чтобы людям рассказывали о файлах cookie и им был предоставлен выбор в отношении того, какие из их действий в Интернете будут отслеживаться таким образом. (Офис уполномоченного по информации)

Наша политика в отношении файлов cookie

Чтобы в полной мере использовать www.electromaker.io, пользоваться персонализированными функциями и гарантировать, что веб-сайты работают на полную мощность, ваш компьютер, планшет или мобильный телефон должен будет принимать файлы cookie.

Наши файлы cookie не хранят конфиденциальную информацию, такую ​​как ваше имя, адрес или платежные реквизиты: они просто содержат информацию о том, как вы используете наш сайт, чтобы мы могли улучшить ваш опыт и исправить любые ошибки.

Если вы предпочитаете ограничивать, блокировать или удалять файлы cookie с www.electromaker.io или любого другого веб-сайта, вы можете использовать для этого свой браузер. Все браузеры индивидуальны, поэтому проверьте меню «Справка» в вашем конкретном браузере (или в руководстве к мобильному телефону), чтобы узнать, как изменить настройки файлов cookie.

Вот список основных файлов cookie, которые мы используем, и для чего мы их используем:

  • Electromaker - сеанс входа в систему
  • Google Analytics - Аналитика
  • Twitter - лента Twitter

Управление файлами cookie

Каждый веб-браузер обрабатывает файлы cookie по-разному, следуйте инструкциям для выбранного браузера:

Управляйте своим Arduino с помощью голосовых команд [приложение для Android]

Привет,
В этом проекте мы собираемся управлять Arduino с помощью голосовых команд с помощью простого приложения для Android, которое я создал с помощью MIT App Inventor.

Посмотрите видео ниже

Ресурсов для этого проекта:

Необходимые детали

Вы можете использовать предыдущие ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все детали для ваших проектов по лучшей цене!

Цепь приемника

Щелкните здесь, чтобы загрузить библиотеку RCSwitch. Установите его и повторно откройте IDE Arduino. Затем откройте пример «ReceiveDemo_Advanced». Загрузите код и откройте монитор последовательного порта.Нажимайте кнопки пульта дистанционного управления, которые собираетесь использовать, и сохраните их.

Заключительный контур

Загрузите и установите исходный код ниже

  • Эскиз Arduino
  • Установите библиотеку RC-переключателей
  • Voice_Control.apk
  • Voice_Control.aia (для редактирования приложения для Android)

Нажмите здесь, чтобы загрузить все

Примечание. Если вы хотите отредактировать мое приложение, это то, что вам нужно сделать. Загрузите Voice_Control.aia и загрузите его в MIT App Inventor.

Советы:

  • Вам необходимо отсоединить кабели RX и TX при загрузке скетча в Arduino.
  • Иногда люди подключают TX от модуля Bluetooth к TX Arduino… это неправильно и не работает. Убедитесь, что вы правильно подключили TX к RX, а RX к TX.
  • Если модуль Bluetooth HC-05 запрашивает пароль, это '1234'.
  • Перед тестированием моего приложения «BlueLED» проверьте, правильно ли вы выполнили все подключения.Как это сделать? Просто введите цифры (’1’, ’0’) в ваш серийный монитор, и ваш светодиод должен включаться и выключаться.

Надеюсь, вы нашли это полезным!

Есть вопросы? Оставьте комментарий ниже!

Спасибо за прочтение. Если вам понравился этот пост, возможно, вам понравятся мои следующие, поэтому, пожалуйста, поддержите меня, подписавшись на мой блог и мою страницу в Facebook.

П.С. Нажмите здесь, чтобы узнать, как использовать MIT App Inventor с Arduino

с.P.S. Щелкните здесь, чтобы узнать, как использовать схему передатчика / приемника 433 МГц для управления розетками.

Управляйте Arduino своим голосом

Группа инженеров по обучению

Команда опытных инженеров, делящихся знаниями со всем миром

Группа инженеров по обучению - ведущая команда в индустрии микроконтроллеров с более чем 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
  • Базовый опыт работы в электронике
  • Желание применять, а не просто смотреть

Добро пожаловать на этот курс.

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

После этого курса вы сможете управлять своими собственными проектами Arduino с помощью ваших собственных голосовых команд, и вы можете использовать их в любом приложении, которое придет вам в голову, которое может облегчить вашу жизнь, поскольку все соединения и кодирование объясняются подробно.

Я уверен, что этот курс выведет вас на новый уровень Arduino Control и откроет для вас новые возможности.

Цель этого курса:

- Вывести управление Arduino на новый уровень с помощью пошагового руководства по управлению Arduino с помощью собственных голосовых команд

Необходимые материалы

Аппаратное обеспечение:

  • Arduino или клонированную плату Arduino (freeduino), либо вы можете создать свою собственную плату Arduino.

  • Любой компонент, которым вы хотите управлять своим голосом.

  • Соединительные провода.

Программное обеспечение:

Для кого предназначен этот курс:

  • Компьютерщики
  • Arduino Geeks
  • Всем, кто интересуется изучением новых вещей об Arduino
  • Всем, кто хочет узнать больше о голосовом управлении с Arduino
  • Кто угодно Заинтересован в изучении методов голосового управления искусственным интеллектом
  • Любой, кто ищет новый способ управления своими проектами Arduino

IRJET-Запрошенная вами страница не найдена на нашем сайте

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 для своей системы управления качеством.


(PDF) Автоматическое управление на основе голосовых команд и Arduino

Рисунок 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *