Оглавление:

Персональный помощник: 9 шагов (с изображениями)
Персональный помощник: 9 шагов (с изображениями)

Видео: Персональный помощник: 9 шагов (с изображениями)

Видео: Персональный помощник: 9 шагов (с изображениями)
Видео: Зачем бизнесмену нужен личный помощник? 2024, Июль
Anonim
Image
Image
Личный ассистент
Личный ассистент

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

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

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

Как это работает? Основные компоненты этого проекта - микроконтроллер и модуль музыкального плеера. Наш микроконтроллер (NodeMCU) использует технологию Wi-Fi для подключения к точке доступа с подключением к Интернету; чтобы он мог получить необходимые данные, обработать их и сообщить музыкальному проигрывателю (DFPlayer Mini), когда какой файл MP3 следует воспроизвести.

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

Шаг 1: Необходимые детали

Необходимые детали
Необходимые детали
  • NodeMCU ESP-12E (CP2102 USB-последовательный интерфейс)
  • DFPlayer Mini
  • Кнопка мгновенного действия SPST
  • Динамик 8 Ом, 2 Вт
  • Карта Micro SD (вам понадобится несколько килобайт, поэтому емкость не имеет значения)
  • Гайки и болты

    • Гайки M3 (x6)
    • Болты М3 - 23 мм (4 шт.)
    • Болты М3 - 15 мм (2 шт.)
  • 1N4148 Сигнальный диод (x1)
  • Резисторы

    • Резистор 1 кОм (x1)
    • Резистор 10 кОм (x2)

Другие части:

  • Печатная плата (вы можете заказать прототип онлайн или посетить местный магазин)
  • Акриловый лист, вырезанный лазером

    • Прозрачный лист толщиной 2 мм
    • Листы двух разных цветов толщиной 2,8 мм (оранжевый и зеленый, красный и зеленый, выбор на ваше усмотрение, цвета не имеют значения)
  • Любое зарядное устройство Micro USB на 5 В (минимум) 1 А (для питания устройства)

Шаг 2: как это работает

Как это работает
Как это работает
Как это работает
Как это работает

Хорошо, я хочу дать вам более подробную информацию о том, как работает программа.

Программное обеспечение состоит из некоторых Сервисов. Каждая служба имеет свои собственные модули. (Вы можете рассматривать службу как класс, а ее модули как методы). Каждый модуль можно рассматривать как исполняемый объект. Итак, наша программа состоит из нескольких исполняемых объектов.

Здесь у нас есть несколько сервисов и подуслуг или их модулей:

  • Gmail

    Непрочитанные сообщения

  • Погода

    • Текущая температура
    • Сегодня состояние
    • Сегодняшний минимум / максимум
    • Завтрашнее состояние
    • Завтра минимум / максимум
    • Прогноз осадков
    • Восход закат
  • Время

    • Текущее время
    • Текущая дата
  • Рождение и Смерть

    • Мировое Рождение
    • Мировая Смерть

Есть круговая очередь, в которой хранятся модули. Мы называем это Очередью операций. Я сказал, что каждый модуль - это исполняемый объект. Итак, когда вы нажимаете кнопку на устройстве, оно просматривает очередь операций и выполняет следующий модуль (или объект).

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

ОЧЕРЕДЬ (Непрочитанные сообщения | Прогноз осадков | Текущее время)

Вы нажимаете кнопку, непрочитанные сообщения должны выполняться.

ОЧЕРЕДЬ (Непрочитанные сообщения | Прогноз осадков | Текущее время)

Таким образом, устройство будет использовать собранные данные (здесь количество ваших непрочитанных сообщений, полученных из канала API почты Google), чтобы поговорить с вами. Но как? Здесь NodeMCU сообщит модулю MP3, когда он должен воспроизвести, какой фрагмент MP3 должен составить осмысленное предложение. Для этого я разработал разные очереди, таймеры и алгоритмы. (Если вы специалист по C ++ и любите микроконтроллеры, вы можете изучить код самостоятельно.)

Итак, вы услышите, устройство начинает говорить: у вас есть 4 непрочитанных сообщения в вашем почтовом ящике Gmail.

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

ОЧЕРЕДЬ (Непрочитанные сообщения | Прогноз осадков | Текущее время)

Итак, вы услышите что-то вроде: Не забудьте свой зонтик, завтра дождь. И так далее … Еще одна крутая вещь: для некоторых модулей (например, прогноза осадков) можно ожидать случайные предложения для тех же состояний. Например, если завтра будут осадки, и это дождь, а не снег, вы можете ожидать: «завтра возможен дождь», «принеси собственное солнышко, завтра дождливый», «тут-то-то, похоже, завтра дождь», или …

Как мы получаем разные данные для каждой службы?

  • Gmail

    Непрочитанные сообщения У Google есть мощный API, с помощью которого вы можете получить доступ к его различным службам, включая Gmail. Но в целях безопасности вам потребуются другие методы аутентификации и авторизации, такие как OAuth. ESP8266 не настолько мощный, чтобы запускать различные сложные алгоритмы хеширования. Итак, я использовал старую и простую технологию входа для доступа к почтовому ящику Gmail. Это канал Google Atom, который также можно использовать для чтения RSS. Мы отправляем HTTP-запрос для доступа к каналу Gmail, и его ответ находится в формате XML. Итак, подсчитываем количество непрочитанных сообщений и используем его в нашей программе

  • Погода Мы используем Yahoo Weather API для получения различной информации о погоде. Недавно Yahoo, как и Google, изменил свой API погоды, поэтому вам нужно будет использовать стандарты OAuth для доступа к его данным. К сожалению, ESP8266 не справляется со своей сложностью, поэтому мы воспользуемся уловкой, чтобы решить проблему. Вместо прямого доступа к Yahoo Weather API мы отправим наш запрос в специальный файл на сервере. Наш файл получает данные от Yahoo Weather и просто отправляет их нам.

    • Завтра Условие Завтра Условие сообщит вам, будет ли завтра теплее или холоднее, чем сегодня, или там, если не будет ощутимого изменения температуры. Мы сравниваем «сегодня минимум / максимум» с «завтрашним минимумом / максимумом», чтобы достичь этого. Вы можете проверить, как я написал этот алгоритм и как он работает, в файле программной библиотеки.
    • Прогноз осадков Если вы посмотрите документацию Yahoo Weather, вы увидите таблицу кодов условий. Как говорится, коды условий используются в ответе для описания текущих условий. Мы будем использовать коды условий завтрашнего дня и их значения, чтобы узнать, будут ли осадки, дождь или снег.
  • TimeNTP означает протокол сетевого времени. Это сетевой протокол для синхронизации часов между компьютерными системами. Поскольку у нас есть доступ в Интернет, мы будем использовать NTP-клиент, чтобы получать время с NTP-сервера и синхронизировать его с внутренним таймером ESP8266 (например, с тем, который вы используете с millis (), если вы парень Arduino).
  • Рождение и смерть Мы будем подсчитывать количество рождений и смертей с начала дня (благодаря NTP-клиенту легко получить количество секунд с начала дня). Я использовал мировые коэффициенты рождаемости и смертности по экологии.

Шаг 3: Установите программное обеспечение

Установите программное обеспечение
Установите программное обеспечение

Мы будем использовать Arduino IDE для загрузки нашей программы в NodeMCU. Вы можете загрузить и установить последнюю версию Arduino IDE с их официального сайта:

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

У нашей программы есть некоторые библиотечные зависимости. Что такое программная зависимость?

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

Вот список библиотек Arduino, которые вам нужны на вашем компьютере, чтобы иметь возможность скомпилировать программу Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Вы можете загрузить их по одному со страницы Github, а затем распаковать zip-файлы в каталог библиотеки Arduino. Его путь в вашей системе: C: / Users [ваше-имя пользователя] Documents / Arduino

Я написал библиотеку, чтобы код оставался чистым и не усложнялся. Загрузите файл PersonalAssistant-Library.zip и распакуйте его в каталог библиотеки Arduino. Точно так же, как то, что вы делали раньше для этих трех библиотек.

Файл YahooWeather.php

Поскольку ESP8266 недостаточно мощный для выполнения алгоритмов хеширования, мы не можем использовать его напрямую для отправки HTTP-запросов в Yahoo Weather API на основе стандартов OAuth. Итак, мы будем использовать файл между нашим устройством и Yahoo Weather API. Вы можете загрузить файл YahooWeather.zip, распаковать его и поместить файл YahooWeather.php на веб-сервер. Например, если ваш домен - example.com и вы поместили файл в каталог api, ваша конечная точка api станет example.com/api/YahooWeather.php. Вы будете отправлять запросы данных о погоде на эту конечную точку.

Эскиз программы и FFS (файловая система Flash)

Ваша плата NodeMCU имеет файловую систему флэш-памяти 4 МБ для хранения данных. Итак, когда он у нас есть, почему бы не использовать его?

Помните, я сказал, что у нашего устройства два пользовательских интерфейса? Помимо этой одинокой кнопки, наш второй пользовательский интерфейс представляет собой простое веб-приложение. С помощью этого приложения вы можете управлять очередью операций, включая / отключая каждый модуль, изменяя настройки службы или конфигурацию устройства, например устанавливая SSID и пароль Wi-Fi. Мы будем хранить все эти файлы в файловой системе NodeMCU Flash и запускать легкий веб-сервер для обработки запросов пользователей из их веб-браузера.

Редактирование файла конфигурации

Загрузите файл PersonalAssistant-Sketch.zip и распакуйте его где-нибудь на своем компьютере. Откройте файл config.json, который находится:

PersonalAssistant / данные / config.json

Вы можете использовать любой текстовый редактор или редактор кода, например блокнот, блокнот ++, Atom и т. Д. Файл представляет собой структуру данных json, поэтому это пара ключ / значение, удобочитаемая человеком, и вы можете легко ее редактировать. Вы можете изменить эти поля:

  • Gmail

    • имя пользователя: ваше имя пользователя Gmail с @ gmail.com
    • пароль: ваш пароль Gmail
  • Погода

    • woeid: место, для которого вы хотите получать информацию о погоде. WOEID (где на Земле IDentifier) - это ссылочный идентификатор, который Yahoo использует для определения местоположения. Вы можете выполнить поиск по местоположениям WOEID по этой ссылке.
    • api: это конечная точка API. Ссылка на ваш файл yahooweather.php.
    • appId, consumerKey и consumerSecret: для доступа к Yahoo Weather API вам необходимо создать проект на странице разработчиков Yahoo. Это даст вам Consumer Key и Secret, которые необходимы для использования API. Для начала посетите страницу Yahoo Weather Developer и создайте приложение.
  • Часовой пояс

    часовой пояс: введите часовой пояс в зависимости от вашего местоположения. Это может быть положительное или отрицательное число с плавающей запятой, и его единица измерения - часы

  • Вай фай

    • ssid: SSID вашей сети.
    • пароль: ваш сетевой пароль. NodeMCU будет использовать ssid и пароль для подключения к вашей сети Wi-Fi.

Загрузка эскиза программы и данных FFS

Подключите NodeMCU к компьютеру с помощью кабеля micro-USB-USB.

Теперь откройте файл PersonalAssistant.ino, который находится:

PersonalAssistant / PersonalAssistant.ino

В Arduino IDE в меню «Инструменты»> «Плата» выберите NodeMCU 1.0 (модуль ESP-12E). В «Инструменты»> «Порт» выберите правильный порт. Он представляет ваш NodeMCU.

Теперь выберите Инструменты> ESP8266 Sketch Data Upload, это загрузит содержимое папки данных в ESP8266. Подождите несколько секунд, пока он не закончится. Затем выберите «Скетч»> «Загрузить» или просто нажмите кнопки Ctrl + U на клавиатуре, чтобы начать загрузку программы. Подождите, пока не увидите сообщение «загрузка завершена».

Шаг 4: Настройте карту Micro SD

Мы используем карту micro SD для хранения фрагментов файлов MP3. Именно NodeMCU решает, какой файл следует воспроизводить и в какое время, а DFPlayer Mini помогает ему составить осмысленное предложение, расшифровывая файлы MP3.

Я использовал Amazon Polly для создания нужных мне голосовых фрагментов.

Amazon Polly - это сервис, который превращает текст в реалистичную речь, позволяя создавать говорящие приложения и создавать совершенно новые категории продуктов с поддержкой речи.

Не забывайте, что наше устройство не использует Amazon Polly API для динамической речи. У нас есть несколько статичных оффлайн голосовых фрагментов, и, собирая их вместе, мы составляем разные предложения.

Я использовал этот сайт для создания файлов MP3. В качестве речевого вывода я выбрал американский английский / салли.

Единственное, что вам нужно сделать, это загрузить файл microSD.zip, а затем извлечь его на карту micro SD. Он содержит все 78 необходимых файлов MP3.

Вероятно, ваша карта Micro SD поставляется с адаптером. Вы можете вставить карту Micro SD в адаптер и подключить ее к ноутбуку. Если ваш компьютер не поддерживает чтение карт, вам следует использовать внешний картридер.

Шаг 5: Разработка схемы и установка печатной платы

Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы
Разработка схемы и установка печатной платы

Я разработал схему и плату с помощью Autodesk EAGLE. Я включил файлы SCH и BRD в PersonalAssistant-PCB.zip. Вы можете легко отредактировать и / или отправить его местному или онлайн-производителю печатной платы, чтобы заказать и получить свою плату.

Еще одна вещь, о которой следует упомянуть, это то, что ESP8266 работает с напряжением 3,3 В, а DFPlayer Mini работает с напряжением 5 В. Поскольку эти два модуля должны взаимодействовать друг с другом через последовательный интерфейс, мы не можем напрямую подключить выход 5 В к входу 3,3 В, так как это повредит ваш ESP8266. Поэтому нам понадобится преобразование уровня с 5В на 3,3В. Для этого мы используем сигнальный диод и резистор 10 кОм.

Шаг 6: припаяйте

Припаяйте это вверх
Припаяйте это вверх
Припаяйте это вверх
Припаяйте это вверх

Сборка платы довольно проста, поскольку у вас есть несколько компонентов. Следуйте схемам и чертежам платы в шаге 5, чтобы легко поставить каждый элемент на свое место.

Я начал с пайки резисторов и диода, так как они маленькие. Вы можете легко отрезать им ненужные хвосты с помощью кусачки. Сверху вниз следует поставить резисторы номиналом 1 кОм, 10 кОм и 10 кОм.

Вам не нужно паять все контакты NodeMCU и DFPlayer Mini на печатной плате. Достаточно припаять штырьки дорожкой.

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

Шаг 7: Корпус

Вложение
Вложение
Вложение
Вложение
Вложение
Вложение

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

Вместо классического шестигранника кубической формы с 6 гранями я разработал многослойный корпус. Снизу вверх каждый слой ложится на свой нижний слой. (Я назвал их от L0 до L6 снизу вверх)

Цвета и толщина

Вы можете использовать два дополнительных цвета, чтобы добиться максимального контраста, например:

  • Красный и зеленый
  • Синий и оранжевый
  • Желтый и фиолетовый
  • Синий и желтый

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

Толщина верхнего слоя (слой-6) должна быть 2 мм. Толщина остальных слоев (слой-0 - слой-5) должна быть 4 мм. Если вы хотите использовать акриловый экран 2,8 мм, как я, нет проблем. Но вам нужно вырезать две серии из слоя-1 и слоя-3 для смещения.

Чтобы собрать корпус, начните с нижнего слоя (L0). Наденьте на нее доску, используйте более короткие болты и затяните гайками. Теперь вы можете прикрепить четыре более длинных болта снизу слоя 0. Что-то вроде башни. Затем вы можете легко продолжить монтировать на них другие слои.

Примечание: вы можете использовать дополнительную шайбу между нижним слоем и доской.

Я также добавил информационные тексты для портов устройства (питание и карта micro SD). Можно нанести лазерную гравировку на верхний слой.

Я включил файлы в форматах CDR и DXF. Вы можете скачать их, отредактировать и использовать для лазерной резки.

Шаг 8: доступ к пользовательскому веб-интерфейсу

Доступ к пользовательскому веб-интерфейсу
Доступ к пользовательскому веб-интерфейсу

Включите устройство

Вы можете включить устройство с помощью любого зарядного устройства Micro USB на 5 В. Подключите микро-USB к порту питания устройства, то есть к входу микро-USB на вашем NodeMCU.

Доступ к пользовательскому интерфейсу

Вы помните, что мы загрузили несколько файлов в файловую систему ESP8266 Flash? Пришло время использовать это. Все, что вам нужно, это IP-адрес, назначенный ESP8266 в сети. Есть много разных способов узнать IP-адрес. Я перечислю некоторые из них здесь:

  • На странице конфигурации вашего маршрутизатора где-нибудь в списке аренды DHCP вы можете увидеть список устройств с их IP-адресами в вашей сети.
  • В Microsoft Windows и macOS вы можете запускать в терминале такие команды, как arp -a.
  • В Android и iOS вы можете использовать такие приложения, как Fing. (Android / iOS)
  • В Linux вы можете использовать такие инструменты, как Nmap.

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

Шаг 9: Заключительные мысли

Этот проект потребовал много времени и энергии. Вы можете добавить в Personal Assistant гораздо больше возможностей. Я оставил некоторые части открытыми для будущего развития. Некоторые части, такие как:

  1. Добавление дополнительных сервисов и модуля. Например, подсчет чисел, бросание кубика или подбрасывание монеты.
  2. После подключения к сети устройство может озвучивать IP-адрес. Вы можете добавить эту опцию, чтобы упростить процесс поиска IP-адреса.
  3. Добавлена возможность изменять настройки Wi-Fi в веб-панели управления.
  4. Добавлена возможность изменять настройки сервиса в веб-панели управления. (Их html-форма готова. Вам нужно обрабатывать запросы)
  5. Добавление большего количества голосовых ответов в разных состояниях устройства.
  6. Добавление страницы входа в веб-панель управления. Вы можете сделать это, добавив / сравнив файлы cookie в строках заголовка

И я хотел бы узнать ваши идеи по этому поводу.:)

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