Sisukord:

Isiklik assistent: 9 sammu (piltidega)
Isiklik assistent: 9 sammu (piltidega)

Video: Isiklik assistent: 9 sammu (piltidega)

Video: Isiklik assistent: 9 sammu (piltidega)
Video: ASMR SIRI 🍏🤪 Iphone Виртуальный Ассистент Сири АСМР / Virtual Assistant 2024, November
Anonim
Image
Image
Isiklik assistent
Isiklik assistent

Selles juhendis näitan teile, kuidas saate kasutada ESP8266 jõudu, loovust tarkvara kujundamisel ja programmeerimisel, et teha midagi lahedat ja harivat.

Panin sellele nimeks Personal Assistant, sest see on taskuformaadis, räägib teiega ja saab teile kasulikku ja (muidugi) vähe kasulikku (kuid siiski lahedat) teavet ilmastiku, kellaaja ja kuupäeva, gmaili, elussünni ja suremus jne.

Püüdsin disaini lihtsana hoida. Seadmel on kaks kasutajaliidest. Füüsiline vajutusnupp ja veebipõhine rakendus, millele kasutaja saab veebibrauseri abil juurde pääseda ning seadme seadeid ja konfiguratsiooni muuta.

Kuidas see toimib? Selle projekti põhikomponendid on mikrokontroller ja muusikamängija moodul. Meie mikrokontroller (NodeMCU) kasutab WiFi -ühendust Interneti -ühendusega pääsupunktiga ühenduse loomiseks; et see saaks nõutavaid andmeid hankida, neid töödelda ja teatab muusikamängijale (DFPlayer Mini), millal millist MP3 -faili esitada.

Praegu on see kõik, mida pead teadma. Järgmistes sammudes annan teile üksikasjalikumat teavet, nii et ärge muretsege.

Samm: vajalikud osad

Vajalikud osad
Vajalikud osad
  • NodeMCU ESP-12E (CP2102 USB-jadaliides)
  • DFPlayer Mini
  • SPST hetkeline nupp
  • 8 oomi 2 vatti kõlar
  • Micro SD -kaart (vajate paar kilobaiti, nii et maht pole oluline)
  • Mutrid ja poldid

    • M3 pähklid (x6)
    • M3 poldid - 23 mm (x4)
    • M3 poldid - 15 mm (x2)
  • 1N4148 signaaldiood (x1)
  • Takistid

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

Muud osad:

  • PCB (saate tellida prototüübi veebist või külastada kohalikku poodi)
  • Laserlõigatud akrüülleht

    • 2 mm paksune läbipaistev leht
    • 2,8 mm paksus kaks erinevat värvi lehte (oranž ja roheline, punane ja roheline, see on teie otsustada ja värvid pole olulised)
  • 5 -voldine (vähemalt) 1 -amprine mikro -USB -laadija (seadme toiteks)

2. toiming: kuidas see toimib

Kuidas see töötab
Kuidas see töötab
Kuidas see töötab
Kuidas see töötab

Olgu, ma tahan teile anda üksikasjalikumat teavet selle kohta, kuidas tarkvara töötab.

Tarkvara koosneb mõnest teenusest. Igal teenusel on oma moodulid. (Teenust võib pidada klassiks ja selle mooduleid meetoditeks). Iga moodulit võib pidada käivitatavaks objektiks. Niisiis, meie tarkvara koosneb mõnest käivitatavast objektist.

Siin on meil mõned teenused ja alamteenused või nende moodulid:

  • Gmail

    Lugemata sõnumid

  • Ilm

    • Praegune temperatuur
    • Täna seisukord
    • Täna madal / kõrge
    • Homme Tingimus
    • Homme madal / kõrge
    • Sademete prognoos
    • Päikesetõus Päikeseloojang
  • Aeg

    • Praegune aeg
    • Tänane kuupäev
  • Sünd ja surm

    • Maailma sünd
    • Maailma surm

Seal on ümmargune järjekord, mis hoiab mooduleid. Me nimetame seda operatsioonijärjekorraks. Ütlesin, et iga moodul on käivitatav objekt. Niisiis, kui vajutate seadme nupule, vaatab see toimingute järjekorda ja käivitab järgmise mooduli (või objekti).

Veebipõhises kasutajaliideses saate redigeerida operatsioonijärjekorra liikmeid, mida ma hiljem selgitan. Praegu toon teile näite. Kaaluge praegust toimingute järjekorda järgmiselt:

JÄRJE (lugemata sõnumid | Sademete prognoos | Praegune aeg)

Kui vajutate nuppu, tuleb lugemata sõnumid käivitada.

JÄRJE (lugemata sõnumid | Sademete prognoos | Praegune aeg)

Niisiis kasutab seade teiega rääkimiseks kogutud andmeid (siin on teie lugemata sõnumite arv, mis on võetud Google'i e -posti API voost). Aga kuidas? Siin ütleb NodeMCU MP3 -moodulile, millal ta peaks mängima, millist MP3 -tükki sisuka lause tegemiseks. Selle saavutamiseks olen kujundanud erinevad järjekorrad, taimerid ja algoritmid. (Kui olete c ++ mees ja teile meeldivad mikrokontrollerid, saate seda koodi ise uurida.)

Niisiis, kuulete, hakkab seade rääkima: teie Gmaili postkastis on 4 lugemata kirja.

Kui vajutate uuesti nuppu, järgmine moodul on sademete prognoos, mida tuleks käsitleda.

JÄRJE (lugemata sõnumid | Sademete prognoos | Praegune aeg)

Niisiis, kuulete midagi sellist: Ärge unustage oma vihmavarju, homme on vihmane. Ja nii edasi … Veel üks lahe asi: mõne mooduli (nt sademete prognoos) puhul võite oodata juhuslikke lauseid samade olekute kohta. Näiteks kui homme on sademeid ja sajab vihma, mitte lund, võite oodata "homme on vihma võimalus", "tooge oma päikesepaiste, homme on vihmane", "tut, tut, tundub homseks vihmane" või…

Kuidas saame iga teenuse kohta erinevaid andmeid?

  • Gmail

    Lugemata sõnumid Google'il on võimas API, mille kaudu pääsete juurde selle erinevatele teenustele, sealhulgas Gmailile. Kuid turvalisuse huvides vajate erinevaid autentimis- ja autoriseerimismeetodeid, näiteks OAuth. ESP8266 pole nii võimas erinevate keeruliste räsialgoritmide käitamiseks. Niisiis kasutasin Gmaili postkasti avamiseks vanemat ja lihtsat sisselogimistehnoloogiat. RSS -i lugejad saavad kasutada ka Google Atomi voogu. Saadame gmaili voole juurdepääsu saamiseks HTTP -taotluse ja selle vastus on XML -vormingus. Seega loendame lugemata sõnumite arvu ja kasutame seda oma programmis

  • Erineva ilmateabe saamiseks kasutame Yahoo Weather API -d. Hiljuti, nagu Google, on Yahoo muutnud oma Weather API -d, nii et peate oma andmetele juurdepääsemiseks kasutama OAuth -standardeid. Kahjuks ei saa ESP8266 oma keerukusega hakkama, seega kasutame probleemi lahendamiseks nippi. Selle asemel, et otse Yahoo Weather API -le juurde pääseda, saadame oma taotluse serveri kohandatud faili. Meie fail saab andmeid Yahoo Weatherilt ja saadab need meile lihtsalt.

    • Homme tingimus ütleb teile, kas homme on soojem või külmem kui täna või kui pole mõistlikku temperatuuri muutust. Selle saavutamiseks võrdleme "täna madal / kõrge" ja "homme madal / kõrge". Programmi raamatukogu failis saate kontrollida, kuidas ma selle algoritmi kirjutasin ja kuidas see töötab.
    • Sadeprognoos Kui vaatate Yahoo ilmateavet, näete tabelit Seisukoodid. Nagu öeldakse, kasutatakse vastuses praeguste tingimuste kirjeldamiseks tingimuste koode. Kasutame homseid seisundikoode ja nende tähendusi, et teada saada, kas tuleb sademeid ja kas sajab vihma või lund.
  • TimeNTP tähistab Network Time Protocol. See on võrguprotokoll arvutisüsteemide vahelise kella sünkroonimiseks. Kuna meil on juurdepääs Internetile, kasutame NTP -serverist aja hankimiseks NTP -klienti ja sünkroonime selle ESP8266 sisemise taimeriga (nagu see, mida kasutate millis (), kui olete Arduino mees).
  • Sünd ja surm Arvutame sündide ja surmade arvu päeva algusest (tänu NTP kliendile on päeva algusest sekundite arvu saamine lihtne). Kasutasin ökoloogiast maailma sündimust ja suremust.

Samm: seadistage tarkvara

Seadistage tarkvara
Seadistage tarkvara

Kasutame oma programmi NodeMCU -sse üleslaadimiseks Arduino IDE -d. Uusima Arduino IDE saate alla laadida ja installida nende ametlikult saidilt:

Enne alustamist peate seadistama Arduino IDE Nodemcu jaoks. Ma ei ütle teile siin samme, sest see võib teemast välja minna. Kuid võite järgida selle suurepärase juhendi samme ja selgitusi.

Meie programmil on mõned raamatukogusõltuvused. Mis on tarkvarasõltuvus?

Sõltuvus on lai tarkvaratehnoloogia mõiste, mida kasutatakse, kui viidatakse mõnele teisele tarkvarale.

Siin on nimekiri Arduino raamatukogudest, mis peavad teie arvutis olema isikliku abistaja programmi koostamiseks:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Saate need ükshaaval alla laadida nende Githubi lehelt, seejärel ekstraktida zip -failid Arduino raamatukogu kataloogi. Selle tee teie süsteemis on: C: / Users [teie-kasutajanimi] Documents / Arduino

Kirjutasin kogu, et hoida kood puhtana ja vältida keerukust. Laadige alla fail PersonalAssistant-Library.zip ja ekstraktige see Arduino raamatukogu kataloogi. Täpselt nagu see, mida te varem nende kolme raamatukogu jaoks tegite.

YahooWeather.php fail

Kuna ESP8266 ei ole räsialgoritmide täitmiseks piisavalt võimas, ei saa me seda kasutada otse OAuth -standarditel põhinevate HTTP -päringute saatmiseks Yahoo Weather API -le. Niisiis, kasutame faili oma seadme ja Yahoo Weather API vahel. Saate alla laadida faili YahooWeather.zip, ekstraktida selle ja panna faili YahooWeather.php veebiserverisse. Näiteks kui teie domeen on example.com ja panete faili api kataloogi, saab api lõpp -punktist example.com/api/YahooWeather.php. Sellele lõpp -punktile saadate ilmateabe päringuid.

Programmi visand ja FFS (Flash -failisüsteem)

Teie NodeMCU plaadil on andmete salvestamiseks 4 MB välkfailisüsteem. Niisiis, kui meil see on, siis miks mitte seda kasutada?

Mäletate, kui ütlesin, et meie seadmel on kaks kasutajaliidest? Selle üksildase nupu kõrval on meie teine kasutajaliides lihtne veebipõhine rakendus. Selle rakendusega saate toimingute järjekorda manipuleerida, lubades / keelates iga mooduli, muutes teenuse seadeid või seadme konfiguratsiooni, näiteks määrates WiFi SSID ja parooli. Salvestame kõik need failid NodeMCU välkfailisüsteemi ja käivitame kerge veebiserveri, et käsitleda nende veebibrauseri kasutajate päringuid.

Konfiguratsioonifaili redigeerimine

Laadige alla fail PersonalAssistant-Sketch.zip ja ekstraktige see kuhugi arvutisse. Avage fail config.json, mis asub:

PersonalAssistant/data/config.json

Võite kasutada mis tahes teksti- või koodiredaktorit, näiteks märkmik, märkmik ++, Atom jne. Fail on json -andmestruktuur, seega on see inimestele loetav võtme / väärtuse paar ja saate seda hõlpsalt muuta. Saate neid välju muuta:

  • Gmail

    • kasutajanimi: teie Gmaili kasutajanimi koos @gmail.com
    • parool: teie Gmaili parool
  • Ilm

    • woeid: asukoht, mille kohta soovite ilmateavet saada. WOEID (Where On Earth IDentifier) on viitenumber, mida Yahoo kasutab asukoha määramiseks. Sellel lingil saate otsida WOEID -i asukohti.
    • api: see on API lõpp -punkt. Link teie failile yahooweather.php.
    • appId, ConsumerKey ja ConsumerSecret: Yahoo Weather API -le juurdepääsemiseks peate looma projekti Yahoo arendajate lehel. See annab teile tarbijavõtme ja saladuse, mida on vaja API kasutamiseks. Alustamiseks külastage Yahoo Weather Developer lehte ja looge rakendus.
  • Ajavöönd

    ajavöönd: sisestage ajavöönd vastavalt oma asukohale. See võib olla positiivne või negatiivne ujuvarv ja selle ühik on tund

  • WiFi

    • ssid: teie võrgu SSID.
    • parool: teie võrgu parool. NodeMCU kasutab teie WiFi -võrguga ühenduse loomiseks ssid -i ja parooli.

Programmi visandi ja FFS -i andmete üleslaadimine

Ühendage NodeMCU arvutiga mikro-USB-USB-kaabli abil.

Nüüd avage fail PersonalAssistant.ino, mis asub:

PersonalAssistant/PersonalAssistant.ino

Valige Arduino IDE jaotises Tööriistad> Tahvel NodeMCU 1.0 (ESP-12E moodul). Valige menüüst Tööriistad> Pordi õige port. See esindab teie NodeMCU -d.

Nüüd valige Tools> ESP8266 Sketch Data Upload, see laadib andmekausta sisu üles ESP8266 -sse. Oodake mõni hetk, kuni see on lõpetatud. Seejärel valige Eskiis> Laadi üles või programmi üleslaadimise alustamiseks lihtsalt vajutage klaviatuuri Ctrl + U nuppe. Oodake, kuni näete teadet „üleslaadimine on tehtud”.

Samm: seadistage Micro SD -kaart

MP3 -failide salvestamiseks kasutame mikro -SD -kaarti. See on NodeMCU, kes otsustab, millist faili millal esitada, ja DFPlayer Mini aitab tal MP3 -failide dekodeerimisega sisuka lause teha.

Vajalike häältekstide genereerimiseks kasutasin Amazon Pollyt.

Amazon Polly on teenus, mis muudab teksti elutruuks kõneks, võimaldades teil luua rääkivaid rakendusi ja luua täiesti uusi kõnet toetavate toodete kategooriaid.

Ärge unustage, et meie seade ei kasuta dünaamiliseks rääkimiseks Amazon Polly API -d. Meil on mõned staatilised võrguühenduseta häälteosed ja neid kokku pannes teeme erinevaid lauseid.

Kasutasin seda saiti MP3 -failide genereerimiseks. Häälväljundiks valisin USA inglise / Salli.

Ainus asi, mida peate tegema, on alla laadida microSD.zip -fail ja seejärel see oma micro SD -kaardile ekstraktida. See sisaldab kõiki 78 vajalikku MP3 -faili.

Tõenäoliselt on teie Micro SD -kaart kaasas ja adapter. Saate sisestada oma Micro SD kaardi selle adapterisse ja kinnitada sülearvuti külge. Kui teie arvuti ei toeta kaardilugemist, peaksite kasutama välist kaardilugejat.

Samm: skeemide koostamine ja trükkplaadi seadistamine

Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine
Skeemide koostamine ja trükkplaadi seadistamine

Olen skeemi ja tahvli kujundanud Autodeski EAGLE abil. Olen lisanud nii SCH kui ka BRD failid faili PersonalAssistant-PCB.zip. Saate seda hõlpsalt redigeerida ja / või saata kohalikule või veebipõhisele trükkplaaditootjale, et tahvlit tellida ja hankida.

Veel üks asi, mida mainida, on see, et ESP8266 töötab 3,3 V, samas kui DFPlayer Mini töötab 5 V pingega. Kuna need kaks moodulit peavad omavahel rääkima jadaliidese kaudu, ei saa me 5v väljundit otse 3.3V sisendiga ühendada, kuna see kahjustab teie ESP8266. Seega vajame taseme teisendamist 5v -lt 3.3v -le. Selle teostamiseks kasutame signaaldioodi ja 10K takistit.

6. samm: jootke see üles

Jootke see üles
Jootke see üles
Jootke see üles
Jootke see üles

Plaadi kokkupanek on üsna lihtne, kuna teil on mõned komponendid. Järgige 5. etapis skemaatilist ja tahvli kujundust, et iga üksus hõlpsalt õigesse kohta asetada.

Alustasin takistite ja dioodi jootmisega, kuna need on väikesed. Nende ebavajalikke sabasid saate traatlõikuri abil hõlpsalt lõigata. Ülalt alla peaksite panema 1K, 10K ja 10K takisti.

Te ei pea jootma kõiki NodeMCU ja DFPlayer Mini kontakte PCB -l. Piisab tihvtide jootmisest rajaga.

Ärge unustage, et kõlaritel ja dioodidel on polaarsus. Teie komponentides on üks kõlar ja üks diood. Dioodi puhul on musta joonega külg selle negatiivne külg või katood.

7. samm: ümbris

Aedik
Aedik
Aedik
Aedik
Aedik
Aedik

Otsustasin kujundada väljamõeldud korpuse loominguliselt. Olin disaini ajal mures selle imeliku kuju pärast, kuid lõpuks polnud see nii hull. Vähemalt näeb see välja nagu tiibklaver ja tundub suurepäraselt käes hoides!

Klassikalise kuue näoga kuue kujuga kuupmeetri asemel kujundasin mitmekihilise korpuse. Alt ülespoole asetseb iga kiht oma alumisele kihile. (Panin neile nimeks L0 kuni L6, alt üles)

Värvid ja paksus

Tugevaima kontrasti loomiseks võite kasutada kahte täiendavat värvi, näiteks:

  • Punane ja roheline
  • Sinine ja oranž
  • Kollane ja lilla
  • Sinine ja kollane

Ülemise kihi jaoks kasutasin selget akrüüli, nii et näete seadme sees.

Ülemise kihi (kiht-6) paksus peaks olema 2 mm. Teiste kihtide (kiht-0 kuni kiht-5) paksus peaks olema 4 mm. Kui soovite kasutada 2,8 mm akrüülkilpi, nagu ma tegin, pole probleemi. Kuid nihke jaoks peate kihist 1 ja kihist 3 lõikama kaks seeriat.

Korpuse kokkupanekuks alustage alumisest kihist (L0). Pange plaat sellele, kasutage lühemaid polte ja pingutage seda mutrite abil. Nüüd saate kihi-0 alt kinnitada neli pikemat polti. Midagi torni sarnast. Siis saate hõlpsalt jätkata teiste kihtide paigaldamist neile.

Märkus. Alumise kihi ja plaadi vahel saate kasutada valikulist pesurit.

Olen lisanud ka infotekste seadmeportide (toide ja mikro -SD -kaart) kohta. Ülemise kihi peal saate kasutada lasergraveerimist.

Olen lisanud nii CDR kui ka DXF failivorminguid. Saate need alla laadida, redigeerida ja kasutada laserlõikamiseks.

8. samm: juurdepääs veebipõhisele kasutajaliidesele

Juurdepääs veebipõhisele kasutajaliidesele
Juurdepääs veebipõhisele kasutajaliidesele

Lülitage seade sisse

Saate seadme sisse lülitada, kasutades mis tahes 5 -voldist mikro -USB -laadijat. Ühendage mikro -USB seadme toitepordiga, mis on teie NodeMCU mikro -USB -sisend.

Juurdepääs User Interace'ile

Kas mäletate, et laadisime mõned failid üles ESP8266 Flash -failisüsteemi? On aeg seda kasutada. Kõik, mida vajate, on võrgus ESP8266 määratud IP -aadress. IP -aadressi leidmiseks on palju erinevaid viise. Loetlen mõned neist siia:

  • Ruuteri konfiguratsioonilehel, kuskil DHCP rendilehel, näete võrgus nende seadmete IP -aadresside loendit.
  • Microsoft Windowsis ja macOS -is saate terminalis käivitada selliseid käske nagu arp -a.
  • Androidis ja iOS -is saate kasutada selliseid rakendusi nagu Fing. (Android / iOS)
  • Linuxis saate kasutada selliseid tööriistu nagu Nmap.

Pärast IP -aadressi leidmist avage see oma veebibrauseri abil. Saate toimingute järjekorda muuta, lubades / keelates mooduleid.

9. samm: lõplikud mõtted

See projekt oli väga aeganõudev ja energiamahukas. Saate isiklikule assistendile lisada palju rohkem võimalusi. Olen jätnud mõned osad edaspidiseks arenguks avatuks. Mõned osad nagu:

  1. Lisage rohkem teenuseid ja mooduleid. Näiteks numbrite lugemine, täringute veeretamine või mündi pööramine.
  2. Pärast võrku ühendamist saab seade IP -aadressi rääkida. Selle valiku saate lisada IP -aadressi leidmise protsessi lihtsustamiseks.
  3. Lisades võimaluse muuta WiFi seadeid veebipõhisel juhtpaneelil.
  4. Teenuse seadete muutmise võimaluse lisamine veebipõhisele juhtpaneelile. (Nende html -vorm on valmis. Peate taotlusi käsitlema)
  5. Lisage rohkem häälvastuseid seadme erinevatesse olekutesse.
  6. Veebipõhise juhtpaneeli sisselogimislehe lisamine. Seda saate teha, lisades / võrreldes küpsiseid HTTP päise ridadel.

Ja mulle meeldiks teada teie ideid selle õpetatava kohta.:)

Soovitan: