Модуль распознавания речи+Arduino Pro mini+Arduino MP3-Sheild

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Список компонентов:
1).Модуль распознавания речи.(напряжение питания от 4,5 до 5,5 Вольт DC)
2).Реле - 1 (ID:16-32)(с цифровым управлением).
3).Arduino Pro mini 5V / 16M.
4).Источник питания 4,8-5V.
5).Источник питания 12V.
6).Цепь светодиодов.(12V(уже с резисторами)).
7).Arduino MP3-ЩИТ.
8).Серводвигатели SG 90.(2 шт.)
9).Динамики 2W.(2 шт.)
10).Герконы.
Необходимо:
Используя Модуль распознавания речи командой "Включить", с помощью реле, включить цепь светодиодов. Которые должны светить до тех пор, пока не будет подана команда "Выключить".
Используя Модуль распознавания речи командами "Вверх", "Вниз" изменить положение 2-ух серводвигателей SG 90(которые должны поворачиваться синхронно).
Используя геркон как кнопку на замыкание, включать и выключать воспроизведение mp3 файла на MP3-ЩИТе.(Идеальный вариант если получится одним герконом включать/выключать 001.mp3, а другим включать/выключать 002.mp3).

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Пожалуйста помогите решениями....

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Высылайте компоненты и будем решать.

Leshiy
Offline
Зарегистрирован: 19.07.2014
Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013


Так мы корову не продадим.

Sutsuko
Offline
Зарегистрирован: 11.08.2014
Sutsuko
Offline
Зарегистрирован: 11.08.2014

Puhlyaviy пишет:
Высылайте компоненты и будем решать.

Меня интересует програмное решение...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Sutsuko пишет:

Puhlyaviy пишет:
Высылайте компоненты и будем решать.

Меня интересует програмное решение...


Ну я рад за вас. Вы предлагаете мне за свой счет купить такие же компоненты как у вас. Что бы написать для вас програмное решение? Или мне его тестировать на кофейной гуще?

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Цитата:
Ну я рад за вас. Вы предлагаете мне за свой счет купить такие же компоненты как у вас. Что бы написать для вас програмное решение? Или мне его тестировать на кофейной гуще?

А вам обязательно тестировать....?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Мне не обязательно. Но
1 вы оплачиваете вперед
2 получаете код
3 тестируете
4 оплачиваете переделку
И так далее по кругу

Sutsuko
Offline
Зарегистрирован: 11.08.2014

То есть вы не можете ни чего гарантировать...!?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Sutsuko пишет:

То есть вы не можете ни чего гарантировать...!?


Как я могу гарвнтировать прямоту ваших рук?

Leshiy
Offline
Зарегистрирован: 19.07.2014

Задачи реально детсадовского уровня. Это всё можно сделать даже не умея программировать толком. Распознавалка голоса даёт на выходе код полученной команды, например на "Вверх" она выдаёт 1, на "Вниз" 2 итд. В программе всего то и надо, смотреть чо там пришло, 1, 2, или 100 и выполнять желаемое действие.

У вас как вообще с электроникой и программированием? Хоть чуть дружите? Может сами попробуете?

renoshnik
Offline
Зарегистрирован: 11.04.2013

А вариант без модуля распознавания речи подойдёт ?

Вместо этого модуля использовать смартфон который распознает голосовые команды (без подключения к интернету) и по каналу БТ отправляет команду на ардуинку, так дешевле должно быть и можно просто сделать программный код ...

Параллельно на смарте можно сделать дублирование команд спомощью кнопок...

Что-то типа вот такого девайса ...   https://www.youtube.com/watch?v=Fh2JU5Fu2Dg

Sutsuko
Offline
Зарегистрирован: 11.08.2014

renoshnik пишет:

А вариант без модуля распознавания речи подойдёт ?

Вместо этого модуля использовать смартфон который распознает голосовые команды (без подключения к интернету) и по каналу БТ отправляет команду на ардуинку, так дешевле должно быть и можно просто сделать программный код ...

Параллельно на смарте можно сделать дублирование команд спомощью кнопок...

Что-то типа вот такого девайса ...   https://www.youtube.com/watch?v=Fh2JU5Fu2Dg

Спасибо, но так не подойдёт.

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:

Задачи реально детсадовского уровня. Это всё можно сделать даже не умея программировать толком. Распознавалка голоса даёт на выходе код полученной команды, например на "Вверх" она выдаёт 1, на "Вниз" 2 итд. В программе всего то и надо, смотреть чо там пришло, 1, 2, или 100 и выполнять желаемое действие.

У вас как вообще с электроникой и программированием? Хоть чуть дружите? Может сами попробуете?

Сам я пробовал. Получилось только в сам модуль голоса залить команды через UART TTL и в MP3 Sheild в память SPI залить mp3 файл.
Весь фокус в том что через голосовой модуль будут подаваться команды вкл./выкл. для переключения реле и вверх/вниз для 2-ух серво двигателей работающих синхронно. А вот mp3 модуль нужно чтоб проигрывал файл 001.mp3 и 002.mp3 при замыкании 1-го либо 2-го геркона.
Подумал я что возможно использовать функция "воспроизведение при подаче питания". Прописал cp01// в файле iSound.mp3, залил вместе с файлом mp3, но не получилось.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Да нету там фокуса, это всего лишь последовательность нулей и единичек. Команды в голосовой модуль уже записаны? Если записаны, то вот тут - http://forumdvrobot.ru/forum/3-37-1 пошаговая инструкция, с примером кода, которая вам поможет. Отличие её от вашего случая в том, что она выводит данные на LCD-дисплей, а вам надо моргать светодиодами и играть музыку. Но это мелочи жизни.

По примеру залейте команды в распознавалку голоса, затем мы подкорректируем код так, чтобы он на распознанную команду поморгал нам светодиодом, а не на дисплее писал. Ну и, после того как удостоверимся, что модуль чётко реагирует на команды, а ардуина понимает, что ей говорит модуль, будем ваять уже то, что вам требуется.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Leshiy пишет:

 будем ваять уже то, что вам требуется.

так может пусть он сам и ваяет? не нужно поощрять халявщиков.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Puhlyaviy пишет:

Leshiy пишет:

 будем ваять уже то, что вам требуется.

так может пусть он сам и ваяет? не нужно поощрять халявщиков.

Разве он халявщик? Во-первых он предлагал деньги за работу. Во-вторых он часть работы сделал сам, записал там данные какие, это тоже не хухры-мухры для начинающего. В третьих писать он будет сам, я (мы?) просто подскажем ему чего куда.

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:
Да нету там фокуса, это всего лишь последовательность нулей и единичек. Команды в голосовой модуль уже записаны? Если записаны, то вот тут - http://forumdvrobot.ru/forum/3-37-1 пошаговая инструкция, с примером кода, которая вам поможет. Отличие её от вашего случая в том, что она выводит данные на LCD-дисплей, а вам надо моргать светодиодами и играть музыку. Но это мелочи жизни.

Возможно вы не совсем верно меня поняли... Голосовой модуль управляет только двумя сервоприводами(работающими синхронно) и реле, которое включает сеть 12V и таким образом подаёт питание на сетодиоды(горят постоянно(а не моргают), пока не будет подана команда на реле "выкл.").
Свечение светодиодов никак не зависит от модуля MP3.
Управление модуля MP3 осуществляется с помощью двух герконов.(один вкл./выкл. 001.mp3, другой вкл./выкл. 002.mp3)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Давай Леший интерпретируй по русски чё он тут хочет вообще. Я например вообще не понимаю что там у него как и куда подключается и главное почему так и зачем.:)

Leshiy
Offline
Зарегистрирован: 19.07.2014

Ну я уже не знаю... Даёшь ссылку на пошаговую инструкцию на то, как сделать, чтобы по голосовой команде выполнялось действие, а тебе "Возможно вы неправильно меня поняли...".

Вы уже начнёте что-то делать, чтобы мы могли вам помочь это сделать? Или вы так и будете говорить, что вас неправильно поняли и ждать, пока кто-либо всё сделает за вас (а этого не будет)?

Ваща задача - записать по инструкции команды в модуль распознавания, затем взять код, который идёт вместе с инструкцией и исправить его так, чтобы он вам что надо делал, реле щёлкал, светодиодами моргал и за пивом бегал. Исправлять код будем вместе, так как вам одному сложно будет справиться.

НО ВЫ УЖЕ НАЧНИТЕ ХОТЬ ЧТО-ТО ДЕЛАТЬ!

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гыыы леший, ты думаешь мы тут в бирюльки играем? Тут по названию сразу понятно что ожидать от ТС.

Sutsuko
Offline
Зарегистрирован: 11.08.2014

d85d766eedf8t.jpg

 

7fc314c88b9ct.jpg

Leshiy
Offline
Зарегистрирован: 19.07.2014

Красиво. Но делать надо следующее - пройти по неоднократно приведённой ссылке, согласно описанию внести в модуль распознавания голоса свои команды, затем правильно подключить модуль распознавания голоса к ардуино и исправить программу-пример, которая приложена к инструкции, таким образом, чтобы она на эти самые команды что-то делала, для начала моргала светодиодом на 13 ноге. Как исправить программу я (мы) вам подскажем.

А квадратики эти цветные, оно, конечно, хорошо, но к делу не относится никак.

5 дней потрачено на попытки донести до вас простую вещь. И она так до сих пор и не донесена. Это ужасно печалит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Sutsuko пишет:

d85d766eedf8t.jpg

 

7fc314c88b9ct.jpg


бабушкино лоскутное одеяло? Красиво. Бабушка молодец.

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Вы что про Ardublock ничего не слышали...?

Leshiy
Offline
Зарегистрирован: 19.07.2014

Нет, не слышали.

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:

Нет, не слышали.

 

http://www.hobbylab.ru/newslist/ardublock-rus/

Leshiy
Offline
Зарегистрирован: 19.07.2014

Спасибо. Теперь я знаю, что такое ардуиноблокс. Осталось выяснить, что мне с ним делать и как он относится ко всему тому, что мы вам уже 5 дней пишем.

Sutsuko
Offline
Зарегистрирован: 11.08.2014
[code]
#include <TinkerKit.h>

void setup()
{
 pinMode( 4 , OUTPUT);
pinMode( O4 , OUTPUT);
}

void loop()
{
 digitalWrite( 4 , HIGH );
digitalWrite( O4 , HIGH );
 digitalWrite( 4 , LOW );
digitalWrite( O4 , LOW );
}


[/code]

 

Leshiy
Offline
Зарегистрирован: 19.07.2014

Это начинает напоминать одну тему про контрольную сумму.

Вы уже залили в модуль распознавания голоса команды?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гыы. Я тут с попкормом посижу, посмотрю.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Пора писать программу распознавания бренда попкорна по звуку

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:

Это начинает напоминать одну тему про контрольную сумму.

Вы уже залили в модуль распознавания голоса команды?

Да.

Sutsuko
Offline
Зарегистрирован: 11.08.2014
[code]
void setup()
{
 pinMode( 2 , INPUT);
 pinMode( 4 , OUTPUT);
}

void loop()
{
 if ( digitalRead( 2))
 {
  digitalWrite( 4 , HIGH );
 }
 else
 {
  digitalWrite( 4 , LOW );
 }
}



[/code]

Вот так для реле у меня получилось....

Leshiy
Offline
Зарегистрирован: 19.07.2014

Хорошо, вы залили команды в модуль. Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.

Sutsuko
Offline
Зарегистрирован: 11.08.2014
[code]
#include <Servo.h>

Servo servo_pin_7;
Servo servo_pin_8;

void setup()
{
 pinMode( 12 , INPUT);
servo_pin_7.attach(7);
servo_pin_8.attach(8);
}

void loop()
{
 if ( digitalRead( 12))
 {
 servo_pin_7.write( 140 );
 servo_pin_8.write( 140 );
 }
 else
 {
 servo_pin_7.write( 0 );
 servo_pin_8.write( 0 );
 }
}



[/code]

Вот для двух серво....

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:

Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.

Реле всего одно, подключено к pin 4. Оно включает сеть 12V.
..."код в комплекте с описанием"...чего...?

Leshiy
Offline
Зарегистрирован: 19.07.2014

Sutsuko пишет:

Leshiy пишет:

Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.

Реле всего одно, подключено к pin 4. Оно включает сеть 12V.
..."код в комплекте с описанием"...чего...?

Как чего? Вам же давали ссылки на управление голосом, там вам и схема подключения, и подробнейшее описание метода записи и тестирования команд, и готовый, полностью рабочий код, который по этим командам выполняет определённые действия. Где вы всё это время были то?

Вам оставалось всего ничего - строго следуя инструкции внести команды в модуль распознавания, по той же инструкции проверить качество распознавания команд, а затем просто исправить готовый код так, чтобы он не на дисплее буковки писал, а релюшками щёлкал, или что там вам надо от него делал. А вы вместо этого пропадали на несколько дней, а потом то писали, что вас неправильно понимают, то публиковали кусок кода без описания. И ждали...

Так мы с вами каши не сварим. Скоро вторая неделя закончится, а мы и шагу не сделали, так что если вы действительно хотите получить результат, то читайте все ответы заново, ходите по всем приведённым ссылкам, а потом, если вы чего-то не понимаете - спрашивайте.

Для получения результата ВОВСЕ НЕ ОБЯЗАТЕЛЬНО досконально изучать тему, достаточно и поверхностного понимания, которое позволит взять готовое решение и модифицировать его так, как вам нужно, именно по этому пути вам сейчас и надо идти, брать чужое и преобразовывать его в своё. Чужого вам выдали с лихвой, начните делать из него своё.

Sutsuko
Offline
Зарегистрирован: 11.08.2014
#include <LiquidCrystal.h> 
 byte com = 0;    
 // тут выводы для подключения дисплея 
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

 void setup() { 
     Serial.begin(9600);// устанавливаем скорость UART для модуля 
     delay(2000); 
     Serial.write(0xAA);//избавляемся от текста    
     Serial.write(0x37);// и оставляем байты 
     delay(1000); 
     Serial.write(0xAA); // вызываем из памяти 
     Serial.write(0x21);// команды 1-ой группы 
     delay(2000); 
     // определяем тип дисплея 
     lcd.begin(16, 2); 
     // пишем приветствие 
     lcd.print("< DV-ROBOT >"); 
     delay(2000); 
 } 

 void loop() { 
     lcd.setCursor(0, 1);// устанавливаем курсор 
     while(Serial.available()) 
     { 
       com = Serial.read();// читаем входящие байты и присваиваем значение переменной com 
       switch(com) 
       { 
       case 0x11://получаем байт от команды "вперед" 
         lcd.clear(); //очищаем дисплей от предыдущего текста 
         lcd.print("-UP-"); //выводим текст на дисплей 
         break; 

       case 0x12://получаем байт от команды "назад" 
         lcd.clear();//очищаем дисплей от предыдущего текста 
         lcd.print("-DOWN-");//выводим текст на дисплей 
         break; 

       case 0x13://влево 
         lcd.clear(); 
         lcd.print("-LEFT-"); 
         break; 

       case 0x14://вправо 
         lcd.clear(); 
         lcd.print("-RIGHT-"); 
         break; 

       case 0x15://стой 
         lcd.clear(); 
         lcd.print("-STOP-"); 
         break; 

       } 
     } 

 }

 

Я не знаю какую библиотеку писать вместо LiquidCrystal.h...
К тому же сигнал в Arduino должен идти не через UART.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Вместо ликвидкристалл надо использовать библиотеку с названием "никакая". В switch(com) меняете действие по case с отсылки данных в LCD на включение реле. И всё.

А вот про UART интерееесно - меняем ТЗ на ходу, так? Сначала надо, чтобы оно просто работало, а теперь надо, чтобы оно работало не используя штатные средства? А как вы хотите?

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Leshiy пишет:

Вместо ликвидкристалл надо использовать библиотеку с названием "никакая". В switch(com) меняете действие по case с отсылки данных в LCD на включение реле. И всё.

А вот про UART интерееесно - меняем ТЗ на ходу, так? Сначала надо, чтобы оно просто работало, а теперь надо, чтобы оно работало не используя штатные средства? А как вы хотите?

...Вы это серьёзно или шутите... Что значит "никакая"...?
Что такое ТЗ...?
Про UART вы что-то не понятное написали...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Sutsuko пишет:

 Что такое ТЗ...?

ржунемогу

Sutsuko
Offline
Зарегистрирован: 11.08.2014
#include <Relay.h> 
 byte com = 0;    
 // тут выводы для подключения реле 
 Relay(4); 

 void setup() { 
     Serial.begin(9600);// устанавливаем скорость UART для модуля 
     delay(2000); 
     Serial.write(0xAA);//избавляемся от текста    
     Serial.write(0x37);// и оставляем байты 
     delay(1000); 
     Serial.write(0xAA); // вызываем из памяти 
     Serial.write(0x21);// команды 1-ой группы 
     delay(2000); 
     relay.begin(4);
     delay(2000); 
 } 

 void loop() {  
     while(Serial.available()) 
     { 
       com = Serial.read();// читаем входящие байты и присваиваем значение переменной com 
       switch(com) 
       { 
       case 0x11://получаем байт от команды "включить" 
         break;

       } 
     } 

 }

Вот так....?

..Вместо "Serial.begin(9600);// устанавливаем скорость UART для модуля" - тут надо иное что-то...?

Sutsuko
Offline
Зарегистрирован: 11.08.2014

Вот конечный, объединённый код для servo, relay, mp3sheild:

[code]
#include <Servo.h>
#include <MP3.h>

MP3 mp3;

Servo servo_pin_9;
Servo servo_pin_10;

void setup()
{
  pinMode( 3 , INPUT);
  pinMode( 2 , INPUT);
  pinMode( 7 , INPUT);
  pinMode( 8 , INPUT);
  pinMode( 4 , OUTPUT);
  pinMode( 13 , INPUT);
  pinMode( 12 , INPUT);
  servo_pin_9.attach(9);
  servo_pin_10.attach(10);
}

void loop()
{
  if (digitalRead(2))
  {
    digitalWrite( 4 , HIGH );
  }
  if (digitalRead(3))
  {
    digitalWrite( 4 , LOW );
  }
  if (digitalRead(12))
  {
  mp3.play_spi_flash(0x0001);
  }
  if (digitalRead(13))
  {
  mp3.play_spi_flash(0x0002);
  }
  if (digitalRead(7))
  {
    servo_pin_9.write( 140 );
    servo_pin_10.write( 140 );
  }
  if (digitalRead(8))
  {
    servo_pin_9.write( 0 );
    servo_pin_10.write( 0 );
  }
}



[/code]

Вот только есть одна не ясность... К 12 и 13 пину у меня должны быть подсоединены герконы.(один к 12 и один к 13) Т.к. геркон - это "кнопка срабатывающая от магнита" не совсем пойму как его подсоединить к пину....? Нужен ли какой-то дополнительный резистор...или что-то ещё...?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Sutsuko пишет:

Вот только есть одна не ясность... К 12 и 13 пину у меня должны быть подсоединены герконы.(один к 12 и один к 13) Т.к. геркон - это "кнопка срабатывающая от магнита" не совсем пойму как его подсоединить к пину....? Нужен ли какой-то дополнительный резистор...или что-то ещё...?

По простому - геркон должен соединять +5 и цифровой пин. Когда геркон замкнут - на пине будет +5, когда геркон разомкнут -  (теоритически) будет 0. На самом деле на пине может быть все, что угодно, поэтому пин "притягивают" к земле, в этом случае - пока геркон не замкнут - на пине всегда будет уровень Gnd.