Taula de continguts:

Assistent personal: 9 passos (amb imatges)
Assistent personal: 9 passos (amb imatges)

Vídeo: Assistent personal: 9 passos (amb imatges)

Vídeo: Assistent personal: 9 passos (amb imatges)
Vídeo: Утепление хрущевки. Переделка хрущевки от А до Я #6. Теплоизоляция квартиры. 2024, Juliol
Anonim
Image
Image
Assistenta personal
Assistenta personal

En aquest instructiu, us mostraré com podeu utilitzar la potència de l’ESP8266, la creativitat en el disseny i programació de programari, per fer quelcom divertit i educatiu.

L’he anomenat Assistent personal, perquè té la mida de la butxaca, us parla i us pot proporcionar informació útil (i, per descomptat), poc útil (però encara interessant) sobre temps, hora i data, missatges de Gmail, naixement directe i taxes de mortalitat, etc.

Vaig intentar que el disseny fos senzill. El dispositiu té dues interfícies d'usuari. Un botó físic i una aplicació basada en web que permeten accedir-hi mitjançant un navegador web i canviar la configuració i la configuració del dispositiu.

Com funciona? Els components principals d’aquest projecte són un mòdul de microcontrolador i un reproductor de música. El nostre microcontrolador (NodeMCU) utilitza tecnologia WiFi per connectar-se a un punt d’accés amb connexió a Internet; de manera que pot obtenir les dades necessàries, processar-les i indicar al reproductor de música (DFPlayer Mini) quan, quin fitxer MP3 s’hauria de reproduir.

De moment, això és tot el que heu de saber. En els propers passos us proporcionaré informació més detallada, així que no us preocupeu.

Pas 1: parts necessàries

Parts necessàries
Parts necessàries
  • NodeMCU ESP-12E (interfície USB-a-sèrie CP2102)
  • DFPlayer Mini
  • Polsador instantani SPST
  • Altaveu de 8 ohms de 2 watts
  • Targeta Micro SD (necessitareu uns quants kilobytes, de manera que la capacitat no importa)
  • Femelles i cargols

    • Femelles M3 (x6)
    • Perns M3: 23 mm (x4)
    • Perns M3: 15 mm (x2)
  • 1N4148 díode de senyal (x1)
  • Resistències

    • Resistència 1K (x1)
    • Resistència de 10 K (x2)

Altres parts:

  • PCB (podeu demanar un prototip en línia o visitar una botiga local)
  • Full acrílic tallat per làser

    • Làmina clara de 2 mm de gruix
    • 2,8 mm de gruix per a dues fulles de colors diferents (taronja i verd, vermell i verd, depèn de vosaltres i els colors no importen)
  • Carregador micro USB de 5 volts (com a mínim) d'1 amperi (per encendre el dispositiu)

Pas 2: Com funciona

Com funciona
Com funciona
Com funciona
Com funciona

D’acord, vull donar-vos informació més detallada sobre el funcionament del programari.

El programari consta d'alguns serveis. Cada servei té els seus propis mòduls. (Podeu considerar un servei com una classe i els seus mòduls com els seus mètodes). Cada mòdul es pot considerar com un objecte executable. Per tant, el nostre programari consta d’alguns objectes executables.

Aquí tenim alguns serveis i sub-serveis o els seus mòduls:

  • Gmail

    Missatges no llegits

  • El temps

    • Temperatura actual
    • Avui Condició
    • Avui Baix / Alt
    • Condició de demà
    • Demà Baixa / Alta
    • Previsió de precipitacions
    • Sortida / posta de sol
  • Temps

    • Hora actual
    • Data corrent
  • Naixement i mort

    • Naixement mundial
    • Mort mundial

Hi ha una cua circular que conté mòduls. L’anomenem Operació Cua. He dit, cada mòdul és un objecte executable. Per tant, quan premeu el botó del dispositiu, es mira a la cua d’operacions i s’executa el següent mòdul (o objecte).

Podeu editar els membres de la cua d’operació a la interfície d’usuari basada en web que explicaré més endavant. De moment, us posaré un exemple. Penseu en la cua d’operacions actual:

CUA (missatges no llegits | Previsió de precipitacions | Hora actual)

Si premeu el botó, s’haurien d’executar els missatges no llegits.

CUA (missatges no llegits | Previsió de precipitacions | Hora actual)

Per tant, el dispositiu utilitzarà les dades que hagi recopilat (aquí, el nombre de missatges no llegits que s’agafen del feed de l’API de Google mail) per parlar-vos. Però com? Aquí, NodeMCU li dirà al mòdul MP3, quan ha de reproduir quina peça MP3 ha de fer una frase significativa. Per aconseguir-ho, he dissenyat diferents cues, temporitzadors i algorismes. (Si sou un usuari de c ++ i us agraden els microcontroladors, podeu estudiar el codi per vosaltres mateixos.)

Així doncs, ja ho sabreu, el dispositiu comença a parlar: teniu 4 missatges no llegits a la safata d’entrada de Gmail.

Torneu a prémer el botó; el següent mòdul serà la previsió de precipitacions que s'hauria de gestionar.

CUA (missatges no llegits | Previsió de precipitacions | Hora actual)

Així doncs, escoltareu alguna cosa així: No oblideu el paraigua, demà plou. I així successivament … Una cosa més interessant: per a alguns mòduls (com la predicció de precipitacions), podeu esperar frases aleatòries per als mateixos estats. Per exemple, si demà hi ha precipitacions i és pluja, i no neu, podeu esperar "hi ha possibilitat de pluja demà", "porteu el vostre sol, demà plou", "tut, tut, sembla pluja per demà", o …

Com obtenim dades diferents per a cada servei?

  • Gmail

    Missatges no llegits Google té una potent API que permet accedir als seus diferents serveis, inclòs Gmail. Però, per motius de seguretat, necessiteu diferents mètodes d’autenticació i autorització com OAuth. ESP8266 no és tan potent per executar diferents algoritmes de hash complicats. Per tant, he utilitzat una tecnologia d’inici de sessió més antiga i senzilla per accedir a la safata d’entrada de Gmail. És Google Atom Feed que també pot utilitzar els lectors de RSS. Enviem una sol·licitud HTTP per accedir al feed de Gmail i la seva resposta és en format XML. Per tant, comptem el nombre de missatges no llegits i l’utilitzem al nostre programa

  • Meteorologia Utilitzem l'API Yahoo Weather per obtenir informació meteorològica diferent. Recentment, igual que Google, Yahoo ha canviat la seva API Meteorològica, de manera que haureu d’utilitzar els estàndards OAuth per accedir a les seves dades. Malauradament, ESP8266 no pot gestionar la seva complexitat, de manera que utilitzarem un truc per resoldre el problema. En lloc d’accedir directament a l’API Yahoo Weather, enviarem la nostra sol·licitud a un fitxer personalitzat d’un servidor. El nostre fitxer obté dades de Yahoo Weather i simplement ens les envia.

    • Tomorrow Condition us indicarà si demà és més càlid o fred que avui o si no hi haurà canvis sensibles de temperatura. Comparem "avui baix / alt" amb "demà baix / alt" per aconseguir-ho. Podeu comprovar com he escrit aquest algorisme i com funciona al fitxer de la biblioteca del programa.
    • Previsió de precipitacions Si consulteu la documentació meteorològica de Yahoo, podeu veure la taula de codis de condició. Com es diu, els codis de condició s’utilitzen en la resposta per descriure les condicions actuals. Utilitzarem els codis de condició de demà i els seus significats per esbrinar si hi haurà precipitacions i si és pluja o neu.
  • TimeNTP significa Network Time Protocol. És un protocol de xarxa per a la sincronització de rellotges entre sistemes informàtics. Com que tenim accés a Internet, utilitzarem un client NTP per obtenir temps d’un servidor NTP i el sincronitzem amb el temporitzador intern ESP8266 (com el que l’utilitzeu amb millis () si sou un tipus Arduino).
  • Naixement i mort: calcularem el nombre de naixements i defuncions des del començament del dia (gràcies al client NTP, és fàcil obtenir el nombre de segons des del començament del dia). Vaig utilitzar les taxes mundials de natalitat i mortalitat per ecologia.

Pas 3: configureu el programari

Configureu el programari
Configureu el programari

Utilitzarem Arduino IDE per carregar el nostre programa a NodeMCU. Podeu descarregar i instal·lar el darrer ID Arduino des del seu lloc oficial:

Abans de començar, heu de configurar Arduino IDE per a Nodemcu. No us explicaré els passos aquí, ja que podria estar fora del tema. Però podeu seguir els passos i les explicacions d’aquest excel·lent instructiu.

El nostre programa té algunes dependències de la biblioteca. Què és una dependència de programari?

Dependència és un terme ampli d’enginyeria de programari que s’utilitza per referir-se a quan un programari es basa en un altre.

Aquí teniu una llista de les biblioteques Arduino que heu de tenir a l’ordinador per poder compilar el programa Assistent personal:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Podeu descarregar-los un per un des de la pàgina de Github i extraure els fitxers zip al directori de la biblioteca Arduino. El seu camí al vostre sistema és: C: / Users [el vostre nom d'usuari] Documents / Arduino

Vaig escriure una biblioteca per mantenir el codi net i evitar la complexitat. Baixeu-vos el fitxer PersonalAssistant-Library.zip i extraieu-lo al directori de la biblioteca Arduino. Igual que el que feies per a aquestes tres biblioteques abans.

Fitxer YahooWeather.php

Com que ESP8266 no és prou potent per realitzar algoritmes de hash, no el podem utilitzar directament per enviar sol·licituds HTTP a Yahoo Weather API, basades en els estàndards OAuth. Per tant, utilitzarem un fitxer entre el nostre dispositiu i l'API Yahoo Weather. Podeu descarregar el fitxer YahooWeather.zip, extreure'l i posar el fitxer YahooWeather.php en un servidor web. Per exemple, si el vostre domini és example.com i col·loqueu el fitxer al directori api, el punt final de l’API es convertirà en example.com/api/YahooWeather.php Enviareu sol·licituds de dades meteorològiques a aquest punt final.

Esbós del programa i FFS (sistema de fitxers Flash)

La vostra placa NodeMCU té un sistema de fitxers flash de 4 MB per emmagatzemar dades. Per tant, quan el tenim, per què no l’utilitzem?

Recordeu quan he dit que el nostre dispositiu té dues interfícies d'usuari? Al costat d’aquest solitari polsador, la nostra segona interfície d’usuari és una senzilla aplicació basada en web. Amb aquesta aplicació, podeu manipular la cua d’operacions activant / desactivant cada mòdul, canviant la configuració del servei o la configuració del dispositiu, com configurar el SSID i la contrasenya WiFi. Emmagatzemarem tots aquests fitxers al sistema de fitxers Flash NodeMCU i executarem un servidor web lleuger per atendre les peticions dels usuaris des del seu navegador web.

S'està editant el fitxer de configuració

Baixeu-vos el fitxer PersonalAssistant-Sketch.zip i extraieu-lo en algun lloc del vostre ordinador. Obriu el fitxer config.json que es troba:

PersonalAssistant / data / config.json

Podeu utilitzar qualsevol editor de text o codi, com ara bloc de notes, bloc de notes ++, Atom, etc. Podeu canviar aquests camps:

  • Gmail

    • nom d'usuari: el vostre nom d'usuari de Gmail amb el seu @ gmail.com
    • contrasenya: la vostra contrasenya de Gmail
  • El temps

    • woeid: la ubicació per la qual voleu rebre informació meteorològica. el WOEID (Where On Earth IDentifier) és un identificador de referència que fa servir Yahoo per a la seva ubicació. Podeu fer una cerca a les ubicacions de WOEID en aquest enllaç.
    • api: és el punt final de l'API. L’enllaç al fitxer yahooweather.php.
    • appId, consumerKey i consumerSecret: per accedir a Yahoo Weather API, heu de crear un projecte a la pàgina de desenvolupadors de Yahoo. Això us proporcionarà una clau i un secret per al consumidor necessaris per utilitzar l'API. Per començar, visiteu la pàgina de Yahoo Weather Developer i creeu una APP.
  • Fus horari

    zona horària: introduïu la zona horària en funció de la vostra ubicació. Pot ser un nombre flotant positiu o negatiu i la seva unitat és d’hores

  • WiFi

    • ssid: SSID de la vostra xarxa.
    • contrasenya: la vostra contrasenya de xarxa. NodeMCU utilitzarà ssid i contrasenya per connectar-se a la vostra xarxa wifi.

Carregant el programa Sketch i les dades FFS

Connecteu el NodeMCU a l’ordinador mitjançant un cable micro-USB a USB.

Ara obriu el fitxer PersonalAssistant.ino que es troba:

PersonalAssistant / PersonalAssistant.ino

A Arduino IDE, a Eines> Tauler, seleccioneu NodeMCU 1.0 (mòdul ESP-12E). A Eines> Port, seleccioneu el port correcte. Representa el vostre NodeMCU.

Ara, seleccioneu Eines> Càrrega de dades d'esbós ESP8266; es carregarà el contingut de la carpeta de dades a l'ESP8266. Espereu uns instants fins que acabi. A continuació, seleccioneu Dibuix> Carrega o simplement premeu els botons Ctrl + U del teclat per començar a carregar el programa. Espereu fins que vegeu el missatge "La càrrega s'ha acabat".

Pas 4: configureu la targeta Micro SD

Utilitzem una targeta micro SD per emmagatzemar els fitxers MP3. És NodeMCU qui decideix quin fitxer s’ha de reproduir en quin moment i DFPlayer Mini l’ajuda a fer una frase significativa descodificant els fitxers MP3.

Vaig utilitzar Amazon Polly per generar les peces de veu que necessitava.

Amazon Polly és un servei que converteix el text en veu real, que us permet crear aplicacions que parlen i crear categories completament noves de productes habilitats per a la parla.

No ho oblideu, el nostre dispositiu no utilitza l'API d'Amazon Polly per parlar dinàmicament. Tenim algunes peces de veu estàtiques fora de línia i, en unir-les, fem frases diferents.

He utilitzat aquest lloc per generar fitxers MP3. La sortida de veu que vaig seleccionar va ser US English / Salli.

L'únic que heu de fer és descarregar el fitxer microSD.zip i, a continuació, extreure'l a la vostra targeta micro SD. Conté els 78 fitxers MP3 necessaris.

Probablement la vostra targeta Micro SD ve amb adaptador. Podeu inserir la targeta Micro SD al seu adaptador i connectar-la al portàtil. Si l’ordinador no admet la lectura de targetes, hauríeu d’utilitzar un lector de targetes extern.

Pas 5: Dissenyar els esquemes i configurar el PCB

Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB
Disseny dels esquemes i configuració del PCB

He dissenyat l’esquema i la placa mitjançant l’Autodesk EAGLE. He inclòs fitxers SCH i BRD a PersonalAssistant-PCB.zip. Podeu editar-lo i / o enviar-lo fàcilment a un fabricant de PCB local o en línia per demanar i obtenir el vostre tauler.

Una cosa més a mencionar és que ESP8266 funciona en 3,3v mentre que DFPlayer Mini funciona en 5v. Com que aquests dos mòduls necessiten parlar entre ells a través de la interfície sèrie, no podem connectar directament una sortida de 5v a una entrada de 3,3v, ja que danya el vostre ESP8266. Per tant, necessitarem una conversió de nivell de 5v a 3.3v. Utilitzem un díode de senyal i una resistència de 10K per aconseguir-ho.

Pas 6: soldeu-lo

Soldar-lo
Soldar-lo
Soldar-lo
Soldar-lo

Muntar el tauler és bastant senzill, ja que teniu uns quants components. Seguiu els esquemes i els dissenys del tauler del pas 5 per situar fàcilment cada element al lloc correcte.

Vaig començar soldant els resistors i el díode, ja que són petits. Podeu tallar fàcilment les cues innecessàries amb un tallador de filferro. De dalt a baix, haureu de posar resistències de 1K, 10K i 10K.

No cal soldar tots els pins NodeMCU i DFPlayer Mini del PCB. Soldar els passadors amb un camí és suficient.

No ho oblideu, els altaveus i els díodes tenen polaritat. Teniu un altaveu i un díode als components. Per al díode, el costat amb una línia negra és el seu costat negatiu o el càtode.

Pas 7: el recinte

El recinte
El recinte
El recinte
El recinte
El recinte
El recinte

Vaig decidir dissenyar un recinte elegant de manera creativa. Em va preocupar la seva forma estranya durant el disseny, però al final, no va ser tan dolent. Almenys sembla un piano de cua i se sent molt bé a la mà.

En lloc de la clàssica forma cúbica d’hexaedre amb 6 cares, vaig dissenyar un recinte multicapa. De baix a dalt, cada capa s’estén sobre la seva capa inferior. (Els he anomenat de L0 a L6, de baix a dalt)

Colors i gruix

Podeu utilitzar dos colors complementaris per fer el contrast més fort, com ara:

  • Vermell i verd
  • Blau i taronja
  • Groc i morat
  • Blau i groc

He utilitzat acrílic transparent per a la capa superior, de manera que pugueu veure l'interior del dispositiu.

El gruix de la capa superior (capa-6) ha de ser de 2 mm. El gruix de les altres capes (capa-0 a capa-5) ha de ser de 4 mm. Si voleu utilitzar un escut acrílic de 2,8 mm, com jo, no hi ha cap problema. Però heu de tallar dues sèries de la capa 1 i la capa 3 per a la compensació.

Per muntar el recinte, comenceu des de la capa inferior (L0). Col·loqueu-hi el tauler, utilitzeu els parabolts més curts i torneu-los amb les femelles. Ara podeu connectar els quatre cargols més llargs des de la part inferior de la capa-0. Alguna cosa com una torre. A continuació, podeu continuar muntant-hi altres capes fàcilment.

Nota: Podeu utilitzar una rentadora opcional entre la capa inferior i el tauler.

També he afegit textos d'informació per als ports del dispositiu (alimentació i targeta micro SD). Podeu utilitzar el gravat làser a la capa superior.

He inclòs tant formats de fitxer CDR com DXF. Podeu descarregar-los, editar-los i utilitzar-los per tallar amb làser.

Pas 8: accedir a la interfície d'usuari basada en web

Accés a la interfície d'usuari basada en web
Accés a la interfície d'usuari basada en web

Engegueu el dispositiu

Podeu engegar el dispositiu mitjançant qualsevol carregador micro USB de 5v. Connecteu el micro USB al port d’alimentació del dispositiu, que és l’entrada micro USB del vostre NodeMCU.

Accediu a la interfície d'usuari

Recordeu que vam penjar alguns fitxers al sistema de fitxers Flash ESP8266? És hora d’utilitzar-lo. Tot el que necessiteu és l'adreça IP assignada a ESP8266 a la xarxa. Hi ha moltes maneres diferents de trobar l'adreça IP. Aquí enumeraré alguns:

  • A la pàgina de configuració del router, en algun lloc de la llista d’arrendaments DHCP, podeu veure la llista de dispositius amb les seves adreces IP a la vostra xarxa.
  • Al Microsoft Windows i macOS podeu executar ordres com arp -a al terminal.
  • A Android i iOS, podeu utilitzar aplicacions com Fing. (Android / iOS)
  • A Linux, podeu utilitzar eines com Nmap.

Després de trobar l'adreça IP, obriu-la amb el navegador web. Podeu manipular la cua d’operacions activant / desactivant mòduls.

Pas 9: Pensaments finals

Aquest projecte va costar molt de temps i energia. Podeu afegir moltes més opcions a l'Assistent personal. He deixat algunes parts obertes per al desenvolupament futur. Algunes parts com:

  1. Addició de més serveis i mòduls. Per exemple, comptar números, llançar un dau o tirar una moneda.
  2. Després de connectar-se a la xarxa, el dispositiu pot parlar l'adreça IP. Podeu afegir aquesta opció per simplificar el procés de cerca de l'adreça IP.
  3. Afegint la possibilitat de canviar la configuració de WiFi al tauler de control basat en web.
  4. Afegint la possibilitat de canviar la configuració del servei al tauler de control basat en web. (El seu formulari html està a punt. Heu de gestionar les sol·licituds)
  5. Afegir més respostes de veu en diferents estats del dispositiu.
  6. Addició d’una pàgina d’inici de sessió per al tauler de control basat en web. Podeu fer-ho afegint / comparant cookies en línies de capçalera

I, m’encantaria conèixer les vostres idees sobre aquest instructiu.:)

Recomanat: