Orodha ya maudhui:

Espelho Mágico: 6 Hatua
Espelho Mágico: 6 Hatua

Video: Espelho Mágico: 6 Hatua

Video: Espelho Mágico: 6 Hatua
Video: 6. Easter Island - Where Giants Walked 2024, Novemba
Anonim
Image
Image

Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta informações de clima e notícias, utilizando comandos de voz.

Embora inaweza kutumika kwa njia nyingine, kwa sababu unaweza kutumia vifaa vyako.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Joka 410c

Bodi ya Sauti ya Mezzanine

Hatua ya 2:

Picha
Picha

Para a programação foi utilizado o Visual Studio Community 2017, na lugha c #. A interface gráfica foita feita utilizando o mhariri XAML do Visual Studio.

Hatua ya 3: Programação - Detecção De Voz

O primeiro passo, foi trabalhar com a detecção de voz. Ala ya Mezzanine Bodi ya Sauti ina uwezo wa kukuza vipaza sauti, ikiwa ni pamoja na matumizi ya kifaa chako. Hakuna Studio ya Kutazama, inayotumia Windows biblioteca Windows. Media. SpeechRecognition for decodificar a voz.

Utumiaji wa matumizi ya mfumo wa hali ya juu kwa ajili ya utaftaji wa vitu, ni kwa sababu wewe ni mtu wa kawaida.

async ya kibinafsi batili InicializaVoz () {var idioma = new Windows. Utandawazi. Lugha ("en-US"); Kitambuzi cha SpeechRecognizer = SpeechRecognizer mpya (idioma); kitambuzi. StateChanged + = RecognizerStateChanged; kitambulisho. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; kamba fileName = String. Format (SRGS_FILE); Uhifadhi wa sarufiContentFile = subiri Package. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint grammarConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); vitambuzi. Vizuizi. Ongeza (sarufiKikwazo); HotubaRecognitionCompilationResult compilationResult = subiri kitambuzi. CompileConstraintsAsync (); ikiwa (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Matokeo:" + compilationResult. ToString ()); subiri kitambuzi. KuendeleaKutambuaKikao. StartAsync (); } mwingine {Debug. WriteLine ("Hali:" + mkusanyikoResult. Status); }}

Apos iniciar o reconhecimento, o modo RecognizerResultGenerated recebe os comandos que foram translados and compara com os comandos com os que estão configurados em em arquivo xml que foi criado e inserido na solução.

Tunaweza kupata habari zaidi kwa njia ya maandishi, kwa njia inayofaa utumiaji wa onyesho (mara nyingi) na kujificha (kusindikiza) na utaftaji wa utabiri wa hali ya juu zaidi (previsão) habari (habari).

async ya kibinafsi batili ya RecognizerResultGenerated (Kikao cha KuendeleaKutambuaKikao cha Kikao, HotubaContinuousRecognitionResultGeneratedEventArgs args) {

hesabu ya int

// Angalia vitambulisho tofauti na anzisha anuwai

Lengo la kamba = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Matokeo. Tafsiri ya Kimantiki. Properties ["lengo"] [0]. ToString (): "";

Kamba cmd = args. Matokeo. Utafsiri wa Kimantiki. Properties. ContainsKey ("cmd")?

args. Matokeo. Tafsiri ya Kimantiki. Maghala ["cmd"] [0]. ToString (): "";

Kifaa cha kamba = args. Result. SemanticInterpretation. Properties. ContainsKey ("kifaa")?

args. Matokeo. Tafsiri ya Kimantiki. Properties ["kifaa"] [0]. ToString (): "";

// Kwanza angalia kifaa ambacho mtumiaji anamaanisha

ikiwa (cmd. Sawa ("onyesha"))

{

ikiwa (kifaa. Equals ("utabiri")) {Consulta_previsao (); } mwingine ikiwa (kifaa. Equals ("habari")) {Consulta_noticias (); } mwingine {//Debug. WriteLine ("Kifaa kisichojulikana"); }

} mwingine ikiwa (cmd. Sasa ("ficha"))

{

ikiwa (kifaa. Equals ("forecast")) {//Tempo. Text = ""; subiri hii. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Hii sasa inafanya kazi, kwa sababu inaendesha kwenye uzi wa UI: hii. Max_tit. Text = ""; = ""; hii. Min. Text = ""; hii. Max. Text = ""; hii. Img_Tempo. Source = mpya BitmapImage (mpya Uri ("ms-appx: ///Images/blank.png"));

});

}

vinginevyo ikiwa (kifaa. Equals ("habari")) {inasubiri hii. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Hii sasa inafanya kazi, kwa sababu inaendesha kwenye uzi wa UI: hii. News1. Text = ""; hii. News2. Text = ""; hii. News3. Text = ""; hii. News4. Text = ""; hii. News5. Text = "";}); } mwingine {// Debug. WriteLine ("Kifaa kisichojulikana"); }} mwingine {//Debug. WriteLine ("Amri isiyojulikana"); }

}

Hatua ya 4: Programação - Exibir Previsão Do Tempo

Angalia kama upekuzi wa voz kwa utabiri wa onyesho, tafadhali wasiliana na Wataalam wanaoshughulikia huduma ya HTTP au tovuti ya CPTEC kufanya INPE, ikiwa ni pamoja na kumbukumbu ya muda wa kufanya kazi kwa xml. Aposs a leitura do xml, uma imagem is mostrada na tela de acordo com a previsão and também são mostradas as temperaturas máxima e mínima.

async ya kibinafsi batili Consulta_previsao () {

Mteja wa Http httpcliente = mteja mpya wa Http ();

// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Result; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Matokeo; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = mpya XmlDocument ();

previsao. LoadXml (kinga ya mwili. Matokeo);

Mzizi wa XmlElement = previsao. DocumentElement;

Nambari za XmlNodeList = mizizi. GetElementsByTagName ("tempo");

prevtempo ya kamba = (nodes. Item (0). InnerText);

kamba prevtempo1 = (nodes. Bidhaa (1). InnerText); kamba prevtempo2 = (nodes. Item (2). InnerText); kamba prevtempo3 = (nodes. Imba (3). InnerText); nodes = mizizi. GetElementsByTagName ("minima"); kamba tempmin = (nodes. Imba (0). InnerText); nodes = mzizi. GetElementsByTagName ("maxima"); kamba tempmax = (nodes Item (0). InnerText);

kamba rsultado_previsao = "";

kubadili (prevtempo)

{kesi "ec": rsultado_previsao = "Chuvas_Isoladas.png"; kuvunja; kesi "ci": rsultado_previsao = "Chuvas_Isoladas.png"; kuvunja; kesi "c": rsultado_previsao = "Chuva.png"; kuvunja; kesi "katika": rsultado_previsao = "Instavel.png"; kuvunja; kesi "pp": rsultado_previsao = "Chuva.png"; kuvunja; kesi "cm": rsultado_previsao = "Chuva.png"; kuvunja; kesi "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; kuvunja; kesi "pt": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pm": rsultado_previsao = "Chuvas_Isoladas.png"; kuvunja; kesi "np": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pc": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pn": rsultado_previsao = "Nublado.png"; kuvunja; kesi "cv": rsultado_previsao = "Chuva.png"; kuvunja; kesi "ch": rsultado_previsao = "Chuva.png"; kuvunja; kesi "t": rsultado_previsao = "Tempestade.png"; kuvunja; kesi "ps": rsultado_previsao = "Sol.png"; kuvunja; kesi "e": rsultado_previsao = "Sol_Encoberto.png"; kuvunja; kesi "n": rsultado_previsao = "Nublado.png"; kuvunja; kesi "cl": rsultado_previsao = "Sol.png"; kuvunja; kesi "nv": rsultado_previsao = "Nevoeiro.png"; kuvunja; kesi "g": rsultado_previsao = "Neve.png"; kuvunja; kesi "ne": rsultado_previsao = "Neve.png"; kuvunja; kesi "nd": rsultado_previsao = "na.png"; kuvunja; kesi "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; kuvunja; kesi "psc": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pcm": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pct": rsultado_previsao = "Chuva.png"; kuvunja; kesi "pcn": rsultado_previsao = "Chuva.png"; kuvunja; kesi "npt": rsultado_previsao = "Chuva.png"; kuvunja; kesi "npn": rsultado_previsao = "Chuva.png"; kuvunja; kesi "ncn": rsultado_previsao = "Chuva.png"; kuvunja; kesi "nct": rsultado_previsao = "Chuva.png"; kuvunja; kesi "ncm": rsultado_previsao = "Chuva.png"; kuvunja; kesi "npm": rsultado_previsao = "Chuva.png"; kuvunja; kesi "npp": rsultado_previsao = "Chuva.png"; kuvunja; kesi "vn": rsultado_previsao = "Instavel.png"; kuvunja; kesi "ct": rsultado_previsao = "Chuva.png"; kuvunja; kesi "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; kuvunja; kesi "ppt": rsultado_previsao = "Chuva.png"; kuvunja; kesi "ppm": rsultado_previsao = "Chuva.png"; kuvunja;

}

subiri hii. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Hii sasa inafanya kazi, kwa sababu inaendesha kwenye uzi wa UI: hii. Max_tit. Text = "Máxima"; Nakala = "Mínima"; hii. Min. Text = tempmin + "°"; hii. Max. Text = tempmax + "°"; Picha / "+ rsultado_previsao));});

}

Hatua ya 5: Programação - Exibir Notícias

Angalia sehemu yako ya habari kwa habari ya onyesho, tafadhali wasiliana na Wataalam wa Huduma ya Ushauri kwa HTTP ao feed de notices of the BBC, que também retorna um XML. Kama cinco primeiras notícias são exibidas na tela em textblocks.

async ya kibinafsi batili Consulta_noticias () {

Mteja wa Http httpcliente2 = mteja mpya wa Http ();

var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Matokeo;

resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = mpya XmlDocument ();

noticia. LoadXml (respbody2. Result);

XmlElement root2 = noticia. DocumentElement;

Nambari za XmlNodeList2 = root2. GetElementsByTagName (@ "kichwa");

subiri hii. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>

{this. News1. Text = (nodes2. Imba (2). Maandiko ya Ndani); hii. Habari2. Text = (nodes2. Item (3). InnerText); hii. Habari3. Text = (nodes2 Item (4). InnerText); hii. Habari4. Text = (nodes2 Item (5). InnerText); hii. Habari5. Text = (nodes2 Item (6). InnerText);

});

}

Hatua ya 6: Hitimisho

Apt reproduzir esse instructable, será possível realizar detecção de comandos de voz utilizando alguma placa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.

Autores: Egon Patrick Marques Silva

Frederico Clark

Ilipendekeza: