Распознование звука ардуиной.

liftoman
liftoman аватар
Offline
Зарегистрирован: 15.03.2017

Доброго времени суток, уважаемые форумчане! Есть задумка сделать интерком по i2c или 485 между постройками на даче. Интерфейсы все попробовал, работают, но чтоб передать по ним звук надо его отАЦПшить и потом отЦАПить. Чтоб уж наверняка написал строку analogWrite(13, analogRead(A0)); Ожидал на 13 ноге услышать музыку с телефона, подключенного на А0. По факту просто жужжание. Что я делаю не так? Спасибо!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

liftoman пишет:
Чтоб уж наверняка написал строку analogWrite(13, analogRead(A0)); Ожидал на 13 ноге услышать музыку с телефона

На какой ардуине Вы этого ожидали? Если на uno/nano/mega ... то у них просто нет ЦАПа, как Вы ими что-то цапить собрались? Во-первых, "analogWrite(13," - это плод больного воображения.  А во-вторых, даже если бы это работало так, как Вам кажется, Вы частоту дискретизации прикидывали? И какова она? Не думаю, что более, чем 4,5кГц - негусто Вы звуков напередаёте.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Боюсь, что ошибок много.

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

Далее, analogWrite не имеет никакого отношение к аналоговому выводу. Название этой функции - явная ошибка разработчиков, т.к. оно совершенно не отражает ее смысл.

I2C обладает явно недостаточной скоростью для передачи звука. 

Если бы Вы привели подробности, можно было бы сказать больше.

liftoman
liftoman аватар
Offline
Зарегистрирован: 15.03.2017

Cпасибо за ответы. В данный момент mega2560. Предполагал что АnalogWrite не имеет отношения к ЦАПу ведь это PWM. Так чисто отбалды решил попробовать. Ведь wav файлы ШИМом воспроизводят? Разве нет?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вы ведь слышали, как воспроизводит.

Разве нет?

negavoid
Offline
Зарегистрирован: 09.07.2016

А купить на али две (или больше, сколько нужно) самые простецкие рации за $5-10 не вариант? Или тот же интерком, только уже готовые аппараты.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а можно ссылку на рации за 5-10$ ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Предлагаю True DIY:

Можно коробки от ардуин взять. Ну, чтобы соответствовало теме, так скыть.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А пользовать как?

liftoman
liftoman аватар
Offline
Зарегистрирован: 15.03.2017

Щас на лифтах ставят простетские переговорники на 4 абонента 2 провода. И давно как-то сложилась убеждение, что на ардуине можно повторить все (ну почти все). На ютубе лежит проект раций на nrf и я подумал - неужели nrf по скорости быстрей проводов. Но код там явно не от автора видео, и разобраться с ним пока не удалось. Получилось воспроизвести голос с декодированного wav-hex, нашел пример, но тоже код слишком сложный на первый взгляд. Надо понять почему звуковой массив нельзя проиграть проще, for(i=1;i<65000;i++){analogWrite(13,sound[i]); }как разберусь - выложу отчет. А цель, да как у многих здесь, получить очередные навыки программирования, опыт работы с новой задачей.

SLKH
Offline
Зарегистрирован: 17.08.2015

ЕвгенийП пишет:

А пользовать как?

Я в детстве пользовался - между балконами, растояние метров ~30.

Нитка при приеме/передаче должна быть натянута. Связь полудуплексная. Слышимость/разборчивость хорошая.

SLKH
Offline
Зарегистрирован: 17.08.2015

Почему бы не передать звук колебаниями звуковой частоты, без оцифровки?

negavoid
Offline
Зарегистрирован: 09.07.2016

DetSimen пишет:
а можно ссылку на рации за 5-10$ ?

$7 за 2 штуки https://www.aliexpress.com/item/YKS-2-pcs-Mini-walkie-talkie-kids-Radio-Retevis-Handheld-Toys-for-Children-Gift-Portable-Electronic/32856957430.html

Плюс, во всяких евросетях-каруселях-ашанах бывают PMR-овские полваттные рации motorola tlkr по 1200-1500р за 2 шт, это если не нравится "детский вид" и работа на 410МГц у раций с али.

liftoman пишет:
Надо понять почему звуковой массив нельзя проиграть проще, for(i=1;i<65000;i++){analogWrite(13,sound[i]); }как разберусь - выложу отчет.

Потому что будет половина фазы на выходе, если просто так играть :) В динамике-то переменный ток, а на выходе после analogWrite - постоянный. Поэтому и хрипит так wav при воспроизведении ардуиной без аналоговых деталек.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

liftoman пишет:
Чтоб уж наверняка написал строку analogWrite(13, analogRead(A0)); Ожидал на 13 ноге услышать музыку с телефона

На какой ардуине Вы этого ожидали? Если на uno/nano/mega ... то у них просто нет ЦАПа, как Вы ими что-то цапить собрались? Во-первых, "analogWrite(13," - это плод больного воображения.  А во-вторых, даже если бы это работало так, как Вам кажется, Вы частоту дискретизации прикидывали? И какова она? Не думаю, что более, чем 4,5кГц - негусто Вы звуков напередаёте.

Евгений Петрович, так укладывается, чтобы передавать звук достаточно 2700 герц (300-3000), у меня где-то фильтрец канальный от междугородки валялся, на эти частоты

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:
чтобы передавать звук достаточно 2700 герц
Ну, я почему-то вопринял, что передавать надо с хорошим качеством.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Это жалкое гумно, а не рации с Али. У них дальность прямой слышимости меньше чем дальность прямой видимости. В лучшем случае метров 10-20.. брал такие ребенку, давно уже.

negavoid
Offline
Зарегистрирован: 09.07.2016

Arhat109-2 пишет:
Это жалкое гумно, а не рации с Али. У них дальность прямой слышимости меньше чем дальность прямой видимости. В лучшем случае метров 10-20.. брал такие ребенку, давно уже.

Навряд ли фамилия liftoman-а Медведев или Пугачёва, а стало быть, даже 10-20 метров на 6-10 соток дачи - вполне себе самый дешёвый выход. Очень часто в каменных джунглях города принимаю детишек на LPD-PMR.

SLKH
Offline
Зарегистрирован: 17.08.2015

ЕвгенийП пишет:

ua6em пишет:
чтобы передавать звук достаточно 2700 герц
Ну, я почему-то вопринял, что передавать надо с хорошим качеством.

ТС вроде бы хотел интерком - т.е. голосового диапазона достаточно.

Если уж очень хочется цифру гнать - надо сигма-дельа модуляторы/демодуляторы колхозить.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

SLKH пишет:

надо сигма-дельа модуляторы/демодуляторы колхозить.

Неприличными словами не выражацца!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SLKH пишет:

ЕвгенийП пишет:

ua6em пишет:
чтобы передавать звук достаточно 2700 герц
Ну, я почему-то вопринял, что передавать надо с хорошим качеством.

ТС вроде бы хотел интерком - т.е. голосового диапазона достаточно.

Если уж очень хочется цифру гнать - надо сигма-дельа модуляторы/демодуляторы колхозить.


а простого цапа и фильтреца на выходе не хватит, та же MCP

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

SLKH пишет:

ЕвгенийП пишет:

ua6em пишет:
чтобы передавать звук достаточно 2700 герц
Ну, я почему-то вопринял, что передавать надо с хорошим качеством.

ТС вроде бы хотел интерком - т.е. голосового диапазона достаточно.

Если уж очень хочется цифру гнать - надо сигма-дельа модуляторы/демодуляторы колхозить.


а простого цапа и фильтреца на выходе не хватит, та же MCP

можно попробовать для развлечения. зажать полосу фильтром, подать на ацп со сдвигом на 2.5 вольта, оцифровать на повышенной скорости, 8 бит. дальше через 485 со скоростью 115200 и на цап. при 6тыс. отсчетов в секунду вроде бы должно успеть/сработать.  

Logik
Offline
Зарегистрирован: 05.08.2014

Пробовал для развлечения, на дискретизации 62,5КГц отлично успевает и оцифровывать и выводить ШИМ-ом 8битным. И еще пару синусоид гененить успевает. Через uart гонять не пробовал. Для 115200 дискретизация 62,5КГц явно много. Для голоса 8бит маловато, там ДД нужен. Ну а при дискретизации 6КГц и 10бит можно делать.