Оглавление:

Синтез ретро речи. Часть: 12 Интернет вещей, Домашняя автоматизация: 12 шагов (с изображениями)
Синтез ретро речи. Часть: 12 Интернет вещей, Домашняя автоматизация: 12 шагов (с изображениями)

Видео: Синтез ретро речи. Часть: 12 Интернет вещей, Домашняя автоматизация: 12 шагов (с изображениями)

Видео: Синтез ретро речи. Часть: 12 Интернет вещей, Домашняя автоматизация: 12 шагов (с изображениями)
Видео: Q&A/Ответы на вопросы с Иваном Романовским. Открытый онлайн урок 2024, Июль
Anonim
Image
Image
Синтез ретро речи. Часть: 12 Интернет вещей, домашняя автоматизация
Синтез ретро речи. Часть: 12 Интернет вещей, домашняя автоматизация

Эта статья является 12-й в серии по домашней автоматизации Instructables, в которой описывается, как создать и интегрировать IoT Retro Speech Synthesis Device в существующую систему домашней автоматизации, включая все необходимые программные функции для обеспечения успешного развертывания в домашней среде.

На рисунке 1 показано готовое устройство для синтеза речи IoT, а на рисунке 2 показаны все компоненты, использованные в прототипе, форм-фактор которых был уменьшен для использования в конечном продукте.

На видео показано устройство в действии (во время тестирования).

Вступление

Как упоминалось выше, в этом руководстве подробно описано, как создать устройство для синтеза речи в стиле ретро для Интернета вещей, и он основан на General Instruments SP0256-AL2.

Его основная цель - добавить «олдскульный» голосовой синтез в сеть IoT. Вы спросите, почему «старая школа»? Ну, потому что я был примерно в 80-х, когда эти вещи были впервые произведены, и я подключил один к своему BBC Micro, так что у меня есть некоторая степень ностальгии по SP0256-AL2.

Я предпочитаю попытаться понять, что же, черт возьми, говорит этот голос далека, чем слушать нежные тона хипстерского эха Amazon или Siri. Я спрашиваю вас, в чем проблема?

Да, и не говоря уже о том, что у меня также есть «полный пакет» микросхем SP0256-AL2.

Устройство также способно считывать локальную температуру и влажность, так что еще больше расширяет окружающий инструментарий моей существующей инфраструктуры IoT, подключенной к сети IoT на основе MQTT / OpenHAB, подробно описанной в этой серии по домашней автоматизации (HA), на основе повторно используемого кода, взятого отсюда.

В его основе лежит ESP8266-07, который отвечает за связь MQTT и контролирует все функции системы (доступ к SD-карте, светодиодное управление, измерение температуры / влажности, регулировка громкости, синтез речи). Устройство полностью настраивается с помощью текстовых файлов, хранящихся на локальная SD-карта, хотя параметры калибровки и сетевой безопасности также могут быть запрограммированы с помощью удаленных публикаций MQTT.

Какие запчасти мне нужны?

Смотри спецификацию материалов здесь

Какое программное обеспечение мне нужно?

  • Arduino IDE 1.6.9,
  • Arduino IDE настроен для программирования ESP8266-07 (как этот). Затем настройте IDE, как указано в подробном описании, приведенном в эскизе программного обеспечения здесь,
  • Python v3.5.2, если вы хотите использовать возможность автоматического тестирования, подробности здесь

Какие инструменты мне нужны?

  • Микроскоп не менее x3 (для пайки SMT),
  • Инструмент для обжима разъемов Molex (для разъемов JST),
  • Паяльник SMD (с жидким флюсом и порошковым припоем),
  • Отвертки (разные),
  • Тепловая пушка,
  • Сверла (разные),
  • Зенковка ручного инструмента,
  • Файлы (разные),
  • Дремель (разные насадки),
  • Прочные тиски (маленькие и большие, как у черно-палубного товарища по работе),
  • Скальпель,
  • Штангенциркуль с нониусом (используются для замера производства и полезны для определения размеров компонентов печатной платы),
  • Гаечные ключи и гаечные ключи (разные),
  • Пинцет прочный (для пайки поверхностным монтажом),
  • Младшая ножовка,
  • Дрель (с различными сверлами),
  • Плоскогубцы (остроконечные и курносые),
  • Фрезы заподлицо,
  • Цифровой мультиметр со звуковой сигнализацией обрыва цепи,
  • Двухканальный цифровой осциллограф (удобен для отладки сигналов)

