Obsah:

Osobní asistent: 9 kroků (s obrázky)
Osobní asistent: 9 kroků (s obrázky)

Video: Osobní asistent: 9 kroků (s obrázky)

Video: Osobní asistent: 9 kroků (s obrázky)
Video: Arianka není rozmazlený dítě! Je jenom perfekcionista 🥺 2024, Červenec
Anonim
Image
Image
Osobní asistent
Osobní asistent

V tomto návodu vám ukážu, jak můžete využít sílu ESP8266, kreativitu při navrhování a programování softwaru, abyste vytvořili něco skvělého a vzdělávacího.

Pojmenoval jsem ho Personal Assistant, protože má kapesní velikost, mluví s vámi a může vám poskytnout užitečné a (samozřejmě) několik užitečných (ale stále skvělých) informací o počasí, čase a datu, zprávách v Gmailu, živém narození a úmrtnost atd.

Snažil jsem se, aby design byl jednoduchý. Zařízení má dvě uživatelská rozhraní. Fyzické tlačítko a webová aplikace, ke které má uživatel přístup pomocí webového prohlížeče a mění nastavení a konfiguraci zařízení.

Jak to funguje? Hlavní součásti tohoto projektu jsou modul mikrokontrolér a hudební přehrávač. Náš mikrokontrolér (NodeMCU) používá technologii WiFi k připojení k přístupovému bodu s připojením k internetu; takže může získat požadovaná data, zpracovat je a sdělit hudebnímu přehrávači (DFPlayer Mini), kdy, jaký soubor MP3 je třeba přehrát.

Prozatím je to vše, co potřebujete vědět. Podrobnější informace vám poskytnu v dalších krocích, takže se nebojte.

Krok 1: Potřebné součásti

Potřebné díly
Potřebné díly
  • NodeMCU ESP-12E (CP2102 USB-to-Serial Interface)
  • DFPlayer Mini
  • Momentální tlačítko SPST
  • 2 ohmový reproduktor 8 ohmů
  • Karta Micro SD (Budete potřebovat několik kilobajtů, takže na kapacitě nezáleží)
  • Šrouby a matice

    • Ořechy M3 (x6)
    • Šrouby M3 - 23 mm (x4)
    • Šrouby M3 - 15 mm (x2)
  • Signální dioda 1N4148 (x1)
  • Rezistory

    • 1K odpor (x1)
    • 10K odpor (x2)

Další díly:

  • PCB (prototyp si můžete objednat online nebo navštívit místní obchod)
  • Laserem řezaný akrylový list

    • 2 mm silný čirý plech
    • Tloušťka 2,8 mm dva různé barevné listy (oranžová a zelená, červená a zelená, záleží na vás a na barvách nezáleží)
  • Libovolných 5 voltů (alespoň) 1 ampér micro USB nabíječka (k napájení zařízení)

Krok 2: Jak to funguje

Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje

Dobře, chci vám poskytnout podrobnější informace o tom, jak software funguje.

Software se skládá z některých Služeb. Každá služba má své vlastní moduly. (Službu můžete považovat za třídu a její moduly za její metody). Každý modul lze považovat za spustitelný objekt. Náš software se tedy skládá z několika spustitelných objektů.

Zde máme některé služby a dílčí služby nebo jejich moduly:

  • Gmail

    Nepřečtené zprávy

  • Počasí

    • Aktuální teplota
    • Dnešní stav
    • Dnes nízká / vysoká
    • Zítřejší podmínka
    • Zítra nízká / vysoká
    • Předpověď srážek
    • Východ slunce západ slunce
  • Čas

    • Aktuální čas
    • Dnešní datum
  • Zrození a smrt

    • Světové narození
    • Světová smrt

Existuje kruhová fronta, která obsahuje moduly. Říkáme tomu Operační fronta. Řekl jsem, že každý modul je spustitelný objekt. Když tedy stisknete tlačítko na zařízení, podívá se do fronty operací a spustí další modul (nebo objekt).

Členy fronty operací můžete upravit ve webovém uživatelském rozhraní, které vysvětlím později. Prozatím vám uvedu příklad. Zvažte aktuální frontu operací takto:

QUEUE (nepřečtené zprávy | předpověď srážek | aktuální čas)

Stisknutím tlačítka se spustí nepřečtené zprávy.

QUEUE (nepřečtené zprávy | předpověď srážek | aktuální čas)

Zařízení tedy použije data, která shromáždila (zde počet vašich nepřečtených zpráv, které byly získány z kanálu API Google Mail), aby s vámi mluvila. Ale jak? Zde NodeMCU řekne modulu MP3, kdy by měl přehrát, který kousek MP3 vytvoří smysluplnou větu. Abych toho dosáhl, navrhl jsem různé fronty, časovače a algoritmy. (Pokud jste c ++ a máte rádi mikrokontroléry, můžete si kód prostudovat sami.)

Uslyšíte, že zařízení začne mluvit: Ve vaší doručené poště ve službě Gmail máte 4 nepřečtené zprávy.

Znovu stisknete tlačítko, dalším modulem bude předpověď srážek, která by měla být zpracována.

QUEUE (nepřečtené zprávy | předpověď srážek | aktuální čas)

Uslyšíte tedy něco jako: Nezapomeňte na svůj deštník, zítra prší. A tak dále … Ještě jedna skvělá věc: u některých modulů (jako je předpověď srážek) můžete očekávat náhodné věty pro stejné stavy. Pokud například zítra prší a je déšť, a ne sníh, můžete očekávat, že „zítra je možnost deště“, „přineste si vlastní sluneční svit, zítra prší“, „tut, tut, vypadá to na déšť na zítra“, nebo…

Jak získáme pro každou službu jiná data?

  • Gmail

    Nepřečtené zprávy Google má výkonné rozhraní API, ke kterému máte přístup k různým službám včetně Gmailu. Ale pro účely zabezpečení potřebujete různé metody ověřování a autorizace, jako je OAuth. ESP8266 není tak výkonný pro spouštění různých komplikovaných algoritmů hash. K přístupu do doručené pošty na Gmailu jsem tedy použil starší a jednoduchou technologii přihlašování. Je to Google Atom Feed, který mohou používat také čtečky RSS. Odesíláme požadavek HTTP na přístup ke kanálu gmail a jeho odpověď je ve formátu XML. Spočítáme počet nepřečtených zpráv a použijeme je v našem programu

  • Počasí Používáme Yahoo Weather API k získání různých informací o počasí. V poslední době, stejně jako Google, Yahoo změnilo své Weather API, takže pro přístup k jeho datům budete muset používat standardy OAuth. ESP8266 bohužel nezvládá svoji složitost, proto k vyřešení problému použijeme trik. Místo přímého přístupu k rozhraní Yahoo Weather API pošleme náš požadavek do vlastního souboru na serveru. Náš soubor získává data z Yahoo Weather a jednoduše nám je posílá.

    • Zítřejší stav Zítřejší stav vám řekne, zda je zítra tepleji nebo chladněji než dnes, nebo zda tam nedojde k žádné rozumné změně teploty. Abychom toho dosáhli, porovnáváme „dnes nízko / vysoko“s „zítra nízko / vysoko“. V souboru knihovny programů si můžete ověřit, jak jsem tento algoritmus napsal a jak funguje.
    • Předpověď srážek Pokud zkontrolujete dokumentaci Yahoo Weather, zobrazí se tabulka Podmíněné kódy. Jak se říká, kódy podmínek se používají v reakci na popis aktuálních podmínek. Použijeme kódy zítřka a jejich významy, abychom zjistili, zda budou srážky a je déšť nebo sníh.
  • TimeNTP znamená Network Time Protocol. Je to síťový protokol pro synchronizaci hodin mezi počítačovými systémy. Protože máme přístup k internetu, použijeme klienta NTP k získání času ze serveru NTP a synchronizujeme jej s interním časovačem ESP8266 (jako ten, který používáte s millis (), pokud jste Arduino).
  • Narození a úmrtí Počítáme počet narozených a zemřelých od začátku dne (Díky klientovi NTP je snadné získat počet sekund od začátku dne). Použil jsem světovou porodnost a úmrtnost z ekologie.

Krok 3: Nastavení softwaru

Nastavte software
Nastavte software

K nahrání našeho programu na NodeMCU použijeme Arduino IDE. Můžete si stáhnout a nainstalovat nejnovější Arduino IDE z jejich oficiálních stránek:

Před spuštěním je třeba nastavit Arduino IDE pro Nodemcu. Zde vám neřeknu kroky, protože to může být mimo téma. Můžete však postupovat podle kroků a vysvětlení tohoto vynikajícího pokynu.

Náš program má některé závislosti na knihovnách. Co je to softwarová závislost?

Závislost je široký termín softwarového inženýrství používaný k označení, když se část softwaru spoléhá na jinou.

Zde je seznam knihoven Arduino, které potřebujete ve svém počítači, abyste mohli kompilovat program Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTP klient

Můžete si je stáhnout jeden po druhém z jejich stránky Github a poté rozbalit soubory zip do adresáře knihovny Arduino. Jeho cesta ve vašem systému je: C: / Users [vaše uživatelské jméno] Documents / Arduino

Napsal jsem knihovnu, abych udržel kód čistý a vyhnul se složitosti. Stáhněte si soubor PersonalAssistant-Library.zip a rozbalte jej do adresáře knihovny Arduino. Stejně jako to, co jste předtím udělali pro tyto tři knihovny.

Soubor YahooWeather.php

Protože ESP8266 není dostatečně výkonný na provádění hashovacích algoritmů, nemůžeme jej použít přímo k odesílání požadavků HTTP do Yahoo Weather API na základě standardů OAuth. Použijeme tedy soubor mezi naším zařízením a Yahoo Weather API. Můžete si stáhnout soubor YahooWeather.zip, rozbalit jej a umístit soubor YahooWeather.php na webový server. Pokud je vaší doménou například example.com a vložíte soubor do adresáře api, váš koncový bod api se stane example.com/api/YahooWeather.php Na tento koncový bod odešlete požadavky na údaje o počasí.

Program Sketch a FFS (Flash File System)

Vaše deska NodeMCU má 4 MB flash souborový systém pro ukládání dat. Když to tedy máme, proč to nevyužít?

Pamatujete si, když jsem řekl, že naše zařízení má dvě uživatelská rozhraní? Kromě tohoto osamělého tlačítka je naším druhým uživatelským rozhraním jednoduchá webová aplikace. Pomocí této aplikace můžete manipulovat s provozní frontou povolením / zakázáním každého modulu, změnou nastavení služby nebo konfigurací zařízení, jako je nastavení SSID a hesla WiFi. Všechny tyto soubory uložíme do systému souborů NodeMCU Flash a spustíme lehký webový server, který bude zpracovávat požadavky uživatelů z jejich webového prohlížeče.

Úprava konfiguračního souboru

Stáhněte si soubor PersonalAssistant-Sketch.zip a rozbalte jej někam do počítače. Otevřete soubor config.json, který se nachází:

PersonalAssistant/data/config.json

Můžete použít libovolný textový nebo kódový editor, jako je poznámkový blok, poznámkový blok ++, Atom atd. Soubor je datová struktura json, takže je to dvojice klíč / hodnota čitelná pro člověka a můžete ji snadno upravovat. Můžete změnit tato pole:

  • Gmail

    • uživatelské jméno: vaše uživatelské jméno pro Gmail s jeho @gmail.com
    • heslo: vaše heslo do Gmailu
  • Počasí

    • woeid: místo, pro které chcete dostávat informace o počasí. WOEID (Where On Earth IDentifier) je referenční identifikátor používaný společností Yahoo k určování polohy. V tomto odkazu můžete provést vyhledávání na místech WOEID.
    • api: je to koncový bod API. Odkaz na váš soubor yahooweather.php.
    • appId, consumerKey a consumerSecret: pro přístup k rozhraní Yahoo Weather API je třeba vytvořit projekt na stránce vývojářů Yahoo. Získáte tak klíč a tajemství spotřebitele, které jsou potřebné pro používání API. Chcete -li začít, navštivte stránku Yahoo Weather Developer a vytvořte aplikaci.
  • Časové pásmo

    časové pásmo: zadejte časové pásmo podle vaší polohy. Může to být kladné nebo záporné plovoucí číslo a jeho jednotkou jsou hodiny

  • WiFi

    • ssid: SSID vaší sítě.
    • heslo: heslo vaší sítě. NodeMCU bude používat ssid a heslo pro připojení k vaší wifi síti.

