Sadržaj:
- Korak 1: Potrebni dijelovi
- Korak 2: Kako to radi
- Korak 3: Postavljanje softvera
- Korak 4: Postavite Micro SD karticu
- Korak 5: Dizajniranje shema i postavljanje PCB -a
- Korak 6: Lemite ga
- Korak 7: Ograđivanje
- Korak 8: Pristup web -korisničkom sučelju
- Korak 9: Završne misli
Video: Osobni asistent: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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
- 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
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
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
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
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
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
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:
- Dodavanje više usluga i modula. Na primjer, brojanje brojeva, bacanje kocke ili bacanje novčića.
- 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.
- Dodavanje mogućnosti promjene WiFi postavki na upravljačkoj ploči na webu.
- Dodavanje mogućnosti promjene postavki usluge na web -upravljačkoj ploči. (Njihov html obrazac je spreman. Morate obrađivati zahtjeve)
- Dodavanje više glasovnih odgovora u različitim stanjima uređaja.
- 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:
Osobni asistent - Inteligentni stroj: 7 koraka
Osobni asistent - Intelektualni stroj: U današnjem užurbanom svijetu nemamo dovoljno vremena da ostanemo povezani s vanjskim, ali i društvenim svijetom. Možda nemate dovoljno vremena za svakodnevne obavijesti o aktualnostima, kao i o društvenom svijetu, poput facebooka ili gmaila
Mona, moj osobni asistent Animatronski robot: 4 koraka
Mona, moj osobni asistent Animatronski robot: Mona, to je AI robot koji koristi watson Ai u pozadini, kada sam započeo ovaj projekt izgleda puno komplicirano nego što sam mislio, ali kako sam počeo raditi na tome, ibm kognitivni satovi (upišite se ovdje) pomogli su ja puno, ako želiš možeš pohađati razred n
Osobni asistent temeljen na Arduinu. (BHAI): 4 koraka
Osobni asistent temeljen na Arduinu. (BHAI): Uvod: Napravljeno u suradnji s Kundan Singh ThakurOvo je moje prvo uputstvo pa vas molim da se upustite u sve greške koje sam možda napravio. Također ostavite komentare u slučaju bilo kakvih nedoumica ili problema. Osobni pomoćnik zasnovan na arduinu sličan je vašem djevu
Osobni trener engleskog jezika - AI glasovni asistent: 15 koraka
Osobni trener engleskog jezika - AI glasovni pomoćnik: Ovaj projekt pomoći će studentima koji se pripremaju za bilo koji jezični ispit, gdje se mogu obučiti interakcijom sa Snips AI
SEER- Inteligentni osobni asistent temeljen na Internetu: 12 koraka (sa slikama)
SEER-Inteligentni osobni pomoćnik temeljen na Internetu: Seer je uređaj koji će igrati pojačanu ulogu na području pametnih domova i automatizacije. To je u osnovi aplikacija interneta stvari. SEER je 9-inčni bežični zvučnik bez ruku. Raspberry Pi 3 modela B s integriranom kamerom