Говорящий Arduino
- Войдите на сайт для отправки комментариев
Пт, 21/03/2014 - 10:29
Здравствуйте! Недавно пришла идея сделать себе уникальный звонок на дверь. Стал искать информацию в интернете и нашел как с помощью аруино через динамик выводить звуки. Скажите пожалуйста, а возможно ли что бы через динамик выводились не просто набор тональностей, а к примеру слово "привет"? Заранее большое спасибо!
конечно
самое простое - сделать воспроизведение файлов .wav или .mp3 с SD карты. .WAV в принципе можно прямо ардуиной воспроизводить, а для mp3 нужно купить специальный шилд
Мне нужен самый дешевы вариант! Желательно без всяких шилдов, средствами самой ардуино. Возможно ли как то генерировать слова? Есть у кого то идеи?
wav воспроизводите ардуиной. звук заранее конечно записываться будет а не ардуина по набитому тексту будет генерировать звуки
А куда должен записываться звук??? Нужно для этого что то покупать?
http://voice-chip.ru/waytronic4.htm
В самом минимуме вам нужна будет SD карта и динамик
лучше конечно любой шилд с разьемом под карту, можно припаяться напрямую к карточке или что лучше найти micro карту с адаптером под простую SD. Припаяться к адаптеру и он станет слотом для вставки micro
Генерировать голос по словам ардуино не в состоянии. Может воспроизводить только заранее записанные звуки, слова, предложения
rilax, самый экономичный вариант -сделать всё самому :) Вот например вообще без ардуино, на тиньке. Я повторял -работает! http://radioded.ru/skhema-na-mikrokontrollere/wav-pleer-na-mikrokontroll...
В самом минимуме вам нужна будет SD карта и динамик
лучше конечно любой шилд с разьемом под карту, можно припаяться напрямую к карточке или что лучше найти micro карту с адаптером под простую SD. Припаяться к адаптеру и он станет слотом для вставки micro
Очень интересная идея!
Вот у меня есть такая карта, получается мне нужно просто припоять проводки ко всем выходам на ней? И как мне ее подкючить к ардуино?
rilax, самый экономичный вариант -сделать всё самому :) Вот например вообще без ардуино, на тиньке. Я повторял -работает! http://radioded.ru/skhema-na-mikrokontrollere/wav-pleer-na-mikrokontroll...
Мне нужно сделать что то подобное, только на arduino! Что бы при разных условиях проигрывался один из 3 файлов к примеру.
https://www.youtube.com/watch?v=8Zo9EPe-aTU
https://www.youtube.com/watch?v=cCTzxiwZyXY
вот эта тема может вам помочь http://chipenable.ru/index.php/programming-avr/item/212-rabota-s-sd-kart...
еще для образования можете тут посмотреть http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/
http://tubethe.com/watch/QjrAGShRw7g/attiny2313-sd-card-talking-device.html
мне вот этот плеер нравиться( как раз под мою задумку) только ссылка на скетч бракованная. может у кого есть, скиньте пожалуйста
Можно и чтобы текст читала. Это не так сложно как кажется. Надо только разыскать библиотеку фонем, от какого-нибудь древнего спектрума или ямахи и прошить её в progmem. после чего тупо в цикле на каждую букву или слог выводить соответствующую фонему. Когда-то давно-давно делал такой матюгальник для Ямахи - "сказочник" .. вполне сносно читал текст. Любимая шутка позже у моих коллег была тайком поставить этот матюгальник соседу на PC .. чел включает утром комп, тычет кнопку, а тот ему в ответ: "отойди, видишь ещё занят!" .. позже, знакомые, так в НГУ одно время шугали студентов от компов на переменках одно время, дабы не мешали операторам.. :)
Лучше искать слоговую фонемную библиотеку. Русский язык слоговый, и их не так много .. 256. Но, фонемы должны быть разные: ударный слог, безударный, окончание .. выбираем ту, которая подходит по соседнему контексту. А можно и самому начитать. Делов-то.
Для воспроизведения текстов можно сначала создать файлы WAV, mp3 с помощью синтезатора речи, их достаточно мого, такие как:
1. www.ivona.com/en – Ivona - онлайн синтезатор речи для русского языка. Голосовые движки очень высокого качества. Несколько голосов (мужской и женский). Максимальный размер текста - 250 символов.
2. www.acapela-group.com – Acapela - бесплатная онлайн-программа синтеза речи для русского языка. Синтез речи очень высокого качества. Есть мужские и женские голоса. Максимальный размер текста - 300 символов.
3. translate.google.com – Google Переводчик - бесплатный онлайн-переводчик с поддержкой синтеза речи для русского языка. Автоматически определяет язык. Может читать довольно длинные тексты на русском языке.
4. www.linguatec.de/onlineservices/voice_reader/ – Linguatec - бесплатный синтезатор речи для русского языка онлайн. Синтез речи среднего качества. Максимальный размер текста - 250 символов.
5. text-to-speech.imtranslator.net – imTranslator.net - бесплатные голосовые движки для русского языка онлайн. Синтез речи нормального качества. Максимальный размер текста - 1000 символов.
Также для озвучивания робота есть интересный синтезатор речи с различными эффектами, три женских голоса и один мужской:
http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal
rilax, самый экономичный вариант -сделать всё самому :) Вот например вообще без ардуино, на тиньке. Я повторял -работает! http://radioded.ru/skhema-na-mikrokontrollere/wav-pleer-na-mikrokontroll...
пару вопросов не понятно
1) не нашел по ссылке скетч, только не понятные файлы( с тинько вообще не связывался--только блинк)
2) как мне тиньку 85 прошить либо через ардуино(ардуино иде уже подладил и 2313 прошивал под блинк)
помогите разжевать мне моно версию и через ардуино прошить( в моно версии фьюзы вроде можно не трогать)
а на третью задачу у меня голова уже лопнула(и клик бутон мне скидывали и посылали бутон перечитывать) нужно при нажатии на кнопку один раз проигрывался первый файл и молчек. если два раза нажать второй фаил
PS извеняюсь за вопросы, нереально одновременно ардуино и тини изучать, я то думал одинаковые, а нет
http://wiki.amperka.ru/конспект-arduino:счетчик-нажатий
вот тут разжованно про счетчик, отсюда пытаюсь достать кусочек скетча
собираю говорящую сигналку
#include <SD.h> // нужно включить архив SD #define SD_ChipSelectPin 4 // с использованием цифрового пин4 на ардуино нано 328 #include <TMRpcm.h> // также необходимо включить эту библиотеку... TMRpcm tmrpcm; // создать объект для использования в этом наброске int SW1; // провод от сигналки int SW2; // кнопка крякалки int SW3; // задний ход int SHORT_BC=0; //счетчик кратковременных нажатий int LONG_BC=0; //счетчик длинных нажатий int LONG_BCA=0; // счетчик самой длинной нажатий long START_BP_Millis = 0; //точка начала отчета после нажатия void setup() { pinMode(14,INPUT); // провод сигналки pinMode(15,INPUT); // кнопка крякалка pinMode(16,INPUT); //провод заднего хода tmrpcm.speakerPin = 9; // 9 на Уно, Нано, и т. д. if (!SD.begin(SD_ChipSelectPin)) { // см. если карта // присутствует и может быть инициализирован: return; // ничего не делаем если не больше } tmrpcm.volume(1); tmrpcm.play("1.wav"); //ооо новый аккумулятор } void loop() { SW1=digitalRead(14); SW2=digitalRead(15); SW3=digitalRead(16); { if(digitalRead(14)==HIGH)//если нажать кнопку ... {{ tmrpcm.volume(1); tmrpcm.play("2.wav"); //писк } START_BP_Millis-START_BP_Millis; // начинаем отсчет длительности нажатия... с нуля if (millis() - START_BP_Millis < 500) START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета SHORT_BC++; // увеличить счетчик кратковременных нажатий } if (millis() - START_BP_Millis >= 500) // и удерживать 0,5 cекунды или больше... { START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета LONG_BC++; // увеличить счетчик длинных нажатий } else if (millis() - START_BP_Millis >= 1500) // и удерживать 0,5 cекунды или больше... { START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета LONG_BCA++; } // увеличить счетчик длинных нажатий } if(digitalRead(14)==HIGH)//если нажать кнопку ... { if ( SHORT_BC==1) //если одно короткое нажатие tmrpcm.volume(1); tmrpcm.play("2.wav"); //то играем файл машина закрыта if (SHORT_BC==2)// если два коротких нажатий tmrpcm.volume(1); tmrpcm.play("3.wav");//то играет файл машина закрыта if (SHORT_BC>=3)//если три раза и больше tmrpcm.volume(1); tmrpcm.play("4.wav");//то играет файл if (LONG_BC>=1); tmrpcm.volume(1); tmrpcm.play("5.wav");//паника } if (SW1 == LOW && tmrpcm.isPlaying()==0) {tmrpcm.volume(1); tmrpcm.play("6.wav");} //файл крякалки delay(10000) //пауза пока не сыграет крякалка if (SW2 == LOW && tmrpcm.isPlaying()==0) //if SW2 pressed then play file "4.wav" {tmrpcm.volume(1); tmrpcm.play("7.wav");//файл2 моя машина едет назад delay(15000)}// останавливаем программу на 15 сек, пока не проиграет файл if (SW3 == LOW)//if SW3 pressed then play file "5.wav" {tmrpcm.volume(1); tmrpcm.play("8.wav"); delay(15000)} //останавливаем программу на 15 сек, пока играет файл } delay(3000) //сдесь скорее всего функция делай 3 сек //обнулить переменныекомпилятор ругается сна строчку если нажата кнопка 2, не пойму почему, строчка копия если нажата кнопка один
на 101 строчку ругается
А ошибка в 99, 104, 108.
PS. 113 забыл.
так это же пауза программы, что бы успела музыка сыграть
Ага, а точку с запятой для паузы ставить не надо? Это что-то новое в "C".
точки понаставил, тепенрь со скобками разобраться не могу, скетч не умещается на дисплей целиком
помогите шимировать проигрываемый файл с частотой 1кгц , что бы громче играла, по принципу мегафона, хочу на праздники закончить
Убери последнюю delay. Она вне функции.
с функциями разобрался, там пару скобок в конце не хватало. теперь решил что ардуино большая будет в размерах, я так понимаю что бы переписать пот аттини 85, достаточно 43-45 строчку переписать. только колво ножек моловато(4 на флешку, два на питание, один на провод ос сигналки, и один на кнопку крякалки)
вот переделал маленько, пока только под нано, пришлось ножки переименовать, у нано нет 13-15 ножек. играет только пятый файл приблизительно каждые 10 сек
#include <SD.h> // нужно включить архив SD #define SD_ChipSelectPin 4 // с использованием цифрового пин4 на ардуино нано 328 #include <TMRpcm.h> // также необходимо включить эту библиотеку... TMRpcm tmrpcm; // создать объект для использования в этом наброске int SW1; // провод от сигналки int SW2; // кнопка крякалки int SW3; // задний ход int SHORT_BC=0; //счетчик кратковременных нажатий int LONG_BC=0; //счетчик длинных нажатий int LONG_BCA=0; // счетчик самой длинной нажатий long START_BP_Millis = 0; //точка начала отчета после нажатия void setup() { pinMode(5,INPUT); // провод сигналки pinMode(6,INPUT); // кнопка крякалка tmrpcm.speakerPin = 9; // 9 на Уно, Нано, и т. д. if (!SD.begin(SD_ChipSelectPin)) { // см. если карта // присутствует и может быть инициализирован: return; // ничего не делаем если не больше } tmrpcm.volume(1); tmrpcm.play("1.wav"); //ооо новый аккумулятор } void loop() { { SW1=digitalRead(5); SW2=digitalRead(6); { if(digitalRead(5)==HIGH)//если нажать кнопку ... tmrpcm.volume(1); tmrpcm.play("2.wav"); //писк START_BP_Millis-START_BP_Millis; // начинаем отсчет длительности нажатия... с нуля if (millis() - START_BP_Millis < 500) START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета SHORT_BC++; // увеличить счетчик кратковременных нажатий if (millis() - START_BP_Millis >= 500) // и удерживать 0,5 cекунды или больше... { START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета LONG_BC++; // увеличить счетчик длинных нажатий } else if (millis() - START_BP_Millis >= 1500) // и удерживать 0,5 cекунды или больше... { START_BP_Millis = millis(); // счетчик длительности нажатия обнулить для следуещего отсчета LONG_BCA++; } // увеличить счетчик длинных нажатий if(digitalRead(5)==HIGH)//если нажать кнопку ... { if ( SHORT_BC==1) //если одно короткое нажатие tmrpcm.volume(1); tmrpcm.play("2.wav"); //то играем файл машина закрыта if (SHORT_BC==2)// если два коротких нажатий tmrpcm.volume(1); tmrpcm.play("3.wav");//то играет файл машина закрыта if (SHORT_BC>=3)//если три раза и больше tmrpcm.volume(1); tmrpcm.play("4.wav");//то играет файл if (LONG_BC>=1); tmrpcm.volume(1); tmrpcm.play("5.wav");//паника if (SW2 == LOW && tmrpcm.isPlaying()==0) {tmrpcm.volume(1); tmrpcm.play("6.wav");} //файл крякалки delay(10000); //пауза пока не сыграет крякалка } } } }начал с простого, написал маленький скетч, если нажата кнопка то воспроизводжим файл1. звук очень плохого качества а через минуто вооще скрежет. адаптор sd использую специальную для ардуино