EasyVR sprachsteuerung

hei ihr, ich habe mich jetzt ne wcohe damit rumgeschlagen und komme einfach nicht weiter:

Ich will mit dem VeeaR - EasyVR Modul eine Sprachsteuerung für eine klappe realisieren.
das habe ich:

  • VeeaR - EasyVR
  • VeeaR - EasyVR DevBoard
  • Servomotor

kann mir jemand helfen beim umgang mit dem EasyVR Modul?
überall wo ich was darüber lese, reden sie von Arduino, aber der suppord meinte dass ich das modul ohne weitere zusatzsachen betreiben könnte.

HELP :blush:

also im grnde brauch ich nur hilfe bei dem code gedöns.
ich weis grad kein passendes programm für C und mir fällt nicht ein wie ich den code aufs board bekomme mich schäm

Lept0pp:
ich weis grad kein passendes programm für C und mir fällt nicht ein wie ich den code aufs board bekomme

Kleinen Moment noch...
... ich muss mir bei eBay erst noch ein Konvolut chirurgischer Instrumente bestellen, und wenn ich dann Skalpell, Gefäßklemmen, Wundhaken zusammenhabe, dann gehe ich in ein Mediziner-Forum und frage dort mal, was ich nun noch für die Durchführung meiner allerersten Gehirnoperation brauche, mir fällt nämlich gerade nicht ein, wie ich die Instrumente bei der Gehirn-OP bedienen muss.

OK, nun zurück zu Deinem Problem: Das Board kommt mit vollständiger Dokumentation und mit PC-Zusatzsoftware.

So what?
Was möchtest Du als erstes machen?

WHAT’S IN THE BOX?
EasyVR Module
Wires
Microphone
User Manual (free download online)
Software (free download online)
Demo videos and related sample code available

Hast Du das "User manual" und die "Software" heruntergeladen und installiert?

Hast Du das Modul mal testweise am PC angeschlossen, so wie es hier beschrieben ist:
http://www.veear.eu/wp-content/uploads/veear.eu/2012/07/How-to-interface-EasyVR-to-a-PC.pdf

Wenn, dann würdest Du als Bauteil zwischen dem EasyVR und dem PC einen "USB-TTL-Adapter" benötigen.

Hast Du das gemacht?

Oder möchtest Du diesen einfachen Schritt überspringen, gleich einen Mikrocontroller wie z.B. ein Arduino-Board einsetzen und den Mikrocontroller als "Bridge" zwischen das EasyVR und den PC setzen, so wie es hier beschrieben ist:
http://mbed.org/users/4180_1/notebook/easyvr/
(Das dort gezeigte Bridge-Programm müßte für Arduino natürlich etwas anders aussehen als dort gezeigt)

Also was hast Du bereits mit dem Board gemacht? Wie weit bist Du?

Wenn Du eine Mikrocontroller-Schaltung für das Board entwickeln möchtest, kannst Du jedenfalls nicht damit loslegen, bevor Du das Board dazu gebracht hast mal "Piep" zu sagen.

Immer schön einen Schritt nach dem anderen.

ich hab es angeschlossen (pc).
die software is auch schon drauf.
anfangs sollte man ja sdie firmware und bei bedarf die alternativen sound files draufspielen.
das problem war das mein bootloader rumgezickt hatt.
hab festgestellt das ein kontakt brüchig war, hab den fix repariert und dann gings wieder.
habe jetzt die alternativen sound files aufgespielt, meine einstellungen in dem Easy VR Commander (software) gemacht und den benötigten code generiert.
ich häng jetzt an dem schritt das ganze auf das modul zu bekommen. der code muss da ja drauf, nur wie genau^^
ich hab zwaar c++ kentnisse, jedoch weisi ch net wie ich nen code auf ein bauteil bekomme.
der nächste schritt wäre dann einfach mal einen akku an die platine zu hängen und zu hoffen das alles so funzt wies im grunde soll :wink:

Lept0pp:
einstellungen in dem Easy VR Commander (software) gemacht und den benötigten code generiert.

Was für "Code generiert"?
Arduino-Quellcode generiert?
Code für irgendeinen anderen Mikrocontroller generiert?
Serielle Steuerbefehle generiert?
Kannst Du von dem generierten Code irgendwas vorzeigen?

Vielleicht kann man an dem generierten Code dann sehen, was das für ein Code ist und wozu der gehört.

Von der Beschreibung des Boards her, die ich kurz überflogen habe, konnte ich jedenfalls nichts in die Richtung erkennen, dass "Code" auf das EasyVR Board geladen werden muß. Das EasyVR hat vielmehr seine Firmware als Code, außerdem Speicher für "Daten" (die antrainierten Sprachkommandos), und gesteuert werden muß das Board über die TTL-Seriellschnittstelle von einem angeschlossenen Mikrocontroller aus (oder von einem angeschlossenen PC) mit einem Steuerprogramm auf dem Mikrocontroller (oder dem PC).

das hier wäre der code^^
.bas oder . pde datein sind das

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#include "SoftwareSerial.h"
SoftwareSerial port(12,13);
#else // Arduino 0022 - use modified NewSoftSerial
#include "WProgram.h"
#include "NewSoftSerial.h"
NewSoftSerial port(12,13);
#endif

#include "EasyVR.h"
EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
GROUP_0 = 0,
GROUP_1 = 1,
GROUP_16 = 16,
};

enum Group0
{
G0_JARVIS = 0,
};

enum Group1
{
G1_HELM_AUF = 0,
G1_HELM_ZU = 1,
};

enum Group16
{
G16_SVEN = 0,
};

EasyVRBridge bridge;

int8_t group, idx;

void setup()
{
// bridge mode?
if (bridge.check())
{
cli();
bridge.loop(0, 1, 12, 13);
}
// run normally
Serial.begin(9600);
port.begin(9600);

if (!easyvr.detect())
{
Serial.println("EasyVR not detected!");
for (;;);
}

easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detected!");
easyvr.setTimeout(5);
easyvr.setLanguage(3);

group = EasyVR::TRIGGER; //<-- start group (customize)
}

void action();

void loop()
{
easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

Serial.print("Say a command in Group ");
Serial.println(group);
easyvr.recognizeCommand(group);

do
{
// can do some processing while waiting for a spoken command
}
while (!easyvr.hasFinished());

easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

idx = easyvr.getWord();
if (idx >= 0)
{
// built-in trigger (ROBOT)
// group = GROUP_X; <-- jump to another group X
return;
}
idx = easyvr.getCommand();
if (idx >= 0)
{
// print debug message
uint8_t train = 0;
char name[32];
Serial.print("Command: ");
Serial.print(idx);
if (easyvr.dumpCommand(group, idx, name, train))
{
Serial.print(" = ");
Serial.println(name);
}
else
Serial.println();
easyvr.playSound(0, EasyVR::VOL_FULL);
// perform some action
action();
}
else // errors or timeout
{
if (easyvr.isTimeout())
Serial.println("Timed out, try again...");
int16_t err = easyvr.getError();
if (err >= 0)
{
Serial.print("Error ");
Serial.println(err, HEX);
}
}
}