Какие навыки мне нужны?

  • Терпения много,
  • Большая ловкость рук и отличная координация рук и глаз,
  • Отличные навыки пайки,
  • Отличные навыки изготовления,
  • Возможность визуализировать в 3-х измерениях,
  • Некоторое знание разработки программного обеспечения на C (если вы хотите понять исходный код),
  • Некоторое знание Python (как устанавливать и запускать скрипты, если вы хотите использовать автоматическое тестирование),
  • Знание Arduino и его IDE,
  • Хорошее знание электроники,
  • Некоторое понимание вашей домашней сети.

Темы охватывали

  • Руководство пользователя
  • Обзор схемы
  • Производство и сборка печатных плат
  • Изготовление
  • Обзор системы программного обеспечения
  • Обзор программного обеспечения
  • Калибровка сенсора
  • Соглашение об именовании тем MQTT
  • Отладка и поиск неисправностей
  • Тестирование дизайна
  • Заключение
  • Использованные ссылки

Ссылки на серию к части 11: Настольная консоль Интернета вещей. Часть: 11 Интернет вещей, домашняя автоматизация

Шаг 1. Руководство пользователя

Руководство пользователя
Руководство пользователя
Руководство пользователя
Руководство пользователя
Руководство пользователя
Руководство пользователя

На рисунке 1 выше показана передняя часть синтезатора речи в стиле ретро, а на рисунке 2 - сзади.

Передняя часть корпуса

  1. Спикер Гриль
  2. Разъем для наушников 3,5 мм: при вставке разъема 3,5 мм основной динамик отключается.
  3. Красный светодиод: этот светодиод загорается во время произнесения слова, когда речь была инициирована через
  4. Синий светодиод: этот светодиод горит, когда произносится слово, когда речь была инициирована с помощью запроса MQTT IoT.

Корпус сзади

  1. Кнопка сброса: используется для полной перезагрузки IoT-устройства ESP8266-07.
  2. Кнопка вспышки: при использовании вместе с кнопкой сброса позволяет повторно перепрограммировать ESP8266-07.
  3. Штекер антенны Wi-Fi (штекер SMA): для внешней антенны WiFi, обеспечивающей наименьшее затухание в радиочастотном тракте, поскольку крышка выполнена из алюминия.
  4. Порт внешнего программирования: устраняет необходимость откручивать корпус для получения доступа к ESP8266-07 для целей перепрограммирования. Контакты программирования ESP8266-07 выведены на внешний порт программирования. Рисунок 3 - адаптер для программирования.
  5. Зеленый светодиод: это светодиод системы IoT, который используется для индикации диагностического состояния устройства, загрузки и во время работы.
  6. Внешний датчик температуры / влажности (AM2320)
  7. Слот для SD-карты: он содержит все данные конфигурации / безопасности, а также страницы веб-сервера.
  8. Разъем питания 2,1 мм, 6 В постоянного тока

Шаг 2: Обзор схемы

Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы

Устройство Retro Speech Synth состоит из двух печатных плат;

  • RetroSpeechSynthIoTBoard: это универсальная многоразовая печатная плата ESP8266-07 / 12 / 12E / 13.
  • RetroSpeechSynthBoard: это стандартная печатная плата SP0256-AL2.

Доска для Интернета вещей Retro Speech Synth

Эта плата допускает прямую пайку разъемов ESP8266-07 / 12 / 12E / 13 или разъемов с шагом 0,1 дюйма для несущей печатной платы ESP8266.

Плата была разработана для расширения ввода / вывода через соединение I2C и может поддерживать уровни питания 3v3 или 5v через Q1, Q2, R8-13.

Подключение к плате осуществляется с помощью одного из двух разъемов J2 и J4, 8-канальной ленты DIL IDC или 5-канальной JST / Molex.

Обеспечение U2 и U3 3,3 В и 5 В на борту, регулировка питания. В качестве альтернативы, если требуется большая токовая нагрузка, внешние последовательные шунтирующие регуляторы могут быть подключены через разъемы J10 и J11 соответственно.

Разъемы J1 и J3 обеспечивают поддержку внешней SD-карты через SPI. J1 был разработан для 8-контактного Molex, а J3 имеет прямой контакт для поддержки совместимости контактов для стандартной печатной платы SD-карты с поддержкой 3v3 или 5v.

Доска для синтеза речи в стиле ретро

Управление этой платой осуществляется через соединение, совместимое с I2C 5v, через J1, J5 или J6, 4-контактный JST / Molex, 8-контактный DIL IDC или 8-контактный ленточный разъем IDC.

U2 MPC23017 обеспечивает параллельный интерфейс I2C с U3, SP0256-AL2 и светодиодами D1 (зеленый), D2 (красный) и D3 (синий). Выход синтезатора речи подается на аудиоусилитель CR1 TBA820M через аналоговый потенциометр RV1 или цифровой потенциометр U1 MCP4561.

Digital Pot U1 также управляется через I2C, совместимый с напряжением 5 В.

Примечание. Было выбрано устройство ESP8266-07, поскольку оно имеет встроенный радиочастотный разъем IPX, позволяющий добавить внешнюю антенну WiFi к алюминиевому корпусу.

Шаг 3: Изготовление и сборка печатной платы

Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат
Производство и сборка печатных плат

На рисунках 1 и 2 показаны готовые и смонтированные подузлы печатной платы, расположенные на алюминиевой подложке корпуса.

Две печатные платы были разработаны с использованием Kicad v4.0.7, изготовлены JLCPCB и собраны мной и показаны на рис. 3-13.

Шаг 4: Изготовление

Изготовление
Изготовление
Изготовление
Изготовление
Изготовление
Изготовление

На рисунке 1 показана компоновка в стиле руководства Хейнса всех сборных деталей перед окончательной сборкой.

На рисунках 2… 5 показаны различные кадры изготовления корпуса с минимальными зазорами.

Шаг 5: Обзор системы программного обеспечения

Обзор системы программного обеспечения
Обзор системы программного обеспечения
Обзор системы программного обеспечения
Обзор системы программного обеспечения

Это устройство для синтеза речи в стиле ретро для Интернета вещей содержит шесть ключевых программных компонентов, как показано на рис. 1 выше.

SD Card

Это внешняя система хранения флэш-файлов SD SPI, которая используется для хранения следующей информации (см. Рис. 2 выше);

  • Значки и «Домашняя страница конфигурации синтезатора речи» index.htm: обслуживаются устройством IoT, когда оно не может подключиться к вашей сети IoT WiFi (обычно из-за неверной информации о безопасности или использования в первый раз), и предоставляет пользователю средства удаленной настройки датчиков без необходимости повторно прошивать новый SD-контент. Он также содержит index1.htm, mqtt.htm и sp0256.htm, это локально обслуживаемые веб-страницы, доступные через веб-браузер, позволяющие ограниченное управление синтезатором речи через
  • Информация о безопасности: содержит информацию, используемую при включении устройства IoT для подключения к вашей сети IoT WiFi и MQTT Broker. Информация, отправленная через «Домашнюю страницу конфигурации синтезатора речи», записывается в этот файл («secvals.txt»).
  • Информация о калибровке: информация, содержащаяся в файлах ('calvals1.txt' и 'calvals2.txt'), используется для калибровки встроенных датчиков температуры / влажности, если это необходимо. Константы калибровки можно записать в устройство IoT с помощью команд MQTT от брокера MQTT или путем повторной прошивки SD-карты. «calvals1.txt» относится к датчику AM2320, а «calvals2.txt» - к DHT22.
  • Настраиваемые пользователем системные значения: информация, содержащаяся в этом файле ('confvals.txt'), выбранная пользователем, управляет определенными реакциями системы, такими как начальный уровень цифрового объема, автоматическое объявление о готовности системы к подписке брокера MQTT и т. Д.

Сервер mDNS

Эта функция активируется, когда устройству IoT не удалось подключиться к вашей сети Wi-Fi в качестве станции Wi-Fi, и вместо этого оно превратилось в точку доступа Wi-Fi, что-то вроде домашнего маршрутизатора Wi-Fi. В случае такого маршрутизатора вы обычно подключаетесь к нему, вводя IP-адрес чего-то вроде 192.168.1.1 (обычно напечатанный на этикетке, прикрепленной к коробке) непосредственно в адресную строку вашего браузера, после чего вы получите страницу входа для входа имя пользователя и пароль для настройки устройства. Для ESP8266-07 в режиме AP (режим точки доступа) устройство по умолчанию использует IP-адрес 192.168.4.1, однако с запущенным сервером mDNS вам нужно только ввести понятное для человека имя SPEECHSVR.local в адресную строку браузера, чтобы см. «Домашнюю страницу конфигурации синтезатора речи».

Клиент MQTT

Клиент MQTT предоставляет все необходимые функции: подключитесь к своей сети IoT-брокеру MQTT, подпишитесь на выбранные вами темы и опубликуйте полезные данные в данной теме. Короче говоря, он обеспечивает базовую функциональность IoT.

Веб-сервер

Этот веб-сервер имеет две цели;

  1. Если устройство IoT не может подключиться к сети Wi-Fi, SSID, P / W и т. Д. Определены в файле информации о безопасности, хранящемся на SD-карте, устройство станет точкой доступа. После подключения к сети Wi-Fi, предоставляемой точкой доступа, наличие веб-сервера HTTP позволяет вам напрямую подключаться к устройству и изменять его конфигурацию с помощью веб-браузера HTTP, цель которого - обслуживать конфигурацию синтезатора речи. Домашняя страница », которая также хранится на SD-карте.
  2. После того, как устройство синтеза речи в стиле ретро IoT подключится к сети Wi-Fi и брокеру MQTT, при доступе к нему веб-сервер HTTP автоматически откроет веб-страницу HTTP, позволяющую ограниченное управление устройством IoT для произнесения набора фиксированных фраз и возможность переключите два передних красного и синего светодиода.

Wi-Fi станция

Эта функция дает устройству IoT возможность подключаться к внутренней сети Wi-Fi, используя параметры в файле информации о безопасности, без этого ваше устройство IoT не сможет подписаться / публиковать в MQTT Broker.

Точка доступа Wi-Fi

Возможность стать точкой доступа Wi-Fi - это средство, с помощью которого устройство IoT позволяет подключаться к нему и вносить изменения в конфигурацию через станцию WiFi и браузер (например, Safari на Apple iPad). Эта точка доступа передает SSID = «SPEECHSYN» + последние 6 цифр MAC-адреса устройства IoT. Пароль для этой закрытой сети изобретательно назван «ПАРОЛЬ».

Шаг 6: Обзор программного обеспечения

Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения

Преамбула

Для успешной компиляции этого исходного кода вам понадобится локальная копия кода и библиотек, описанных ниже в шаге 12, используемые ссылки. Если вы не знаете, как установить библиотеку Arduino, перейдите сюда.

Обзор

Программное обеспечение использует конечный автомат, как показано на рис. 1 выше (полная копия исходного кода в моем репозитории GitHub здесь). Как указано ниже, существует 5 основных состояний;

  • В ЭТОМ

    Это состояние инициализации - первое состояние, в которое входит после включения питания

  • NOCONFIG

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

  • В ОЖИДАНИИ NW

    Это временное состояние, введенное при отсутствии подключения к сети Wi-Fi

  • ОЖИДАНИЕ MQTT

    Это временное состояние, входящее в него после подключения к сети Wi-Fi, и пока в этой сети нет подключения к брокеру MQTT

  • АКТИВНЫЙ

    Это нормальное рабочее состояние, которое переходит в состояние, когда установлено соединение с сетью Wi-Fi и соединение с брокером MQTT. Именно в этом состоянии температура, индекс тепла и влажность на устройстве синтеза речи в стиле ретро для Интернета вещей регулярно публикуются для брокера MQTT. В этом состоянии отображается домашняя страница синтезатора речи

События, управляющие переходами между состояниями, описаны на рис. 1 выше. Переходы между состояниями также регулируются следующими параметрами SecVals;

  • 1-й IP-адрес брокера MQTT. В десятичной форме с точками AAA. BBB. CCC. DDD
  • 2-й порт брокера MQTT. В целочисленной форме.
  • Третье соединение с брокером MQTT пытается установить перед переключением из режима STA в режим AP. В целочисленной форме.
  • 4-й SSID сети Wi-Fi. Текст в произвольной форме.
  • 5-й сетевой пароль WiFi. Текст в произвольной форме.

Как упоминалось выше, если устройство IoT не может подключиться в качестве станции WiFi к сети Wi-Fi, SSID и P / W которой определены в файле secvals.txt, хранящемся на SD-карте, устройство IoT станет точкой доступа. После подключения к этой точке доступа он будет обслуживать «Домашнюю страницу конфигурации синтезатора речи», как показано выше на рис. 2 (путем ввода «SPEECHSVR.local» или 192.168.4.1 в адресную строку вашего браузера). Эта домашняя страница позволяет реконфигурировать устройство синтеза речи в стиле ретро для Интернета вещей через браузер

Удаленный доступ в АКТИВНОМ состоянии

После подключения к брокеру MQTT также можно повторно откалибровать и перенастроить устройство с помощью тематических публикаций MQTT. Файл calvalval.txt имеет доступ для чтения / записи, а файл secvals.txt имеет доступ только для записи.

Также, как упоминалось выше, в активном режиме можно получить доступ к синтезатору речи через интерфейс HTTP, введя «SPEECHSVR.local» или 192.168.4.1 в адресную строку URL-адреса вашего браузера. Этот интерфейс на основе HTTP позволяет осуществлять базовое управление синтезатором речи. На рис. 3, 4 и 5 показаны доступные веб-страницы.

Пользовательская отладка

Во время загрузки зеленый индикатор системы IoT-устройства на задней панели корпуса дает следующую информацию об отладке;

  • 1 короткое мигание: на SD-карте нет файла конфигурации (secvals.txt)
  • 2 коротких мигания: устройство IoT пытается подключиться к сети Wi-Fi.
  • Постоянное свечение: устройство IoT пытается подключиться к MQTT Broker
  • Не горит: устройство активно.

Функциональность устройства для синтеза речи в стиле ретро Интернета вещей в АКТИВНОМ состоянии

Находясь в АКТИВНОМ состоянии, ESP8266 входит в непрерывный цикл, вызывая следующие функции; timer_update (), checkTemperatureAndHumidity () и handleSpeech (). Конечный результат был разработан, чтобы предоставить пользователю интерфейс HTTP или MQTT, беспрепятственно обслуживать его встроенный речевой процессор с помощью фонем по запросу и публиковать локальные параметрические значения окружающей среды через MQTT.

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

Шаг 7: Калибровка датчика

Калибровка сенсора
Калибровка сенсора

Когда устройство IoT включается, как часть последовательности загрузки с SD-карты считываются два файла с именами «cavals1.txt» и «cavals2.txt».

Содержимое этих файлов является калибровочными константами, как указано выше на рис. 1.

  1. 'cavals1.txt': используется внешним AM2320
  2. 'cavals2.txt': используется внутренним DHT22

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

Стратегия отчетности

Этот параметр определяет, как удаленный датчик сообщает о любых локальных изменениях параметров окружающей среды. Если выбрано значение 0, удаленный датчик будет публиковать любые изменения, которые он видит в температуре или влажности, каждый раз, когда считывается соответствующий датчик (примерно каждые 10 секунд). Любое другое значение задержит публикацию изменения на 1… 60 минут. Изменение этого параметра позволяет оптимизировать сетевой трафик MQTT. Следует отметить, что данные о температуре и влажности с DHT22 считываются попеременно из-за ограничений датчика.

Калибровка температуры

Чтобы откалибровать датчик температуры, я выполнил тот же процесс, который описан здесь, шаг 4, снова используя простое соотношение y = mx + c. В качестве эталонного устройства я использовал датчик температуры и влажности Интернета вещей №1. Значения датчика даны в градусах Цельсия.

Калибровка влажности

Поскольку у меня нет средств для точной регистрации или даже контроля локальной влажности окружающей среды, для калибровки датчика я использовал подход, аналогичный описанному выше здесь, шаг 4, снова используя датчик № 1 в качестве эталона. Однако недавно я нашел в Интернете отличную статью, в которой описывается, как калибровать датчики влажности. Я вполне могу попробовать этот подход когда-нибудь в будущем. Значения датчика даны в% от относительной влажности.

Шаг 8: Соглашение об именовании тем MQTT

Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT

Как упоминалось в более ранней инструкции (здесь), я остановился на соглашении об именах тем, указанном на рис. 1 выше.

А именно «AccessMethod / DeviceType / WhichDevice / Action / SubDevice». Это не идеально, но позволяет применять полезные фильтры для просмотра всех выходных сигналов датчиков для заданной параметрической темы, что позволяет легко сравнивать с MQTTSpy, как на рис. 2 выше.

Этот проект является первым случаем, когда одно устройство содержит более одного исходного источника публикации одного и того же типа. т.е. Два датчика температуры / влажности, от внутренних и внешних вспомогательных устройств.

Он также поддерживает разумно расширяемые логические группы функций в рамках данного устройства IoT.

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

Примечание. Если вы не знаете, как использовать MQTTSpy, см. Здесь «Настройка брокера MQTT. Часть 2: Интернет вещей, домашняя автоматизация »

Шаг 9: Отладка и поиск неисправностей

Отладка и поиск неисправностей
Отладка и поиск неисправностей

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

Однако в этом случае я столкнулся со странной прерывистой ошибкой, из-за которой одни фонемы звучали, а другие - нет.

После некоторой начальной отладки печатной платы синтезатора речи с использованием Arduino Uno для источника фонем и доказательства работоспособности этой платы я рассмотрел линии I2C между печатной платой IoT и печатной платой речевого синтезатора. См. Рис. 1 выше.

Вы можете ясно видеть «зуб пилы» / экспоненциальный край сигнала I2C на графиках.

Обычно это указывает на то, что подтягивающие значения I2C слишком высоки, что препятствует достаточно быстрому восстановлению линейного напряжения в цепи с открытым стоком.

В качестве «обходного пути» я подключил два подтягивающих резистора SMT R12 и R13 с номиналом 10 кОм, чтобы получить 4K7, и, конечно же, Speech Synth «ожил».

Этот тип сбоя противоположен тому, что может произойти при отладке проектов такого типа. Как правило, большинство модулей на базе I2C, приобретаемых на Ebay, обычно поставляются с уже установленными подтягиваниями 10K или 4K7. Если вы собираетесь использовать> 5 модулей I2C, каждый с подтягиванием 4K7, то общая нагрузка составит 940R, что будет слишком большим для выходного каскада мастера. Исправление заключалось в том, чтобы отпаять все подтягивающие резисторы, кроме одного, на каждом модуле. Желательно тот, который физически наиболее удален от хозяина.

Полезный совет, о котором стоит помнить при разработке электроники с устройствами I2C.

Шаг 10: Тестирование дизайна

Image
Image
Тестирование дизайна
Тестирование дизайна
Тестирование дизайна
Тестирование дизайна

Тестирование проводилось по двум методикам; Ручной и автоматический.

Первым, ручным и обычно используемым при начальной разработке кода, было использование MQTT Spy для проверки всех доступных тем с подпиской и проверки опубликованных ответов (изображено на рис. 2 выше). Поскольку это ручной процесс, он может занять много времени и быть подверженным ошибкам в процессе разработки кода, хотя ручное выполнение действительно обеспечивает 100% покрытие.

MQTTSpy был выбран для ручного тестирования, потому что это отличный инструмент для ручного форматирования заданной полезной нагрузки и легкой публикации ее в любой теме. Он также отображает четкий журнал с отметками времени, который очень полезен для отладки (рис. 3 выше).

Второй, автоматизированный подход был принят по мере того, как исходный код стал более сложным (> 3700 строк). Повышенная сложность означает более длительные циклы ручного тестирования и более сложные тесты. Для повышения надежности, детерминизма и качества тестов использовалось автоматическое тестирование с помощью программы-исполнителя на python (рис. 1). См. Шаг № 10 в этом Руководстве о том, как было введено автоматическое тестирование. Полную копию автоматизированных тестов, использованных в этом Руководстве, можно найти здесь.

Выше показано видео, на котором выполняется последовательность автоматизированных испытаний. Последовательность выполняет следующие шаги;

  • Автоматизировано через MQTT

    • Подключитесь к магистрали MQTT и объявите «Система готова»
    • Зеленый светодиод упражнения
    • Красный светодиод упражнения
    • Синий светодиод для упражнений
    • Проверьте работу Digital Pot
    • Говорите с помощью фонем
    • Говорите, используя шестнадцатеричные коды для фонем
    • Говорите, используя коды для исправления фраз
    • Немного веселья Доктора Кто и далеков.
  • Вручную через HTTP / Chrome

    • Синий светодиод для упражнений
    • Красный светодиод упражнения
    • Произносите фиксированные фразы «Стивен Куинн», «Система готова» и «Привет, мир».
    • Получите HTTP-сервер, обслуживайте

      • Подробная информация о речевом синтезаторе
      • Подробнее о MQTT

Шаг 11: Заключение

Заключение
Заключение

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

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

Я отслеживал температуру и влажность через Grafana и сравнивал с другим устройством. Два значения окружающей среды хорошо коррелируют, подразумевая, что калибровка разумна (или, по крайней мере, они похожи).

Я перестал реализовывать команду word ('WFD / SpeechTH / 1 / Word / Command'), потому что у меня не хватило времени, и мне нужно было двигаться дальше. Я вполне могу снова посетить это, если и когда я настрою базу данных MySQL. Прямо сейчас я использую InfluxDB.

Шаг 12: Использованные ссылки

Следующие источники были использованы для составления этого руководства; Исходный код для устройства синтеза речи в стиле ретро Интернета вещей (он содержит копию всего)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Автор: Ник О'Лири
  • Цель: позволяет устройству публиковать или подписываться на темы MQTT с данным брокером.
  • От:

DHT.h

  • Автор: Adafruit
  • Назначение: библиотека Arduino для датчиков температуры и влажности DHT11DHT22 и др.
  • От:

Adafruit_AM2320.h / Adafruit_Sensor.h

  • Автор: Adafruit
  • Назначение: библиотека Arduino для AM2320 и др. Датчик температуры и влажности.
  • От:

MCP4561_DIGI_POT.h

  • Автор: Стив Куинн
  • Назначение: библиотека Arduino для цифрового потенциометра MCP4561
  • От:

Adafruit_MCP23017.h

  • Автор: Стив Куинн
  • Назначение: Библиотека Arduino для расширителя портов MCP23017 I2C. Это вилка GITHub из библиотеки Adafruit-MCP23017-Arduino-Library от Adafruit.
  • Источник:

Ради забавы

https://haynes.com/en-gb/

Производство печатных плат

https://jlcpcb.com/

Установка дополнительных библиотек Arduino

https://www.arduino.cc/en/Guide/Libraries

Как проверить и откалибровать датчик влажности

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017ee_12_06&utm_data_2017ee_12_06&utm_2017ee_12_06&utm_d06 /

SP0256-AL2 Лист данных

https://www.futurebots.com/spo256.pdf

Магазин речевых чипов

https://www.speechchips.com/shop/

Конкурс Arduino 2019
Конкурс Arduino 2019
Конкурс Arduino 2019
Конкурс Arduino 2019

Финалист конкурса Arduino Contest 2019

Рекомендуемые: