Sadržaj:

Osobni asistent: 9 koraka (sa slikama)
Osobni asistent: 9 koraka (sa slikama)

Video: Osobni asistent: 9 koraka (sa slikama)

Video: Osobni asistent: 9 koraka (sa slikama)
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Studeni
Anonim
Image
Image
Osobni pomoćnik
Osobni pomoćnik

U ovom uputstvu pokazat ću vam kako možete iskoristiti moć ESP8266, kreativnost u dizajnu softvera i programiranju, kako biste napravili nešto kul i edukativno.

Nazvao sam ga Osobni asistent, jer je džepne veličine, razgovara s vama i može vam dati neke korisne i (naravno) nekoliko nekorisnih (ali još uvijek cool) informacija o vremenu, vremenu i datumu, gmail porukama, živorođenju i stope smrtnosti itd.

Pokušao sam dizajn učiniti jednostavnim. Uređaj ima dva korisnička sučelja. Fizički gumb i web -aplikacija koja mu može pristupiti putem web -preglednika i promijeniti postavke i konfiguraciju uređaja.

Kako to funkcionira? Glavne komponente ovog projekta su mikrokontroler i modul glazbenog playera. Naš mikrokontroler (NodeMCU) koristi WiFi tehnologiju za povezivanje s pristupnom točkom s internetskom vezom; tako da može dobiti potrebne podatke, obraditi ih i reći glazbenom playeru (DFPlayer Mini) kada, koju MP3 datoteku treba reproducirati.

Za sada je to sve što trebate znati. U sljedećim koracima ću vam dati detaljnije informacije, stoga ne brinite.

Korak 1: Potrebni dijelovi

Potrebni dijelovi
Potrebni dijelovi
  • NodeMCU ESP-12E (CP2102 USB-na-serijsko sučelje)
  • DFPlayer Mini
  • SPST trenutni gumb
  • 8 Ohm 2 W zvučnik
  • Micro SD kartica (trebat će vam nekoliko kilobajta pa kapacitet nije bitan)
  • Matice i vijci

    • M3 matice (x6)
    • M3 vijci - 23 mm (x4)
    • M3 vijci - 15 mm (x2)
  • 1N4148 Signalna dioda (x1)
  • Otpornici

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

Ostali dijelovi:

  • PCB (možete naručiti prototip na mreži ili posjetiti lokalnu trgovinu)
  • Laserski izrezan akrilni lim

    • Prozirni lim debljine 2 mm
    • 2,8 mm debljine dvije različite boje (narančasta i zelena, crvena i zelena, na vama je i boje nisu bitne)
  • Bilo koji 5 volti (najmanje) 1 amper mikro USB punjač (za uključivanje uređaja)

Korak 2: Kako to radi

Kako radi
Kako radi
Kako radi
Kako radi

U redu, želim vam dati detaljnije informacije o tome kako softver radi.

Softver se sastoji od nekih usluga. Svaka usluga ima svoje module. (Uslugu možete smatrati klasom, a njene module svojim metodama). Svaki se modul može smatrati izvršnim objektom. Dakle, naš softver sastoji se od nekih izvršnih objekata.

Ovdje imamo neke usluge i podusluge ili njihove module:

  • Gmail

    Nepročitane poruke

  • Vrijeme

    • Trenutna temperatura
    • Današnje stanje
    • Danas nisko / visoko
    • Sutrašnje stanje
    • Sutra nisko / visoko
    • Prognoza oborina
    • Izlazak / zalazak sunca
  • Vrijeme

    • Trenutno vrijeme
    • Trenutni datum
  • Rođenje i smrt

    • Svjetsko rođenje
    • Svjetska smrt

Postoji kružni red koji u sebi drži module. Zovemo ga Operacijski red. Rekao sam, svaki modul je izvršni objekt. Dakle, kada pritisnete gumb na uređaju, on gleda u red operacija i izvršava sljedeći modul (ili objekt).

Možete urediti članove operacijskog reda na web sučelju koje ću objasniti kasnije. Za sada ću vam dati primjer. Zamislite trenutni red rada ovako:

QUEUE (nepročitane poruke | Prognoza oborina | Trenutno vrijeme)

Pritisnete li gumb, nepročitane poruke trebaju se izvršiti.

QUEUE (nepročitane poruke | Prognoza oborina | Trenutno vrijeme)

Dakle, uređaj će koristiti prikupljene podatke (ovdje, broj vaših nepročitanih poruka koje se preuzimaju iz google mail API -ja) za razgovor s vama. Ali kako? Ovdje će NodeMCU reći MP3 modulu kada bi trebao svirati koji MP3 komad kako bi napravio smislenu rečenicu. Da bih to postigao, osmislio sam različite redove čekanja, mjerače vremena i algoritme. (Ako ste c ++ tip i volite mikrokontrolere, kôd možete sami proučiti.)

Dakle, čut ćete, uređaj počinje govoriti: Imate 4 nepročitane poruke u pristigloj pošti na Gmailu.

Ponovno pritisnete gumb, sljedeći će modul biti Prognoza oborina koje treba obraditi.

QUEUE (nepročitane poruke | Prognoza oborina | Trenutno vrijeme)

Dakle, čut ćete nešto poput: Ne zaboravi kišobran, sutra je kišovito. I tako dalje … Još jedna kul stvar: za neke module (poput predviđanja oborina) možete očekivati nasumične rečenice za ista stanja. Na primjer, ako sutra ima oborina i pada kiša, a ne snijeg, možete očekivati "sutra postoji mogućnost za kišu", "donesite svoje sunce, sutra je kišovito", "tut, tut, izgleda kao kiša za sutra", ili …

Kako dobivamo različite podatke za svaku uslugu?

  • Gmail

    Nepročitane porukeGoogle ima snažan API kojem možete pristupiti različitim uslugama, uključujući Gmail. No, iz sigurnosnih razloga, trebate različite metode provjere autentičnosti i autorizacije poput OAuth. ESP8266 nije toliko moćan za pokretanje različitih složenih algoritama raspršivanja. Dakle, koristio sam stariju i jednostavnu tehnologiju prijavljivanja za pristup gmail inboxu. Google čitači RSS -a mogu koristiti i Google Atom Feed. Šaljemo HTTP zahtjev za pristup gmail feedu i njegov odgovor je u XML formatu. Dakle, brojimo nepročitane poruke i koristimo ih u svom programu

  • VrijemeKoristimo Yahoo Weather API za dobivanje različitih vremenskih podataka. Nedavno je, baš kao i Google, Yahoo promijenio Weather API, pa ćete za pristup svojim podacima morati koristiti OAuth standarde. Nažalost, ESP8266 ne može podnijeti njegovu složenost, pa ćemo se riješiti problema pomoću trika. Umjesto izravnog pristupa Yahoo Weather API -ju, poslat ćemo vaš zahtjev u prilagođenu datoteku na poslužitelju. Naša datoteka dobiva podatke iz Yahoo Weather -a i jednostavno nam ih šalje.

    • Sutrašnje stanjeTomorrow Condition će vam reći je li sutra toplije ili hladnije nego danas, ili će doći do osjetne promjene temperature. Uspoređujemo "danas nisko / visoko" s "sutra nisko / visoko" kako bismo to postigli. Možete provjeriti kako sam napisao ovaj algoritam i kako radi u datoteci programske knjižnice.
    • Prognoza oborina Ako provjerite Yahoo Weather dokumentaciju, možete vidjeti tablicu kodova stanja. Kako se kaže, kodovi uvjeta koriste se u odgovoru za opis trenutnih uvjeta. Koristit ćemo sutrašnje kodove uvjeta i njihovo značenje kako bismo saznali hoće li biti oborina i je li kiša ili snijeg.
  • TimeNTP označava Network Time Protocol. To je mrežni protokol za sinkronizaciju sata između računalnih sustava. Budući da imamo pristup internetu, koristit ćemo NTP klijenta za dobivanje vremena s NTP poslužitelja i sinkronizirati ga preko internog mjerača vremena ESP8266 (poput onog koji koristite s millis () ako ste Arduino tip).
  • Rođenje i smrt Računat ćemo broj rođenih i umrlih od početka dana (zahvaljujući NTP klijentu, jednostavno je dobiti broj sekundi od početka dana). Koristio sam svjetske stope nataliteta i smrtnosti iz ekologije.

Korak 3: Postavljanje softvera

Postavljanje softvera
Postavljanje softvera

Koristit ćemo Arduino IDE za učitavanje našeg programa na NodeMCU. Najnoviji Arduino IDE možete preuzeti i instalirati s njihove službene stranice:

Prije početka morate postaviti Arduino IDE za Nodemcu. Ovdje vam neću reći korake jer bi to moglo biti izvan teme. Ali možete slijediti korake i objašnjenja ove izvrsne upute.

Naš program ima neke knjižnične ovisnosti. Što je ovisnost o softveru?

Ovisnost je širok pojam softverskog inženjeringa koji se koristi kada se neki softver oslanja na drugi.

Evo popisa Arduino knjižnica koje morate imati na računalu da biste mogli sastaviti program Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Možete ih preuzeti jedan po jedan s njihove stranice Github, a zatim izdvojiti zip datoteke u direktorij knjižnice Arduino. Njegov put na vašem sustavu je: C: / Users [vaše korisničko ime] Documents / Arduino

Napisao sam knjižnicu kako bi kôd bio čist i izbjegao složenost. Preuzmite datoteku PersonalAssistant-Library.zip i raspakirajte je u direktorij knjižnice Arduino. Baš kao što ste prije radili za te tri knjižnice.

YahooWeather.php datoteka

Budući da ESP8266 nije dovoljno moćan za izvođenje hash algoritama, ne možemo ga koristiti izravno za slanje HTTP zahtjeva Yahoo Weather API -ju, na temelju OAuth standarda. Dakle, koristit ćemo datoteku između našeg uređaja i Yahoo Weather API -ja. Možete preuzeti datoteku YahooWeather.zip, izdvojiti je i staviti datoteku YahooWeather.php na web poslužitelj. Na primjer, ako je vaša domena example.com, a datoteku stavite u api direktorij, vaša api krajnja točka postaje example.com/api/YahooWeather.php Ovoj ćete krajnjoj točki slati zahtjeve za vremenske podatke.

Skica programa i FFS (Flash File System)

Vaša NodeMCU ploča ima flash datotečni sustav od 4 MB za pohranu podataka. Pa, kad ga imamo, zašto ga ne bismo koristili?

Sjećate se kad sam rekao da naš uređaj ima dva korisnička sučelja? Osim tog usamljenog gumba, naše drugo korisničko sučelje je jednostavna web aplikacija. Pomoću ove aplikacije možete upravljati redom rada omogućavanjem / onemogućavanjem svakog modula, promjenom postavki usluge ili konfiguracije uređaja, poput postavljanja WiFi SSID -a i lozinke. Sve ćemo te datoteke pohraniti u NodeMCU Flash File System i pokrenuti lagani web poslužitelj za obradu korisničkih zahtjeva iz njihovog web preglednika.

Uređivanje datoteke konfiguracije

Preuzmite datoteku PersonalAssistant-Sketch.zip i izdvojite je negdje na računalu. Otvorite datoteku config.json koja se nalazi:

PersonalAssistant/data/config.json

Možete koristiti bilo koji uređivač teksta ili koda, poput bilježnice, bilježnice ++, Atoma itd. Datoteka je json struktura podataka, tako da je par čitljiv ključ / vrijednost koji se može čitati i možete je jednostavno urediti. Ova polja možete promijeniti:

  • Gmail

    • korisničko ime: vaše korisničko ime za Gmail sa svojim @gmail.com
    • lozinka: vaša lozinka za Gmail
  • Vrijeme

    • woeid: lokacija za koju želite primati vremenske podatke. WOEID (Where On Earth ID Identifier) je referentni identifikator koji Yahoo koristi za lokaciju. Na ovoj poveznici možete izvršiti pretraživanje WOEID lokacija.
    • api: to je krajnja točka API -ja. Veza na vašu datoteku yahooweather.php.
    • appId, customerKey i ConsumerSecret: za pristup Yahoo Weather API -ju morate stvoriti projekt na stranici Yahoo programera. To će vam dati korisnički ključ i tajnu koji su potrebni za korištenje API -ja. Za početak posjetite stranicu Yahoo Weather Developer i izradite aplikaciju.
  • Vremenska zona

    vremenska zona: unesite vremensku zonu na temelju svoje lokacije. To može biti pozitivan ili negativan broj s plutanjem, a njegova jedinica je sati

  • WiFi

    • ssid: SSID vaše mreže.
    • lozinka: vaša mrežna lozinka. NodeMCU će koristiti ssid i lozinku za povezivanje s vašom WiFi mrežom.

