Модуль распознавания речи+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
01[code]
02#include <TinkerKit.h>
03 
04void setup()
05{
06 pinMode( 4 , OUTPUT);
07pinMode( O4 , OUTPUT);
08}
09 
10void loop()
11{
12 digitalWrite( 4 , HIGH );
13digitalWrite( O4 , HIGH );
14 digitalWrite( 4 , LOW );
15digitalWrite( O4 , LOW );
16}
17 
18 
19[/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
01[code]
02void setup()
03{
04 pinMode( 2 , INPUT);
05 pinMode( 4 , OUTPUT);
06}
07 
08void loop()
09{
10 if ( digitalRead( 2))
11 {
12  digitalWrite( 4 , HIGH );
13 }
14 else
15 {
16  digitalWrite( 4 , LOW );
17 }
18}
19 
20 
21 
22[/code]

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

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

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

Sutsuko
Offline
Зарегистрирован: 11.08.2014
01[code]
02#include <Servo.h>
03 
04Servo servo_pin_7;
05Servo servo_pin_8;
06 
07void setup()
08{
09 pinMode( 12 , INPUT);
10servo_pin_7.attach(7);
11servo_pin_8.attach(8);
12}
13 
14void loop()
15{
16 if ( digitalRead( 12))
17 {
18 servo_pin_7.write( 140 );
19 servo_pin_8.write( 140 );
20 }
21 else
22 {
23 servo_pin_7.write( 0 );
24 servo_pin_8.write( 0 );
25 }
26}
27 
28 
29 
30[/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
01#include <LiquidCrystal.h>
02 byte com = 0;   
03 // тут выводы для подключения дисплея
04 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
05 
06 void setup() {
07     Serial.begin(9600);// устанавливаем скорость UART для модуля
08     delay(2000);
09     Serial.write(0xAA);//избавляемся от текста   
10     Serial.write(0x37);// и оставляем байты
11     delay(1000);
12     Serial.write(0xAA); // вызываем из памяти
13     Serial.write(0x21);// команды 1-ой группы
14     delay(2000);
15     // определяем тип дисплея
16     lcd.begin(16, 2);
17     // пишем приветствие
18     lcd.print("< DV-ROBOT >");
19     delay(2000);
20 }
21 
22 void loop() {
23     lcd.setCursor(0, 1);// устанавливаем курсор
24     while(Serial.available())
25     {
26       com = Serial.read();// читаем входящие байты и присваиваем значение переменной com
27       switch(com)
28       {
29       case 0x11://получаем байт от команды "вперед"
30         lcd.clear(); //очищаем дисплей от предыдущего текста
31         lcd.print("-UP-"); //выводим текст на дисплей
32         break;
33 
34       case 0x12://получаем байт от команды "назад"
35         lcd.clear();//очищаем дисплей от предыдущего текста
36         lcd.print("-DOWN-");//выводим текст на дисплей
37         break;
38 
39       case 0x13://влево
40         lcd.clear();
41         lcd.print("-LEFT-");
42         break;
43 
44       case 0x14://вправо
45         lcd.clear();
46         lcd.print("-RIGHT-");
47         break;
48 
49       case 0x15://стой
50         lcd.clear();
51         lcd.print("-STOP-");
52         break;
53 
54       }
55     }
56 
57 }

 

Я не знаю какую библиотеку писать вместо 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
01#include <Relay.h>
02 byte com = 0;   
03 // тут выводы для подключения реле
04 Relay(4);
05 
06 void setup() {
07     Serial.begin(9600);// устанавливаем скорость UART для модуля
08     delay(2000);
09     Serial.write(0xAA);//избавляемся от текста   
10     Serial.write(0x37);// и оставляем байты
11     delay(1000);
12     Serial.write(0xAA); // вызываем из памяти
13     Serial.write(0x21);// команды 1-ой группы
14     delay(2000);
15     relay.begin(4);
16     delay(2000);
17 }
18 
19 void loop() { 
20     while(Serial.available())
21     {
22       com = Serial.read();// читаем входящие байты и присваиваем значение переменной com
23       switch(com)
24       {
25       case 0x11://получаем байт от команды "включить"
26         break;
27 
28       }
29     }
30 
31 }

Вот так....?

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

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

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

01[code]
02#include <Servo.h>
03#include <MP3.h>
04 
05MP3 mp3;
06 
07Servo servo_pin_9;
08Servo servo_pin_10;
09 
10void setup()
11{
12  pinMode( 3 , INPUT);
13  pinMode( 2 , INPUT);
14  pinMode( 7 , INPUT);
15  pinMode( 8 , INPUT);
16  pinMode( 4 , OUTPUT);
17  pinMode( 13 , INPUT);
18  pinMode( 12 , INPUT);
19  servo_pin_9.attach(9);
20  servo_pin_10.attach(10);
21}
22 
23void loop()
24{
25  if (digitalRead(2))
26  {
27    digitalWrite( 4 , HIGH );
28  }
29  if (digitalRead(3))
30  {
31    digitalWrite( 4 , LOW );
32  }
33  if (digitalRead(12))
34  {
35  mp3.play_spi_flash(0x0001);
36  }
37  if (digitalRead(13))
38  {
39  mp3.play_spi_flash(0x0002);
40  }
41  if (digitalRead(7))
42  {
43    servo_pin_9.write( 140 );
44    servo_pin_10.write( 140 );
45  }
46  if (digitalRead(8))
47  {
48    servo_pin_9.write( 0 );
49    servo_pin_10.write( 0 );
50  }
51}
52 
53 
54 
55[/code]

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

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

Sutsuko пишет:

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

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