Ардуино - запись звука

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Изображение

Добавлено after 51 second:
да, что-то проясняется

Добавлено after 5 minutes 22 seconds:
а каким образом отправить сюда байты?
Реклама
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

чтобы отправить сюда байты... для начала надо настроить IP твоего компа))
IP 127.0.0.1 - это внутренний IP адрес компа. На него нельзя отправлять данные.

У твоего компа есть внешний IP ? типа как у меня 192.168.0.101... или любой другой... кроме 127.0.0.1...

посмотреть и настроить IP своего компа можно в настройках "сетевые подключения"
нажимаем на значёк внизу...
значёк компа.jpg
(26.76 КБ) 48 скачиваний
открываются "сетевые подключения"
настройка.jpg
(85.97 КБ) 39 скачиваний
затем кнопку "сведения"
IP.jpg
(100.82 КБ) 45 скачиваний
вот я вижу свой IP 192.168.0.101...

мой комп получил IP от роутера (он же шлюз) 192.168.0.1.
Через него работает и Интернет.
комп_роутер.jpg
(33.71 КБ) 46 скачиваний
теперь я могу отправлять любые данные на свой комп 192.168.0.101.

А куда подключён твой комп ? как вообще работает Интернет на твоём компе ?
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):P 127.0.0.1 - это внутренний IP адрес компа. На него нельзя отправлять данные.

У твоего компа есть внешний IP ? типа как у меня 192.168.0.101... или любой другой... кроме 127.0.0.1...

посмотреть и настроить IP своего компа можно в настройках "сетевые подключения"
нажимаем на значёк внизу...
я в курсе этих технологий
roman.com писал(а):теперь я могу отправлять любые данные на свой комп 192.168.0.101.
Роман, вот с этого места поподробнее. Как отправить байты на 192.168.0.101 ну или любой другой?
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

если есть телефон с Wi-Fi... то открываем в телефоне браузер... пишем 192.168.0.101 и подключаемся к нашему серверу ))

если есть телевизор с Wi-Fi... то открываем в телевизоре браузер... пишем 192.168.0.101 и подключаемся к нашему серверу ))

если есть второй комп с Wi-Fi... то открываем на втором компе браузер... пишем 192.168.0.101 и подключаемся к нашему серверу ))

если есть Ардуино с Wi-Fi... то открываем скетч Ардуино... пишем 192.168.0.101 и подключаемся к нашему серверу ))
схема.jpg
(64.79 КБ) 53 скачивания
у тебя настоящий сервер ! )) можешь подключать что угодно ! ))
:)

Добавлено after 9 minutes 8 seconds:
[uquote="olegue",url="/forum/viewtopic.php?p=4313676#p4313676"]Как отправить байты на 192.168.0.101 ну или любой другой?[/uquote]
простейший способ - GET запрос ))

пишем в браузере (через слеш):

192.168.0.101/hello_server_!!!
GET запрос.jpg
(56.58 КБ) 59 скачиваний
мы отправили серверу байты... "hello_server_!!!"
:))
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

да, понятно!!!
а что дальше с этими битами делать, как их получить к обработке?

Добавлено after 6 minutes 20 seconds:
Нужен дебаг какой то или парсинг?

Добавлено after 40 minutes 52 seconds:
Так это надо в этой же программе на яве их парсить
Реклама
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

далее... пишем HTML.... передаём на сервер разные данные... фото... видео... аудио... текст...
AJAX.jpg
(196.83 КБ) 50 скачиваний
через всякие GET... POST... AJAX... и прочую ерунду))
:)))
[uquote="olegue",url="/forum/viewtopic.php?p=4313733#p4313733"]Нужен дебаг какой то или парсинг?[/uquote]
Нужен...
это надо через InputStream in... OutputStream out... забирать байты... парсить... и дальше что-то с ними делать))
Server_TCP.txt
(15.86 КБ) 48 скачиваний
:roll:
но не в этой программе))

далее... нам надо передать байты... и не просто байты... а звук !
можно конечно передавать звук через TCP... но нормальные люди так не делают))
нормальные люди передают звук по UDP ))
Skype_.jpg
(163.29 КБ) 223 скачивания
значит нужен сервер UDP... там ничего парсить не надо))
и надо ещё переключить Ардуину на UDP...
:tea:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):значит нужен сервер UDP... там ничего парсить не надо))
и надо ещё переключить Ардуину на UDP...
Тут что-то про это написано

http://mypractic.ru/urok-69-protokol-ud ... ernet.html

Добавлено after 34 seconds:
Урок 69. Протокол UDP. Создание UDP-сервера и клиента с помощью библиотеки UIPEthernet.
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):Тут что-то про это написано
там про Ethernet... на базе шилда ENC28J60...
у тебя есть шилд ENC28J60 ?

для начала проверим как работает наш самодельный Skype )) по UDP
Skype_1.rar
(73.05 КБ) 61 скачивание
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

т.е запустить на двух компах в одной сети и посмотреть будет ли связь?
а через интернет тоже роутиться будет?
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

это обычный скайп)) передаёт аудио... видео... текст... по UDP... с шифрованием))
для начала запусти на одном компе)) вверху разрешение экрана твоего компа... и твой IP адрес))
нажал кнопочку Test... сменил адрес на 172.0.0.1...
потом нажми жёлтую кнопку вывоза...))
потом нажми зелёную кнопочку)) говоришь в микрофон... слушаешь сам себя в наушниках...
потом понажимай кнопочки всякие... поменяй битрейт (8000, 11025,16000,22050,44100)... разрядность(8 бит, 16 бит)... проверь качество звука.
потом понажимай вверху - видео TX_RGB (скиншот твоего компа)... speed (частота кадров)... и т.д.
потом напиши текст в нижнем окне и нажми "ввод"... в вернем окне появится чат))
плюс ещё есть куча настроек... по мелочи))
и т.д.
потом уже можно запустить на втором компе...
нажал кнопочку Server... сменил адрес на 192.168.0.101... говоришь со вторым компом))
это по желанию))
:tea:
[uquote="olegue",url="/forum/viewtopic.php?p=4313857#p4313857"]а через интернет тоже роутиться будет?[/uquote]
а как же ! )) всё роутится... и по локалке... и по Wi-Fi... и по интернету... и по всякому))
Skype_.jpg
(186.09 КБ) 219 скачиваний
wav.jpg
(199.58 КБ) 49 скачиваний
и т.д.
:tea:
потом будем подключать это всё к твоей Ардуине))
:roll:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

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

Погуглил еще малость , нагуглилось такое
https://github.com/samirkumardas/pcm-player
т.е счас вопрос как pcm передать через websocket или ajax, Т.е создать трансляцию. Принять pcm уже нет большой проблемы
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):проверил локально поигрался
разнес на два компа что ли ? )) проверил связь между компами ?
выбег частоты я ещё не проверял...
:roll:
olegue писал(а):отослал приятелю , еще с ним сеанс связи проведу.
не всё так просто)) если приятель в одной сети... то проблем нет...
а если за NAT провайдера... то нужен белый IP... хотя бы один на двоих))
уже говорил... это аналог заводского скайпа... ты хорошо понимаешь как работает заводской скайп ?
olegue писал(а):Погуглил еще малость , нагуглилось такое
https://github.com/samirkumardas/pcm-player
т.е счас вопрос как pcm передать через websocket или ajax, Т.е создать трансляцию. Принять pcm уже нет большой проблемы
насколько я знаю... websocket или ajax работают по TCP... они сначала устанавливают соединение... открываю сокет... а потом уже передают пакеты...
или я чего то не знаю))
у нас UDP - это я точно знаю)) UDP не устанавливает никаких соединений.
TCP и UDP несовместимы.
olegue писал(а):Т.е создать трансляцию.
roman.com писал(а):и надо ещё переключить Ардуину на UDP...
1-берём ардуину... цифруем звук микрофона... получаем на выходе pcm...
2-гоним пакеты в Wi-Fi модуль по сериал (я бы гнал по SPI).
3-Wi-Fi модуль тупо передаёт UDP пакеты на комп.
4-комп их тупо воспроизводит в динамике.

на первый взгляд всё просто...)) осталось скачать инструкцию Wi-Fi модуля... и посчитать скорость и тайминги))
:roll:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):3-Wi-Fi модуль тупо передаёт UDP пакеты на комп.
на эту тему я нашел вот такую ссылку

https://esp8266.ru/forum/threads/otprav ... a-pk.2307/

Здесь пример отправки данных с esp8266 по UDP, используется библиотека

Код: Выделить всё

#include <WiFiUDP.h>

Код: Выделить всё

void loop()
{
  if (wifiConnected)
  {
    if (udpConnected)
    {
      int packetSize = UDP.parsePacket();

      if (packetSize)
      {
        GetFromPcSendToStm();
      }

      GetFromStmSendToPc();

      delay(20);
    }
  }
}
но до сих пор не могу догнать своим скудными умственными возможностями как данные лягут на сервер где они должны быть прослушены. В примере выше где я нашел способ прослушивания потока, так вот там данные находятся на сервере в файле RAW pcm, т.е фактически wav без заголовков. Как отправить данные по UDP получить их в файл RAW?
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

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

Модуль ESP-01(esp8266)... инструкция...

ещё скачай wireshark... там видно что куда ты передаёшь...

Добавлено after 1 hour 22 minutes 53 seconds:
olegue писал(а):Здесь пример отправки данных с esp8266 по UDP, используется библиотека
а не проше просто передавать PCM на комп с помощью AT-команд ?

справочник AT-команд
http://microsin.net/adminstuff/hardware ... rence.html
https://esp8266.ru/esp8266-at-commands-v022/
и т.д.

уроки
https://narodstream.ru/esp8266-urok-2-at-komandy/

1-настройка esp8266...

2-подключение к роутеру...

3-передача пакета UDP на комп...
цитата
"попробуем передать данные с PC на модуль и обратно по протоколу UDP, для этого пошлём соответствующую команду модулю"
esp8266_002_img24.jpg
(7.65 КБ) 39 скачиваний
и т.д.

это так трудно ?
:dont_know:

Добавлено after 22 minutes 28 seconds:
[uquote="olegue",url="/forum/viewtopic.php?p=4314132#p4314132"]не могу догнать своим скудными умственными возможностями как данные лягут на сервер где они должны быть прослушены. В примере выше где я нашел способ прослушивания потока, так вот там данные находятся на сервере в файле RAW pcm, т.е фактически wav без заголовков. Как отправить данные по UDP получить их в файл RAW?[/uquote]
не знаю про какой сервер ты говоришь...
[uquote="olegue",url="/forum/viewtopic.php?p=4314132#p4314132"]Как отправить данные по UDP получить их в файл RAW?[/uquote]
а чем файл RAW отличается от просто RAW ?))
в файл RAW есть заголовок...
format_wav.txt
(2.6 КБ) 37 скачиваний
просто RAW нет заголовка))
:)
всё уже подробно разбирали...

чтоб слушать RAW в браузере или плеере... нужен заголовок.
:roll:
а нашему скайпу без разницы... есть заголовок... нет заголовка...
наш скайп берёт просто RAW и воспроизводит в наушниках.
:music:
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

лучше бы Ethernet подключил... там проще всё намного))
:tea:
Вложения
Skype_2.rar
(73.62 КБ) 51 скачивание
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

короче, приседал я тут полтора дня, испытывая и пытаясь запусить какие-то чужие стремные проекты. счас в наличии нету Ethernet, заказывать надо.

https://narodstream.ru/esp8266-urok-2-at-komandy/

вот это хотел обкатать, но на моей esp8266 AT отклика не оказалось, гугление и перепрошивка не решили проблему.
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

у тебя модуль работает через Ардуину...
Ардуина использует те же самые АТ команды...
подключись параллельно Ардуине и посмотри что передаёт Ардуина...
мы там много раз делали... например када подключали экраны всякие...
смотрели в протеусе что передаёт Ардуина... и делали так же...
https://www.radiokot.ru/forum/download/ ... ?id=356885
https://www.radiokot.ru/forum/download/ ... ?id=356600
https://www.radiokot.ru/forum/download/ ... ?id=357053
и т.д.

связь с приятелем уже проверил ?))
внизу вводишь IP приятеля... потом кнопку TX IP... потом кнопку вызов...
приятель на связи))
:tea:
поменяй на Ардуине кварц на 20 мгц... добавить три детальки)) и можно передавать на комп...
TX.jpg
(199.55 КБ) 45 скачиваний
правда только 1 и 0... ))
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

а что можно передавать с помощью 1 и 0... ? ))
да всё что угодно ))

подключаем второй МК (или Ардуино)

и передаём на комп... пакеты... 1 и 0... ))
Ethernet-Atmega8-телеметрия.jpg
(206.28 КБ) 36 скачиваний
таким образом можно передавать на комп например температуру...
Ethernet-Atmega8-датчик температуры.jpg
(202.71 КБ) 44 скачивания
теоретически можно передавать и звук...

в тестах ATmega8 передаёт пакеты со скорость более 14.000 пакетов/c.... (Ethernet 10 Мбит/c).
14000.jpg
(193.63 КБ) 39 скачиваний
проблема в том что у меня при такой скорости перегрузка процессора компа...
загрузка Java машины 14000.jpg
(197.16 КБ) 44 скачивания
поэтому приходится снижать скорость... до максимум 5.000 пакетов/c....
а в остальном всё нормально))
:tea:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

у меня тут небольшой когнитивный диссонанс. Вот я пишу PCM скажем с битрейтом 16кгц 8бит. И получаю 16тыс сэмплов в сек. 1 сэмпл - 1 байт т.к 8бит. Т.е если , скажем битность увеличить (16bit) и перейти на 2х байтное представление сэмпла, Но при этом оставить тот же сэмплрэйт в 16кгц, то качество звука останется прежнем, просто он будеет описан боллее точными цифрами, но их количество останется прежнем и только вот размер файла увеличиться. И теперь 1 секунда звука будет "весить" уже 32кбайт. Правильно понимаю?

Добавлено after 1 minute 51 second:
Так где тот путь которые ведет к улучшению качества звука с увеличением битности его преставления?
Друг Кота
Сообщения: 9406
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):И теперь 1 секунда звука будет "весить" уже 32кбайт. Правильно понимаю?
правильно.
если включишь анализатор то увидишь... что в нашем скайпе при переключении кнопочки с 8 бит на 16 бит пакеты будут передаваться в 2 раза быстрей...
olegue писал(а):Так где тот путь которые ведет к улучшению качества звука с увеличением битности его преставления?
всё дело в "ошибке преобразования"
ошибка преобразования.jpg
(104.74 КБ) 48 скачиваний
8 бит - это 256 значений (0...255)
16 бит - 65536 значений (0...65535)
чем больше значений - тем меньше ошибка преобразования... а значит качество звука лучше))
:tea:

слышал что в студии звукозаписи используют 24 бит - 16.777.216 значений (0...16.777.215)
студия.jpg
(36.7 КБ) 43 скачивания
там ошибка преобразования совсем маленькая... а значит качество звука вообще супер))
:music:
Ответить

Вернуться в «AVR»