Turinys:

Asmeninis asistentas: 9 žingsniai (su nuotraukomis)
Asmeninis asistentas: 9 žingsniai (su nuotraukomis)

Video: Asmeninis asistentas: 9 žingsniai (su nuotraukomis)

Video: Asmeninis asistentas: 9 žingsniai (su nuotraukomis)
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Liepa
Anonim
Image
Image
Asmeninis asistentas
Asmeninis asistentas

Šioje pamokoje aš jums parodysiu, kaip galite panaudoti ESP8266 galią, kūrybiškumą kuriant ir programuojant programinę įrangą, kad sukurtumėte ką nors šaunaus ir lavinančio.

Aš pavadinau jį asmeniniu asistentu, nes jis yra kišenės dydžio, kalba su jumis ir gali suteikti jums naudingos ir (žinoma) keleto nenaudingos (bet vis tiek kietos) informacijos apie orą, laiką ir datą, „Gmail“pranešimus, gimimą ir mirtingumas ir kt.

Stengiausi, kad dizainas būtų paprastas. Įrenginys turi dvi vartotojo sąsajas. Fizinis mygtukas ir žiniatinklio programa, kurią vartotojas gali pasiekti naudodami žiniatinklio naršyklę ir pakeisti įrenginio nustatymus bei konfigūraciją.

Kaip tai veikia? Pagrindiniai šio projekto komponentai yra mikrovaldiklis ir muzikos grotuvo modulis. Mūsų mikrovaldiklis („NodeMCU“) naudoja „WiFi“technologiją, kad prisijungtų prie prieigos taško su interneto ryšiu; todėl jis gali gauti reikiamus duomenis, juos apdoroti ir nurodo muzikos grotuvui („DFPlayer Mini“), kada, kuris MP3 failas turi būti paleistas.

Kol kas tai viskas, ką reikia žinoti. Kituose žingsniuose pateiksiu išsamesnę informaciją, todėl nesijaudinkite.

1 žingsnis: reikalingos dalys

Reikalingos dalys
Reikalingos dalys
  • „NodeMCU ESP-12E“(CP2102 USB-serijos sąsaja)
  • „DFPlayer Mini“
  • SPST momentinis mygtukas
  • 8 omų 2 vatų garsiakalbis
  • „Micro SD“kortelė (jums reikės kelių kilobaitų, todėl talpa nesvarbu)
  • Veržlės ir varžtai

    • M3 veržlės (x6)
    • M3 varžtai - 23 mm (x4)
    • M3 varžtai - 15 mm (x2)
  • 1N4148 Signalo diodas (x1)
  • Rezistoriai

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

Kitos dalys:

  • PCB (galite užsisakyti prototipą internetu arba apsilankyti vietinėje parduotuvėje)
  • Lazeriu pjaustytas akrilo lakštas

    • 2 mm storio skaidrus lakštas
    • 2,8 mm storio dviejų skirtingų spalvų lapai (oranžinė ir žalia, raudona ir žalia, tai priklauso nuo jūsų ir spalvos nesvarbios)
  • Bet kuris 5 voltų (mažiausiai) 1 ampero mikro USB įkroviklis (įrenginiui įjungti)

2 žingsnis: kaip tai veikia

Kaip tai veikia
Kaip tai veikia
Kaip tai veikia
Kaip tai veikia

Gerai, noriu jums pateikti išsamesnės informacijos apie tai, kaip veikia programinė įranga.

Programinę įrangą sudaro kai kurios paslaugos. Kiekviena paslauga turi savo modulius. (Paslaugą galite laikyti klase, o jos modulius - jos metodais). Kiekvienas modulis gali būti laikomas vykdomuoju objektu. Taigi, mūsų programinę įrangą sudaro kai kurie vykdomieji objektai.

Čia pateikiamos kai kurios paslaugos ir papildomos paslaugos arba jų moduliai:

  • „Gmail“

    Neskaitytos žinutės

  • Orai

    • Dabartinė temperatūra
    • Šiandien Būklė
    • Šiandien žemas / aukštas
    • Sąlyga rytoj
    • Rytoj žemas / aukštas
    • Kritulių prognozė
    • Saulėtekis Saulėlydis
  • Laikas

    • Dabartinis laikas
    • Dabartinė data
  • Gimimas ir mirtis

    • Pasaulio gimimas
    • Pasaulio mirtis

Yra apvali eilė, kurioje yra moduliai. Mes tai vadiname operacijos eile. Aš sakiau, kad kiekvienas modulis yra vykdomas objektas. Taigi, paspaudus įrenginio mygtuką, jis žiūri į operacijų eilę ir vykdo kitą modulį (arba objektą).

Galite redaguoti operacijų eilės narius žiniatinklio vartotojo sąsajoje, kurią paaiškinsiu vėliau. Kol kas pateiksiu pavyzdį. Dabartinę operacijų eilę apsvarstykite taip:

QUEUE (neskaityti pranešimai | Kritulių prognozė | Dabartinis laikas)

Paspaudus mygtuką, turėtų būti įvykdytos neskaitytos žinutės.

QUEUE (neskaityti pranešimai | Kritulių prognozė | Dabartinis laikas)

Taigi įrenginys kalbės su jumis surinktais duomenimis (čia yra jūsų neskaitytų pranešimų skaičius, paimtas iš „Google“pašto API sklaidos kanalo). Bet kaip? Čia „NodeMCU“nurodys MP3 moduliui, kada turėtų paleisti, kurį MP3 kūrinį padaryti prasmingą sakinį. Norėdami tai pasiekti, sukūriau skirtingas eiles, laikmačius ir algoritmus. (Jei esate „c ++“vaikinas ir jums patinka mikrovaldikliai, galite patys ištirti kodą.)

Taigi, išgirsite, prietaisas pradeda kalbėti: „Gmail“gautuosiuose yra 4 neskaityti pranešimai.

Dar kartą paspausite mygtuką, kitas modulis bus kritulių prognozė, kurią reikia apdoroti.

QUEUE (neskaityti pranešimai | Kritulių prognozė | Dabartinis laikas)

Taigi, išgirsite kažką panašaus: Nepamirškite savo skėčio, rytoj lietus. Ir taip toliau … Dar vienas įdomus dalykas: kai kuriuose moduliuose (pvz., Kritulių prognozėje) galite tikėtis atsitiktinių sakinių toms pačioms būsenoms. Pavyzdžiui, jei rytoj iškris krituliai ir bus lietus, o ne sniegas, galite tikėtis „rytoj yra lietaus tikimybė“, „atneškite savo saulės, rytoj bus lietus“, „tut, tut, atrodo kaip rytoj lietus“, arba…

Kaip gauname skirtingus kiekvienos paslaugos duomenis?

  • „Gmail“

    „Google“turi galingą API, kurią naudodami galite pasiekti įvairias jos paslaugas, įskaitant „Gmail“. Tačiau saugumo sumetimais jums reikia skirtingų autentifikavimo ir autorizavimo metodų, tokių kaip „OAuth“. ESP8266 nėra toks galingas paleisti įvairius sudėtingus maišos algoritmus. Taigi, norėdamas pasiekti „Gmail“gautuosius, naudojau senesnę ir paprastą prisijungimo technologiją. Būtent „Google Atom Feed“gali naudoti ir RSS skaitytojai. Siunčiame HTTP užklausą pasiekti „Gmail“sklaidos kanalą, o jo atsakymas pateiktas XML formatu. Taigi, mes suskaičiuojame neskaitytų pranešimų skaičių ir naudojame jį savo programoje

  • Mes naudojame „Yahoo Weather“API, kad gautume skirtingą orų informaciją. Pastaruoju metu, kaip ir „Google“, „Yahoo“pakeitė „Weather API“, todėl norėdami pasiekti savo duomenis turėsite naudoti „OAuth“standartus. Deja, ESP8266 negali susidoroti su savo sudėtingumu, todėl mes naudosime triuką problemai išspręsti. Užuot tiesiogiai pasiekę „Yahoo Weather“API, mes nusiųsime užklausą į pasirinktinį failą serveryje. Mūsų failas gauna duomenis iš „Yahoo Weather“ir tiesiog siunčia juos mums.

    • Rytoj būsena jums pasakys, ar rytoj bus šilčiau ar šalčiau nei šiandien, ar ten, jei nebus pastebimų temperatūros pokyčių. Norėdami tai pasiekti, lyginame „šiandien žemas / aukštas“ir „rytoj žemas / aukštas“. Programos bibliotekos faile galite patikrinti, kaip parašiau šį algoritmą ir kaip jis veikia.
    • Jei patikrinsite „Yahoo Weather“dokumentaciją, pamatysite būklės kodų lentelę. Kaip sakoma, atsakymo kodai naudojami atsakant į dabartines sąlygas. Mes naudosime rytojaus sąlygų kodus ir jų reikšmes, kad išsiaiškintume, ar bus kritulių ir ar lyja, ar sninga.
  • „TimeNTP“reiškia tinklo laiko protokolą. Tai tinklo protokolas, skirtas sinchronizuoti laikrodį tarp kompiuterinių sistemų. Kadangi turime prieigą prie interneto, naudosime NTP klientą, norėdami gauti laiko iš NTP serverio, ir sinchronizuosime jį per vidinį ESP8266 laikmatį (pvz., Tą, kurį naudojate su miliais (), jei esate „Arduino“vaikinas).
  • Gimimas ir mirtis Mes apskaičiuosime gimimų ir mirčių skaičių nuo dienos pradžios („NTP Client“dėka paprasta gauti sekundžių skaičių nuo dienos pradžios). Aš naudoju pasaulio gimstamumą ir mirtingumą pagal ekologiją.

3 žingsnis: nustatykite programinę įrangą

Nustatykite programinę įrangą
Nustatykite programinę įrangą

Norėdami įkelti savo programą į „NodeMCU“, naudosime „Arduino IDE“. Naujausią „Arduino IDE“galite atsisiųsti ir įdiegti iš oficialios svetainės:

Prieš pradėdami turite nustatyti „Arduino IDE“, skirtą „Nodemcu“. Aš čia nepasakosiu žingsnių, nes tai gali būti ne į temą. Bet jūs galite sekti šios puikios instrukcijos veiksmus ir paaiškinimus.

Mūsų programa turi tam tikrų bibliotekų priklausomybių. Kas yra programinės įrangos priklausomybė?

Priklausomybė yra platus programinės įrangos inžinerijos terminas, naudojamas, kai programinė įranga priklauso nuo kitos.

Štai sąrašas „Arduino“bibliotekų, kurias turite turėti savo kompiuteryje, kad galėtumėte sudaryti asmeninio asistento programą:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Galite juos atsisiųsti po vieną iš jų „Github“puslapio, tada išskleiskite ZIP failus į „Arduino“bibliotekos katalogą. Jo kelias jūsų sistemoje yra toks: C: / Users [your-username] Documents / Arduino

Aš parašiau biblioteką, kad kodas būtų švarus ir išvengčiau sudėtingumo. Atsisiųskite failą PersonalAssistant-Library.zip ir ištraukite jį į „Arduino“bibliotekos katalogą. Kaip ir tai, ką anksčiau padarėte toms trims bibliotekoms.

„YahooWeather.php“failas

Kadangi ESP8266 nėra pakankamai galingas maišos algoritmams atlikti, mes negalime jo naudoti tiesiogiai siųsti HTTP užklausas į „Yahoo Weather“API, pagrįstas „OAuth“standartais. Taigi, mes naudosime failą tarp mūsų įrenginio ir „Yahoo Weather“API. Galite atsisiųsti „YahooWeather.zip“failą, jį išskleisti ir įdėti „YahooWeather.php“failą į žiniatinklio serverį. Pavyzdžiui, jei jūsų domenas yra example.com ir jūs įdėjote failą į api katalogą, jūsų api galinis taškas tampa example.com/api/YahooWeather.php Į šį galinį tašką atsiųsite orų duomenų užklausas.

Programos eskizas ir FFS („Flash“failų sistema)

Jūsų „NodeMCU“plokštėje yra 4 MB „flash“failų sistema duomenims saugoti. Taigi, kai turime, kodėl gi nepasinaudojus?

Prisimeni, kai sakiau, kad mūsų įrenginyje yra dvi vartotojo sąsajos? Be to vienišo mygtuko, antroji mūsų vartotojo sąsaja yra paprasta žiniatinklio programa. Naudodami šią programą galite manipuliuoti operacijų eile, įjungdami / išjungdami kiekvieną modulį, pakeisdami paslaugos nustatymus ar įrenginio konfigūraciją, pvz., Nustatydami „WiFi“SSID ir slaptažodį. Visus šiuos failus išsaugosime „NodeMCU Flash“failų sistemoje ir paleisime lengvą žiniatinklio serverį, kad galėtume tvarkyti vartotojų užklausas iš jų žiniatinklio naršyklės.

Redaguoti konfigūracijos failą

Atsisiųskite failą PersonalAssistant-Sketch.zip ir išskleiskite jį kažkur savo kompiuteryje. Atidarykite failą config.json, kuris yra:

PersonalAssistant/data/config.json

Galite naudoti bet kokį teksto ar kodo redaktorių, pvz., Užrašų knygelę, užrašų knygelę ++, „Atom“ir tt. Failas yra „json“duomenų struktūra, todėl tai yra žmogaus skaitoma raktų / verčių pora ir galite lengvai ją redaguoti. Galite pakeisti šiuos laukus:

  • „Gmail“

    • vartotojo vardas: jūsų „Gmail“naudotojo vardas su @gmail.com
    • slaptažodis: jūsų „Gmail“slaptažodis
  • Orai

    • woeid: vieta, kuriai norite gauti orų informaciją. WOEID (Where On Earth IDentifier) yra nuorodos identifikatorius, kurį „Yahoo“naudoja vietovei nustatyti. Šioje nuorodoje galite atlikti paiešką WOEID vietose.
    • api: tai API galinis taškas. Nuoroda į jūsų failą yahooweather.php.
    • appId, ConsumerKey ir ConsumerSecret: norėdami pasiekti „Yahoo Weather“API, turite sukurti projektą „Yahoo“kūrėjų puslapyje. Tai suteiks jums vartotojo raktą ir paslaptį, kurių reikia norint naudoti API. Norėdami pradėti, apsilankykite „Yahoo Weather Developer“puslapyje ir sukurkite APP.
  • Laiko zona

    laiko juosta: įveskite laiko juostą pagal savo buvimo vietą. Tai gali būti teigiamas arba neigiamas plūdės skaičius, o jo vienetas yra valandos

  • Bevielis internetas

    • ssid: jūsų tinklo SSID.
    • slaptažodis: jūsų tinklo slaptažodis. „NodeMCU“naudos ssid ir slaptažodį, kad prisijungtų prie jūsų „Wi -Fi“tinklo.

Programos eskizo ir FFS duomenų įkėlimas

Prijunkite „NodeMCU“prie kompiuterio naudodami „micro-USB to USB“kabelį.

Dabar atidarykite failą PersonalAssistant.ino, kuris yra:

PersonalAssistant/PersonalAssistant.ino

„Arduino IDE“skiltyje „Įrankiai“> „Lenta“pasirinkite „NodeMCU 1.0“(ESP-12E modulis). Iš Įrankiai> Prievadas pasirinkite tinkamą prievadą. Tai reiškia jūsų „NodeMCU“.

Dabar pasirinkite Įrankiai> ESP8266 Sketch Data Upload, tada duomenų aplanko turinys bus įkeltas į ESP8266. Palaukite kelias akimirkas, kol baigsis. Tada pasirinkite Eskizas> Įkelti arba tiesiog paspauskite klaviatūros klavišus Ctrl + U, kad pradėtumėte įkelti programą. Palaukite, kol pamatysite pranešimą „įkėlimas baigtas“.

4 veiksmas: nustatykite „Micro SD“kortelę

Mes naudojame „micro SD“kortelę MP3 failų fragmentams saugoti. Būtent „NodeMCU“nusprendžia, kuris failas turi būti paleistas, o „DFPlayer Mini“padeda jam padaryti prasmingą sakinį dekoduojant MP3 failus.

Aš naudoju „Amazon Polly“norimiems balso kūriniams generuoti.

„Amazon Polly“yra paslauga, kuri tekstą paverčia tikroviška kalba, leidžiančia kurti kalbančias programas ir kurti visiškai naujas kalbas palaikančių produktų kategorijas.

Nepamirškite, kad mūsų įrenginys nenaudoja „Amazon Polly“API, kad galėtų kalbėti dinamiškai. Turime keletą statinių neprisijungusio balso kūrinių ir juos sudėję sudarome skirtingus sakinius.

Šią svetainę naudojau MP3 failams kurti. Mano pasirinkta balso išvestis buvo JAV anglų / salli.

Vienintelis dalykas, kurį turite padaryti, yra atsisiųsti „microSD.zip“failą, tada ištraukti jį į „micro SD“kortelę. Jame yra visi 78 reikalingi MP3 failai.

Tikriausiai jūsų „Micro SD“kortelė yra su adapteriu. „Micro SD“kortelę galite įdėti į adapterį ir prijungti prie nešiojamojo kompiuterio. Jei jūsų kompiuteris nepalaiko kortelių skaitymo, turėtumėte naudoti išorinį kortelių skaitytuvą.

5 žingsnis: schemų kūrimas ir PCB nustatymas

Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas
Schemų kūrimas ir PCB nustatymas

Schemą ir lentą sukūriau naudodamas „Autodesk EAGLE“. Į „PersonalAssistant-PCB.zip“įtraukiau ir SCH, ir BRD failus. Galite lengvai redaguoti ir (arba) nusiųsti vietiniam ar internetiniam PCB gamintojui, kad jis užsisakytų ir gautų plokštę.

Dar vienas dalykas, kurį reikia paminėti, yra tas, kad ESP8266 veikia 3.3V, o „DFPlayer Mini“- 5v. Kadangi šie du moduliai turi kalbėtis tarpusavyje per nuosekliąją sąsają, negalime tiesiogiai prijungti 5 V išvesties prie 3,3 V įvesties, nes ji sugadina jūsų ESP8266. Taigi mums reikės lygio konvertavimo iš 5v į 3.3v. Norėdami tai padaryti, naudojame signalinį diodą ir 10K rezistorių.

6 žingsnis: suvirinkite

Lituokite
Lituokite
Lituokite
Lituokite

Lentos surinkimas yra gana paprastas, nes turite keletą komponentų. Vykdykite schemą ir lentos dizainą, atlikdami 5 veiksmą, kad kiekvieną elementą lengvai padėtumėte į reikiamą vietą.

Aš pradėjau lituoti rezistorius ir diodą, nes jie yra maži. Naudodami vielos pjaustytuvą, galite lengvai nupjauti nereikalingas uodegas. Iš viršaus į apačią turėtumėte įdėti 1K, 10K ir 10K rezistorių.

Jums nereikia lituoti visų PCB „NodeMCU“ir „DFPlayer Mini“kaiščių. Pakanka kaiščių litavimo takeliu.

Nepamirškite, kad garsiakalbiai ir diodai turi poliškumą. Komponentuose yra vienas garsiakalbis ir vienas diodas. Diodo pusė su juoda linija yra neigiama jos pusė arba katodas.

7 žingsnis: gaubtas

Aptvaras
Aptvaras
Aptvaras
Aptvaras
Aptvaras
Aptvaras

Aš nusprendžiau kūrybiškai suprojektuoti išgalvotą aptvarą. Projektuodama nerimavau dėl jos keistos formos, bet galų gale tai nebuvo taip blogai. Bent jau tai atrodo kaip fortepijonas ir puikiai jaučiasi laikant rankoje!

Vietoj klasikinės šešiakampės kubinės formos su 6 paviršiais suprojektavau daugiasluoksnį korpusą. Iš apačios į viršų kiekvienas sluoksnis yra ant jo apatinio sluoksnio. (Aš juos pavadinau nuo L0 iki L6, iš apačios į viršų)

Spalvos ir storis

Norėdami sukurti didžiausią kontrastą, galite naudoti dvi papildomas spalvas, pavyzdžiui:

  • Raudona ir žalia
  • Mėlyna ir oranžinė
  • Geltona ir violetinė
  • Mėlyna ir geltona

Viršutiniam sluoksniui naudojau skaidrų akrilą, kad galėtumėte matyti prietaiso vidų.

Viršutinio sluoksnio (6 sluoksnio) storis turi būti 2 mm. Kitų sluoksnių (nuo 0 iki 5 sluoksnio) storis turi būti 4 mm. Jei norite naudoti 2,8 mm akrilo skydą, kaip ir aš, nėra jokių problemų. Bet jūs turite iškirpti dvi serijas iš 1 ir 3 sluoksnių, kad kompensuotumėte.

Norėdami surinkti gaubtą, pradėkite nuo apatinio sluoksnio (L0). Uždėkite plokštę ant jos, naudokite trumpesnius varžtus ir priveržkite veržlėmis. Dabar galite pritvirtinti keturis ilgesnius varžtus iš 0 sluoksnio apačios. Kažkas panašaus į bokštą. Tada galite lengvai tęsti ant jų kitų sluoksnių montavimą.

Pastaba: tarp apatinio sluoksnio ir plokštės galite naudoti papildomą poveržlę.

Taip pat pridėjau informacinių tekstų apie įrenginio prievadus (maitinimas ir „micro SD“kortelė). Viršutiniame sluoksnyje galite naudoti graviravimą lazeriu.

Įtraukiau ir CDR, ir DXF failų formatus. Galite juos atsisiųsti, redaguoti ir naudoti lazeriu.

8 veiksmas: prieiga prie žiniatinklio vartotojo sąsajos

Prieiga prie internetinės vartotojo sąsajos
Prieiga prie internetinės vartotojo sąsajos

Įjunkite įrenginį

Įrenginį galite įjungti naudodami bet kurį 5 V mikro USB įkroviklį. Prijunkite „micro USB“prie įrenginio maitinimo prievado, tai yra „NodeMCU“mikro USB įvesties.

Pasiekite naudotojo sąsają

Ar pamenate, kad kai kuriuos failus įkėlėme į ESP8266 „Flash“failų sistemą? Atėjo laikas jį naudoti. Viskas, ko jums reikia, yra ESP8266 tinkle priskirtas IP adresas. Yra daug skirtingų būdų rasti IP adresą. Čia išvardinsiu kai kuriuos iš jų:

  • Maršrutizatoriaus konfigūracijos puslapyje, kažkur DHCP nuomos sąraše, galite pamatyti įrenginių sąrašą su jų IP adresais jūsų tinkle.
  • „Microsoft Windows“ir „MacOS“galite paleisti tokias komandas kaip arp -a terminale.
  • „Android“ir „iOS“galite naudoti tokias programas kaip „Fing“. („Android“/ „iOS“)
  • „Linux“galite naudoti tokius įrankius kaip „Nmap“.

Suradę IP adresą, atidarykite jį naudodami savo interneto naršyklę. Galite manipuliuoti operacijų eile įjungdami / išjungdami modulius.

9 žingsnis: paskutinės mintys

Šis projektas užėmė daug laiko ir energijos. Prie asmeninio asistento galite pridėti daug daugiau parinkčių. Kai kurias dalis palikau atviras tolesniam vystymuisi. Kai kurios dalys:

  1. Pridedama daugiau paslaugų ir modulių. Pavyzdžiui, skaičiuoti skaičius, mesti kauliuką ar mesti monetą.
  2. Prisijungęs prie tinklo, įrenginys gali pasakyti IP adresą. Galite pridėti šią parinktį, kad supaprastintumėte IP adreso paieškos procesą.
  3. Pridėta galimybė keisti „WiFi“nustatymus žiniatinklio valdymo skydelyje.
  4. Pridėta galimybė keisti paslaugų nustatymus žiniatinklio valdymo skydelyje. (Jų html forma yra paruošta. Turite tvarkyti užklausas)
  5. Pridėkite daugiau atsakymų balsu skirtingose įrenginio būsenose.
  6. Pridėkite prisijungimo prie žiniatinklio valdymo skydelio puslapį. Tai galite padaryti pridėję / palyginę slapukus HTTP antraščių eilutėse.

Ir aš norėčiau sužinoti jūsų idėjas apie tai pamokomą.:)

Rekomenduojamas: