Turinys:
- 1 žingsnis: Aparatūra
- 2 žingsnis:
- 3 žingsnis: Programação - Detecção De Voz
- 4 žingsnis: Programação - Exibir Previsão Do Tempo
- 5 žingsnis: Programação - Exibir Notícias
- 6 žingsnis: „Conclusão“
Video: Espelho Mágico: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Neste Instructables mostramos como criar um protótipo de um espelho inteligente que projeta information of clima e notícias, utilizando comandos de voz.
Embora seja o projeto de um espelho, nenaudodami to, kaip panaudoti devido ir contratempos.
1 žingsnis: Aparatūra
Dragonboard 410c
Garso tarpinė lenta
2 žingsnis:
„Visual Studio Community 2017“programa ir kalbos programa c#. Sąsaja, skirta naudoti ir redaktorius „XAML“, skirtas „Visual Studio“.
3 žingsnis: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. „Audio Mezzanine Board“yra integruotų mikrofonų mikrofonas, kurio naudojimo galimybės yra skirtingos. Nėra „Visual Studio“, naudojama „Windows“biblioteka. „Media. SpeechRecognition“dekodifikatoriui ir voz.
Naudokite šį metodą arba įjunkite vandens pradžią, pradinę vizą, o tada - visišką também abaixo.
private async void InicializaVoz () {var idioma = new Windows. Globalization. Language ("lt-US"); SpeechRecognizer atpažinimo priemonė = naujas SpeechRecognizer (idioma); atpažinimo priemonė. StateChanged += RecognizerStateChanged; atpažinimo priemonė. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = laukti Package. Current. InstalledLocation. GetFileAsync (failo pavadinimas); SpeechRecognitionGrammarFileConstraint gramatikaConstraint = new SpeechRecognitionGrammarFileConstraint (grammarContentFile); atpažinimo priemonė. Apribojimai. Pridėti (gramatika SpeechRecognitionCompilationResult compilationResult = laukti atpažinimo. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Result:" + compilationResult. ToString ()); laukti atpažinimo. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}
Após iniciar o reconhecimento, o metode RecognizerResultGenerated recebe os comandos que foram interpretados and compara com os comandos com os que estão configurados em um arquivo xml que foi criado e inserido na solução.
Como não foi possível inserir o idioma português, os comandos utilizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado prognoze (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Patikrinkite, ar nėra skirtingų žymų, ir inicijuokite kintamuosius
Styginių tikslas = args. Result. SemanticInterpretation. Properties. ContainsKey ("tikslas")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Styga cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
Styginių įrenginys = args. Result. SemanticInterpretation. Properties. ContainsKey ("device")?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Pirmiausia patikrinkite, į kurį įrenginį naudotojas kreipiasi
if (cmd. Equals ("rodyti"))
{
if (device. Equals ("prognozė")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine("Nežinomas įrenginys "); }
} else if (cmd. Equals ("slėpti"))
{
if (device. Equals ("prognozė")) {//Tempo. Text = ""; palaukite this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {wait this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: tai. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Nežinomas įrenginys"); }} else {//Debug. WriteLine("Nežinoma komanda "); }
}
4 žingsnis: Programação - Exibir Previsão Do Tempo
Jei norite rodyti prognozės rodymo komandą, apsilankykite „Consulta_previsao envia“, kuriai reikia HTTP ar svetainės CPTEC do INPE. Após a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão and também são mostradas as temperatura máxima e mínima.
private async void Consulta_previsao () {
HttpClient httpcliente = naujas HttpClient ();
// 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"). Result; resp. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = naujas XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
XmlNodeList mazgai = root. GetElementsByTagName ("tempo");
eilutė prevtempo = (mazgai. Item (0). Vidinis tekstas);
eilutė prevtempo1 = (mazgai. Item (1). InnerText); eilutė prevtempo2 = (mazgai. Item (2). Vidinis tekstas); eilutė prevtempo3 = (mazgai. Item (3). InnerText); mazgai = root. GetElementsByTagName ("minimumai"); eilutė tempmin = (mazgai. Item (0). InnerText); mazgai = root. GetElementsByTagName ("maxima"); string tempmax = (mazgai. Item (0). InnerText);
eilutė rsultado_previsao = "";
jungiklis (išankstinis)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; pertrauka; atvejis "ci": rsultado_previsao = "Chuvas_Isoladas.png"; pertrauka; atvejis "c": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "in": rsultado_previsao = "Instavel.png"; pertrauka; atvejis "pp": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "cm": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pertrauka; atvejis "pt": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pm": rsultado_previsao = "Chuvas_Isoladas.png"; pertrauka; atvejis "np": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pc": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pn": rsultado_previsao = "Nublado.png"; pertrauka; atvejis "cv": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "ch": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "t": rsultado_previsao = "Tempestade.png"; pertrauka; atvejis "ps": rsultado_previsao = "Sol.png"; pertrauka; atvejis "e": rsultado_previsao = "Sol_Encoberto.png"; pertrauka; atvejis "n": rsultado_previsao = "Nublado.png"; pertrauka; atvejis "cl": rsultado_previsao = "Sol.png"; pertrauka; atvejis "nv": rsultado_previsao = "Nevoeiro.png"; pertrauka; atvejis "g": rsultado_previsao = "Neve.png"; pertrauka; atvejis "ne": rsultado_previsao = "Neve.png"; pertrauka; atvejis "nd": rsultado_previsao = "na.png"; pertrauka; atvejis "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pertrauka; atvejis "psc": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pcm": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pct": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "pcn": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "npt": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "npn": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "ncn": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "nct": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "ncm": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "npm": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "npp": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "vn": rsultado_previsao = "Instavel.png"; pertrauka; atvejis "ct": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; pertrauka; atvejis "ppt": rsultado_previsao = "Chuva.png"; pertrauka; atvejis "ppm": rsultado_previsao = "Chuva.png"; pertrauka;
}
palaukite this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// Tai dabar veikia, nes veikia UI gijoje: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = new BitmapImage (new Uri ("ms-appx: /// Vaizdai/" + rsultado_previsao));});
}
5 žingsnis: Programação - Exibir Notícias
Žiūrėkite naujienas šou naujienoms, o Consulta_noticias envia uma Requireção HTTP for a feed de notícias at BBC, que também retorna um XML. Kaip „cinco primeiras notícias são exibidas“ir „tela em textblocks“.
private async void Consulta_noticias () {
HttpClient httpcliente2 = naujas HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Result;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument noticia = naujas XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
XmlNodeList mazgai2 = root2. GetElementsByTagName (@"title");
laukti šio. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (mazgai2. Item (2). InnerText); this. News2. Text = (mazgai2. Item (3). InnerText); this. News3. Text = (mazgai2. Item (4). InnerText); this. News4. Text = (mazgai2. Item (5). InnerText); this. News5. Text = (mazgai2. Item (6). InnerText);
});
}
6 žingsnis: „Conclusão“
Ao reproduzir esse instructables, será possível realizar detecção de comandos de voz utilizando alguma placa com or Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.
Autoriai: Egon Patrick Marques Silva
Frederico Clarkas
Rekomenduojamas:
„Arduino“automobilių atbulinės eigos įspėjimo sistema - Žingsniai po žingsnio: 4 žingsniai
„Arduino“automobilių atbulinės eigos įspėjimo sistema | Žingsniai po žingsnio: Šiame projekte aš suprojektuosiu paprastą „Arduino“automobilio atbulinės eigos stovėjimo jutiklio grandinę, naudodamas „Arduino UNO“ir ultragarsinį jutiklį „HC-SR04“. Ši „Arduino“pagrįsta automobilio atbulinės eigos įspėjimo sistema gali būti naudojama autonominei navigacijai, robotų diapazonui ir kitiems diapazonams
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su nuotraukomis): 6 žingsniai
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su paveikslėliais): norite Helovino metu išgąsdinti savo draugus ir sukelti riksmą? O gal tiesiog norite padaryti gerą išdaigą? Šis iššokantis „Zombies“ekranas gali tai padaryti! Šioje instrukcijoje aš išmokysiu jus, kaip lengvai padaryti iššokančius zombius naudojant „Arduino“. HC-SR0
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): 8 žingsniai
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): ultragarsiniai garso keitikliai L298N nuolatinės srovės adapterio maitinimo šaltinis su vyrišku nuolatinės srovės kaiščiu „Arduino UNOBreadboard“Kaip tai veikia: pirmiausia įkelkite kodą į „Arduino Uno“(tai yra mikrovaldiklis su skaitmeniniu ir analoginiai prievadai kodui konvertuoti (C ++)
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: 7 žingsniai
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: Kelionė, skirta visam „Kano Pixel“potencialui išnaudoti, prasideda gamyklos programinės įrangos pakeitimu „MicroPython“, tačiau tai tik pradžia. Norėdami koduoti „Pixel Kit“, turime prie jo prijungti savo kompiuterius. Ši pamoka paaiškins, kas
Tiesioginė 4G/5G HD vaizdo transliacija iš DJI drono esant mažai delsai [3 žingsniai]: 3 žingsniai
Tiesioginis 4G/5G HD vaizdo įrašų srautinis perdavimas iš DJI drono esant mažai delsai [3 žingsniai]: Šis vadovas padės jums gauti tiesioginius HD kokybės vaizdo srautus iš beveik visų DJI dronų. Naudodami „FlytOS Mobile App“ir „FlytNow Web Application“galite pradėti transliuoti vaizdo įrašus iš drono