void action()
{
switch (group)
{
case GROUP_0:
switch (idx)
{
case G0_JARVIS:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_1:
switch (idx)
{
case G1_HELM_AUF:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
case G1_HELM_ZU:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
case GROUP_16:
switch (idx)
{
case G16_SVEN:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands
break;
}
break;
}
}

also ich will das board halt noch iwie dazu bringen das zu tun was ich will.
denn laut anleitung mussich den code erstmal irgendwie auf das board laden

Lept0pp:
also ich will das board halt noch iwie dazu bringen das zu tun was ich will.
denn laut anleitung mussich den code erstmal irgendwie auf das board laden

Der .bas Code ist offenbar für ein anderes Entwicklungssystem, wenn Du den auch siehst. Andere Baustelle.

Aber der Code, den Du oben gepostet hast, das ist Arduino-Code:

#include "Arduino.h"

"Das Board", auf den dieser Code draufgeladen werden muss, ist ein Arduino-Board (nicht das EasyVR Board!).
Hast Du denn überhaupt ein Arduino-Board?
Z.B. einen "Arduino UNO"?

Diese beiden Zeilen hier am Anfang des Codes:
#include "SoftwareSerial.h"
SoftwareSerial port(12,13);
bedeuten, dass am Arduino per Software eine zweite serielle Schnittstelle an den Pins 12 und 13 eingerichtet werden soll. Standardmäßig haben die einfachen Arduino-Boards nämlich nur eine Hardware-Serial Schnittstelle.

An den Pins 12 und 13 des Arduino-Boards (das ist dann Dein Steuer-Controller) mit dem Programm gehört dann die serielle Schnittstelle Deines EasyVR Boards angeschlossen, Pin ETX und ERX am EasyVR.

Und "das Programm", das Du oben gepostet hast, das macht für sich weiter noch gar nichts, außer das EasyVR-Board am Arduino zu erkennen und Dir das am ggf. gleichzeitig angeschlossenen PC anzuzeigen:
Serial.println("EasyVR detected!");
sowie Dich aufzufordern, "Sprechen Sie jetzt":
Serial.print("Say a command in Group ");

Ansonsten ist der Code eine vollkommen leere Hülse, die gar nichts macht.
Den Code, wo irgendwelche Aktionen stattfinden sollen, mußt Du natürlich noch selber schreiben und überall dort einfügen, wo im Code der Platzhalter steht:
// write your action code here

Da hast Du Dich ganz schön übernommen, oder?

Wenn man als Einsteiger anfängt mit Mikrocontroller-Programmierung, dann fängt man normalerweise ganz klein an.

Und als Hardware schließt man als Anfänger nicht gleich ein Spracherkennungsboard an seinen Mikrocontroller an, sondern erstmal nur eine einfache LED und versucht, diese zum Blinken zu bringen. Und wenn das dann klappt, lernt man ein bisschen C++-Programmierung, damit man mit der Programmiersprache was anfangen kann. Und dann steigert man sich mit der Hardware: Man schließt vielleicht noch eine zweite LED an, und einen Tastschalter zum an/aus schalten.

Ansteuerung von Motoren ist dann schon höhere Schule, dafür benötigst Du dann bereits Motor-Treiberstufen. Und mit so komplexer Hardware wie einem Spracherkennungs-Board baust Du am besten erst dann Schaltungen auf, wenn Du ein bischen was an Mikrocontroller-Programmierung beherrscht.

Einfach oder "easy" ist so ein Hardwareteil nämlich nur mit den entsprechenden Kenntnissen zu beschalten und programmtechnisch von einem Mikrocontroller ansprechbar. Du benötigst gute Kenntnisse in C++-Programmierung, Schaltungstechnik, über serielle Schnittstellen und über Mikrocontroller-Technik. Und erst dann ist es "easy" mit diesem Board.

danke für deine mühe^^

ich habe mir jetzt einfach das easy vr Arduino shield zusätzlich zugelegt. für das gibt es nämlich gute anleitungen :wink:

übernommen, naja, wenn da nicht die komplikationen bei den manuals wäre (nämlich das die immer davon ausgehen dass man das easy vr nicht stand alone betreiben will) müsste ich garnicht hier nachfragen :wink:

naja scheinbar muss man garnichts programmieren, es reicht es in dem commander (easy vr proggi) einzustellen und dann isses glecih im board gespeichert. muss nurn och dahinter kommen wie ich das jetzt fernab vom pc betreibe und wie ich die kommandos verknüpfe .

Lept0pp:
ich habe mir jetzt einfach das easy vr Arduino shield zusätzlich zugelegt. für das gibt es nämlich gute anleitungen :wink:

Und welches Arduino-Board hast Du?
D.h. auf welches Arduino-Board möchtest Du das Shield aufstecken?
Hast Du ein Arduino-Uno? Oder ein Arduino-Mega? Oder was?

Ein "Shield" arbeitet von alleine genau so wenig wie Dein Standalong-easyVR von alleine arbeitet, auch das Shield braucht das Mikrocontroller-Board.

Der einzige Unterschied ist der: Ein Arduino-Shield kannst Du ohne Verkabelung direkt auf ein Arduino-Board draufstecken. Dasselbe Prinzip wie bei Lego-Bausteinen. Das schaffen Dreijährige, sowas zusammenzustecken.

Das, was Du Dir mit dem VR-Shield gegenüber dem VR-Board ersparst, ist nur die Verkabelung: Betriebsspannung, Masse, Pin12 und Pin13 des Arduino-Boards mit Pin-ETX und Pin-ERX am EasyVR zu verbinden.

Aber ohne Arduino-Board (UNO, Mega, etc.) läuft kein Arduino-Programm alleine auf einem "Shield".

Ein "Shield" ist im Arduino-System immer eine Zusatzplatine zu einem Arduino-Mikrocontrollerboard.

Ich bin mir nicht sicher, ob Du mit dem Bestellen immer neuer Spracherkennungs-Bauteile den richtigen Plan hast.

ich hab das hier http://www.tigal.com/product/3163 also das uno mit dazu gekauft.

ich dachte anfangs halt dass ich das easy vr einfach alleine betreiben kann. aber da habe ich mich wohl geirrt.

Lept0pp:
ich hab das hier http://www.tigal.com/product/3163 also das uno mit dazu gekauft.

Genau, das ist ein Arduino UNO-Board und da kannst Du Dein Programm draufladen (nachdem Du die Arduino-Software installiert, Dein Programm als Sketch angelegt und die notwendigen Libraries in die passenden Unterverzeichnisse kopiert hast).