Cuprins:

Asistent personal: 9 pași (cu imagini)
Asistent personal: 9 pași (cu imagini)

Video: Asistent personal: 9 pași (cu imagini)

Video: Asistent personal: 9 pași (cu imagini)
Video: Cum sa treci de contul de Google daca ai uitat parola FRP A10 A105 2024, Noiembrie
Anonim
Image
Image
Asistent personal
Asistent personal

În acest instructable, vă voi arăta cum puteți folosi puterea ESP8266, creativitatea în proiectarea și programarea software-ului, pentru a face ceva cool și educativ.

L-am numit Asistent personal, pentru că are dimensiunea de buzunar, vorbește cu tine și îți poate oferi câteva informații utile și (desigur) câteva informații nefolositoare (dar totuși interesante) despre vreme, oră și dată, mesaje Gmail, naștere live și ratele de deces etc.

Am încercat să păstrez designul simplu. Dispozitivul are două interfețe utilizator. Un buton fizic și o aplicație bazată pe web, respectivul utilizator îl poate accesa folosind un browser web și poate modifica setările și configurația dispozitivului.

Principalele componente ale acestui proiect sunt un microcontroler și un modul Music Player. Microcontrolerul nostru (NodeMCU) utilizează tehnologia WiFi pentru a se conecta la un punct de acces cu conexiune la internet; astfel încât să poată obține datele necesare, să le proceseze și să îi spună Music Player (DFPlayer Mini) când fișierul MP3 ar trebui redat.

Deocamdată, asta e tot ce trebuie să știi. Vă voi oferi informații mai detaliate în pașii următori, așa că nu vă faceți griji.

Pasul 1: Piese necesare

Piese necesare
Piese necesare
  • NodeMCU ESP-12E (interfață USB-la-serie CP2102)
  • DFPlayer Mini
  • Buton de apăsare momentan SPST
  • Difuzor de 8 ohmi, 2 wați
  • Card Micro SD (veți avea nevoie de câțiva kilobiți, deci capacitatea nu contează)
  • Nuci și șuruburi

    • M3 Nuts (x6)
    • Șuruburi M3 - 23 mm (x4)
    • Șuruburi M3 - 15 mm (x2)
  • 1N4148 Diodă de semnal (x1)
  • Rezistențe

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

Alte părți:

  • PCB (puteți comanda un prototip online sau puteți vizita un magazin local)
  • Foi acrilice tăiate cu laser

    • Foaie transparentă de 2 mm grosime
    • 2,8 mm grosime două foi diferite de culori (portocaliu și verde, roșu și verde, depinde de dvs. și culorile nu contează)
  • Orice încărcător micro USB de 5 volți (cel puțin) 1 amper (pentru a porni dispozitivul)

Pasul 2: Cum funcționează

Cum functioneaza
Cum functioneaza
Cum functioneaza
Cum functioneaza

Bine, vreau să vă ofer informații mai detaliate despre modul în care funcționează software-ul.

Software-ul constă din unele Servicii. Fiecare serviciu are propriile module. (Puteți considera un serviciu ca o clasă și modulele sale ca metode). Fiecare modul poate fi considerat un obiect executabil. Deci, software-ul nostru constă din câteva obiecte executabile.

Aici avem câteva servicii și sub-servicii sau modulele acestora:

  • Gmail

    Mesaje necitite

  • Vreme

    • Temperatura curentă
    • Condiția de azi
    • Astăzi Scăzut / Înalt
    • Condiția de mâine
    • Mâine Minim / Înalt
    • Prognoza precipitațiilor
    • Rasarit Apus
  • Timp

    • Ora curentă
    • Data curenta
  • Nașterea și moartea
    • Nașterea mondială
    • Moarte mondială

Există o coadă circulară care conține module în ea. O numim Operațiune Coadă. Am spus, fiecare modul este un obiect executabil. Deci, când apăsați butonul de pe dispozitiv, acesta se uită în coada de funcționare și execută următorul modul (sau obiect).

Puteți edita membrii cozii de funcționare în interfața de utilizare bazată pe web, pe care o voi explica mai târziu. Deocamdată vă voi da un exemplu. Luați în considerare coada operației curente astfel:

COZĂ (Mesaje necitite | Prognoza precipitațiilor | Ora curentă)

Apăsați butonul, Mesajele necitite ar trebui executate.

COZĂ (Mesaje necitite | Prognoza precipitațiilor | Ora curentă)

Deci, dispozitivul va folosi datele pe care le-a colectat (aici, numărul mesajelor dvs. necitite care sunt preluate din fluxul API Google mail) pentru a vă vorbi. Dar cum? Aici, NodeMCU va spune modulului MP3, când ar trebui să redea ce piesă MP3 să facă o propoziție semnificativă. Pentru a realiza acest lucru, am proiectat diferite cozi, temporizatoare și algoritmi. (Dacă sunteți un tip c ++ și vă plac microcontrolerele, puteți studia singur codul.)

Deci, veți auzi, dispozitivul începe să vorbească: aveți 4 mesaje necitite în căsuța de e-mail Gmail.

Apăsați din nou butonul, următorul modul va fi Precipitation Forecast care ar trebui să fie gestionat.

COZĂ (Mesaje necitite | Prognoza precipitațiilor | Ora curentă)

Deci, veți auzi, ceva de genul: Nu vă uitați umbrela, mâine este ploios. Și așa mai departe … Încă un lucru interesant: pentru unele module (cum ar fi prognoza precipitațiilor), vă puteți aștepta la propoziții aleatorii pentru aceleași stări. De exemplu, dacă mâine sunt precipitații și e ploaie, și nu zăpadă, te poți aștepta la „există mâine ploaie”, „adu-ți propriul soare, mâine plouă”, „tut, tut, arată ca ploaie pentru mâine” sau …

Cum obținem date diferite pentru fiecare serviciu?

  • Gmail

    Mesaje necitite Google are un API puternic pe care îl puteți accesa diferitele sale servicii, inclusiv Gmail. Dar, din motive de securitate, aveți nevoie de diferite metode de autentificare și autorizare, cum ar fi OAuth. ESP8266 nu este atât de puternic pentru a rula diferiți algoritmi hash complicați. Așadar, am folosit o tehnologie de conectare mai veche și simplă pentru a accesa căsuța de e-mail Gmail. Google Atom Feed poate fi utilizat și de cititorii RSS. Trimitem o solicitare HTTP pentru a accesa fluxul Gmail și răspunsul său este în format XML. Deci, numărăm numărul de mesaje necitite și îl folosim în programul nostru

  • Vremea Folosim Yahoo Weather API pentru a obține informații meteo diferite. Recent, la fel ca Google, Yahoo și-a schimbat API-ul Weather, deci va trebui să utilizați standardele OAuth pentru a accesa datele sale. Din păcate, ESP8266 nu poate face față complexității sale, așa că vom folosi un truc pentru a rezolva problema. În loc să accesăm direct Yahoo Weather API, vom trimite solicitarea noastră către un fișier personalizat de pe un server. Fișierul nostru primește date de la Yahoo Weather și pur și simplu ni le trimite.

    • Condiția de mâine Vă va spune dacă mâine este mai cald sau mai rece decât astăzi sau dacă nu va exista o schimbare sensibilă a temperaturii. Comparăm „astăzi scăzut / înalt” cu „mâine scăzut / înalt” pentru a realiza acest lucru. Puteți verifica cum am scris acest algoritm și cum funcționează în fișierul bibliotecii de programe.
    • Prognoza precipitațiilor Dacă verificați documentația Yahoo Weather, puteți vedea tabelul Coduri de condiții. După cum se spune, codurile de condiții sunt utilizate în răspuns pentru a descrie condițiile actuale. Vom folosi mâine codurile de condiții și semnificațiile acestora pentru a afla dacă vor fi precipitații și dacă este ploaie sau zăpadă.
  • TimeNTP înseamnă Network Time Protocol. Este un protocol de rețea pentru sincronizarea ceasului între sistemele informatice. Deoarece avem acces la Internet, vom folosi un client NTP pentru a obține timp de la un server NTP și îl vom sincroniza cu temporizatorul intern ESP8266 (cum ar fi cel pe care îl utilizați cu milis () dacă sunteți un tip Arduino).
  • Naștere și deces Vom calcula numărul de nașteri și decese de la începutul zilei (mulțumită clientului NTP, este simplu să obțineți numărul de secunde de la începutul zilei). Am folosit natalitatea și mortalitatea din ecologie.

Pasul 3: Configurați software-ul

Configurați software-ul
Configurați software-ul

Vom folosi Arduino IDE pentru a încărca programul nostru pe NodeMCU. Puteți descărca și instala cel mai recent IDE Arduino de pe site-ul lor oficial:

Înainte de a începe, trebuie să configurați Arduino IDE pentru Nodemcu. Nu vă voi spune pașii de aici, pentru că ar putea fi în afara subiectului. Dar puteți urma pașii și explicațiile acestui excelent instructabil.

Programul nostru are unele dependențe de bibliotecă. Ce este o dependență de software?

Dependența este un termen larg de inginerie software folosit pentru a se referi atunci când un software se bazează pe altul.

Iată o listă a bibliotecilor Arduino pe care trebuie să le aveți pe computer pentru a putea compila programul Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Puteți să le descărcați unul câte unul din pagina lor Github, apoi să extrageți fișierele zip în directorul bibliotecii Arduino. Calea sa în sistemul dvs. este: C: / Users [numele dvs. de utilizator] Documents / Arduino

Am scris o bibliotecă pentru a păstra codul curat și a evita complexitatea. Descărcați fișierul PersonalAssistant-Library.zip și extrageți-l în directorul bibliotecii Arduino. La fel ca ceea ce ai făcut pentru acele trei biblioteci înainte.

Fișier YahooWeather.php

Deoarece ESP8266 nu este suficient de puternic pentru a efectua algoritmi hash, nu îl putem folosi direct pentru a trimite cereri HTTP către Yahoo Weather API, pe baza standardelor OAuth. Deci, vom folosi un fișier între dispozitivul nostru și Yahoo Weather API. Puteți descărca fișierul YahooWeather.zip, extrageți-l și pune fișierul YahooWeather.php într-un server web. De exemplu, dacă domeniul dvs. este example.com și puneți fișierul în directorul api, punctul final al api devine example.com/api/YahooWeather.php Veți trimite solicitări de date meteo la acest punct final.

Schița programului și FFS (Flash File System)

Placa dvs. NodeMCU are un sistem de fișiere flash de 4 MB pentru stocarea datelor. Deci, când îl avem, de ce să nu-l folosim?

Vă amintiți când am spus că dispozitivul nostru are două interfețe utilizator? Pe lângă acel buton singuratic, a doua noastră interfață cu utilizatorul este o aplicație simplă bazată pe web. Cu această aplicație, puteți manipula coada de funcționare activând / dezactivând fiecare modul, schimbând setările serviciului sau configurația dispozitivului, cum ar fi setarea SSID WiFi și parola. Vom stoca toate aceste fișiere în NodeMCU Flash File System și vom rula un server web ușor pentru a gestiona solicitările utilizatorilor din browserul lor web.

Editarea fișierului de configurare

Descărcați fișierul PersonalAssistant-Sketch.zip și extrageți-l undeva în computer. Deschideți fișierul config.json care se află:

PersonalAssistant / data / config.json

Puteți utiliza orice editor de text sau cod, precum notepad, notepad ++, Atom, etc. Fișierul este o structură de date json, deci este o pereche cheie / valoare lizibilă de către om și o puteți edita cu ușurință. Puteți schimba aceste câmpuri:

  • Gmail

    • nume de utilizator: numele dvs. de utilizator Gmail cu @ gmail.com
    • parola: parola dvs. Gmail
  • Vreme

    • woeid: locația pentru care doriți să primiți informații despre vreme. WOEID (Where On Earth IDentifier) este un identificator de referință folosit de Yahoo pentru locație. Puteți efectua o căutare în locațiile WOEID din acest link.
    • api: este punctul final API. Link-ul către fișierul dvs. yahooweather.php.
    • appId, consumerKey și consumerSecret: pentru a accesa Yahoo Weather API, trebuie să creați un proiect în pagina dezvoltatorilor Yahoo. Acest lucru vă va oferi o cheie de consum și un secret, care sunt necesare pentru utilizarea API-ului. Pentru a începe, accesați pagina Yahoo Weather Developer și creați o aplicație.
  • Fus orar

    fus orar: introduceți fusul orar în funcție de locația dvs. Poate fi un număr float pozitiv sau negativ, iar unitatea sa este de ore

  • Wifi

    • ssid: SSID al rețelei dvs.
    • parola: parola de rețea. NodeMCU va utiliza ssid și parolă pentru a vă conecta la rețeaua dvs. wifi.

Încărcarea schiței de programe și a datelor FFS

Conectați NodeMCU la computer, utilizând un cablu micro-USB la USB.

Acum deschideți fișierul PersonalAssistant.ino care se află:

PersonalAssistant / PersonalAssistant.ino

În Arduino IDE, din Instrumente> Placă, selectați NodeMCU 1.0 (modul ESP-12E). Din Instrumente> Port, selectați portul corect. Reprezintă NodeMCU.

Acum, selectați Instrumente> Încărcare date schiță ESP8266, aceasta va încărca conținutul folderului de date în ESP8266. Așteptați câteva clipe până când se termină. Apoi, selectați Schiță> Încărcare sau pur și simplu apăsați butoanele Ctrl + U de pe tastatură pentru a începe încărcarea programului. Așteptați până când vedeți mesajul „încărcarea s-a terminat”.

Pasul 4: Configurați cardul Micro SD

Folosim un card micro SD pentru a stoca piesele de fișiere MP3. NodeMCU este cel care decide ce fișier ar trebui redat la ce oră și DFPlayer Mini îl ajută să facă o propoziție semnificativă decodând fișierele MP3.

Am folosit Amazon Polly pentru a genera piesele vocale de care aveam nevoie.

Amazon Polly este un serviciu care transformă textul în vorbire realistă, permițându-vă să creați aplicații care vorbesc și să construiți categorii complet noi de produse compatibile cu vorbirea.

Nu uitați, dispozitivul nostru nu folosește Amazon Polly API pentru a vorbi dinamic. Avem câteva piese vocale offline offline și, punându-le împreună, facem propoziții diferite.

Am folosit acest site pentru a genera fișiere MP3. Ieșirea vocală pe care am selectat-o a fost US English / Salli.

Singurul lucru pe care trebuie să-l faceți este să descărcați fișierul microSD.zip, apoi să îl extrageți pe cardul dvs. micro SD. Conține toate cele 78 de fișiere MP3 necesare.

Probabil că cardul dvs. Micro SD vine cu un adaptor. Puteți introduce cardul Micro SD în adaptorul său și îl puteți atașa la laptop. Dacă computerul dvs. nu acceptă citirea cardurilor, atunci ar trebui să utilizați un cititor de carduri extern.

Pasul 5: Proiectarea schemelor și configurarea PCB-ului

Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului
Proiectarea schemelor și configurarea PCB-ului

Am proiectat schema și placa folosind Autodesk EAGLE. Am inclus fișierele SCH și BRD în PersonalAssistant-PCB.zip. Puteți să o editați și / sau să o trimiteți cu ușurință unui producător local sau online de PCB pentru a comanda și a vă obține placa.

Un alt lucru de menționat este că ESP8266 funcționează în 3.3v, în timp ce DFPlayer Mini funcționează în 5v. Deoarece aceste două module trebuie să vorbească între ele prin interfața serială, nu putem conecta direct o ieșire de 5v la o intrare de 3,3v deoarece vă deteriorează ESP8266. Deci, vom avea nevoie de o conversie de nivel de la 5v la 3,3v. Folosim o diodă de semnal și un rezistor de 10K pentru a face acest lucru.

Pasul 6: lipiți-l

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

Asamblarea plăcii este destul de simplă, deoarece aveți câteva componente. Urmați schemele și proiectarea plăcilor de la pasul 5 pentru a pune cu ușurință fiecare articol pe locul său corect.

Am început prin lipirea rezistențelor și a diodei, deoarece acestea sunt mici. Puteți tăia cu ușurință cozile lor inutile folosind un tăietor de sârmă. De sus în jos, ar trebui să puneți rezistență 1K, 10K și 10K.

Nu trebuie să lipiți toți pinii NodeMCU și DFPlayer Mini de pe PCB. Lipirea știfturilor cu o cale este suficientă.

Nu uitați, difuzoarele și diodele au polaritate. Aveți un difuzor și o diodă în componentele dvs. Pentru diodă, latura cu o linie neagră este partea sa negativă sau catodul.

Pasul 7: Incinta

Incinta
Incinta
Incinta
Incinta
Incinta
Incinta

Am decis să proiectez o incintă elegantă într-un mod creativ. Am fost îngrijorat de forma ei ciudată în timpul proiectării, dar la final, nu a fost atât de rău. Cel puțin arată ca un pian cu coadă și se simte minunat ținându-l în mână!

În loc de forma cubică clasică de hexaedru cu 6 fețe, am proiectat o incintă cu mai multe straturi. De jos în sus, fiecare strat se așează pe stratul inferior. (Le-am numit de la L0 la L6, de jos în sus)

Culori și grosime

Puteți utiliza două culori complementare pentru a face cel mai puternic contrast, cum ar fi:

  • Roșu și verde
  • Albastru și portocaliu
  • Galben și Violet
  • Albastru și Galben

Am folosit acril clar pentru stratul superior, astfel încât să puteți vedea în interiorul dispozitivului.

Grosimea stratului superior (stratul-6) trebuie să fie de 2 mm. Grosimea celorlalte straturi (stratul-0 până la stratul-5) trebuie să fie de 4 mm. Dacă doriți să utilizați un scut acrilic de 2,8 mm, așa cum am făcut, nu există nicio problemă. Dar trebuie să tăiați două serii din stratul 1 și stratul 3 pentru offset.

Pentru a asambla carcasa, începeți de la stratul inferior (L0). Puneți placa pe ea, folosiți șuruburile mai scurte și strângeți-o folosind piulițele. Acum puteți atașa cele patru șuruburi mai lungi din partea de jos a stratului-0. Ceva ca un turn. Apoi, puteți continua să montați cu ușurință alte straturi pe ele.

Notă: Puteți utiliza o șaibă opțională între stratul inferior și placă.

Am adăugat, de asemenea, texte de informații pentru porturile dispozitivului (alimentare și card micro SD). Puteți utiliza gravarea cu laser pe stratul superior.

Am inclus atât formate de fișiere CDR, cât și DXF. Le puteți descărca, edita și utiliza pentru tăierea cu laser.

Pasul 8: Accesarea interfeței de utilizator bazate pe web

Accesarea interfeței de utilizator bazate pe web
Accesarea interfeței de utilizator bazate pe web

Porniți dispozitivul

Puteți porni dispozitivul utilizând orice încărcător micro USB de 5v. Atașați micro USB la portul de alimentare al dispozitivului, adică intrarea micro USB de pe NodeMCU.

Accesați interacțiunea cu utilizatorul

Vă amintiți că am încărcat câteva fișiere în ESP8266 Flash File System? Este timpul să-l folosiți. Tot ce aveți nevoie este adresa IP atribuită ESP8266 în rețea. Există multe modalități diferite de a găsi adresa IP. Voi enumera câteva dintre ele aici:

  • În pagina de configurare a routerului, undeva în DHCP Lease List, puteți vedea lista dispozitivelor cu adresele lor IP în rețeaua dvs.
  • În Microsoft Windows și macOS puteți rula comenzi precum arp -a în terminal.
  • În Android și iOS, puteți utiliza aplicații precum Fing. (Android / iOS)
  • În Linux, puteți utiliza instrumente precum Nmap.

După ce găsiți adresa IP, deschideți-o utilizând browserul dvs. web. Puteți manipula coada de funcționare activând / dezactivând module.

Pasul 9: Gânduri finale

Acest proiect a consumat foarte mult timp și energie. Puteți adăuga mai multe opțiuni la Asistentul personal. Am lăsat câteva părți deschise pentru dezvoltarea viitoare. Unele părți precum:

  1. Adăugarea mai multor servicii și module. De exemplu, numărarea numerelor, aruncarea unui zar sau aruncarea unei monede.
  2. După conectarea la rețea, dispozitivul poate rosti adresa IP. Puteți adăuga această opțiune pentru a simplifica procesul de identificare a adresei IP.
  3. Adăugarea capacității de a modifica setările WiFi în panoul de control bazat pe web.
  4. Adăugarea capacității de a modifica setările serviciului în panoul de control bazat pe web. (Forma lor html este gata. Trebuie să gestionați solicitările)
  5. Adăugarea mai multor răspunsuri vocale în diferite stări ale dispozitivului.
  6. Adăugarea unei pagini de autentificare pentru panoul de control bazat pe web. Puteți face acest lucru adăugând / comparând cookie-uri în liniile de antet

Și, mi-ar plăcea să vă cunosc ideile despre acest lucru instructabil.:)

Recomandat: