Съдържание:

Личен асистент: 9 стъпки (със снимки)
Личен асистент: 9 стъпки (със снимки)

Видео: Личен асистент: 9 стъпки (със снимки)

Видео: Личен асистент: 9 стъпки (със снимки)
Видео: Аз където и да отида 2024, Юли
Anonim
Image
Image
Личен асистент
Личен асистент

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

Нарекох го Личен асистент, защото е с джобен размер, разговаря с вас и може да ви даде полезна и (разбира се) няколко неполезна (но все пак готина) информация за времето, часа и датата, съобщенията в Gmail, раждането на живо и смъртност и др.

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

Как работи? Основните компоненти на този проект са микроконтролер и модул за музикален плейър. Нашият микроконтролер (NodeMCU) използва WiFi технология за свързване към точка за достъп с интернет връзка; за да може да получи необходимите данни, да ги обработи и да каже на музикалния плейър (DFPlayer Mini) кога кой MP3 файл трябва да се възпроизведе.

Засега това е всичко, което трябва да знаете. Ще ви дам по -подробна информация в следващите стъпки, така че не се притеснявайте.

Стъпка 1: Необходими части

Необходими части
Необходими части
  • NodeMCU ESP-12E (CP2102 USB към сериен интерфейс)
  • DFPlayer Mini
  • SPST Моментален бутон
  • 8 ома 2 вата високоговорител
  • Micro SD карта (ще ви трябват няколко килобайта, така че капацитетът няма значение)
  • Гайки и болтове

    • M3 гайки (x6)
    • Болтове M3 - 23 мм (x4)
    • Болтове M3 - 15 мм (x2)
  • 1N4148 сигнален диод (x1)
  • Резистори

    • 1K резистор (x1)
    • 10K резистор (x2)

Други части:

  • PCB (можете да поръчате прототип онлайн или да посетите местен магазин)
  • Лазерно изрязан акрилен лист

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

Стъпка 2: Как работи

Как работи
Как работи
Как работи
Как работи

Добре, искам да ви дам по -подробна информация за това как работи софтуерът.

Софтуерът се състои от някои Услуги. Всяка услуга има свои собствени модули. (Можете да разглеждате услуга като клас, а нейните модули като нейни методи). Всеки модул може да се разглежда като изпълним обект. Така че нашият софтуер се състои от някои изпълними обекти.

Тук имаме някои услуги и под-услуги или техните модули:

  • Gmail

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

  • Метеорологично време

    • Текуща температура
    • Състояние днес
    • Днес Ниско / Високо
    • Утре Условие
    • Утре Ниско / Високо
    • Прогноза за валежите
    • Изгрев залез
  • Време

    • Текущо време
    • Текуща дата
  • Раждане и смърт

    • Световно раждане
    • Световна смърт

Има кръгова опашка, която съдържа модули в нея. Ние го наричаме Operation Queue. Казах, всеки модул е изпълним обект. Така че, когато натиснете бутона за натискане на устройството, той разглежда операционната опашка и изпълнява следващия модул (или обект).

Можете да редактирате опашката на членовете на операцията в уеб базиран потребителски интерфейс, който ще обясня по -късно. Засега ще ви дам пример. Помислете за текущата операционна опашка така:

QUEUE (Непрочетени съобщения | Прогноза за валежите | Текущо време)

Натиснете бутона, Непрочетените съобщения трябва да бъдат изпълнени.

QUEUE (Непрочетени съобщения | Прогноза за валежите | Текущо време)

Така че устройството ще използва събраните от вас данни (тук, броя на непрочетените ви съобщения, които са взети от емисията на API на Google Mail), за да разговаря с вас. Но как? Тук NodeMCU ще каже на МР3 модула, когато трябва да свири кое МР3 парче, за да направи смислено изречение. За да постигна това, съм проектирал различни опашки, таймери и алгоритми. (Ако сте човек от c ++ и харесвате микроконтролери, можете сами да изучите кода.)

Така че, ще чуете, устройството започва да говори: Имате 4 непрочетени съобщения във входящата си поща на gmail.

Натиснете отново бутона, следващият модул ще бъде Прогноза за валежите, който трябва да се обработи.

QUEUE (Непрочетени съобщения | Прогноза за валежите | Текущо време)

Така че, ще чуете нещо като: Не забравяйте чадъра си, утре е дъждовно. И така нататък … Още нещо готино: за някои модули (като прогноза за валежите) можете да очаквате случайни изречения за същите състояния. Например, ако утре има валежи и вали дъжд, а не сняг, можете да очаквате „утре има възможност за дъжд“, „донесете си собствено слънце, утре е дъждовно“, „tut, tut, изглежда като дъжд за утре“, или …