Prijenos skice programa i podataka FFS -a

Spojite NodeMCU na računalo pomoću mikro USB-kabela na USB.

Sada otvorite datoteku PersonalAssistant.ino koja se nalazi:

PersonalAssistant/PersonalAssistant.ino

U Arduino IDE-u iz Alati> Ploča odaberite NodeMCU 1.0 (Modul ESP-12E). Iz Alati> Port odaberite ispravan port. Predstavlja vaš NodeMCU.

Sada odaberite Alati> ESP8266 Prijenos podataka skice, to će prenijeti sadržaj mape s podacima u ESP8266. Pričekajte nekoliko trenutaka dok ne završi. Zatim odaberite Sketch> Upload ili jednostavno pritisnite tipke Ctrl + U na tipkovnici da biste započeli s prijenosom programa. Pričekajte dok ne vidite poruku "upload je gotov".

Korak 4: Postavite Micro SD karticu

Koristimo mikro SD karticu za spremanje dijelova MP3 datoteka. NodeMCU odlučuje koja bi se datoteka trebala reproducirati u koje vrijeme, a DFPlayer Mini mu pomaže u sastavljanju smislene rečenice dekodiranjem MP3 datoteka.

Koristio sam Amazon Polly za generiranje glasovnih komada koji su mi bili potrebni.

Amazon Polly usluga je koja tekst pretvara u govor realan, omogućujući vam stvaranje aplikacija koje govore i izgradnju potpuno novih kategorija proizvoda s omogućenim govorom.

Ne zaboravite, naš uređaj ne koristi Amazon Polly API za dinamički govor. Imamo neke statične izvanmrežne glasovne komade i sastavljajući ih sastavljamo različite rečenice.

Koristio sam ovu web stranicu za generiranje MP3 datoteka. Glas koji sam odabrao bio je američki engleski / salli.

Jedino što trebate učiniti je preuzeti datoteku microSD.zip, a zatim je ekstrahirati na mikro SD karticu. Sadrži svih 78 potrebnih MP3 datoteka.

Vjerojatno vaša Micro SD kartica dolazi s adapterom. Možete umetnuti Micro SD karticu u adapter i pričvrstiti je na prijenosno računalo. Ako vaše računalo ne podržava čitanje kartica, tada biste trebali koristiti vanjski čitač kartica.

Korak 5: Dizajniranje shema i postavljanje PCB -a

Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a
Dizajniranje shema i postavljanje PCB -a

Dizajnirao sam shemu i ploču koristeći Autodesk EAGLE. Uključio sam i SCH i BRD datoteke u PersonalAssistant-PCB.zip. Možete ga jednostavno urediti i / ili poslati lokalnom ili mrežnom proizvođaču PCB -a da naruči i dobije vašu ploču.

Još jedna stvar koju treba spomenuti je da ESP8266 radi na 3.3V, dok DFPlayer Mini radi na 5V. Budući da ova dva modula moraju međusobno razgovarati putem serijskog sučelja, ne možemo izravno spojiti 5v izlaz na 3.3v ulaz jer oštećuje vaš ESP8266. Dakle, trebat će nam konverzija razine od 5v do 3.3v. Za to koristimo signalnu diodu i 10K otpornik.

Korak 6: Lemite ga

Spajite ga
Spajite ga
Spajite ga
Spajite ga

Sastavljanje ploče prilično je jednostavno jer imate nekoliko komponenti. Slijedite sheme i dizajn ploče u koraku 5 da biste lako stavili svaku stavku na svoje mjesto.

Počeo sam lemljenjem otpornika i diode, jer su mali. Njihove nepotrebne repove lako možete rezati rezačem žice. Odozgo prema dolje, trebali biste staviti 1K, 10K i 10K otpornik.

Ne morate lemiti sve pinove NodeMCU i DFPlayer Mini na PCB -u. Lemljenje igala s puteljkom dovoljno je.

Ne zaboravite, zvučnici i diode imaju polaritet. U komponentama imate jedan zvučnik i jednu diodu. Za diodu je strana s crnom crtom njezina negativna strana ili katoda.

Korak 7: Ograđivanje

Kućište
Kućište
Kućište
Kućište
Kućište
Kućište

Odlučio sam dizajnirati elegantno kućište na kreativan način. Bio sam zabrinut zbog njegovog čudnog oblika tijekom dizajna, ali na kraju, nije bilo tako loše. Barem izgleda kao klavir i izvrsno se osjeća u ruci!

Umjesto klasičnog kubičnog oblika šesterokuta sa 6 lica, dizajnirao sam višeslojno kućište. Svaki sloj odozdo prema gore leži na donjem sloju. (Dao sam im imena L0 do L6, odozdo prema gore)

Boje i debljina

Možete upotrijebiti dvije komplementarne boje za najjači kontrast, poput:

  • Crvena i Zelena
  • Plava i narančasta
  • Žuta i Ljubičasta
  • Plava i Žuta

Koristio sam prozirni akril za gornji sloj, tako da možete vidjeti unutrašnjost uređaja.

Debljina gornjeg sloja (sloj-6) trebala bi biti 2 mm. Debljina ostalih slojeva (sloj-0 do sloja-5) trebala bi biti 4 mm. Ako želite koristiti akrilni štit od 2,8 mm, kao što sam ja učinio, nema problema. Ali morate izrezati dvije serije iz sloja 1 i sloja 3 za pomak.

Za sastavljanje kućišta počnite od donjeg sloja (L0). Stavite ploču na nju, upotrijebite kraće vijke i pričvrstite je maticama. Sada možete pričvrstiti četiri duža vijka s dna sloja-0. Nešto poput tornja. Tada možete jednostavno nastaviti postavljati druge slojeve na njih.

Napomena: Možete koristiti opcijsku podlošku između donjeg sloja i ploče.

Također sam dodao info tekstove za priključke uređaja (napajanje i mikro SD kartica). Na gornjem sloju možete koristiti lasersko graviranje.

Uključio sam i CDR i DXF formate datoteka. Možete ih preuzeti, urediti i koristiti za lasersko rezanje.

Korak 8: Pristup web -korisničkom sučelju

Pristup web -korisničkom sučelju
Pristup web -korisničkom sučelju

Uključite uređaj

Uređaj možete uključiti bilo kojim 5V mikro USB punjačem. Priključite mikro USB na priključak za napajanje uređaja, to jest mikro USB ulaz na vašem NodeMCU.

Pristupite korisničkoj interakciji

Sjećate li se da smo neke datoteke prenijeli u ESP8266 Flash datotečni sustav? Vrijeme je da ga iskoristite. Sve što trebate je IP adresa dodijeljena ESP8266 na mreži. Postoji mnogo različitih načina za pronalaženje IP adrese. Ovdje ću navesti neke od njih:

  • Na stranici sa konfiguracijom usmjerivača, negdje na popisu zakupa DHCP -a, možete vidjeti popis uređaja s njihovim IP adresama u vašoj mreži.
  • U sustavu Microsoft Windows i macOS možete pokrenuti naredbe poput arp -a u terminalu.
  • U Androidu i iOS -u možete koristiti aplikacije poput Finga. (Android / iOS)
  • U Linuxu možete koristiti alate poput Nmapa.

Nakon što pronađete IP adresu, otvorite je pomoću web preglednika. Redom rada možete manipulirati omogućavanjem / onemogućavanjem modula.

Korak 9: Završne misli

Ovaj je projekt oduzimao mnogo vremena i energije. Osobnom asistentu možete dodati još mnogo opcija. Ostavio sam neke dijelove otvorene za budući razvoj. Neki dijelovi poput:

  1. Dodavanje više usluga i modula. Na primjer, brojanje brojeva, bacanje kocke ili bacanje novčića.
  2. Nakon povezivanja na mrežu, uređaj može izgovoriti IP adresu. Ovu opciju možete dodati kako biste pojednostavili postupak pronalaženja IP adrese.
  3. Dodavanje mogućnosti promjene WiFi postavki na upravljačkoj ploči na webu.
  4. Dodavanje mogućnosti promjene postavki usluge na web -upravljačkoj ploči. (Njihov html obrazac je spreman. Morate obrađivati zahtjeve)
  5. Dodavanje više glasovnih odgovora u različitim stanjima uređaja.
  6. Dodavanje stranice za prijavu na web -upravljačku ploču. To možete učiniti dodavanjem / usporedbom kolačića u retke HTTP zaglavlja.

Volio bih znati vaše ideje o ovom uputstvu.:)

Preporučeni: