Obsah:

Osobný asistent: 9 krokov (s obrázkami)
Osobný asistent: 9 krokov (s obrázkami)

Video: Osobný asistent: 9 krokov (s obrázkami)

Video: Osobný asistent: 9 krokov (s obrázkami)
Video: 10 pravidel jak sbalit holku | celý film | HD 2024, Júl
Anonim
Image
Image
Osobný asistent
Osobný asistent

V tomto návode vám ukážem, ako môžete využiť silu ESP8266, kreativitu pri navrhovaní softvéru a programovaní, na vytvorenie niečoho úžasného a vzdelávacieho.

Pomenoval som ho Personal Assistant, pretože je vreckový, rozpráva sa s vami a môže vám poskytnúť niekoľko užitočných a (samozrejme) niekoľko užitočných (ale stále skvelých) informácií o počasí, čase a dátume, správach v Gmaile, živom narodení a úmrtnosť a pod.

Snažil som sa, aby bol dizajn jednoduchý. Zariadenie má dve používateľské rozhrania. Fyzické tlačidlo a webová aplikácia, ku ktorej má používateľ prístup pomocou webového prehliadača a meniť nastavenia a konfiguráciu zariadenia.

Ako to funguje? Hlavnými súčasťami tohto projektu sú modul mikrokontrolér a prehrávač hudby. Náš mikrokontrolér (NodeMCU) používa technológiu WiFi na pripojenie k prístupovému bodu s pripojením na internet; takže môže získať požadované údaje, spracovať ich a oznámiť prehrávaču hudby (DFPlayer Mini), kedy, ktorý súbor MP3 sa má prehrať.

To je zatiaľ všetko, čo potrebujete vedieť. V ďalších krokoch vám poskytnem podrobnejšie informácie, takže sa nemusíte obávať.

Krok 1: Potrebné diely

Potrebné diely
Potrebné diely
  • NodeMCU ESP-12E (CP2102 USB-to-Serial Interface)
  • DFPlayer Mini
  • Momentálne tlačidlo SPST
  • 2 ohmový reproduktor s výkonom 8 ohmov
  • Karta Micro SD (Budete potrebovať niekoľko kilobajtov, takže na kapacite nezáleží)
  • Skrutky a matice

    • Orechy M3 (x6)
    • Skrutky M3 - 23 mm (x4)
    • Skrutky M3 - 15 mm (x2)
  • Signálna dióda 1N4148 (x1)
  • Rezistory

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

Ďalšie diely:

  • DPS (prototyp si môžete objednať online alebo navštíviť miestny obchod)
  • Laserom rezaný akrylový list

    • 2 mm hrubý číry plech
    • Hrúbka 2,8 mm, dve rôzne farby (oranžová a zelená, červená a zelená, je to na vás a na farbách nezáleží)
  • Akákoľvek 5 voltová (najmenej) 1 ampérová micro USB nabíjačka (na napájanie zariadenia)

Krok 2: Ako to funguje

Ako to funguje
Ako to funguje
Ako to funguje
Ako to funguje

Dobre, chcem vám poskytnúť podrobnejšie informácie o tom, ako softvér funguje.

Softvér pozostáva z niektorých Služieb. Každá služba má svoje vlastné moduly. (Službu môžete považovať za triedu a jej moduly za jej metódy). Každý modul môže byť považovaný za spustiteľný objekt. Náš softvér teda pozostáva z niektorých spustiteľných objektov.

Tu uvádzame niektoré služby a čiastkové služby alebo ich moduly:

  • Gmail

    Neprečítané správy

  • Počasie

    • Aktuálna teplota
    • Dnešný stav
    • Dnes nízka / vysoká
    • Zajtrajšia podmienka
    • Zajtra Nízka / Vysoká
    • Predpoveď zrážok
    • Východ slnka západ slnka
  • Čas

    • Aktuálny čas
    • Aktuálny dátum
  • Narodenie a smrť

    • Svetové narodenie
    • Svetová smrť

Existuje kruhová fronta, v ktorej sú umiestnené moduly. Hovoríme tomu Operation Queue. Povedal som, že každý modul je spustiteľný objekt. Keď teda stlačíte tlačidlo na zariadení, pozrie sa do frontu operácií a spustí ďalší modul (alebo objekt).

Fronty členov operačného frontu môžete upravovať vo webovom používateľskom rozhraní, ktoré vysvetlím neskôr. Zatiaľ vám uvediem príklad. Zohľadnite aktuálny front prevádzky takto:

QUEUE (neprečítané správy | Predpoveď zrážok | Aktuálny čas)

Stlačíte tlačidlo, mali by sa vykonať neprečítané správy.

QUEUE (neprečítané správy | Predpoveď zrážok | Aktuálny čas)

Zariadenie teda použije údaje, ktoré zhromaždilo (tu počet vašich neprečítaných správ prevzatých z kanála rozhrania Google Mail API), aby s vami hovoril. Ale ako? Tu NodeMCU povie modulu MP3, kedy by mal prehrať, ktorý kúsok MP3, aby vytvoril zmysluplnú vetu. Aby som to dosiahol, navrhol som rôzne fronty, časovače a algoritmy. (Ak ste c ++ a máte radi mikrokontroléry, môžete si kód naštudovať sami.)

Takže budete počuť, zariadenie začne hovoriť: V doručenej pošte v Gmaile máte 4 neprečítané správy.

Znovu stlačíte tlačidlo, ďalším modulom bude predpoveď zrážok, s ktorou by sa malo zaobchádzať.

QUEUE (neprečítané správy | Predpoveď zrážok | Aktuálny čas)

Budete teda počuť niečo ako: Nezabudnite na dáždnik, zajtra prší. A tak ďalej … Ešte jedna skvelá vec: pri niektorých moduloch (ako je predpoveď zrážok) môžete očakávať náhodné vety pre rovnaké stavy. Ak napríklad zajtra prší a prší, a nie sneží, môžete očakávať, že „zajtra môže pršať“, „prineste si vlastné slnko, zajtra prší“, „tut, tut, vyzerá to na dážď na zajtra“alebo …

Ako získavame rôzne údaje pre každú službu?

  • Gmail

    Neprečítané správy Google má výkonné API, pomocou ktorého máte prístup k rôznym službám vrátane Gmailu. Na účely zabezpečenia však potrebujete rôzne metódy autentifikácie a autorizácie, ako je OAuth. ESP8266 nie je taký výkonný na spustenie rôznych komplikovaných algoritmov hash. Na prístup do doručenej pošty v Gmaile som teda použil staršiu a jednoduchú technológiu prihlásenia. Je to Google Atom Feed, ktorý môžu používať aj čítačky RSS. Posielame požiadavku HTTP na prístup k informačnému kanálu gmail a jeho odpoveď je vo formáte XML. Spočítame počet neprečítaných správ a použijeme ich v našom programe

  • Počasie Na získanie rôznych informácií o počasí používame rozhranie Yahoo Weather API. Rovnako ako Google, aj Yahoo nedávno zmenilo svoje Weather API, takže na prístup k svojim údajom budete musieť používať štandardy OAuth. ESP8266 bohužiaľ nezvláda svoju zložitosť, a preto na vyriešenie problému použijeme trik. Namiesto priameho prístupu k rozhraniu Yahoo Weather API pošleme našu požiadavku do vlastného súboru na serveri. Náš súbor získava údaje z programu Yahoo Weather a jednoducho nám ich odosiela.

    • Zajtrajšia podmienka vám povie, či je zajtra teplejšie alebo chladnejšie ako dnes, alebo tam, kde nedôjde k žiadnej rozumnej zmene teploty. Aby sme to dosiahli, porovnávame „dnes nízka / vysoká“so „zajtrajšou nízkou / vysokou“. V súbore knižnice programov môžete skontrolovať, ako som tento algoritmus napísal a ako funguje.
    • Predpoveď zrážok Ak si skontrolujete dokumentáciu k Yahoo Weather, zobrazí sa tabuľka Podmienkové kódy. Ako sa hovorí, kódy stavu sa používajú v reakcii na opis súčasných podmienok. Použijeme kódy podmienok zajtrajška a ich významy, aby sme zistili, či budú nejaké zrážky a je dážď alebo sneh.
  • TimeNTP znamená Network Time Protocol. Je to sieťový protokol na synchronizáciu hodín medzi počítačovými systémami. Pretože máme prístup na internet, použijeme klienta NTP na získanie času zo servera NTP a synchronizujeme ho s interným časovačom ESP8266 (podobne ako ten, ktorý ho používate s millis (), ak ste Arduino).
  • Narodenie a úmrtie Vypočítame počet narodení a úmrtí od začiatku dňa (Vďaka klientovi NTP je jednoduché získať počet sekúnd od začiatku dňa). Použil som svetovú mieru pôrodnosti a úmrtnosti z ekológie.

Krok 3: Nastavte softvér

Nastavte softvér
Nastavte softvér

Na nahranie nášho programu na NodeMCU použijeme Arduino IDE. Najnovšie IDE Arduino si môžete stiahnuť a nainštalovať z ich oficiálnych stránok:

Pred spustením musíte nastaviť Arduino IDE pre Nodemcu. Tu vám nepoviem kroky, pretože to môže byť mimo tému. Môžete však postupovať podľa krokov a vysvetlení tohto vynikajúceho pokynu.

Náš program má niektoré knižničné závislosti. Čo je to softvérová závislosť?

Závislosť je široký termín softvérového inžinierstva, ktorý sa používa na označenie, keď sa softvér opiera o iný.

Tu je zoznam knižníc Arduino, ktoré musíte mať vo svojom počítači, aby ste mohli zostaviť program Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Môžete si ich stiahnuť jeden po druhom z ich stránky Github a potom extrahovať súbory zip do adresára knižnice Arduino. Cesta vo vašom systéme je: C: / Users [vaše-používateľské meno] Documents / Arduino

Napísal som knižnicu, aby bol kód čistý a aby sa predišlo zložitosti. Stiahnite si súbor PersonalAssistant-Library.zip a rozbaľte ho do adresára knižnice Arduino. Rovnako ako to, čo ste predtým urobili pre tieto tri knižnice.

Súbor YahooWeather.php

Pretože ESP8266 nie je dostatočne výkonný na to, aby mohol vykonávať hašovacie algoritmy, nemôžeme ho použiť priamo na odosielanie požiadaviek HTTP na rozhranie Yahoo Weather API na základe štandardov OAuth. Použijeme teda súbor medzi našim zariadením a rozhraním Yahoo Weather API. Môžete si stiahnuť súbor YahooWeather.zip, extrahovať ho a vložiť súbor YahooWeather.php na webový server. Ak je napríklad vašou doménou example.com a vložíte súbor do adresára api, váš koncový bod api sa stane example.com/api/YahooWeather.php Na tento koncový bod odošlete požiadavky na údaje o počasí.

Náčrt programu a FFS (systém súborov Flash)

Vaša doska NodeMCU má 4 MB flash súborový systém na ukladanie údajov. Keď ho teda máme, prečo ho nevyužiť?

Pamätáte si, keď som povedal, že naše zariadenie má dve používateľské rozhrania? Okrem tohto osamoteného tlačidla je naším druhým používateľským rozhraním jednoduchá webová aplikácia. S touto aplikáciou môžete manipulovať s frontom operácií zapnutím / vypnutím každého modulu, zmenou nastavení služby alebo konfigurácie zariadenia, ako je napríklad nastavenie SSID a hesla WiFi. Všetky tieto súbory uložíme do systému súborov NodeMCU Flash a spustíme ľahký webový server, ktorý bude spracovávať požiadavky používateľov z ich webového prehliadača.

Úprava konfiguračného súboru

Stiahnite si súbor PersonalAssistant-Sketch.zip a rozbaľte ho niekde do počítača. Otvorte súbor config.json, ktorý sa nachádza:

PersonalAssistant/data/config.json

Môžete použiť ľubovoľný textový alebo kódový editor, ako napríklad poznámkový blok, poznámkový blok ++, Atom atď. Súbor má dátovú štruktúru json, takže je to dvojica kľúč - hodnota čitateľná pre ľudí a môžete ju ľahko upravovať. Môžete zmeniť tieto polia:

  • Gmail

    • užívateľské meno: vaše používateľské meno v Gmaile s jeho @gmail.com
    • heslo: vaše heslo do Gmailu
  • Počasie

    • beda: miesto, pre ktoré chcete dostávať informácie o počasí. WOEID (Where On Earth IDentifier) je referenčný identifikátor, ktorý používa Yahoo na určovanie polohy. V tomto odkaze môžete vykonať vyhľadávanie miest WOEID.
    • api: je to koncový bod API. Odkaz na váš súbor yahooweather.php.
    • appId, consumerKey a consumerSecret: na prístup k rozhraniu Yahoo Weather API je potrebné vytvoriť projekt na stránke vývojárov Yahoo. To vám poskytne spotrebiteľský kľúč a tajomstvo, ktoré sú potrebné na používanie rozhrania API. Ak chcete začať, navštívte stránku Yahoo Weather Developer a vytvorte aplikáciu.
  • Časové pásmo

    časové pásmo: zadajte časové pásmo podľa vašej polohy. Môže to byť kladné alebo záporné float číslo a jeho jednotkou sú hodiny

  • WiFi

    • ssid: SSID vašej siete.
    • heslo: heslo vašej siete. NodeMCU bude používať ssid a heslo na pripojenie k vašej sieti Wi -Fi.

Odovzdanie náčrtu programu a údajov FFS

Pripojte NodeMCU k počítaču pomocou kábla micro-USB na USB.

Teraz otvorte súbor PersonalAssistant.ino, ktorý sa nachádza:

PersonalAssistant/PersonalAssistant.ino

V Arduino IDE v ponuke Nástroje> Doska vyberte položku NodeMCU 1.0 (modul ESP-12E). V ponuke Nástroje> Port vyberte správny port. Predstavuje váš NodeMCU.

Teraz vyberte Nástroje> Nahranie údajov skici ESP8266, čím sa nahrá obsah priečinka s údajmi do ESP8266. Počkajte chvíľu, kým sa nedokončí. Potom vyberte položku Skica> Odovzdať alebo jednoducho stlačením klávesov Ctrl + U na klávesnici spustite nahrávanie programu. Počkajte, kým sa nezobrazí správa „nahrávanie je dokončené“.

Krok 4: Nastavte kartu Micro SD

Na ukladanie súborov MP3 používame kartu micro SD. Je to NodeMCU, kto rozhodne, ktorý súbor sa má kedy prehrať, a DFPlayer Mini mu pomáha pri vytváraní zmysluplnej vety dekódovaním súborov MP3.

Na generovanie hlasových skladieb, ktoré som potreboval, som použil Amazon Polly.

Amazon Polly je služba, ktorá premieňa text na realistickú reč a umožňuje vám vytvárať aplikácie, ktoré hovoria, a vytvárať úplne nové kategórie produktov s podporou reči.

Nezabudnite, že naše zariadenie na dynamické rozprávanie nepoužíva rozhranie Amazon Polly API. Máme niekoľko statických offline hlasových skladieb a ich zostavením vytvoríme rôzne vety.

Túto stránku som použil na generovanie súborov MP3. Hlasový výstup, ktorý som vybral, bol americká angličtina / salli.

Jediná vec, ktorú musíte urobiť, je stiahnuť súbor microSD.zip a potom ho rozbaliť na kartu micro SD. Obsahuje všetkých 78 požadovaných súborov MP3.

Pravdepodobne sa vaša karta Micro SD dodáva s adaptérom. Micro SD kartu môžete vložiť do adaptéra a pripevniť k notebooku. Ak váš počítač nepodporuje čítanie kariet, mali by ste použiť externú čítačku kariet.

Krok 5: Návrh schémy a nastavenie dosky plošných spojov

Navrhovanie schém a nastavenie dosky plošných spojov
Navrhovanie schém a nastavenie dosky plošných spojov
Navrhovanie schém a nastavenie DPS
Navrhovanie schém a nastavenie DPS
Navrhovanie schém a nastavenie dosky plošných spojov
Navrhovanie schém a nastavenie dosky plošných spojov
Navrhovanie schém a nastavenie dosky plošných spojov
Navrhovanie schém a nastavenie dosky plošných spojov

Schému a dosku som navrhol pomocou programu Autodesk EAGLE. Do programu PersonalAssistant-PCB.zip som zahrnul súbory SCH aj BRD. Môžete ľahko upraviť a / alebo odoslať miestnemu alebo online výrobcovi plošných spojov, aby si vašu dosku objednal a získal ju.

Ešte jedna vec, ktorú treba spomenúť, je, že ESP8266 funguje na 3,3 V, zatiaľ čo DFPlayer Mini pracuje na 5 V. Pretože tieto dva moduly musia spolu komunikovať prostredníctvom sériového rozhrania, nemôžeme priamo pripojiť výstup 5 V na vstup 3,3 V, pretože poškodzuje váš ESP8266. Budeme teda potrebovať prevod úrovne z 5v na 3,3v. Na jeho uskutočnenie používame signálnu diódu a 10K odpor.

Krok 6: Spájkujte ho

Spájkujte to
Spájkujte to
Spájkujte to
Spájkujte to

Zostavenie dosky je veľmi jednoduché, pretože máte niekoľko komponentov. Postupujte podľa schémy a schémy dosky v kroku 5, aby ste každú položku ľahko umiestnili na správne miesto.

Začal som spájkovaním odporov a diódy, pretože sú malé. Ich nepotrebné chvosty môžete jednoducho odstrihnúť pomocou rezačky drôtu. Zhora nadol by ste mali vložiť odpor 1K, 10K a 10K.

Na PCB nemusíte spájkovať všetky piny NodeMCU a DFPlayer Mini. Stačí spájkovať čapy s cestom.

Nezabudnite, že reproduktory a diódy majú polaritu. Vo svojich komponentoch máte jeden reproduktor a jednu diódu. V prípade diódy je strana s čiernou čiarou jej negatívnou stranou alebo katódou.

Krok 7: Príloha

Príloha
Príloha
Príloha
Príloha
Príloha
Príloha

Rozhodol som sa navrhnúť efektný kryt kreatívnym spôsobom. Pri návrhu som sa obával jeho divného tvaru, ale nakoniec to nebolo také zlé. Vyzerá prinajmenšom ako klavír a skvele sa drží v ruke!

Namiesto klasického šesťuholníkového kubického tvaru so 6 tvárami som navrhol viacvrstvovú ohradu. Zospodu nahor každá vrstva položí svoju spodnú vrstvu. (Pomenoval som ich L0 až L6, zdola nahor)

Farby a hrúbka

Na dosiahnutie najsilnejšieho kontrastu môžete použiť dve doplnkové farby, napríklad:

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

Na hornú vrstvu som použil číry akryl, aby ste videli dovnútra zariadenia.

Hrúbka hornej vrstvy (vrstva-6) by mala byť 2 mm. Hrúbka ostatných vrstiev (vrstva-0 až vrstva-5) by mala byť 4 mm. Ak chcete použiť 2,8 mm akrylový štít, ako som to urobil ja, nie je problém. Na odsadenie však musíte vystrihnúť dve série z vrstvy 1 a vrstvy 3.

Ak chcete zostaviť kryt, začnite od spodnej vrstvy (L0). Nasaďte dosku, použite kratšie skrutky a dotiahnite ju maticami. Teraz môžete pripevniť štyri dlhšie skrutky zo spodnej časti vrstvy-0. Niečo ako veža. Potom na ne môžete jednoducho pokračovať v montáži ďalších vrstiev.

Poznámka: Medzi spodnú vrstvu a dosku môžete použiť voliteľnú podložku.

Tiež som pridal informačné texty k portom zariadení (napájanie a karta micro SD). Na vrchnú vrstvu môžete použiť laserové gravírovanie.

Zahrnul som formáty súborov CDR aj DXF. Môžete si ich stiahnuť, upraviť a použiť na rezanie laserom.

Krok 8: Prístup k webovému používateľskému rozhraniu

Prístup k webovému používateľskému rozhraniu
Prístup k webovému používateľskému rozhraniu

Zapnite zariadenie

Zariadenie môžete zapnúť pomocou ľubovoľnej 5 V nabíjačky micro USB. Pripojte micro USB k napájaciemu portu zariadenia, to je vstup micro USB na vašom NodeMCU.

Prístup k používateľskému rozhraniu

Pamätáte si, že sme nahrali niektoré súbory do systému súborov ESP8266 Flash? Je načase to využiť. Všetko, čo potrebujete, je IP adresa priradená k ESP8266 v sieti. Existuje mnoho rôznych spôsobov, ako nájsť IP adresu. Tu uvediem niektoré z nich:

  • Na stránke konfigurácie smerovača, niekde v zozname prenájmu DHCP, vidíte zoznam zariadení s ich adresami IP vo vašej sieti.
  • V systéme Microsoft Windows a macOS môžete v termináli spúšťať príkazy ako arp -a.
  • V systéme Android a iOS môžete používať aplikácie ako Fing. (Android / iOS)
  • V systéme Linux môžete používať nástroje ako Nmap.

Po zistení adresy IP ju otvorte pomocou webového prehliadača. S frontom operácií môžete manipulovať povolením / zakázaním modulov.

Krok 9: Záverečné myšlienky

Tento projekt bol veľmi náročný na čas a energiu. Do osobného asistenta môžete pridať mnoho ďalších možností. Niektoré časti som nechal otvorené pre budúci vývoj. Niektoré časti ako:

  1. Pridanie ďalších služieb a modulu. Napríklad počítanie čísel, hod kockou alebo hod mincou.
  2. Po pripojení k sieti môže zariadenie vysloviť IP adresu. Túto možnosť môžete pridať na zjednodušenie procesu hľadania adresy IP.
  3. Pridanie možnosti meniť nastavenia WiFi na webovom ovládacom paneli.
  4. Pridanie možnosti meniť nastavenia služby vo webovom ovládacom paneli. (Ich html formulár je pripravený. Musíte spracovať žiadosti)
  5. Pridanie ďalších hlasových odpovedí v rôznych stavoch zariadenia.
  6. Pridanie prihlasovacej stránky pre webový ovládací panel. Môžete to urobiť pridaním / porovnaním súborov cookie v riadkoch hlavičky

A rád by som poznal vaše nápady na tento návod.:)

Odporúča: