Sadržaj:

Lični asistent: 9 koraka (sa slikama)
Lični asistent: 9 koraka (sa slikama)

Video: Lični asistent: 9 koraka (sa slikama)

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

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

Nazvao sam ga Personal Assistant, 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.

Trudio sam se da dizajn bude jednostavan. Uređaj ima dva korisnička interfejsa. Fizičko dugme i web zasnovana aplikacija, kojoj korisnik može pristupiti putem web preglednika i promijeniti postavke i konfiguraciju uređaja.

Kako funkcionira? Glavne komponente ovog projekta su mikrokontroler i modul muzičkog 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 muzičkom 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-serijsko sučelje)
  • DFPlayer Mini
  • SPST trenutno dugme
  • 8 Ohm 2 W zvučnik
  • Mikro 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 delovi:

  • 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 napajanje uređaja)

Korak 2: Kako to funkcionira

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 njenim metodama). Svaki modul se može smatrati izvršnim objektom. Dakle, naš softver se sastoji od nekih izvršnih objekata.

Ovdje imamo neke usluge i podusluge ili njihove module:

  • Gmail

    Nepročitane poruke

  • Weather

    • Trenutna temperatura
    • Današnje stanje
    • Danas Nisko / Visoko
    • Uslov sutra
    • Sutra nisko / visoko
    • Prognoza padavina
    • Izlazak / zalazak sunca
  • Vrijeme

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

    • Svjetsko rođenje
    • Svjetska smrt

Postoji kružni red koji u sebi sadrž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 u web korisničkom sučelju što ću kasnije objasniti. Za sada ću vam dati primjer. Zamislite trenutni red rada ovako:

QUEUE (Nepročitane poruke | Prognoza padavina | Trenutno vrijeme)

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

QUEUE (Nepročitane poruke | Prognoza padavina | Trenutno vrijeme)

Dakle, uređaj će koristiti prikupljene podatke (ovdje, broj vaših nepročitanih poruka koje se preuzimaju iz google mail API -ja) da razgovara s vama. Ali kako? Ovdje će NodeMCU reći MP3 modulu kada bi trebao reproducirati koji MP3 komad da napravi smislenu rečenicu. Da bih to postigao, dizajnirao sam različite redove, tajmere 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 svom sandučiću za Gmail.

Ponovo pritisnete dugme, sljedeći modul će biti Prognoza padavina koju treba obraditi.

QUEUE (Nepročitane poruke | Prognoza padavina | Trenutno vrijeme)

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

Kako dobivamo različite podatke za svaku uslugu?

  • Gmail

    Nepročitane porukeGoogle ima moćan API kojem možete pristupiti različitim uslugama, uključujući Gmail. Ali, iz sigurnosnih razloga, trebate različite metode provjere autentičnosti i autorizacije poput OAuth. ESP8266 nije toliko moćan za pokretanje različitih kompliciranih hash algoritama. Stoga sam koristio 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 našem programu

  • WeatherKoristimo 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 za rješavanje problema upotrijebiti trik. Umjesto da direktno pristupamo Yahoo Weather API -ju, poslat ćemo zahtjev u prilagođenu datoteku na serveru. Naša datoteka dobiva podatke iz Yahoo Weather -a i jednostavno nam ih šalje.

    • Sutrašnje stanjeSutrašnje stanje će vam reći je li sutra toplije ili hladnije nego danas, ili će doći do osjetne promjene temperature. Upoređujemo "danas nisko / visoko" sa "sutra nisko / visoko" da bismo to postigli. Možete provjeriti kako sam napisao ovaj algoritam i kako radi u datoteci programske biblioteke.
    • Prognoza padavina Ako provjerite Yahoo Weather dokumentaciju, možete vidjeti tablicu kodova stanja. Kako se kaže, kodovi uslova se koriste u odgovoru za opis trenutnih uslova. Koristit ćemo sutrašnje kodove uvjeta i njihovo značenje da saznamo hoće li biti padavina i je li kiša ili snijeg.
  • TimeNTP označava Network Time Protocol. To je mrežni protokol za sinhronizaciju sata između računarskih sistema. Budući da imamo pristup internetu, koristit ćemo NTP klijenta za dobijanje vremena s NTP servera i sinkronizirati ga preko internog tajmera 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, lako je dobiti broj sekundi od početka dana). Koristio sam svjetske stope nataliteta i mortaliteta iz ekologije.

Korak 3: Postavite softver

Postavite softver
Postavite softver

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

Prije početka morate postaviti Arduino IDE za Nodemcu. Neću vam ovdje govoriti o koracima jer bi to moglo biti izvan teme. Ali možete slijediti korake i objašnjenja ovog izvrsnog uputstva.

Naš program ima neke bibliotečke zavisnosti. Šta je ovisnost o softveru?

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

Evo popisa Arduino biblioteka koje morate imati na računaru da biste mogli sastaviti program Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Možete ih preuzeti jedan po jedan sa njihove stranice Github, a zatim izdvojiti zip datoteke u direktorij biblioteke Arduino. Njegova putanja na vašem sistemu je: C: / Users [vaše korisničko ime] Documents / Arduino

Napisao sam biblioteku kako bih održavao kôd čistim i izbjegao složenost. Preuzmite datoteku PersonalAssistant-Library.zip i ekstrahirajte je u direktorij biblioteke Arduino. Baš kao što ste ranije radili za te tri biblioteke.

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 server. 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 krajnjoj točki ćete slati zahtjeve za vremenske podatke.

Skica programa i FFS (Flash File System)

Vaša NodeMCU ploča ima flash datotečni sistem od 4 MB za skladištenje podataka. Pa, kad ga imamo, zašto ga ne bismo iskoristili?

Sjećate li se kada 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 manipulirati redom rada omogućavanjem / onemogućavanjem svakog modula, promjenom postavki usluge ili konfiguracije uređaja, poput postavljanja WiFi SSID -a i lozinke. Sve ove datoteke ćemo pohraniti u NodeMCU Flash File System i pokrenuti lagani web server za rukovanje zahtjevima korisnika iz njihovog web preglednika.

Uređivanje datoteke za konfiguraciju

Preuzmite datoteku PersonalAssistant-Sketch.zip i izdvojite je negdje na računaru. 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 to par čitljiv ključ / vrijednost za čitanje ljudi i možete je lako 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
  • Weather

    • woeid: lokacija za koju želite primati vremenske informacije. WOEID (Where On Earth ID Identifier) je referentni identifikator koji Yahoo koristi za lokaciju. Na ovoj vezi možete izvršiti pretraživanje na WOEID lokacijama.
    • api: to je krajnja tačka API -ja. Veza do vaše datoteke yahooweather.php.
    • appId, ConsumerKey i ConsumerSecret: da biste pristupili Yahoo Weather API -ju, morate stvoriti projekt na stranici Yahoo programera. Ovo ć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 kreirajte aplikaciju.
  • Vremenska zona

    vremenska zona: unesite vremensku zonu na osnovu vaše 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 na vašu WiFi mrežu.

Učitavanje skice programa i podataka FFS -a

Povežite NodeMCU sa računarom pomoću mikro USB kabla 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 (ESP-12E modul). Iz Alati> Port odaberite odgovarajući port. Predstavlja vaš NodeMCU.

Sada odaberite Alati> ESP8266 Sketch Data Upload, to će prenijeti sadržaj mape s podacima u ESP8266. Sačekajte nekoliko trenutaka dok se ne završi. Zatim odaberite Sketch> Upload ili jednostavno pritisnite tipke Ctrl + U na tipkovnici za početak otpremanja programa. Pričekajte dok ne vidite poruku "upload je gotov".

Korak 4: Postavite Micro SD karticu

Za pohranjivanje MP3 datoteka koristimo mikro SD karticu. NodeMCU odlučuje koju datoteku treba 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 je usluga koja pretvara tekst u govor koji je realan, omogućavajući vam da kreirate aplikacije koje govore i da izgradite potpuno nove kategorije 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 microSD.zip datoteku, a zatim je ekstrahirati na svoju micro SD karticu. Sadrži svih 78 potrebnih MP3 datoteka.

Vjerovatno 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š računar ne podržava čitanje kartica, trebali biste 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 nivoa od 5v do 3.3v. Za to koristimo signalnu diodu i 10K otpornik.

Korak 6: Lemite ga

Solder It Up
Solder It Up
Solder It Up
Solder It Up

Sastavljanje ploče je prilično 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 postaviti 1K, 10K i 10K otpornik.

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

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

Korak 7: Ograđivanje

The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure

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

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

Boje i debljina

Možete upotrijebiti dvije komplementarne boje za stvaranje najvećeg kontrasta, poput:

  • Crvena i Zelena
  • Plava i narandž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) treba biti 2 mm. Debljina ostalih slojeva (sloj-0 do sloja-5) treba 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 od 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 kule. Tada možete lako nastaviti postavljati druge slojeve na njih.

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

Dodao sam i info tekstove za portove 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 korisničkom sučelju na webu

Pristup korisničkom sučelju na webu
Pristup korisničkom sučelju na webu

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 sistem? 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 DHCP Lease List, možete vidjeti popis uređaja s njihovim IP adresama u vašoj mreži.
  • U Microsoft Windows -u i macOS -u 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 Nmap -a.

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

Korak 9: Završne misli

Ovaj projekt je 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 da pojednostavite proces pronalaženja IP adrese.
  3. Dodavanje mogućnosti za promjenu WiFi postavki na upravljačkoj ploči zasnovanoj na webu.
  4. Dodavanje mogućnosti promjene postavki usluge na upravljačkoj ploči zasnovanoj na webu. (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 kontrolnu ploču. To možete učiniti dodavanjem / upoređivanjem kolačića u HTTP linijama zaglavlja.

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

Preporučuje se: