Mục lục:
- Bước 1: Phần cứng
- Bước 2:
- Bước 3: Programação - Detecção De Voz
- Bước 4: Programação - Exibir Previsão Do Tempo
- Bước 5: Lập trình - Exibir Notícias
- Bước 6: Kết luận
Video: Espelho Mágico: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Neste Sách hướng dẫn mostramos como criar um protótipo de um espelho inteligente que projeta Informações de clima e notícias, Pracizando comandos de voz.
Embora seja o projeto de um espelho, não bộ chó como useizar um devido a contratempos.
Bước 1: Phần cứng
Bảng rồng 410c
Bảng âm thanh tầng lửng
Bước 2:
Para a programmação foi useizado o Visual Studio Community 2017, e a linguagem c #. Một giao diện gráfica foi feita useizando o trình soạn thảo XAML do Visual Studio.
Bước 3: Programação - Detecção De Voz
O primeiro passo, foi trabalhar com a detecção de voz. Một Bo mạch Lửng âm thanh khác nhau já Kéui dois tích hợp các vi sóng, que foram useizados para a detecção. Không có Visual Studio, hãy sử dụng thư mục Windows. Media. SpeechRecognition para decodificar a voz.
Foi useizado 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 = new Windows. Globalization. Language ("en-US"); Trình nhận dạng SpeechRecognizer = mới SpeechRecognizer (idioma); Recogzer. StateChanged + = RecognizerStateChanged; Recogzer. ContinuousRecognitionSession. ResultGenerated + = RecognizerResultGenerated; string fileName = String. Format (SRGS_FILE); StorageFile contextContentFile = await Package. Current. InstalledLocation. GetFileAsync (fileName); SpeechRecognitionGrammarFileConstraint contextConstraint = new SpeechRecognitionGrammarFileConstraint (contextContentFile); Recogzer. Constraints. Add (văn phạmConstraint); SpeechRecognitionCompilationResult compilationResult = await Recogzer. CompileConstraintsAsync (); if (compilationResult. Status == SpeechRecognitionResultStatus. Success) {Debug. WriteLine ("Kết quả:" + compilationResult. ToString ()); đang chờ trình nhận dạng. ContinuousRecognitionSession. StartAsync (); } else {Debug. WriteLine ("Trạng thái:" + compilationResult. Status); }}
Após iniciar o rechecimento, o método RecognizerResultGenerated Collectbe os comandos que forampretados e 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 usedizados foram show (mostrar) e hide (esconder) e o que deve ser mostrado project (previsão) e news (notícias).
private async void RecognizerResultGenerated (phiên SpeechContinuousRecognitionSession, SpeechContinuousRecognitionResultGeneratedEventArgs args) {
int count = args. Result. SemanticInterpretation. Properties. Count;
// Kiểm tra các thẻ khác nhau và khởi tạo các biến
String target = args. Result. SemanticInterpretation. Properties. ContainsKey ("target")? args. Result. SemanticInterpretation. Properties ["target"] [0]. ToString (): "";
Chuỗi cmd = args. Result. SemanticInterpretation. Properties. ContainsKey ("cmd")?
args. Result. SemanticInterpretation. Properties ["cmd"] [0]. ToString (): "";
String device = args. Result. SemanticInterpretation. Properties. ContainsKey ("thiết bị")?
args. Result. SemanticInterpretation. Properties ["device"] [0]. ToString (): "";
// Đầu tiên hãy kiểm tra thiết bị mà người dùng đề cập đến
if (cmd. Equals ("show"))
{
if (device. Equals ("dự báo")) {Consulta_previsao (); } else if (device. Equals ("news")) {Consulta_noticias (); } else {//Debug. WriteLine(" Thiết bị không xác định "); }
} else if (cmd. Equals ("ẩn"))
{
if (device. Equals ("dự báo")) {//Tempo. Text = ""; Hãy chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động, vì nó đang chạy trên chuỗi giao diện người dùng: 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")) {đang chờ cái này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động vì nó đang chạy trên chuỗi giao diện người dùng: this. News1. Text = ""; this. News2. Text = ""; this. News3. Text = ""; this. News4. Text = ""; this. News5. Text = "";}); } else {// Debug. WriteLine ("Thiết bị không xác định"); }} else {//Debug. WriteLine(" Lệnh không xác định "); }
}
Bước 4: Programação - Exibir Previsão Do Tempo
Se o comando de voz Detado for show dự báo, o método Consulta_previsao envia uma suggestição HTTP ao site CPTEC do INPE, que retorna a 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 = new 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 = new XmlDocument ();
previsao. LoadXml (respbody. Result);
XmlElement root = previsao. DocumentElement;
Các nút XmlNodeList = root. GetElementsByTagName ("nhịp độ");
string prevtempo = (node. Item (0). InnerText);
string prevtempo1 = (node. Item (1). InnerText); string prevtempo2 = (node. Item (2). InnerText); string prevtempo3 = (node. Item (3). InnerText); node = root. GetElementsByTagName ("minima"); string tempmin = (node. Item (0). InnerText); node = root. GetElementsByTagName ("maxima"); string tempmax = (node. Item (0). InnerText);
string rsultado_previsao = "";
chuyển đổi (trước đó)
{case "ec": rsultado_previsao = "Chuvas_Isoladas.png"; nghỉ; case "ci": rsultado_previsao = "Chuvas_Isoladas.png"; nghỉ; case "c": rsultado_previsao = "Chuva.png"; nghỉ; case "in": rsultado_previsao = "Instavel.png"; nghỉ; case "pp": rsultado_previsao = "Chuva.png"; nghỉ; case "cm": rsultado_previsao = "Chuva.png"; nghỉ; case "cn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; nghỉ; case "pt": rsultado_previsao = "Chuva.png"; nghỉ; case "pm": rsultado_previsao = "Chuvas_Isoladas.png"; nghỉ; case "np": rsultado_previsao = "Chuva.png"; nghỉ; case "pc": rsultado_previsao = "Chuva.png"; nghỉ; case "pn": rsultado_previsao = "Nublado.png"; nghỉ; case "cv": rsultado_previsao = "Chuva.png"; nghỉ; case "ch": rsultado_previsao = "Chuva.png"; nghỉ; case "t": rsultado_previsao = "Tempestade.png"; nghỉ; case "ps": rsultado_previsao = "Sol.png"; nghỉ; case "e": rsultado_previsao = "Sol_Encoberto.png"; nghỉ; case "n": rsultado_previsao = "Nublado.png"; nghỉ; case "cl": rsultado_previsao = "Sol.png"; nghỉ; case "nv": rsultado_previsao = "Nevoeiro.png"; nghỉ; case "g": rsultado_previsao = "Neve.png"; nghỉ; case "ne": rsultado_previsao = "Neve.png"; nghỉ; case "nd": rsultado_previsao = "na.png"; nghỉ; case "pnt": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; nghỉ; case "psc": rsultado_previsao = "Chuva.png"; nghỉ; case "pcm": rsultado_previsao = "Chuva.png"; nghỉ; case "pct": rsultado_previsao = "Chuva.png"; nghỉ; case "pcn": rsultado_previsao = "Chuva.png"; nghỉ; case "npt": rsultado_previsao = "Chuva.png"; nghỉ; case "npn": rsultado_previsao = "Chuva.png"; nghỉ; case "ncn": rsultado_previsao = "Chuva.png"; nghỉ; case "nct": rsultado_previsao = "Chuva.png"; nghỉ; case "ncm": rsultado_previsao = "Chuva.png"; nghỉ; case "npm": rsultado_previsao = "Chuva.png"; nghỉ; case "npp": rsultado_previsao = "Chuva.png"; nghỉ; case "vn": rsultado_previsao = "Instavel.png"; nghỉ; case "ct": rsultado_previsao = "Chuva.png"; nghỉ; case "ppn": rsultado_previsao = "Chuvas_Isoladas_Noite.png"; nghỉ; case "ppt": rsultado_previsao = "Chuva.png"; nghỉ; case "ppm": rsultado_previsao = "Chuva.png"; nghỉ;
}
Hãy chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () => {// Tính năng này hiện hoạt động vì nó đang chạy trên chuỗi giao diện người dùng: 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: /// Hình ảnh / "+ rsultado_previsao));});
}
Bước 5: Lập trình - Exibir Notícias
Se o comando Detado for show news, o método Consulta_noticias envia uma suggestição HTTP ao feed de notícias da BBC, que também retorna um XML. Như cinco primeiras notícias são exibidas na tela em textblocks.
private async void Consulta_noticias () {
HttpClient httpcliente2 = new HttpClient ();
var resp2 = httpcliente2. GetAsync ("https://feeds.bbci.co.uk/portuguese/rss.xml"). Result;
resp2. EnsureSuccessStatusCode (); var respbody2 = resp2. Content. ReadAsStringAsync (); XmlDocument Notesia = new XmlDocument ();
Notesia. LoadXml (respbody2. Result);
XmlElement root2 = Notesia. DocumentElement;
XmlNodeList node2 = root2. GetElementsByTagName (@ "title");
chờ đợi điều này. Dispatcher. RunAsync (Windows. UI. Core. CoreDispatcherPainst. High, () =>
{this. News1. Text = (node2. Item (2). InnerText); this. News2. Text = (node2. Item (3). InnerText); this. News3. Text = (node2. Item (4). InnerText); this. News4. Text = (node2. Item (5). InnerText); this. News5. Text = (node2. Item (6). InnerText);
});
}
Bước 6: Kết luận
Ao reproduzir esse Guidables, será possível realizar detecção de comandos de voz useizando alguma coroa com o Windos IoT Core instalado. Basta criar o arquivo de gramática com os comandos desejados.
Autores: Egon Patrick Marques Silva
Frederico Clark
Đề xuất:
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: 6 bước
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: Trong phần Hướng dẫn nhanh này, chúng tôi sẽ tạo một bộ điều khiển động cơ bước đơn giản bằng cách sử dụng động cơ bước. Dự án này không yêu cầu mạch phức tạp hoặc vi điều khiển. Vì vậy, không cần thêm ado, chúng ta hãy bắt đầu
Động cơ bước được điều khiển Động cơ bước không có vi điều khiển (V2): 9 bước (có hình ảnh)
Động cơ bước được điều khiển bằng động cơ bước Không cần vi điều khiển (V2): Trong một trong những Hướng dẫn trước đây của tôi, tôi đã chỉ cho bạn cách điều khiển động cơ bước bằng cách sử dụng động cơ bước mà không cần vi điều khiển. Đó là một dự án nhanh chóng và thú vị nhưng nó đi kèm với hai vấn đề sẽ được giải quyết trong Có thể hướng dẫn này. Vì vậy, hóm hỉnh
Đầu máy mô hình điều khiển động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Đầu máy mô hình điều khiển động cơ bước | Động cơ bước làm bộ mã hóa quay: Trong một trong những phần Hướng dẫn trước, chúng ta đã học cách sử dụng động cơ bước làm bộ mã hóa quay. Trong dự án này, bây giờ chúng ta sẽ sử dụng bộ mã hóa quay động cơ bước đó để điều khiển đầu máy mô hình bằng vi điều khiển Arduino. Vì vậy, không có fu
Âm thanh bay bổng với Arduino Uno Từng bước (8 bước): 8 bước
Acoustic Levitation With Arduino Uno Step-by-by-by (8 bước): bộ chuyển đổi âm thanh siêu âm L298N Dc cấp nguồn cho bộ chuyển đổi âm thanh nữ với chân cắm một chiều nam Arduino UNOBreadboard Cách hoạt động: Đầu tiên, bạn tải mã lên Arduino Uno (nó là một vi điều khiển được trang bị kỹ thuật số và các cổng tương tự để chuyển đổi mã (C ++)
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy