Модуль распознавания речи+Arduino Pro mini+Arduino MP3-Sheild
- Войдите на сайт для отправки комментариев
Список компонентов:
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).
Пожалуйста помогите решениями....
Высылайте компоненты и будем решать.
http://forumdvrobot.ru/forum/3-37-1
http://forumdvrobot.ru/forum/3-37-1
Так мы корову не продадим.
http://dvrobot.ru/?show=shop&item_id=498
http://dvrobot.ru/?show=shop&item_id=16
http://dvrobot.ru/?show=shop&item_id=277
http://dvrobot.ru/?show=shop&item_id=50
http://dvrobot.ru/?show=shop&item_id=275
Меня интересует програмное решение...
Меня интересует програмное решение...
Ну я рад за вас. Вы предлагаете мне за свой счет купить такие же компоненты как у вас. Что бы написать для вас програмное решение? Или мне его тестировать на кофейной гуще?
А вам обязательно тестировать....?
Мне не обязательно. Но
1 вы оплачиваете вперед
2 получаете код
3 тестируете
4 оплачиваете переделку
И так далее по кругу
То есть вы не можете ни чего гарантировать...!?
То есть вы не можете ни чего гарантировать...!?
Как я могу гарвнтировать прямоту ваших рук?
Задачи реально детсадовского уровня. Это всё можно сделать даже не умея программировать толком. Распознавалка голоса даёт на выходе код полученной команды, например на "Вверх" она выдаёт 1, на "Вниз" 2 итд. В программе всего то и надо, смотреть чо там пришло, 1, 2, или 100 и выполнять желаемое действие.
У вас как вообще с электроникой и программированием? Хоть чуть дружите? Может сами попробуете?
А вариант без модуля распознавания речи подойдёт ?
Вместо этого модуля использовать смартфон который распознает голосовые команды (без подключения к интернету) и по каналу БТ отправляет команду на ардуинку, так дешевле должно быть и можно просто сделать программный код ...
Параллельно на смарте можно сделать дублирование команд спомощью кнопок...
Что-то типа вот такого девайса ... https://www.youtube.com/watch?v=Fh2JU5Fu2Dg
А вариант без модуля распознавания речи подойдёт ?
Вместо этого модуля использовать смартфон который распознает голосовые команды (без подключения к интернету) и по каналу БТ отправляет команду на ардуинку, так дешевле должно быть и можно просто сделать программный код ...
Параллельно на смарте можно сделать дублирование команд спомощью кнопок...
Что-то типа вот такого девайса ... https://www.youtube.com/watch?v=Fh2JU5Fu2Dg
Спасибо, но так не подойдёт.
Задачи реально детсадовского уровня. Это всё можно сделать даже не умея программировать толком. Распознавалка голоса даёт на выходе код полученной команды, например на "Вверх" она выдаёт 1, на "Вниз" 2 итд. В программе всего то и надо, смотреть чо там пришло, 1, 2, или 100 и выполнять желаемое действие.
У вас как вообще с электроникой и программированием? Хоть чуть дружите? Может сами попробуете?
Сам я пробовал. Получилось только в сам модуль голоса залить команды через UART TTL и в MP3 Sheild в память SPI залить mp3 файл.
Весь фокус в том что через голосовой модуль будут подаваться команды вкл./выкл. для переключения реле и вверх/вниз для 2-ух серво двигателей работающих синхронно. А вот mp3 модуль нужно чтоб проигрывал файл 001.mp3 и 002.mp3 при замыкании 1-го либо 2-го геркона.
Подумал я что возможно использовать функция "воспроизведение при подаче питания". Прописал cp01// в файле iSound.mp3, залил вместе с файлом mp3, но не получилось.
Да нету там фокуса, это всего лишь последовательность нулей и единичек. Команды в голосовой модуль уже записаны? Если записаны, то вот тут - http://forumdvrobot.ru/forum/3-37-1 пошаговая инструкция, с примером кода, которая вам поможет. Отличие её от вашего случая в том, что она выводит данные на LCD-дисплей, а вам надо моргать светодиодами и играть музыку. Но это мелочи жизни.
По примеру залейте команды в распознавалку голоса, затем мы подкорректируем код так, чтобы он на распознанную команду поморгал нам светодиодом, а не на дисплее писал. Ну и, после того как удостоверимся, что модуль чётко реагирует на команды, а ардуина понимает, что ей говорит модуль, будем ваять уже то, что вам требуется.
будем ваять уже то, что вам требуется.
так может пусть он сам и ваяет? не нужно поощрять халявщиков.
будем ваять уже то, что вам требуется.
так может пусть он сам и ваяет? не нужно поощрять халявщиков.
Разве он халявщик? Во-первых он предлагал деньги за работу. Во-вторых он часть работы сделал сам, записал там данные какие, это тоже не хухры-мухры для начинающего. В третьих писать он будет сам, я (мы?) просто подскажем ему чего куда.
Возможно вы не совсем верно меня поняли... Голосовой модуль управляет только двумя сервоприводами(работающими синхронно) и реле, которое включает сеть 12V и таким образом подаёт питание на сетодиоды(горят постоянно(а не моргают), пока не будет подана команда на реле "выкл.").
Свечение светодиодов никак не зависит от модуля MP3.
Управление модуля MP3 осуществляется с помощью двух герконов.(один вкл./выкл. 001.mp3, другой вкл./выкл. 002.mp3)
Давай Леший интерпретируй по русски чё он тут хочет вообще. Я например вообще не понимаю что там у него как и куда подключается и главное почему так и зачем.:)
Ну я уже не знаю... Даёшь ссылку на пошаговую инструкцию на то, как сделать, чтобы по голосовой команде выполнялось действие, а тебе "Возможно вы неправильно меня поняли...".
Вы уже начнёте что-то делать, чтобы мы могли вам помочь это сделать? Или вы так и будете говорить, что вас неправильно поняли и ждать, пока кто-либо всё сделает за вас (а этого не будет)?
Ваща задача - записать по инструкции команды в модуль распознавания, затем взять код, который идёт вместе с инструкцией и исправить его так, чтобы он вам что надо делал, реле щёлкал, светодиодами моргал и за пивом бегал. Исправлять код будем вместе, так как вам одному сложно будет справиться.
НО ВЫ УЖЕ НАЧНИТЕ ХОТЬ ЧТО-ТО ДЕЛАТЬ!
Гыыы леший, ты думаешь мы тут в бирюльки играем? Тут по названию сразу понятно что ожидать от ТС.
Красиво. Но делать надо следующее - пройти по неоднократно приведённой ссылке, согласно описанию внести в модуль распознавания голоса свои команды, затем правильно подключить модуль распознавания голоса к ардуино и исправить программу-пример, которая приложена к инструкции, таким образом, чтобы она на эти самые команды что-то делала, для начала моргала светодиодом на 13 ноге. Как исправить программу я (мы) вам подскажем.
А квадратики эти цветные, оно, конечно, хорошо, но к делу не относится никак.
5 дней потрачено на попытки донести до вас простую вещь. И она так до сих пор и не донесена. Это ужасно печалит.
бабушкино лоскутное одеяло? Красиво. Бабушка молодец.
Вы что про Ardublock ничего не слышали...?
Нет, не слышали.
Нет, не слышали.
http://www.hobbylab.ru/newslist/ardublock-rus/
Спасибо. Теперь я знаю, что такое ардуиноблокс. Осталось выяснить, что мне с ним делать и как он относится ко всему тому, что мы вам уже 5 дней пишем.
01
[code]
02
#include <TinkerKit.h>
03
04
void
setup
()
05
{
06
pinMode( 4 , OUTPUT);
07
pinMode( O4 , OUTPUT);
08
}
09
10
void
loop
()
11
{
12
digitalWrite( 4 , HIGH );
13
digitalWrite( O4 , HIGH );
14
digitalWrite( 4 , LOW );
15
digitalWrite( O4 , LOW );
16
}
17
18
19
[/code]
Это начинает напоминать одну тему про контрольную сумму.
Вы уже залили в модуль распознавания голоса команды?
Гыы. Я тут с попкормом посижу, посмотрю.
Пора писать программу распознавания бренда попкорна по звуку
Это начинает напоминать одну тему про контрольную сумму.
Вы уже залили в модуль распознавания голоса команды?
Да.
01
[code]
02
void
setup
()
03
{
04
pinMode( 2 , INPUT);
05
pinMode( 4 , OUTPUT);
06
}
07
08
void
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]
Вот так для реле у меня получилось....
Хорошо, вы залили команды в модуль. Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.
01
[code]
02
#include <Servo.h>
03
04
Servo servo_pin_7;
05
Servo servo_pin_8;
06
07
void
setup
()
08
{
09
pinMode( 12 , INPUT);
10
servo_pin_7.attach(7);
11
servo_pin_8.attach(8);
12
}
13
14
void
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]
Вот для двух серво....
Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.
Реле всего одно, подключено к pin 4. Оно включает сеть 12V.
..."код в комплекте с описанием"...чего...?
Теперь берите код, который идёт в комплекте с описанием и мы его исправим так, чтобы он у вас там релюхами щёлкал, так кажись? Для этого потребуется информация о том, к каким ногам ардуино у вас подключены релюхи.
Реле всего одно, подключено к pin 4. Оно включает сеть 12V.
..."код в комплекте с описанием"...чего...?
Как чего? Вам же давали ссылки на управление голосом, там вам и схема подключения, и подробнейшее описание метода записи и тестирования команд, и готовый, полностью рабочий код, который по этим командам выполняет определённые действия. Где вы всё это время были то?
Вам оставалось всего ничего - строго следуя инструкции внести команды в модуль распознавания, по той же инструкции проверить качество распознавания команд, а затем просто исправить готовый код так, чтобы он не на дисплее буковки писал, а релюшками щёлкал, или что там вам надо от него делал. А вы вместо этого пропадали на несколько дней, а потом то писали, что вас неправильно понимают, то публиковали кусок кода без описания. И ждали...
Так мы с вами каши не сварим. Скоро вторая неделя закончится, а мы и шагу не сделали, так что если вы действительно хотите получить результат, то читайте все ответы заново, ходите по всем приведённым ссылкам, а потом, если вы чего-то не понимаете - спрашивайте.
Для получения результата ВОВСЕ НЕ ОБЯЗАТЕЛЬНО досконально изучать тему, достаточно и поверхностного понимания, которое позволит взять готовое решение и модифицировать его так, как вам нужно, именно по этому пути вам сейчас и надо идти, брать чужое и преобразовывать его в своё. Чужого вам выдали с лихвой, начните делать из него своё.
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.
Вместо ликвидкристалл надо использовать библиотеку с названием "никакая". В switch(com) меняете действие по case с отсылки данных в LCD на включение реле. И всё.
А вот про UART интерееесно - меняем ТЗ на ходу, так? Сначала надо, чтобы оно просто работало, а теперь надо, чтобы оно работало не используя штатные средства? А как вы хотите?
Вместо ликвидкристалл надо использовать библиотеку с названием "никакая". В switch(com) меняете действие по case с отсылки данных в LCD на включение реле. И всё.
А вот про UART интерееесно - меняем ТЗ на ходу, так? Сначала надо, чтобы оно просто работало, а теперь надо, чтобы оно работало не используя штатные средства? А как вы хотите?
...Вы это серьёзно или шутите... Что значит "никакая"...?
Что такое ТЗ...?
Про UART вы что-то не понятное написали...
Что такое ТЗ...?
ржунемогу
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 для модуля" - тут надо иное что-то...?
Вот конечный, объединённый код для servo, relay, mp3sheild:
01
[code]
02
#include <Servo.h>
03
#include <MP3.h>
04
05
MP3 mp3;
06
07
Servo servo_pin_9;
08
Servo servo_pin_10;
09
10
void
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
23
void
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) Т.к. геркон - это "кнопка срабатывающая от магнита" не совсем пойму как его подсоединить к пину....? Нужен ли какой-то дополнительный резистор...или что-то ещё...?
Вот только есть одна не ясность... К 12 и 13 пину у меня должны быть подсоединены герконы.(один к 12 и один к 13) Т.к. геркон - это "кнопка срабатывающая от магнита" не совсем пойму как его подсоединить к пину....? Нужен ли какой-то дополнительный резистор...или что-то ещё...?
По простому - геркон должен соединять +5 и цифровой пин. Когда геркон замкнут - на пине будет +5, когда геркон разомкнут - (теоритически) будет 0. На самом деле на пине может быть все, что угодно, поэтому пин "притягивают" к земле, в этом случае - пока геркон не замкнут - на пине всегда будет уровень Gnd.