Odeslání skici programu a dat FFS

Připojte NodeMCU k počítači pomocí kabelu micro-USB na USB.

Nyní otevřete soubor PersonalAssistant.ino, který se nachází:

PersonalAssistant/PersonalAssistant.ino

V Arduino IDE v nabídce Nástroje> Deska vyberte NodeMCU 1.0 (modul ESP-12E). V nabídce Nástroje> Port vyberte správný port. Představuje váš NodeMCU.

Nyní vyberte Nástroje> ESP8266 Sketch Data Upload, tím se nahraje obsah datové složky do ESP8266. Chvíli počkejte, až bude hotovo. Poté vyberte Skica> Nahrát nebo jednoduše stiskněte klávesy Ctrl + U na klávesnici a nahrajte program. Počkejte, až se zobrazí zpráva „nahrávání je dokončeno“.

Krok 4: Nastavení karty Micro SD

K ukládání souborů MP3 používáme kartu micro SD. Je to NodeMCU, kdo rozhodne, který soubor by měl být v jakou dobu přehráván, a DFPlayer Mini mu pomáhá při vytváření smysluplné věty dekódováním souborů MP3.

Použil jsem Amazon Polly ke generování potřebných hlasových skladeb.

Amazon Polly je služba, která mění text v realistickou řeč, což vám umožňuje vytvářet aplikace, které mluví, a vytvářet zcela nové kategorie produktů s podporou řeči.

Nezapomeňte, že naše zařízení nepoužívá Amazon Polly API k dynamickému mluvení. Máme několik statických offline hlasových skladeb a jejich spojením vytváříme různé věty.

Tento web jsem použil ke generování souborů MP3. Hlasový výstup, který jsem vybral, byl US English / Salli.

Jediná věc, kterou musíte udělat, je stáhnout soubor microSD.zip a poté jej extrahovat na kartu micro SD. Obsahuje všech 78 požadovaných souborů MP3.

Vaše karta Micro SD je pravděpodobně dodávána s adaptérem. Micro SD kartu můžete vložit do adaptéru a připojit k notebooku. Pokud váš počítač nepodporuje čtení karet, měli byste použít externí čtečku karet.

Krok 5: Návrh schémat a nastavení desky plošných spojů

Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS
Navrhování schémat a nastavení DPS

Schéma a desku jsem navrhl pomocí Autodesk EAGLE. Do souboru PersonalAssistant-PCB.zip jsem zahrnul soubory SCH i BRD. Můžete jej snadno upravit a / nebo odeslat místnímu nebo online výrobci desek plošných spojů a objednat si jej.

Ještě jedna věc, kterou je třeba zmínit, je, že ESP8266 pracuje na 3,3 V, zatímco DFPlayer Mini pracuje na 5 V. Protože tyto dva moduly musí spolu komunikovat prostřednictvím sériového rozhraní, nemůžeme přímo připojit výstup 5 V na vstup 3,3 V, protože poškozuje váš ESP8266. Budeme tedy potřebovat převod úrovně z 5v na 3,3v. K tomu používáme signální diodu a 10K odpor.

Krok 6: Pájejte to

Pájejte to
Pájejte to
Pájejte to
Pájejte to

Sestavení desky je velmi jednoduché, protože máte několik komponent. Postupujte podle schémat a návrhů desek v kroku 5, abyste každou položku snadno umístili na správné místo.

Začal jsem pájením odporů a diody, protože jsou malé. Jejich nepotřebné ocasy snadno odstřihnete pomocí řezačky drátu. Od shora dolů byste měli dát odpor 1K, 10K a 10K.

Na desce plošných spojů nemusíte pájet všechny piny NodeMCU a DFPlayer Mini. Pájení čepů s cestičkou stačí.

Nezapomeňte, reproduktory a diody mají polaritu. Ve svých součástech máte jeden reproduktor a jednu diodu. U diody je strana s černou čarou její negativní stranou nebo katodou.

Krok 7: Příloha

Příloha
Příloha
Příloha
Příloha
Příloha
Příloha

Rozhodl jsem se kreativně navrhnout efektní ohradu. Během návrhu jsem se obával jeho podivného tvaru, ale nakonec to nebylo tak špatné. Alespoň to vypadá jako křídlo a skvěle se drží v ruce!

Místo klasického šestihranného krychlového tvaru se 6 tvářemi jsem navrhl vícevrstvou skříň. Odspodu nahoru každá vrstva leží na své spodní vrstvě. (Pojmenoval jsem je L0 až L6, zdola nahoru)

Barvy a tloušťka

K dosažení nejsilnějšího kontrastu můžete použít dvě doplňkové barvy, například:

  • Červená a zelená
  • Modrá a oranžová
  • Žlutá a fialová
  • Modrá a žlutá

Na vrchní vrstvu jsem použil čirý akryl, abyste viděli dovnitř zařízení.

Tloušťka horní vrstvy (vrstva-6) by měla být 2 mm. Tloušťka ostatních vrstev (vrstva-0 až vrstva-5) by měla být 4 mm. Pokud chcete použít 2,8 mm akrylový štít, jako já, není problém. Pro offset ale musíte vystřihnout dvě řady z vrstvy 1 a vrstvy 3.

Chcete -li sestavit skříň, začněte od spodní vrstvy (L0). Nasaďte na ni desku, použijte kratší šrouby a utáhněte ji pomocí matic. Nyní můžete připevnit čtyři delší šrouby ze spodní části vrstvy-0. Něco jako věž. Poté na ně můžete snadno pokračovat v upevňování dalších vrstev.

Poznámka: Mezi spodní vrstvu a desku můžete použít volitelnou podložku.

Také jsem přidal informační texty pro porty zařízení (napájení a karta micro SD). Na horní vrstvu můžete použít laserové gravírování.

Zahrnul jsem formáty souborů CDR i DXF. Můžete si je stáhnout, upravit a použít pro řezání laserem.

Krok 8: Přístup k webovému uživatelskému rozhraní

Přístup k webovému uživatelskému rozhraní
Přístup k webovému uživatelskému rozhraní

Zapněte zařízení

Zařízení můžete zapnout pomocí jakékoli 5v micro USB nabíječky. Připojte micro USB k napájecímu portu zařízení, což je vstup micro USB na vašem NodeMCU.

Vstupte do uživatelského rozhraní

Pamatujete si, že jsme nahráli nějaké soubory do systému souborů ESP8266 Flash? Je čas to použít. Vše, co potřebujete, je IP adresa přiřazená k ESP8266 v síti. Adresu IP lze zjistit mnoha různými způsoby. Některé z nich uvedu zde:

  • Na konfigurační stránce směrovače, někde v seznamu DHCP Lease List, vidíte seznam zařízení s jejich IP adresami ve vaší síti.
  • V systému Microsoft Windows a macOS můžete v terminálu spouštět příkazy jako arp -a.
  • V systému Android a iOS můžete používat aplikace jako Fing. (Android / iOS)
  • V Linuxu můžete používat nástroje jako Nmap.

Po zjištění IP adresy ji otevřete pomocí webového prohlížeče. S frontou operací můžete manipulovat povolením / zakázáním modulů.

Krok 9: Závěrečné myšlenky

Tento projekt byl velmi časově a energeticky náročný. Do aplikace Personal Assistant můžete přidat mnoho dalších možností. Některé části jsem nechal otevřené pro budoucí vývoj. Některé části jako:

  1. Přidání dalších služeb a modulu. Například počítání čísel, házení kostkami nebo házení mincí.
  2. Po připojení k síti může zařízení vyslovit IP adresu. Tuto možnost můžete přidat, abyste zjednodušili proces hledání IP adresy.
  3. Přidání možnosti měnit nastavení WiFi ve webovém ovládacím panelu.
  4. Přidání možnosti měnit nastavení služby ve webovém ovládacím panelu. (Jejich html formulář je připraven. Musíte zpracovat požadavky)
  5. Přidání více hlasových odpovědí v různých stavech zařízení.
  6. Přidání přihlašovací stránky pro webový ovládací panel. To lze provést přidáním / porovnáním souborů cookie v řádcích záhlaví

A rád bych znal vaše představy o tomto pokynu.:)

Doporučuje: