Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einfache Spracherkennung mit C# und Arduino UNO

Komponenten & Zubehör

Arduino UNO 1
3× LED (Rot, Grün, Blau) 3
3× Vorwiderstand 220 Ω (beliebiger Wert 150–330 Ω) 3
Breadboard 1
Steckbrücken 1 Set
Headset mit Mikrofon (Smartphone-Headset) oder PC-Mikrofon 1

Software

Projektidee

Steuerung von LEDs per Sprachbefehl, ohne teures Spracherkennungsmodul. Der PC übernimmt die Spracherkennung (System.Speech), sendet erkannte Kommandos per Serial (USB) an den Arduino, der die LEDs schaltet. Perfekt für Einsteiger, um Hardware per Stimme zu steuern.

Schaltung

Arduino Code

const int blueLed = 10, redLed = 9, greenLed = 8;
char incoming = '0';

void setup() {
  Serial.begin(9600);
  pinMode(blueLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
}

void loop() {
  if (Serial.available()) incoming = Serial.read();
  switch (incoming) {
    case 'B': digitalWrite(blueLed, HIGH); break;   // Blue On
    case 'R': digitalWrite(redLed, HIGH); break;    // Red On
    case 'G': digitalWrite(greenLed, HIGH); break;  // Green On
    case 'Z': digitalWrite(blueLed, LOW); break;    // Blue Off
    case 'X': digitalWrite(redLed, LOW); break;     // Red Off
    case 'C': digitalWrite(greenLed, LOW); break;   // Green Off
    case 'V': digitalWrite(blueLed, HIGH); digitalWrite(redLed, HIGH); digitalWrite(greenLed, HIGH); break; // All On
    case 'M': digitalWrite(blueLed, LOW); digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); break;  // All Off
  }
}

C# Windows Forms Anwendung

  1. Neues Projekt: „Windows Forms App (.NET Framework)“.
  2. Referenz hinzufügen: Projekt → Verweis hinzufügen → .NET → System.Speech anhaken.
  3. Form: Buttons „Start“ / „Stop“, TextBox txtCommands (Multiline) für Log.
  4. Code (siehe unten) einfügen, COM-Port anpassen (hier COM5).
  5. Arduino Sketch hochladen, C# App starten, „Start“ klicken, Befehle sprechen.

C# Hauptcode

using System; using System.Windows.Forms; using System.IO.Ports;
using System.Speech; using System.Speech.Recognition; using System.Speech.Synthesis;

namespace VoiceControl {
  public partial class Form1 : Form {
    SerialPort port = new SerialPort();
    SpeechRecognitionEngine rec = new SpeechRecognitionEngine();
    SpeechSynthesizer synth = new SpeechSynthesizer();
    Choices cmds = new Choices();

    public Form1() {
      InitializeComponent();
      port.PortName = "COM5"; // Anpassen!
      port.BaudRate = 9600;
      LoadGrammar();
    }

    void LoadGrammar() {
      cmds.Add(new string[] { "Blue On", "Red On", "Green On",
                              "Blue Off", "Red Off", "Green Off",
                              "All On", "All Off",
                              "Exit", "Arduino Say Good Bye to makers" });
      Grammar gr = new Grammar(new GrammarBuilder(cmds));
      rec.RequestRecognizerUpdate();
      rec.LoadGrammarAsync(gr);
      rec.SetInputToDefaultAudioDevice();
      rec.SpeechRecognized += Rec_SpeechRecognized;
    }

    void Rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) {
      string cmd = e.Result.Text;
      txtCommands.AppendText(cmd + Environment.NewLine);
      switch (cmd) {
        case "Blue On": Send('B'); break;
        case "Red On": Send('R'); break;
        case "Green On": Send('G'); break;
        case "Blue Off": Send('Z'); break;
        case "Red Off": Send('X'); break;
        case "Green Off": Send('C'); break;
        case "All On": Send('V'); break;
        case "All Off": Send('M'); break;
        case "Arduino Say Good Bye to makers": synth.SpeakAsync("Good Bye Makers"); break;
        case "Exit": Application.Exit(); break;
      }
    }

    void Send(char c) {
      if (!port.IsOpen) port.Open();
      port.Write(c.ToString());
      port.Close();
    }

    private void btnStart_Click(object sender, EventArgs e) {
      rec.RecognizeAsync(RecognizeMode.Multiple);
      btnStart.Enabled = false; btnStop.Enabled = true;
      MessageBox.Show("Spracherkennung gestartet!");
    }
    private void btnStop_Click(object sender, EventArgs e) {
      rec.RecognizeAsyncStop();
      btnStop.Enabled = false; btnStart.Enabled = true;
    }
  }
}

Wichtige Hinweise

Erweiterungsideen

Herstellungsprozess

  1. Google Assistant auf MATRIX Voice Raspberry Pi installieren – Schritt-für-Schritt-Anleitung
  2. Echtzeit-Gesichtserkennung auf Raspberry Pi – Komplette Anleitung
  3. Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
  4. Smart Pen: Echtzeit-Handschrifterkennung & Bewegungstracking mit Raspberry Pi & IMU
  5. Eigenen LUMAZOID bauen: DIY Arduino Musik-Visualisierer
  6. Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
  7. 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
  8. Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
  9. "Geh-Weg-Roboter" – Einfaches Arduino-Starterset für Kinder
  10. Analog-Style LED Persistence-of-Vision Uhr – DIY Arduino Nano Projekt