Kazalo:
- 1. korak: Strojna oprema
- 2. korak:
- 3. korak: Programação - Detecção De Voz
- 4. korak: Programação - Exibir Previsão Do Tempo
- 5. korak: Programação - Exibir Notícias
- Korak 6: Zaključek
Video: Espelho Mágico: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
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 seja o projeto de um espelho, não houve como utilizar um devido a contratempos.
1. korak: Strojna oprema
Dragonboard 410c
Zvočna mezaninska plošča
2. korak:
Za uporabo programa Visual Studio Community 2017, jezikovno c#. Vmesnik, ki se uporablja za urejevalnik XAML do Visual Studio.
3. korak: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. Placa Audio Mezzanine Board je združljiva z mikrofoni, ki jih je mogoče uporabiti za zaznavanje. Ni Visual Studio, uporablja biblioteko Windows. Media. SpeechRecognition para decodificar a voz.
Foi utilizado o método encontrado aqui para a inicialização da detecção de voz, que é mostrado também abaixo.
private async void InicializaVoz () {var idioma = nov Windows. Globalization. Language ("en-ZDA"); SpeechRecognizer prepoznavalnik = nov SpeechRecognizer (idioma); prepoznavalnik. StateChanged += RecognizerStateChanged; prepoznavalnik. ContinuousRecognitionSession. ResultGenerated += RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile grammarContentFile = čakajo Package. Current. InstalledLocation. GetFileAsync (ime datoteke); SpeechRecognitionGrammarFileConstraint grammarConstraint = nov SpeechRecognitionGrammarFileConstraint (grammarContentFile); prepoznavalec. Konstrakcije. Add (grammarConstraint); SpeechRecognitionCompilationResult compilationResult = čakajo na prepoznavalnika. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Rezultat:" + compilationResult. ToString ()); čakajo na prepoznavalnik. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Status:" + compilationResult. Status); }}
Após iniciar o reconhecimento, o método RecognizerResultGenerated recebe os comandos que foram interpretados e compara com os comandos com os que estão configurados em um arquivo xml que foi criado e insertido 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 weather (previsão) e news (notícias).
private async void RecognizerResultGenerated (SpeechContinuousRecognitionSession session, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Preverite različne oznake in inicializirajte spremenljivke
Niz target = args. Result. SemanticInterpretation. Properties. ContainsKey ("cilj")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Niz cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
Nizka naprava = args. Result. SemanticInterpretation. Properties. ContainsKey ("naprava")?
args. Result. SemanticInterpretation. Properties ["naprava"] [0]. ToString (): "";
// Najprej preverite, na katero napravo se uporabnik sklicuje
if (cmd. Equals ("pokaži"))
{
if (device. Equals ("napoved")) {Consulta_previsao (); } else if (device. Equals ("novice")) {Consulta_noticias (); } else {//Debug. WriteLine("Neznana naprava "); }
} else if (cmd. Equals ("hide"))
{
if (device. Equals ("napoved")) {//Tempo. Text = ""; počakajte this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// To zdaj deluje, ker deluje v niti uporabniškega vmesnika: this. Max_tit. Text = ""; this. Min_tit. Text = ""; this. Min. Text = ""; this. Max. Text = ""; this. Img_Tempo. Source = nova BitmapImage (nov Uri ("ms-appx: ///Images/blank.png"));
});
}
else if (device. Equals ("news")) {čakajo na to. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// To zdaj deluje, ker deluje v niti uporabniškega vmesnika: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Neznana naprava"); }} else {//Debug. WriteLine("Neznan ukaz "); }
}
4. korak: Programação - Exibir Previsão Do Tempo
Komando de voz detectado za napoved oddaje, o metodi Consulta_previsao z zahtevo po zahtevah HTTP na spletnem mestu CPTEC do INPE, que retorna in previsão do tempo em um arquivo xml. Após a leitura do xml, uma imagem é mostrada na tela de acordo com a previsão e também são mostradas as temperaturas máxima e mínima.
private async void Consulta_previsao () {
HttpClient httpcliente = nov HttpClient ();
// HttpResponseMessage resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Rezultat; var resp = httpcliente. GetAsync ("https://servicos.cptec.inpe.br/XML/cidade/222/previsao.xml"). Rezultat; ustrezna. EnsureSuccessStatusCode (); var respbody = resp. Content. ReadAsStringAsync (); XmlDocument previsao = nov XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
Vozlišča XmlNodeList = root. GetElementsByTagName ("tempo");
niz prevtempo = (nodes. Item (0). InnerText);
niz prevtempo1 = (nodes. Item (1). InnerText); niz prevtempo2 = (nodes. Item (2). InnerText); niz prevtempo3 = (nodes. Item (3). InnerText); vozlišča = root. GetElementsByTagName ("minimum"); niz tempmin = (nodes. Item (0). InnerText); vozlišča = root. GetElementsByTagName ("maksimumi"); niz tempmax = (nodes. Item (0). InnerText);
niz rsultado_previsao = "";
stikalo (prevtempo)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; prekiniti; primer "ci": rsultado_previsao = "Chuvas_Isoladas.png"; prekiniti; primer "c": rsultado_previsao = "Chuva.png"; prekiniti; case "in": rsultado_previsao = "Instavel.png"; prekiniti; primer "pp": rsultado_previsao = "Chuva.png"; prekiniti; primer "cm": rsultado_previsao = "Chuva.png"; prekiniti; primer "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prekiniti; primer "pt": rsultado_previsao = "Chuva.png"; prekiniti; primer "pm": rsultado_previsao = "Chuvas_Isoladas.png"; prekiniti; primer "np": rsultado_previsao = "Chuva.png"; prekiniti; primer "pc": rsultado_previsao = "Chuva.png"; prekiniti; primer "pn": rsultado_previsao = "Nublado.png"; prekiniti; primer "cv": rsultado_previsao = "Chuva.png"; prekiniti; primer "ch": rsultado_previsao = "Chuva.png"; prekiniti; primer "t": rsultado_previsao = "Tempestade.png"; prekiniti; primer "ps": rsultado_previsao = "Sol.png"; prekiniti; primer "e": rsultado_previsao = "Sol_Encoberto.png"; prekiniti; primer "n": rsultado_previsao = "Nublado.png"; prekiniti; primer "cl": rsultado_previsao = "Sol.png"; prekiniti; primer "nv": rsultado_previsao = "Nevoeiro.png"; prekiniti; primer "g": rsultado_previsao = "Neve.png"; prekiniti; primer "ne": rsultado_previsao = "Neve.png"; prekiniti; primer "nd": rsultado_previsao = "na.png"; prekiniti; primer "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prekiniti; primer "psc": rsultado_previsao = "Chuva.png"; prekiniti; primer "pcm": rsultado_previsao = "Chuva.png"; prekiniti; primer "pct": rsultado_previsao = "Chuva.png"; prekiniti; primer "pcn": rsultado_previsao = "Chuva.png"; prekiniti; primer "npt": rsultado_previsao = "Chuva.png"; prekiniti; primer "npn": rsultado_previsao = "Chuva.png"; prekiniti; primer "ncn": rsultado_previsao = "Chuva.png"; prekiniti; primer "nct": rsultado_previsao = "Chuva.png"; prekiniti; primer "ncm": rsultado_previsao = "Chuva.png"; prekiniti; primer "npm": rsultado_previsao = "Chuva.png"; prekiniti; primer "npp": rsultado_previsao = "Chuva.png"; prekiniti; primer "vn": rsultado_previsao = "Instavel.png"; prekiniti; primer "ct": rsultado_previsao = "Chuva.png"; prekiniti; primer "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; prekiniti; primer "ppt": rsultado_previsao = "Chuva.png"; prekiniti; primer "ppm": rsultado_previsao = "Chuva.png"; prekiniti;
}
čakajte this. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () => {// To zdaj deluje, ker deluje v niti uporabniškega vmesnika: this. Max_tit. Text = "Máxima"; this. Min_tit. Text = "Mínima"; this. Min. Text = tempmin + "°"; this. Max. Text = tempmax + "°"; this. Img_Tempo. Source = nova BitmapImage (nov Uri ("ms-appx: /// Slike/" + rsultado_previsao));});
}
5. korak: Programação - Exibir Notícias
Oglejte si odkrivanje za novice o oddajah ali o Consulta_noticias o zahtevi po HTTP ali o viru, ki ni v BBC -ju, če želite to narediti v XML. Kot cinco primeiras notícias são exibidas na tela em tekstovni bloki.
private async void Consulta_noticias () {
HttpClient httpcliente2 = nov HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Rezultat;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); Noticia XmlDocument = nov XmlDocument ();
noticia. LoadXml (respbody2. Result);
XmlElement root2 = noticia. DocumentElement;
Vozlišča XmlNodeList2 = root2. GetElementsByTagName (@"naslov");
čakaj na to. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPriority. High, () =>
{this. News1. Text = (nodes2. Item (2). InnerText); this. News2. Text = (vozlišča2. Item (3). InnerText); this. News3. Text = (nodes2. Item (4). InnerText); this. News4. Text = (nodes2. Item (5). InnerText); this. News5. Text = (nodes2. Item (6). InnerText);
});
}
Korak 6: Zaključek
Ao reproduzir esse instructables, será possível realizar detecção de comandos de voz uselizando alguma placa com o Windos IoT Core instalado. Basta criar o arquivo de grammatica com os comandos desejados.
Avtomobili: Egon Patrick Marques Silva
Frederico Clark
Priporočena:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako
Preklopna obremenitvena banka z manjšo velikostjo korakov: 5 korakov
Preklopna banka odpornikov obremenitve z manjšo velikostjo korakov: Banke uporovnih obremenitev so potrebne za preskušanje energetskih proizvodov, za karakterizacijo sončnih kolektorjev, v preskusnih laboratorijih in v industriji. Reostati zagotavljajo stalno spreminjanje odpornosti na obremenitev. Ker pa se vrednost upora zmanjša, moč