Как получаваме различни данни за всяка услуга?

  • Gmail

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

  • Използваме Yahoo Weather API, за да получим различна информация за времето. Наскоро, подобно на Google, Yahoo промени своя API за времето, така че ще трябва да използвате стандартите на OAuth за достъп до данните си. За съжаление ESP8266 не може да се справи със сложността си, затова ще използваме трик, за да разрешим проблема. Вместо директен достъп до Yahoo Weather API, ние ще изпратим нашата заявка до персонализиран файл на сървър. Нашият файл получава данни от Yahoo Weather и просто ни ги изпраща.

    • Утре Условие Утре Условие ще ви каже дали утре е по -топло или по -студено от днес, или там, ако няма да има разумна промяна в температурата. Сравняваме „днес ниско / високо“с „утре ниско / високо“, за да постигнем това. Можете да проверите как написах този алгоритъм и как работи той във файла на библиотеката на програмата.
    • Прогноза за валежите Ако проверите документацията на Yahoo Weather, можете да видите таблицата с кодове на условията. Както се казва, кодовете на условията се използват в отговора за описание на текущите условия. Ще използваме утрешните кодове на условията и тяхното значение, за да разберем дали ще има валежи и вали ли дъжд или сняг.
  • TimeNTP означава Network Time Protocol. Това е мрежов протокол за синхронизация на часовника между компютърни системи. Тъй като имаме достъп до интернет, ще използваме NTP клиент, за да получим време от NTP сървър и да го синхронизираме през вътрешния таймер на ESP8266 (като този, който го използвате с millis (), ако сте човек от Arduino).
  • Ние ще изчислим броя на ражданията и смъртните случаи от началото на деня (Благодарение на NTP Client, лесно е да получите брой секунди от началото на деня). Използвах световната раждаемост и смъртност от екологията.

Стъпка 3: Инсталирайте софтуера

Настройка на софтуера
Настройка на софтуера

Ще използваме Arduino IDE, за да качим нашата програма в NodeMCU. Можете да изтеглите и инсталирате най -новата IDE на Arduino от официалния им сайт:

Преди да започнете, трябва да настроите Arduino IDE за Nodemcu. Няма да ви казвам стъпките тук, защото може да е извън темата. Но можете да следвате стъпките и обясненията на тази отлична инструкция.

Нашата програма има някои библиотечни зависимости. Какво представлява софтуерната зависимост?

Зависимостта е широк термин за софтуерно инженерство, използван за обозначаване, когато част от софтуера разчита на друг.

Ето списък на библиотеките на Arduino, които трябва да имате на компютъра си, за да можете да компилирате програмата Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Можете да ги изтеглите един по един от тяхната страница на Github, след което да извлечете zip файловете в директорията на библиотеката Arduino. Пътят му във вашата система е: C: / Users [your-username] 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 File System)

Вашата NodeMCU платка има 4 MB флаш файлова система за съхранение на данни. Така че, когато го имаме, защо да не го използваме?

Помните ли, когато казах, че нашето устройство има два потребителски интерфейса? Освен този самотен бутон, нашият втори потребителски интерфейс е просто уеб базирано приложение. С това приложение можете да манипулирате операционната опашка, като активирате / деактивирате всеки модул, промените настройките на услугата или конфигурацията на устройството, като зададете WiFi SSID и парола. Ще съхраняваме всички тези файлове във Flash File System на NodeMCU и ще стартираме лек уеб сървър за обработка на потребителски заявки от техния уеб браузър.

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

Изтеглете файла PersonalAssistant-Sketch.zip и го извлечете някъде във вашия компютър. Отворете файла config.json, който се намира:

PersonalAssistant/data/config.json

Можете да използвате всеки текстов или кодов редактор като бележник, бележник ++, Atom и т.н. Файлът е json структура от данни, така че е читаема от човека двойка ключ / стойност и можете лесно да я редактирате. Можете да промените тези полета:

  • Gmail

    • потребителско име: вашето потребителско име в Gmail с неговия @gmail.com
    • парола: вашата парола за Gmail
  • Метеорологично време

    • woeid: местоположението, за което искате да получавате информация за времето. WOEID (Where On Earth IDentifier) е референтен идентификатор, използван от Yahoo за местоположение. Можете да извършите търсене на WOEID местоположения в тази връзка.
    • api: това е крайната точка на API. Връзката към вашия файл yahooweather.php.
    • appId, ConsumerKey и ConsumerSecret: за достъп до Yahoo Weather API, трябва да създадете проект на страницата за разработчици на Yahoo. Това ще ви даде потребителски ключ и тайна, които са необходими за използването на API. За да започнете, посетете страницата за разработчици на Yahoo Weather и създайте приложение.
  • Часова зона

    часова зона: въведете часова зона въз основа на вашето местоположение. Това може да бъде положително или отрицателно число с плаващ знак и неговата единица е часове

  • WiFi

    • ssid: SSID на вашата мрежа.
    • парола: вашата мрежова парола. NodeMCU ще използва ssid и парола за свързване към вашата wifi мрежа.

Качване на програмна скица и данни за FFS

Свържете NodeMCU към компютъра си, като използвате micro-USB към USB кабел.

Сега отворете файла PersonalAssistant.ino, който се намира:

PersonalAssistant/PersonalAssistant.ino

В Arduino IDE от Tools> Board изберете NodeMCU 1.0 (ESP-12E Module), От Tools> Port изберете правилния порт. Той представлява вашия NodeMCU.

Сега изберете Tools> ESP8266 Sketch Data Upload, това ще качи съдържанието на папката с данни в ESP8266. Изчакайте няколко минути, докато приключи. След това изберете Скица> Качване или просто натиснете бутоните Ctrl + U на клавиатурата, за да започнете качването на програмата. Изчакайте, докато видите съобщението „качването е завършено“.

Стъпка 4: Настройте Micro SD картата

Използваме микро 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.3v, докато DFPlayer Mini работи при 5v. Тъй като тези два модула трябва да говорят помежду си чрез сериен интерфейс, не можем директно да свържем 5v изход към 3.3v вход, тъй като той уврежда вашия ESP8266. Така че ще имаме нужда от преобразуване на ниво от 5v в 3.3v. Използваме сигнален диод и 10K резистор, за да го осъществим.

Стъпка 6: Запояйте го

Запояйте го
Запояйте го
Запояйте го
Запояйте го

Сглобяването на дъската е доста просто, тъй като имате няколко компонента. Следвайте схемите и схемите на дъската в стъпка 5, за да поставите лесно всеки елемент на правилното му място.

Започнах със запояване на резисторите и диода, тъй като те са малки. Можете лесно да отрежете ненужните им опашки с помощта на нож за тел. Отгоре надолу трябва да поставите 1K, 10K и 10K резистор.

Не е нужно да запоявате всички пинове NodeMCU и DFPlayer Mini на печатната платка. Запояването на щифтовете с пътека е достатъчно.

Не забравяйте, че високоговорителите и диодите имат полярност. Имате един високоговорител и един диод във вашите компоненти. За диода страната с черна линия е неговата отрицателна страна или катодът.

Стъпка 7: Приложението

Корпусът
Корпусът
Корпусът
Корпусът
Корпусът
Корпусът

Реших да проектирам фантастично заграждение по творчески начин. Притеснявах се за странната му форма по време на дизайна, но в крайна сметка не беше толкова лошо. Поне прилича на роял и се чувства страхотно в ръката ви!

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

Цветове и дебелина

Можете да използвате два допълващи се цвята, за да направите най -силния контраст, като:

  • Червено и зелено
  • Синьо и оранжево
  • Жълто и лилаво
  • Синьо и жълто

Използвах прозрачен акрил за горния слой, така че можете да видите вътре в устройството.

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

За да сглобите корпуса, започнете от долния слой (L0). Поставете дъската върху нея, използвайте по -късите болтове и я затегнете с помощта на гайките. Вече можете да прикрепите четирите по-дълги болта от дъното на слой-0. Нещо като кула. След това можете лесно да продължите да монтирате други слоеве върху тях.

Забележка: Можете да използвате допълнителна шайба между долния слой и дъската.

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

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

Стъпка 8: Достъп до уеб базиран потребителски интерфейс

Достъп до уеб базиран потребителски интерфейс
Достъп до уеб базиран потребителски интерфейс

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

Можете да включите устройството, като използвате всяко 5v micro USB зарядно устройство. Свържете микро USB към порта за захранване на устройството, това е микро USB входът на вашия NodeMCU.

Достъп до потребителското взаимодействие

Помните ли, че качихме някои файлове във Flash File System ESP8266? Време е да го използвате. Всичко, от което се нуждаете, е IP адресът, присвоен на ESP8266 в мрежата. Има много различни начини да намерите IP адреса. Ще изброя някои от тях тук:

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

След като намерите IP адрес, отворете го с вашия уеб браузър. Можете да манипулирате опашката от операции, като активирате / деактивирате модули.

Стъпка 9: Заключителни мисли

Този проект отне много време и енергия. Можете да добавите още много опции към Personal Assistant. Оставих някои части отворени за бъдещо развитие. Някои части като:

  1. Добавяне на още услуги и модул. Например броене на числа, хвърляне на зарове или хвърляне на монета.
  2. След като се свържете с мрежата, устройството може да говори IP адреса. Можете да добавите тази опция, за да опростите процеса на намиране на IP адрес.
  3. Добавяне на възможност за промяна на WiFi настройки в уеб базиран контролен панел.
  4. Добавяне на възможност за промяна на настройките на услугата в уеб базиран контролен панел. (Техният html формуляр е готов. Трябва да обработвате заявки)
  5. Добавяне на още гласови отговори в различни състояния на устройството.
  6. Добавяне на страница за вход за уеб базиран контролен панел. Можете да направите това, като добавите / сравните бисквитките в HTTP заглавните редове.

И бих искал да знам вашите идеи за тази инструкция.:)

Препоръчано: