INHOUDSOPGAWE:

Persoonlike assistent: 9 stappe (met foto's)
Persoonlike assistent: 9 stappe (met foto's)

Video: Persoonlike assistent: 9 stappe (met foto's)

Video: Persoonlike assistent: 9 stappe (met foto's)
Video: IK HAD EEN PERSOONLIJK ASSISTENT VOOR 1 DAG! *VOET GEBROKEN* #526 2024, November
Anonim
Image
Image
Persoonlike assistent
Persoonlike assistent

In hierdie instruksies gaan ek jou wys hoe jy die krag van ESP8266, kreatiwiteit in sagteware -ontwerp en programmering, kan gebruik om iets gaafs en leersaam te maak.

Ek het dit Persoonlike Assistent genoem, omdat dit in sakformaat is, met u gesels en 'n paar nuttige, en (natuurlik) 'n paar nuttige (maar nog steeds koel) inligting oor weer, tyd en datum, gmail -boodskappe, lewende geboorte en sterftesyfers ens.

Ek het probeer om die ontwerp eenvoudig te hou. Die toestel het twee gebruikerskoppelvlakke. 'N Fisiese drukknop en 'n webgebaseerde toepassing, waarmee die gebruiker toegang kan verkry deur 'n webblaaier te gebruik en die toestelinstellings en konfigurasie te verander.

Die belangrikste komponente van hierdie projek is 'n mikrobeheerder en 'n musiekspelermodule. Ons mikrobeheerder (NodeMCU) gebruik WiFi -tegnologie om aan te sluit op 'n toegangspunt met 'n internetverbinding; sodat hy die nodige data kan kry, dit kan verwerk en vir die musiekspeler (DFPlayer Mini) vertel wanneer, watter MP3 -lêer gespeel moet word.

Vir eers is dit al wat u moet weet. Ek sal u in die volgende stappe meer gedetailleerde inligting gee, dus moenie bekommerd wees nie.

Stap 1: Onderdele benodig

Onderdele benodig
Onderdele benodig
  • NodeMCU ESP-12E (CP2102 USB-na-seriële koppelvlak)
  • DFPlayer Mini
  • SPST kortstondige drukknop
  • 8 Ohm 2 Watt luidspreker
  • Micro SD -kaart (u benodig 'n paar kilobyte, dus die kapasiteit maak nie saak nie)
  • Boute en moere

    • M3 Neute (x6)
    • M3 boute - 23 mm (x4)
    • M3 boute - 15 mm (x2)
  • 1N4148 Seindiode (x1)
  • Weerstande

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

Ander dele:

  • PCB (u kan 'n prototipe aanlyn bestel of 'n plaaslike winkel besoek)
  • Lasergesnyde akrielblad

    • 2 mm dik laag
    • 2.8 mm dikte twee velle kleure (oranje en groen, rooi en groen, dit is aan jou en die kleure maak nie saak nie)
  • Enige 5 volt (ten minste) 1 ampère mikro -USB -laaier (om die toestel aan te skakel)

Stap 2: Hoe dit werk

Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk

Goed, ek wil u meer gedetailleerde inligting gee oor hoe die sagteware werk.

Die sagteware bestaan uit sommige dienste. Elke diens het sy eie modules. (U kan 'n diens as 'n klas en die modules as die metodes daarvan beskou). Elke module kan as 'n uitvoerbare voorwerp beskou word. Ons sagteware bestaan dus uit 'n paar uitvoerbare voorwerpe.

Hier het ons 'n paar dienste en subdienste of hul modules:

  • Gmail

    Ongeleesde boodskappe

  • Weer

    • Huidige temperatuur
    • Vandag toestand
    • Vandag Laag / Hoog
    • Môre toestand
    • More Laag / Hoog
    • Neerslagvoorspelling
    • Sonsopkoms sonsondergang
  • Tyd

    • Huidige tyd
    • Huidige datum
  • Geboorte en dood

    • Wêreldgeboorte
    • Wêreld dood

Daar is 'n ronde tou wat modules daarin bevat. Ons noem dit Operation Queue. Ek het gesê, elke module is 'n uitvoerbare voorwerp. As u op die drukknoppie op die toestel druk, kyk dit in die bedieningswag en voer die volgende module (of voorwerp) uit.

U kan die lede van die werking in die webgebaseerde gebruikerskoppelvlak wysig, wat ek later sal verduidelik. Vir eers sal ek u 'n voorbeeld gee. Beskou die huidige operasionele tou as volg:

QUEUE (ongeleesde boodskappe | neerslagvoorspelling | huidige tyd)

As u op die drukknoppie druk, moet ongeleesde boodskappe uitgevoer word.

QUEUE (ongeleesde boodskappe | neerslagvoorspelling | huidige tyd)

Die toestel gebruik dus die gegewens wat dit versamel het (hier is die aantal ongeleesde boodskappe wat u uit die Google Mail API -feed haal) om met u te praat. Maar hoe? Hier sal NodeMCU aan die MP3 -module vertel wanneer dit 'n betekenisvolle sin moet speel, watter MP3 -stuk dit moet maak. Om dit te bereik, het ek verskillende toue, timers en algoritmes ontwerp. (As u 'n c ++ -man is en van mikrobeheerders hou, kan u die kode self bestudeer.)

U sal dus hoor dat die toestel begin praat: U het 4 ongeleesde boodskappe in u Gmail -posbus.

As u weer op die drukknoppie druk, is die volgende module presipitasievoorspelling wat hanteer moet word.

QUEUE (ongeleesde boodskappe | neerslagvoorspelling | huidige tyd)

U sal dus iets hoor soos: Moenie vergeet van u sambreel nie, dit reën môre. En so aan … Nog 'n gawe ding: vir sommige modules (soos neerslagvoorspelling) kan u ewekansige sinne vir dieselfde toestande verwag. Byvoorbeeld, as daar môre neerslag is en dit reën, en nie sneeu nie, kan u verwag dat daar 'n moontlikheid vir reën is môre ',' bring u eie sonskyn, dit is môre reën ',' tut, tut, lyk soos reën vir môre ', of…

Hoe kry ons verskillende data vir elke diens?

  • Gmail

    Ongeleesde boodskappe Google het 'n kragtige API waarmee u toegang kan kry tot die verskillende dienste, insluitend Gmail. Maar om veiligheidsdoeleindes het u verskillende verifikasie- en magtigingsmetodes nodig, soos OAuth. ESP8266 is nie so kragtig om verskillende ingewikkelde hash -algoritmes uit te voer nie. Ek het dus 'n ouer en eenvoudige aanmeldingstegnologie gebruik om toegang tot die Gmail-inkassie te verkry. Dit is Google Atom Feed wat ook deur RSS -lesers gebruik kan word. Ons stuur 'n HTTP -versoek om toegang tot gmail -feed te verkry, en die antwoord is in XML -formaat. Ons tel dus die aantal ongeleesde boodskappe en gebruik dit in ons program

  • Weer Ons gebruik Yahoo Weather API om verskillende weerinligting te kry. Onlangs, net soos Google, het Yahoo sy Weather API verander, sodat u OAuth -standaarde moet gebruik om toegang tot die data te verkry. Ongelukkig kan ESP8266 nie die kompleksiteit daarvan hanteer nie, so ons sal 'n truuk gebruik om die probleem op te los. In plaas daarvan om direk toegang tot Yahoo Weather API te verkry, stuur ons ons versoek na 'n pasgemaakte lêer op 'n bediener. Ons lêer kry data van Yahoo Weather en stuur dit eenvoudig na ons toe.

    • Môre Toestand Môre kondig u aan of môre warmer of kouer is as vandag, of daar geen sinvolle temperatuurverandering sal wees nie. Ons vergelyk 'vandag laag / hoog' met 'môre laag / hoog' om dit te bereik. U kan kyk hoe ek hierdie algoritme geskryf het en hoe dit werk in die programbiblioteeklêer.
    • Neerslagvoorspelling As u die Yahoo Weather -dokumentasie nagaan, kan u die tabel met voorwaardekodes sien. Soos dit sê, word toestandskodes in die reaksie gebruik om die huidige toestande te beskryf. Ons sal môre se toestandskodes en die betekenis daarvan gebruik om uit te vind of daar reën of sneeu kan neerslag vind.
  • TimeNTP staan vir Network Time Protocol. Dit is 'n netwerkprotokol vir kloksinchronisasie tussen rekenaarstelsels. Aangesien ons internettoegang het, sal ons 'n NTP -kliënt gebruik om tyd van 'n NTP -bediener af te haal en dit te sinchroniseer met die interne timer ESP8266 (soos die een wat u dit met millis () gebruik as u 'n Arduino -ou is).
  • Geboorte en dood Ons bereken die aantal geboortes en sterftes vanaf die begin van die dag (danksy NTP -kliënt is dit maklik om die aantal sekondes sedert die begin van die dag te kry). Ek het wêreldgeboorte- en sterftesyfers van ekologie gebruik.

Stap 3: Stel die sagteware op

Stel die sagteware op
Stel die sagteware op

Ons sal Arduino IDE gebruik om ons program na NodeMCU op te laai. U kan die nuutste Arduino IDE aflaai en installeer vanaf hul amptelike webwerf:

Voordat u begin, moet u Arduino IDE vir Nodemcu opstel. Ek sal jou nie die stappe hier vertel nie, want dit kan van die onderwerp af wees. Maar u kan die stappe en verduidelikings van hierdie uitstekende instruksies volg.

Ons program het 'n paar biblioteekafhanklikes. Wat is 'n sagteware -afhanklikheid?

Afhanklikheid is 'n breë term vir sagteware -ingenieurswese wat gebruik word om te verwys wanneer 'n stuk sagteware op 'n ander een staatmaak.

Hier is 'n lys van Arduino -biblioteke wat u op u rekenaar moet hê om die Personal Assistant -program op te stel:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

U kan dit een vir een aflaai van hul Github -bladsy en dan die zip -lêers uit die Arduino -biblioteekgids haal. Die pad op u stelsel is: C: / Users [u-gebruikersnaam] Documents / Arduino

Ek het 'n biblioteek geskryf om die kode skoon te hou en kompleksiteit te vermy. Laai die lêer PersonalAssistant-Library.zip af en haal dit uit na die Arduino biblioteekgids. Net soos wat u voorheen vir die drie biblioteke gedoen het.

YahooWeather.php lêer

Aangesien ESP8266 nie kragtig genoeg is om hash -algoritmes uit te voer nie, kan ons dit nie direk gebruik om HTTP -versoeke na Yahoo Weather API te stuur nie, gebaseer op OAuth -standaarde. Ons gebruik dus 'n lêer tussen ons toestel en Yahoo Weather API. U kan die YahooWeather.zip -lêer aflaai, dit uithaal en die YahooWeather.php -lêer op 'n webbediener plaas. As u domein byvoorbeeld example.com is en u die lêer in die api -gids plaas, word u api -eindpunt example.com/api/YahooWeather.php. U stuur weerdata -versoeke na hierdie eindpunt.

Die programskets en die FFS (flitslêerstelsel)

U NodeMCU -bord het 'n flitslêerstelsel van 4 MB om data te stoor. Dus, as ons dit het, waarom gebruik ons dit dan nie?

Onthou jy toe ek gesê het ons toestel het twee gebruikerskoppelvlakke? Behalwe die eensame drukknop, is ons tweede gebruikerskoppelvlak 'n eenvoudige webgebaseerde toepassing. Met hierdie toepassing kan u die bedieningswaglys manipuleer deur elke module in / uit te skakel, diensinstellings of toestelopset te verander, soos die instelling van WiFi SSID en wagwoord. Ons sal al hierdie lêers in NodeMCU Flash File System stoor en 'n ligte webbediener gebruik om gebruikersversoeke van hul webblaaier af te hanteer.

Konfiglêer wysig

Laai die lêer PersonalAssistant-Sketch.zip af en haal dit êrens op u rekenaar uit. Open die lêer config.json wat geleë is:

PersonalAssistant/data/config.json

U kan enige teks- of kode -redakteur gebruik, soos notaboek, notepad ++, Atom, ens. Die lêer is 'n json -datastruktuur, en dit is dus 'n menslike leesbare sleutel / waarde -paar en u kan dit maklik wysig. U kan hierdie velde verander:

  • Gmail

    • gebruikersnaam: jou Gmail gebruikersnaam met sy @gmail.com
    • wagwoord: u Gmail -wagwoord
  • Weer

    • weid: die ligging waarvoor u weerinligting wil ontvang. die WOEID (Where On Earth IDentifier) is 'n verwysings -identifiseerder wat Yahoo gebruik vir ligging. U kan op hierdie skakel 'n soektog op WOEID -plekke doen.
    • api: dit is die API -eindpunt. Die skakel na u yahooweather.php -lêer.
    • appId, consumerKey en consumerSecret: vir toegang tot Yahoo Weather API moet u 'n projek op die Yahoo -ontwikkelaarsbladsy skep. Dit gee u 'n verbruikersleutel en 'n geheim wat nodig is vir die gebruik van die API. Besoek Yahoo Weather Developer -bladsy om aan die gang te kom en skep 'n APP.
  • Tydsone

    tydsone: voer die tydsone in op grond van u ligging. Dit kan 'n positiewe of negatiewe vlottergetal wees en sy eenheid is ure

  • WiFi

    • ssid: SSID van u netwerk.
    • wagwoord: u netwerkwagwoord. NodeMCU sal ssid en wagwoord gebruik om aan te sluit op u wifi -netwerk.

Laai die programskets en FFS -data op

Koppel die NodeMCU aan u rekenaar met 'n mikro-USB na USB-kabel.

Maak nou die lêer PersonalAssistant.ino oop wat geleë is:

PersonalAssistant/PersonalAssistant.ino

Kies in Arduino IDE, in Tools> Board, NodeMCU 1.0 (ESP-12E Module). Kies in Tools> Port die korrekte poort. Dit verteenwoordig u NodeMCU.

Kies nou Tools> ESP8266 Sketch Data Upload, dit laai die inhoud van die datagids na die ESP8266. Wag 'n paar oomblikke totdat dit klaar is. Kies dan Skets> Laai op of druk eenvoudig op Ctrl + U op u sleutelbord om die program op te laai. Wag totdat u die boodskap "Laai klaar" sien.

Stap 4: Stel die Micro SD -kaart op

Ons gebruik 'n mikro -SD -kaart om die MP3 -lêerstukke op te slaan. Dit is NodeMCU wat besluit watter lêer op watter tydstip gespeel moet word en DFPlayer Mini help hom om 'n sinvolle sin te maak deur die MP3 -lêers te ontsyfer.

Ek het Amazon Polly gebruik om die stemstukke wat ek nodig gehad het, te genereer.

Amazon Polly is 'n diens wat teks omskep in lewensgetroue spraak, waarmee u toepassings kan maak wat praat en heeltemal nuwe kategorieë produkte met spraakaktiwiteite kan bou.

Moenie vergeet nie, ons toestel gebruik nie Amazon Polly API om dinamies te praat nie. Ons het 'n paar statiese stemmetjies vanlyn, en deur dit saam te voeg, maak ons verskillende sinne.

Ek het hierdie webwerf gebruik om MP3 -lêers te genereer. Die stemuitset wat ek gekies het, was Amerikaanse Engels / Salli.

Die enigste ding wat u hoef te doen, is om die microSD.zip -lêer af te laai en dit dan op u micro SD -kaart te onttrek. Dit bevat al die 78 vereiste MP3 -lêers.

U Micro SD -kaart word waarskynlik saam met 'n adapter voorsien. U kan u Micro SD -kaart in die adapter plaas en dit aan u skootrekenaar koppel. As u rekenaar nie kaartlees ondersteun nie, moet u 'n eksterne kaartleser gebruik.

Stap 5: Ontwerp die skemas en stel die PCB op

Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB
Die ontwerp van die skemas en die opstel van die PCB

Ek het die skema en bord ontwerp met behulp van die Autodesk EAGLE. Ek het beide SCH- en BRD-lêers in PersonalAssistant-PCB.zip opgeneem. U kan dit maklik wysig en / of stuur na 'n plaaslike of aanlyn PCB -vervaardiger om u bord te bestel en te kry.

Nog 'n ding om op te noem is dat ESP8266 in 3.3v werk, terwyl DFPlayer Mini in 5v werk. Aangesien hierdie twee modules met mekaar moet praat deur middel van 'n seriële koppelvlak, kan ons nie 'n 5V -uitset direk aan 'n 3.3v -ingang koppel nie, aangesien dit u ESP8266 beskadig. Ons benodig dus 'n vlak omskakeling van 5v na 3.3v. Ons gebruik 'n seindiode en 'n 10K -weerstand om dit te laat gebeur.

Stap 6: Soldeer dit op

Soldeer dit op
Soldeer dit op
Soldeer dit op
Soldeer dit op

Die montering van die bord is redelik eenvoudig, aangesien u 'n paar komponente het. Volg die skematiese en bordontwerpe in stap 5 om elke item maklik op die regte plek te plaas.

Ek het begin deur die weerstande en die diode te soldeer, aangesien hulle klein is. U kan hul onnodige sterte maklik met 'n draadknip sny. Van bo na onder moet u 1K, 10K en 10K weerstand plaas.

U hoef nie al die NodeMCU- en DFPlayer Mini -penne op die PCB te soldeer nie. Dit is genoeg om die penne met 'n pad te soldeer.

Moenie vergeet nie, luidsprekers en diodes het polariteit. U het een luidspreker en een diode in u komponente. Vir die diode is die sy met 'n swart lyn die negatiewe sy of die katode.

Stap 7: Die omhulsel

Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel

Ek het besluit om op 'n kreatiewe manier 'n luukse omhulsel te ontwerp. Ek was bekommerd oor die vreemde vorm tydens die ontwerp, maar aan die einde was dit nie so erg nie. Dit lyk ten minste soos 'n vleuelklavier en dit voel wonderlik om in jou hand te hou!

In plaas van die klassieke hexahedron-kubieke vorm met 6 vlakke, het ek 'n meervoudige omhulsel ontwerp. Van onder na bo lê elke laag op die onderste laag. (Ek het hulle L0 tot L6 genoem, van onder na bo)

Kleure en dikte

U kan twee komplementêre kleure gebruik om die sterkste kontras te skep, soos:

  • Rooi en groen
  • Blou en Oranje
  • Geel en pers
  • Blou en geel

Ek het helder akriel vir die boonste laag gebruik, sodat u binne -in die toestel kan sien.

Die dikte van die boonste laag (laag-6) moet 2 mm wees. Die dikte van die ander lae (laag-0 tot laag-5) moet 4 mm wees. As u 'n 2.8 mm -akrielskerm wil gebruik, soos ek, is daar geen probleem nie. Maar u moet twee reekse sny uit laag-1 en laag-3 vir die offset.

Om die omhulsel te monteer, begin met die onderste laag (L0). Sit die bord daarop, gebruik die korter boute en draai dit vas met die moere. U kan nou die vier langer boute aan die onderkant van die laag-0 heg. Iets soos 'n toring. Dan kan u maklik voortgaan om ander lae daarop te monteer.

Opmerking: u kan 'n opsionele wasser tussen die onderste laag en die bord gebruik.

Ek het ook inligtingstekste vir apparaatpoortjies (krag- en mikro -SD -kaart) bygevoeg. U kan lasergravering op die boonste laag gebruik.

Ek het beide CDR- en DXF -lêerformate ingesluit. U kan dit aflaai, redigeer en gebruik vir lasersnit.

Stap 8: Toegang tot die webgebaseerde gebruikerskoppelvlak

Toegang tot webgebaseerde gebruikerskoppelvlak
Toegang tot webgebaseerde gebruikerskoppelvlak

Skakel die toestel aan

U kan die toestel aanskakel met 'n 5V mikro -USB -laaier. Koppel die mikro -USB aan die kragpoort van die toestel, dit is die mikro -USB -ingang op u NodeMCU.

Kry toegang tot die gebruikersinterface

Onthou u dat ons 'n paar lêers in die ESP8266 Flash -lêerstelsel opgelaai het? Dit is tyd om dit te gebruik. Al wat u nodig het, is die IP -adres wat aan ESP8266 op die netwerk toegeken is. Daar is baie verskillende maniere om die IP -adres te vind. Ek sal 'n paar van hulle hier noem:

  • Op u router -opsetbladsy, iewers in die DHCP -huurlys, kan u 'n lys toestelle met hul IP -adresse in u netwerk sien.
  • In Microsoft Windows en macOS kan u opdragte soos arp -a in terminale uitvoer.
  • In Android en iOS kan u toepassings soos Fing gebruik. (Android / iOS)
  • In Linux kan u gereedskap soos Nmap gebruik.

Nadat u die IP -adres gevind het, maak dit oop met u webblaaier. U kan die operasionele tou manipuleer deur modules in / uit te skakel.

Stap 9: Laaste gedagtes

Hierdie projek het baie tyd en energie in beslag geneem. U kan nog vele meer opsies by Personal Assistant voeg. Ek het 'n paar dele oopgelaat vir toekomstige ontwikkeling. Sommige dele soos:

  1. Voeg meer dienste en module by. Byvoorbeeld, getalle tel, 'n dobbelsteen gooi of 'n muntstuk gooi.
  2. Na die verbinding met die netwerk, kan die toestel die IP -adres spreek. U kan hierdie opsie byvoeg om die vind van IP -adres proses te vereenvoudig.
  3. Voeg die moontlikheid by om WiFi -instellings in die webgebaseerde bedieningspaneel te verander.
  4. Voeg die moontlikheid by om diensinstellings in die webgebaseerde bedieningspaneel te verander. (Hul html -vorm is gereed. U moet versoeke hanteer)
  5. Voeg meer stemreaksies by in verskillende toestande van die toestel.
  6. Voeg 'n aanmeldbladsy by vir die webgebaseerde bedieningspaneel. U kan dit doen deur koekies in HTTP -koplyne by te voeg / te vergelyk.

En ek sal graag u idees oor hierdie instruksies wil weet.:)

Aanbeveel: