Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.02.2014, 09:41   #131
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Уважаемый Admin скажите я все сделал как в ссылке Описание работы с EasyVR.
Все получилось. Теперь я не могу разобрать куда подключать пины от easy vr и надоли переводить ардуино на другой режим. При програмировании easy в командоре пины были etx-tx erx-rx. И динамик подключать к ардуино spk и +5v. или к easy j2.
Mikhail вне форума   Ответить с цитированием
Старый 20.02.2014, 11:15   #132
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

Цитата:
При програмировании easy в командоре пины были etx-tx erx-rx
У Вас EasyVR Шилд?

Цитата:
И динамик подключать к ардуино spk и +5v. или к easy j2
К EasyVR
Admin вне форума   Ответить с цитированием
Старый 20.02.2014, 14:45   #133
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Нет не шилд. Обычный я по форуму нашел скетч для програмирования команд т.к. тот что в базе не подошел а остальное все как написано. Звуки залил замкнув res и end и xm на 3.3v. Потом поставил скетч с темы и дальше все.
Mikhail вне форума   Ответить с цитированием
Старый 20.02.2014, 22:20   #134
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Вот скетч.

Код:
#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"

#define SND_AUDIO_1 1
#define SND_AUDIO_2 2
#define SND_AUDIO_3 3
#define SND_AUDIO_4 4

EasyVR easyvr(port);
EasyVRBridge bridge;

uint32_t mask = 0;
int8_t group = 0;
uint8_t train = 0;
char name[32];


void setup()
{
  // bridge mode?
  if (bridge.check())
  {
    cli();
    bridge.loop(0, 1, 12, 13);
  }

  Serial.begin(9600);
  port.begin(9600);
  pinMode(2, OUTPUT); 
   
  if (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    for (;;);
  }
  
  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(EasyVR::ITALIAN);
  
  int16_t count = 0;
  
  
  if (easyvr.getGroupMask(mask)) // get trained user names and passwords
  {
    uint32_t msk = mask;  
    for (group = 0; group <= EasyVR::PASSWORD; ++group, msk >>= 1)
    {
      if (!(msk & 1)) continue;
      if (group == EasyVR::TRIGGER)
        Serial.print("Trigger: ");
      else if (group == EasyVR::PASSWORD)
        Serial.print("Password: ");
      else
      {
        Serial.print("Group ");
        Serial.print(group);
        Serial.print(": ");
      }
      count = easyvr.getCommandCount(group);
      Serial.println(count);
      for (int8_t idx = 0; idx < count; ++idx)
      {
        if (easyvr.dumpCommand(group, idx, name, train))
        {
          Serial.print(idx);
          Serial.print(" = ");
          Serial.print(name);
          Serial.print(", Trained ");
          Serial.print(train, DEC);
          if (!easyvr.isConflict())
            Serial.println(" times, OK");
          else
          {
            int8_t confl = easyvr.getWord();
            if (confl >= 0)
              Serial.print(" times, Similar to Word ");
            else
            {
              confl = easyvr.getCommand();
              Serial.print(" times, Similar to Command ");
            }
            Serial.println(confl);
          }
        }
      }
    }
  }
  easyvr.setLevel(EasyVR::HARDER);
  easyvr.playSound(SND_AUDIO_1, EasyVR::VOL_FULL);
  digitalWrite(2, LOW);
}

void loop()
{
  int idx_cmd;
  int idx_cmd2;	
  int idx_pwd;
  
  Serial.println("Say a name computer");  
  easyvr.recognizeCommand(1); // recognise command in group 1 
  while (!easyvr.hasFinished()); // wait for user name
 
  idx_cmd = easyvr.getCommand(); // get recognised user name

  if (idx_cmd >= 0) 
  {    
    Serial.print("Name: ");    
    if (easyvr.dumpCommand(1, idx_cmd, name, train))
      Serial.println(name);
    else
      Serial.println();    
    
    easyvr.playSound(SND_AUDIO_3 , EasyVR::VOL_FULL);  // ask a command
    Serial.println("Say the command");
    easyvr.recognizeCommand(2);  // set group 2  
    while (!easyvr.hasFinished()); // wait command
    idx_cmd2 = easyvr.getCommand();
    if (idx_cmd2 == 0)
    {
      Serial.println("On");     
      easyvr.recognizeCommand(3);  // set group 3 
      while (!easyvr.hasFinished()); // wait command
      idx_pwd = easyvr.getCommand(); 
      if (idx_pwd == 0)
      {
        Serial.println("Light");
        easyvr.playSound(SND_AUDIO_4 , EasyVR::VOL_FULL);
        digitalWrite(2, HIGH);
      }
      else
        Serial.println();      
    } 
      if (idx_cmd2 == 1) // 
      {
        Serial.println("Off");
       easyvr.recognizeCommand(3);  // set group 3 
      while (!easyvr.hasFinished()); // wait command
      idx_pwd = easyvr.getCommand(); 
      if (idx_pwd == 0)
      {
        Serial.println("Ligh off");
        easyvr.playSound(SND_AUDIO_4 , EasyVR::VOL_FULL);
        digitalWrite(2, LOW);
      }      
    }    
    
    int16_t err = easyvr.getError();
    
    if (easyvr.isTimeout() || (err >= 0)) // 
    {
      Serial.println("Error, try again...");
      easyvr.playSound(SND_AUDIO_2 , EasyVR::VOL_FULL);
    }
  
  
  else
  {
    if (easyvr.isTimeout()) 
        Serial.println("Timed out, try again...");
      
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);          
    }
  }
  }
}
Mikhail вне форума   Ответить с цитированием
Старый 20.02.2014, 23:43   #135
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

Скетч Вам чужой не подойдет, генерируйте скетч в программе
Admin вне форума   Ответить с цитированием
Старый 20.02.2014, 23:57   #136
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

т.е этот скетч на easy vr sheild а на обычнай с кардуино нано не пойдет?
Mikhail вне форума   Ответить с цитированием
Старый 21.02.2014, 13:02   #137
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

Цитата:
т.е этот скетч на easy vr sheild а на обычнай с кардуино нано не пойдет?
Скетч и плата подойдут, только в настройке Ваши команды и имена этих команд могут отличаться
Я же Вам написал сгенерируйте скетч в программе commander
Admin вне форума   Ответить с цитированием
Старый 21.02.2014, 13:47   #138
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Вот скетч который сгенерировал командер. Его надо просто залить или скомпановать с другим скетчем.

Код:
#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_1  = 1,
  GROUP_2  = 2,
  GROUP_3  = 3,
};

enum Group1 
{
  G1_COMRUTER = 0,
};

enum Group2 
{
  G2_ON = 0,
  G2_OFF = 1,
};

enum Group3 
{
  G3_LIGHT = 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(0);

  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_1:
      switch (idx)
      {
      case G1_COMRUTER:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_2:
      switch (idx)
      {
      case G2_ON:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G2_OFF:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_3:
      switch (idx)
      {
      case G3_LIGHT:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}
Mikhail вне форума   Ответить с цитированием
Старый 21.02.2014, 14:03   #139
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Голосовое управление нагрузками

Теперь в сгенерированом скетче вставляем свой код, который должен исполняться, вставлять туда где выделил красным
Для начала вставьте digitalWrite(13, ххх);


case G1_COMRUTER:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands

break;
}
break;
case GROUP_2:
switch (idx)
{
case G2_ON:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands

break;
case G2_OFF:
// write your action code here
// group = GROUP_X; <-- or jump to another group X for composite commands

break;
}

Вот Вам готовый пример который должен включать и выключать светодиод D13
По команде G2_ON включит
и выключит по команде G2_OFF
Код:
#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_1  = 1,
  GROUP_2  = 2,
  GROUP_3  = 3,
};

enum Group1 
{
  G1_COMRUTER = 0,
};

enum Group2 
{
  G2_ON = 0,
  G2_OFF = 1,
};

enum Group3 
{
  G3_LIGHT = 0,
};


EasyVRBridge bridge;

int8_t group, idx;

void setup()
{
   pinMode(13, OUTPUT);
  // 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(0);

  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_1:
      switch (idx)
      {
      case G1_COMRUTER:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_2:
      switch (idx)
      {
      case G2_ON:
        digitalWrite(13, HIGH);
        break;
      case G2_OFF:
        digitalWrite(13, LOW);
        break;
      }
      break;
    case GROUP_3:
      switch (idx)
      {
      case G3_LIGHT:
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}
Admin вне форума   Ответить с цитированием
Старый 21.02.2014, 14:48   #140
Mikhail
Member
 
Регистрация: 19.02.2014
Сообщений: 40
Вес репутации: 0
Mikhail is an unknown quantity at this point
По умолчанию Re: Голосовое управление нагрузками

Скажите а чтоб получать ответы на команды нужно в скетче прописывать или в командере можно както сгенерировать. Audio залиты с сылки.
Mikhail вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 8 (пользователей: 0 , гостей: 8)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:53. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика