Satura rādītājs:

Personīgais asistents: 9 soļi (ar attēliem)
Personīgais asistents: 9 soļi (ar attēliem)

Video: Personīgais asistents: 9 soļi (ar attēliem)

Video: Personīgais asistents: 9 soļi (ar attēliem)
Video: Mākslas filma ,,Mīlestība atnāk klusu." 2024, Novembris
Anonim
Image
Image
Personīgais asistents
Personīgais asistents

Šajā pamācībā es jums parādīšu, kā jūs varat izmantot ESP8266 spēku, radošumu programmatūras projektēšanā un programmēšanā, lai radītu kaut ko foršu un izglītojošu.

Es to nosaucu par personīgo asistentu, jo tas ir kabatas izmēra, runā ar jums un var sniegt jums noderīgu un (protams) nelielu noderīgu (bet tomēr foršu) informāciju par laika apstākļiem, laiku un datumu, Gmail ziņojumiem, dzīvām dzemdībām un mirstība utt.

Es centos saglabāt dizainu vienkāršu. Ierīcei ir divas lietotāja saskarnes. Fiziska spiedpoga un tīmekļa lietojumprogramma, kurai lietotājs var piekļūt, izmantojot tīmekļa pārlūkprogrammu, un mainīt ierīces iestatījumus un konfigurāciju.

Kā tas darbojas? Šī projekta galvenās sastāvdaļas ir mikrokontrolleris un mūzikas atskaņotāja modulis. Mūsu mikrokontrolleris (NodeMCU) izmanto WiFi tehnoloģiju, lai izveidotu savienojumu ar piekļuves punktu ar interneta pieslēgumu; tā var iegūt nepieciešamos datus, apstrādāt to un paziņo mūzikas atskaņotājam (DFPlayer Mini), kad, kurš MP3 fails ir jāspēlē.

Pagaidām tas ir viss, kas jums jāzina. Turpmākajās darbībās es sniegšu sīkāku informāciju, tāpēc neuztraucieties.

1. darbība. Nepieciešamās detaļas

Nepieciešamas detaļas
Nepieciešamas detaļas
  • NodeMCU ESP-12E (CP2102 USB-sērijas interfeiss)
  • DFPlayer Mini
  • SPST īslaicīga spiedpoga
  • 8 omu 2 vatu skaļrunis
  • Micro SD karte (jums būs nepieciešami daži kilobaiti, tāpēc ietilpībai nav nozīmes)
  • Skrūves un uzgriežņi

    • M3 uzgriežņi (x6)
    • M3 skrūves - 23 mm (x4)
    • M3 skrūves - 15 mm (x2)
  • 1N4148 Signāla diode (x1)
  • Rezistori

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

Citas daļas:

  • PCB (prototipu varat pasūtīt tiešsaistē vai apmeklēt vietējo veikalu)
  • Lāzera griezuma akrila loksne

    • 2 mm biezas caurspīdīgas loksnes
    • 2,8 mm biezs divu dažādu krāsu loksnes (oranža un zaļa, sarkana un zaļa, tas ir jūsu ziņā, un krāsām nav nozīmes)
  • Jebkurš 5 voltu (vismaz) 1 ampēra mikro USB lādētājs (ierīces barošanai)

2. darbība. Kā tas darbojas

Kā tas strādā
Kā tas strādā
Kā tas strādā
Kā tas strādā

Labi, es vēlos sniegt jums sīkāku informāciju par programmatūras darbību.

Programmatūra sastāv no dažiem pakalpojumiem. Katram pakalpojumam ir savi moduļi. (Jūs varat uzskatīt pakalpojumu par klasi un tā moduļus par tā metodēm). Katru moduli var uzskatīt par izpildāmu objektu. Tātad, mūsu programmatūra sastāv no dažiem izpildāmiem objektiem.

Šeit mums ir daži pakalpojumi un apakšpakalpojumi vai to moduļi:

  • Gmail

    Nelasītas ziņas

  • Laikapstākļi

    • Pašreizējā temperatūra
    • Šodienas stāvoklis
    • Šodien zems / augsts
    • Rīt Stāvoklis
    • Rīt Zems / Augsts
    • Nokrišņu prognoze
    • Saullēkts saulriets
  • Laiks

    • Pašreizējais laiks
    • Šodienas datums
  • Dzimšana un nāve

    • Dzimšana pasaulē
    • Pasaules nāve

Ir apļveida rinda, kurā ir moduļi. Mēs to saucam par operāciju rindu. Es teicu, ka katrs modulis ir izpildāms objekts. Tātad, nospiežot ierīces spiedpogu, tā izskatās darbības rindā un izpilda nākamo moduli (vai objektu).

Jūs varat rediģēt darbības rindas dalībniekus tīmekļa lietotāja saskarnē, ko es paskaidrošu vēlāk. Pagaidām minēšu piemēru. Apsveriet pašreizējo darbību rindu šādi:

Rinda (nelasīti ziņojumi | Nokrišņu prognoze | Pašreizējais laiks)

Nospiežot spiedpogu, jāizpilda nelasītās ziņas.

Rinda (nelasīti ziņojumi | Nokrišņu prognoze | Pašreizējais laiks)

Tātad ierīce izmantos savāktos datus (šeit ir jūsu nelasīto ziņojumu skaits, kas tiek iegūts no Google pasta API plūsmas), lai ar jums runātu. Bet kā? Šeit NodeMCU pateiks MP3 modulim, kad tam vajadzētu atskaņot, kurš MP3 gabals ir nozīmīgs teikums. Lai to panāktu, esmu izstrādājis dažādas rindas, taimerus un algoritmus. (Ja esat c ++ puisis un jums patīk mikrokontrolleri, varat pats izpētīt kodu.)

Tātad, jūs dzirdēsit, ierīce sāk runāt: jūsu Gmail iesūtnē ir 4 nelasītas ziņas.

Nospiežot pogu vēlreiz, nākamais modulis būs nokrišņu prognoze, kas jārisina.

Rinda (nelasīti ziņojumi | Nokrišņu prognoze | Pašreizējais laiks)

Tātad, jūs dzirdēsit kaut ko līdzīgu: Neaizmirstiet savu lietussargu, rīt ir lietains. Un tā tālāk … Vēl viena forša lieta: dažiem moduļiem (piemēram, nokrišņu prognozei) jūs varat sagaidīt nejaušus teikumus tiem pašiem stāvokļiem. Piemēram, ja rīt ir nokrišņi un ir lietus, nevis sniegs, jūs varat sagaidīt "rīt lietus iespējama", "atnesiet savu sauli, rīt būs lietains", "tut, tut, izskatās kā rīt lietus", vai…

Kā mēs iegūstam dažādus datus par katru pakalpojumu?

  • Gmail

    Nelasīti ziņojumi Google ir spēcīga API, kas ļauj piekļūt dažādiem pakalpojumiem, tostarp Gmail. Drošības nolūkos jums ir vajadzīgas dažādas autentifikācijas un autorizācijas metodes, piemēram, OAuth. ESP8266 nav tik spēcīgs, lai palaistu dažādus sarežģītus jaukšanas algoritmus. Tātad, lai piekļūtu Gmail iesūtnei, es izmantoju vecāku un vienkāršu pierakstīšanās tehnoloģiju. Tieši Google Atom plūsmu var izmantot arī RSS lasītāji. Mēs nosūtām HTTP pieprasījumu, lai piekļūtu Gmail plūsmai, un tā atbilde ir XML formātā. Tātad, mēs saskaitām nelasīto ziņojumu skaitu un izmantojam to savā programmā

  • Mēs izmantojam Yahoo Weather API, lai iegūtu dažādu laika apstākļu informāciju. Nesen, tāpat kā Google, Yahoo ir mainījis laika apstākļu API, tāpēc, lai piekļūtu datiem, jums būs jāizmanto OAuth standarti. Diemžēl ESP8266 nevar tikt galā ar tās sarežģītību, tāpēc mēs izmantosim triku, lai atrisinātu problēmu. Tā vietā, lai tieši piekļūtu Yahoo Weather API, mēs nosūtīsim pieprasījumu uz pielāgotu failu serverī. Mūsu fails iegūst datus no Yahoo Weather un vienkārši nosūta tos mums.

    • Rītdienas nosacījums jums pateiks, vai rīt ir siltāks vai aukstāks nekā šodien, vai tur, ja nebūs saprātīgu temperatūras izmaiņu. Lai to panāktu, mēs salīdzinām "šodien zemu / augstu" ar "rīt zemu / augstu". Programmas bibliotēkas failā varat pārbaudīt, kā es uzrakstīju šo algoritmu un kā tas darbojas.
    • Nokrišņu prognoze Ja pārbaudāt Yahoo Weather dokumentāciju, varat redzēt tabulu Stāvokļa kodi. Kā teikts, atbildē tiek izmantoti nosacījumu kodi, lai aprakstītu pašreizējos apstākļus. Mēs izmantosim rītdienas nosacījumu kodus un to nozīmi, lai noskaidrotu, vai būs nokrišņi un vai ir lietus vai sniegs.
  • TimeNTP apzīmē tīkla laika protokolu. Tas ir tīkla protokols pulksteņa sinhronizācijai starp datorsistēmām. Tā kā mums ir piekļuve internetam, mēs izmantosim NTP klientu, lai iegūtu laiku no NTP servera, un sinhronizēsim to ar ESP8266 iekšējo taimeri (piemēram, to, kuru izmantojat ar milis (), ja esat Arduino puisis).
  • Mēs aprēķināsim dzimšanas un nāves gadījumu skaitu no dienas sākuma (pateicoties NTP klientam, ir viegli iegūt sekundes kopš dienas sākuma). Es izmantoju pasaules dzimstības un mirstības rādītājus no ekoloģijas.

3. darbība: iestatiet programmatūru

Iestatiet programmatūru
Iestatiet programmatūru

Mēs izmantosim Arduino IDE, lai augšupielādētu mūsu programmu NodeMCU. Jaunāko Arduino IDE varat lejupielādēt un instalēt no viņu oficiālās vietnes:

Pirms sākat, jums ir jāiestata Arduino IDE Nodemcu. Es šeit nestāstīšu soļus, jo tas varētu būt ārpus tēmas. Bet jūs varat sekot šīs lieliskās pamācības soļiem un skaidrojumiem.

Mūsu programmai ir dažas bibliotēkas atkarības. Kas ir programmatūras atkarība?

Atkarība ir plašs programmatūras inženierijas termins, ko izmanto, lai apzīmētu, kad programmatūras daļa balstās uz citu.

Šeit ir saraksts ar Arduino bibliotēkām, kas nepieciešamas jūsu datorā, lai varētu apkopot personīgā asistenta programmu:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Jūs varat tos lejupielādēt pa vienam no viņu Github lapas, pēc tam izvilkt zip failus Arduino bibliotēkas direktorijā. Tā ceļš jūsu sistēmā ir šāds: C: / Lietotāji [jūsu lietotājvārds] Dokumenti / Arduino

Es uzrakstīju bibliotēku, lai kods būtu tīrs un izvairītos no sarežģītības. Lejupielādējiet failu PersonalAssistant-Library.zip un izvelciet to Arduino bibliotēkas direktorijā. Tāpat kā tas, ko jūs iepriekš darījāt šīm trim bibliotēkām.

YahooWeather.php fails

Tā kā ESP8266 nav pietiekami jaudīgs, lai veiktu jaukšanas algoritmus, mēs nevaram to izmantot tieši, lai nosūtītu HTTP pieprasījumus uz Yahoo Weather API, pamatojoties uz OAuth standartiem. Tātad, mēs izmantosim failu starp mūsu ierīci un Yahoo Weather API. Jūs varat lejupielādēt failu YahooWeather.zip, izvilkt to un ievietot failu YahooWeather.php tīmekļa serverī. Piemēram, ja jūsu domēns ir example.com un jūs ievietojat failu api direktorijā, jūsu api parametrs kļūst par example.com/api/YahooWeather.php. Jūs nosūtīsit laika apstākļu datu pieprasījumus šim parametram.

Programmas skice un FFS (Flash failu sistēma)

Jūsu NodeMCU platei ir 4 MB flash failu sistēma datu glabāšanai. Tātad, kad mums tas ir, kāpēc to neizmantot?

Atcerieties, kad es teicu, ka mūsu ierīcei ir divas lietotāja saskarnes? Līdzās vientuļajai spiedpogai mūsu otrā lietotāja saskarne ir vienkārša tīmekļa lietojumprogramma. Izmantojot šo lietojumprogrammu, varat manipulēt ar darbību rindu, iespējojot / atspējojot katru moduli, mainot pakalpojuma iestatījumus vai ierīces konfigurāciju, piemēram, iestatot WiFi SSID un paroli. Mēs visus šos failus saglabāsim NodeMCU Flash failu sistēmā un darbināsim vieglu tīmekļa serveri, lai apstrādātu lietotāju pieprasījumus no viņu tīmekļa pārlūkprogrammas.

Konfigurācijas faila rediģēšana

Lejupielādējiet failu PersonalAssistant-Sketch.zip un izvelciet to kaut kur datorā. Atveriet failu config.json, kas atrodas:

PersonalAssistant/data/config.json

Jūs varat izmantot jebkuru teksta vai koda redaktoru, piemēram, piezīmju grāmatiņu, piezīmju grāmatiņu ++, Atom utt. Fails ir json datu struktūra, tāpēc tas ir cilvēka lasāms atslēgu / vērtību pāris, un jūs varat to viegli rediģēt. Varat mainīt šos laukus:

  • Gmail

    • lietotājvārds: jūsu Gmail lietotājvārds ar @gmail.com
    • parole: jūsu Gmail parole
  • Laikapstākļi

    • woeid: vieta, par kuru vēlaties saņemt informāciju par laika apstākļiem. WOEID (Where On Earth IDentifier) ir atsauces identifikators, ko Yahoo izmanto atrašanās vietas noteikšanai. Šajā saitē varat veikt meklēšanu WOEID atrašanās vietās.
    • api: tas ir API galapunkts. Saite uz jūsu yahooweather.php failu.
    • appId, patērētājaKey un patērētāja noslēpums: lai piekļūtu Yahoo Weather API, jums ir jāizveido projekts Yahoo izstrādātāju lapā. Tādējādi jūs iegūsit patērētāja atslēgu un noslēpumu, kas nepieciešami API lietošanai. Lai sāktu darbu, apmeklējiet Yahoo Weather Developer lapu un izveidojiet APP.
  • Laika zona

    laika josla: ievadiet laika joslu, pamatojoties uz jūsu atrašanās vietu. Tas var būt pozitīvs vai negatīvs pludiņa skaitlis, un tā vienība ir stundas

  • Bezvadu internets

    • ssid: jūsu tīkla SSID.
    • parole: jūsu tīkla parole. NodeMCU izmantos ssid un paroli, lai izveidotu savienojumu ar jūsu wifi tīklu.

Programmas skices un FFS datu augšupielāde

Savienojiet NodeMCU ar datoru, izmantojot mikro-USB kabeli.

Tagad atveriet failu PersonalAssistant.ino, kas atrodas:

PersonalAssistant/PersonalAssistant.ino

Arduino IDE sadaļā Rīki> Padome atlasiet NodeMCU 1.0 (ESP-12E modulis). Izvēlnē Rīki> Port atlasiet pareizo portu. Tas attēlo jūsu NodeMCU.

Tagad izvēlieties Rīki> ESP8266 Sketch Data Upload, lai augšupielādētu datu mapes saturu ESP8266. Pagaidiet dažus mirkļus, līdz tas ir pabeigts. Pēc tam atlasiet Skice> Augšupielādēt vai vienkārši nospiediet tastatūras taustiņus Ctrl + U, lai sāktu programmas augšupielādi. Pagaidiet, līdz tiek parādīts ziņojums "augšupielāde ir pabeigta".

4. darbība: iestatiet Micro SD karti

MP3 failu gabalu glabāšanai mēs izmantojam micro SD karti. Tas ir NodeMCU, kurš izlemj, kurš fails kurā laikā jāatskaņo, un DFPlayer Mini palīdz viņam izveidot jēgpilnu teikumu, dekodējot MP3 failus.

Es izmantoju Amazon Polly, lai radītu vajadzīgos balss gabalus.

Amazon Polly ir pakalpojums, kas pārvērš tekstu reālistiskā runā, ļaujot jums izveidot lietojumprogrammas, kas runā, un veidot pilnīgi jaunas runas iespējotu produktu kategorijas.

Neaizmirstiet, ka mūsu ierīce neizmanto Amazon Polly API, lai runātu dinamiski. Mums ir daži statiski bezsaistes balss fragmenti, un, saliekot tos kopā, mēs veidojam dažādus teikumus.

Es izmantoju šo vietni, lai ģenerētu MP3 failus. Manis izvēlētā balss izvade bija ASV angļu valoda / Salli.

Vienīgais, kas jums jādara, ir lejupielādēt failu microSD.zip un pēc tam izvilkt to savā micro SD kartē. Tajā ir visi 78 nepieciešamie MP3 faili.

Iespējams, jūsu Micro SD karte ir komplektā ar adapteri. Micro SD karti var ievietot adapterī un pievienot klēpjdatoram. Ja jūsu dators neatbalsta karšu lasīšanu, jums jāizmanto ārējs karšu lasītājs.

5. darbība: shēmu izstrāde un PCB iestatīšana

Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana
Shēmu izstrāde un PCB uzstādīšana

Es esmu izstrādājis shēmu un dēli, izmantojot Autodesk EAGLE. Esmu ievietojis gan SCH, gan BRD failus PersonalAssistant-PCB.zip. Jūs varat viegli rediģēt un / vai nosūtīt to vietējam vai tiešsaistes PCB ražotājam, lai pasūtītu un saņemtu savu dēli.

Vēl viena lieta, kas jāpiemin, ir tas, ka ESP8266 darbojas ar 3,3 V spriegumu, bet DFPlayer Mini darbojas ar 5 V spriegumu. Tā kā šiem diviem moduļiem ir jārunā viens ar otru, izmantojot seriālo interfeisu, mēs nevaram tieši savienot 5v izeju ar 3.3v ieeju, jo tas bojā jūsu ESP8266. Tātad mums būs nepieciešama līmeņa pārveidošana no 5v uz 3.3v. Lai to izdarītu, mēs izmantojam signāla diodu un 10K rezistoru.

6. solis: pielodējiet to

Lodējiet to
Lodējiet to
Lodējiet to
Lodējiet to

Plāksnes salikšana ir diezgan vienkārša, jo jums ir dažas sastāvdaļas. Izpildiet shematisko un tāfeles dizainu 5. darbībā, lai viegli novietotu katru vienumu pareizajā vietā.

Es sāku ar rezistoru un diodes lodēšanu, jo tie ir mazi. Jūs varat viegli sagriezt nevajadzīgās astes, izmantojot stiepļu griezēju. No augšas uz leju jums vajadzētu ievietot 1K, 10K un 10K rezistoru.

Jums nav jālodē visas NodeMCU un DFPlayer Mini tapas uz PCB. Pietiek ar tapas lodēšanu ar ceļu.

Neaizmirstiet, ka skaļruņiem un diodēm ir polaritāte. Komponentos ir viens skaļrunis un viena diode. Diodes puse ar melnu līniju ir tās negatīvā puse vai katods.

7. solis: korpuss

Iežogojums
Iežogojums
Iežogojums
Iežogojums
Iežogojums
Iežogojums

Es nolēmu radoši veidot izsmalcinātu korpusu. Es biju noraizējies par tā dīvaino formu dizaina laikā, bet beigās tas nebija tik slikti. Vismaz tas izskatās kā flīģelis un lieliski jūtas turot rokā!

Klasiskās sešstūra kubiskās formas ar 6 sejām vietā es izveidoju daudzslāņu korpusu. No apakšas uz augšu katrs slānis atrodas uz tā apakšējā slāņa. (Es tos nosaucu no L0 līdz L6, no apakšas uz augšu)

Krāsas un biezums

Lai iegūtu spēcīgāko kontrastu, varat izmantot divas papildu krāsas, piemēram:

  • Sarkans un zaļš
  • Zils un oranžs
  • Dzeltena un violeta
  • Zils un dzeltens

Augšējam slānim es izmantoju caurspīdīgu akrilu, lai jūs varētu redzēt ierīces iekšpusi.

Augšējā slāņa (slāņa-6) biezumam jābūt 2 mm. Pārējo slāņu biezumam (slānis-0 līdz slānis-5) jābūt 4 mm. Ja vēlaties izmantot 2,8 mm akrila vairogu, kā es to darīju, nav problēmu. Bet nobīdei jums ir jāizgriež divas sērijas no 1. un 3. slāņa.

Lai saliktu korpusu, sāciet no apakšējā slāņa (L0). Uzlieciet uz tā dēli, izmantojiet īsākās skrūves un pievelciet to, izmantojot uzgriežņus. Tagad jūs varat piestiprināt četras garākas skrūves no slāņa apakšas-0. Kaut kas līdzīgs tornim. Tad jūs varat viegli turpināt citu slāņu uzstādīšanu uz tiem.

Piezīme. Starp apakšējo slāni un plāksni varat izmantot papildu paplāksni.

Esmu pievienojis arī informācijas tekstus ierīces portiem (jauda un micro SD karte). Augšējā slānī varat izmantot gravējumu ar lāzeru.

Esmu iekļāvis gan CDR, gan DXF failu formātus. Jūs varat tos lejupielādēt, rediģēt un izmantot lāzera griešanai.

8. darbība. Piekļuve tīmekļa lietotāja saskarnei

Piekļuve tīmekļa lietotāja interfeisam
Piekļuve tīmekļa lietotāja interfeisam

Ieslēdziet ierīci

Ierīci var ieslēgt, izmantojot jebkuru 5V mikro USB lādētāju. Pievienojiet mikro USB ierīces barošanas portam, tas ir, NodeMCU mikro USB ieejai.

Piekļūstiet lietotāja interaktam

Vai atceraties, ka mēs augšupielādējām dažus failus ESP8266 Flash failu sistēmā? Ir pienācis laiks to izmantot. Viss, kas jums nepieciešams, ir IP adrese, kas tīklā ir piešķirta ESP8266. Ir daudz dažādu veidu, kā atrast IP adresi. Šeit es uzskaitīšu dažus no tiem:

  • Maršrutētāja konfigurācijas lapā, kaut kur DHCP nomas sarakstā, jūs varat redzēt ierīču sarakstu ar to IP adresēm jūsu tīklā.
  • Sistēmā Microsoft Windows un macOS terminālī varat palaist tādas komandas kā arp -a.
  • Operētājsistēmās Android un iOS varat izmantot tādas programmas kā Fing. (Android / iOS)
  • Operētājsistēmā Linux varat izmantot tādus rīkus kā Nmap.

Pēc IP adreses atrašanas atveriet to, izmantojot savu tīmekļa pārlūkprogrammu. Jūs varat manipulēt ar operāciju rindu, iespējojot / atspējojot moduļus.

9. solis: pēdējās domas

Šis projekts prasīja daudz laika un enerģijas. Personīgajam asistentam varat pievienot daudz vairāk iespēju. Esmu atstājis dažas daļas atvērtas turpmākai attīstībai. Dažas daļas, piemēram:

  1. Papildu pakalpojumu un moduļu pievienošana. Piemēram, skaitot skaitļus, metot kauliņus vai metot monētu.
  2. Pēc savienojuma izveides ar ierīci ierīce var izrunāt IP adresi. Varat pievienot šo opciju, lai vienkāršotu IP adreses atrašanas procesu.
  3. Pievienojot iespēju mainīt WiFi iestatījumus tīmekļa vadības panelī.
  4. Pievienojot iespēju mainīt pakalpojuma iestatījumus tīmekļa vadības panelī. (Viņu html forma ir gatava. Jums ir jāapstrādā pieprasījumi)
  5. Papildu balss atbilžu pievienošana dažādos ierīces stāvokļos.
  6. Pieteikšanās lapas pievienošana tīmekļa vadības panelim. To var izdarīt, pievienojot / salīdzinot sīkfailus HTTP galvenes rindās.

Un es labprāt uzzinātu jūsu idejas par šo pamācību.:)

Ieteicams: