Отправка и получение аналоговых данных от одного arduino к другому arduino через web/ethernet

я могу отправлять аудиосигнал через микрофон и отправлять его через arduino и принимать его на динамике.

мне нужны две вещи

1.) Голос, который я слышу по громкоговорителю, имеет на громкоговорителе много шума. мне нужно уменьшить его 2.) Мне нужно отправить этот аналоговый сигнал, полученный от микрофона через Ethernet/web, другому arduino. у меня есть Ethernet shield, я могу передавать данные с коммутатора, но не с микрофона.

позвольте мне начать с самого начала: я подключил микрофон к аудиоусилителю и подключил выход усилителя к контакту a0 arduino. Arduino подключен к DAC(PCF8519) с выводами a5 и a4 aurdino. Выход ЦАП подключен к модулю аудиоусилителя LM386, а к его выходу подключен динамик. когда я говорю через микрофон, я могу слышать его на динамике, но он имеет некоторый шум, связанный с ним. ЕСЛИ вы можете предложить решение для этого, это будет здорово.

теперь я хочу отправить данные микрофона на другой arduino через web/Ethernet. я могу получить данные коммутатора, но не смог получить правильные данные от микрофона.Так что, пожалуйста, помогите с этим.

вот моя схема аудио усилителя: here is my audio amplifier circuit

вот мой код для одного кода arduino, который работал

`#include "Wire.h"` 
 #define PCF8591 (0x90 >> 1)
 void setup()
  {
    Wire.begin();
    pinMode(0,INPUT);
   }
 void loop()
   {
     Wire.beginTransmission(PCF8591);
     Wire.write(0x40);
     Wire.write(analogRead(0));
     Wire.endTransmission();
   }

Мне нужно уменьшить шум на динамике, и я хочу отправить данные микрофона через Web/Ethernet на другой arduino.

, 👍1

Обсуждение

вы получаете шум, если arduino нет в цепи?, @jsotola

"мне нужны две вещи". Если у вас нет причин думать, что две проблемы взаимосвязаны до такой степени, что одна не может быть решена без решения другой, выберите одну и сделайте свой вопрос об этом., @timemage

Потоковое аудио через ethernet или (боже упаси) Интернет-это очень трудно сделать. Не то, с чем мы можем вам помочь. Также Arduino действительно не может делать аудио, и I2C DAC, вероятно, вторая худшая идея для аудио когда-либо., @Majenko

Разве это не тот же вопрос, что и здесь? https://arduinoprosto.ru/q/81780/generate-a-true-analog-signal-using-arduino Смотрите мой ответ там, то же самое решение, частота дискретизации и выходной конденсатор, С4., @Dorian

Дориан, у них нет никакой ошибки с конденсатором с4, @sanket jain

@sanketjain Это происходит в любой конфигурации, которая у вас есть. Опять то же объяснение, АЦП работает только с положительными напряжениями. C4 удаляет компонент постоянного тока, и ваш микрофонный сигнал просто плавает между -0,7 В и 5,7 В, ограниченный только входными зажимными диодами. Если вы используете ссылку по умолчанию 5 В для АЦП, просто закоротите C4. Это даст входу АЦП чистый и стабильный сигнал около 2,5 В, @Dorian

@dorian Я уже сделал это, поэтому я сказал, что нет ошибки с c4, @sanket jain

Я не понимаю, в этот момент C4 все еще там или нет? Вы закоротили C4, ничего не произошло и после этого вы удалили короткое замыкание или нет?, @Dorian


1 ответ


1

Вход АЦП имеет сопротивление 100 Мом. При размещении С4 сигнал на входе АЦП не имеет постоянного тракта, а просто плавает между -0,7 В и 5,7 В , ограниченный только входными зажимными диодами.

АЦП может преобразовывать только напряжения между 0 и опорным напряжением, я полагаю, вы используете опорное напряжение по умолчанию 5В.

Но ваш сигнал плавает, и АЦП отсечет любые пики за пределами области преобразования, дающие шум, который вы слышите.

Еще одна проблема, которую я вижу здесь, заключается в том, что технический паспорт LM386 указывает нагрузку от 4 Ом до 32 Ом. Нет никакой гарантии, что он будет работать без нагрузки, как в вашем случае. Скорее всего, нет.

Таким образом, вы можете подключить C4 к соответствующей нагрузке и принять сигнал для АЦП прямо с вывода 5 LM386, который автоматически сбалансирован на половине напряжения питания.

schematic

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

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

Отредактируйте, чтобы добавить некоторую информацию о том, как отладить эту проблему.

Во-первых, на приведенной выше схеме замените резистор динамиком и посмотрите, хорош ли звук. Если нет, то посмотрите, что не так с вашим усилителем.

Если он хороший и громкий, без каких-либо искажений, то поставьте резистор обратно.

Используйте последовательный монитор двоичного режима, такой как Realterm, чтобы увидеть, как выглядят ваши данные, последовательный монитор Arduino работает только в режиме Ascii, который превращает байт в три символа ascii, что очень медленно.

Что то вроде этого

void setup() {
    Serial.begin(230400); // открывает последовательный порт, устанавливает скорость передачи данных на максимальную или поддерживаемую вашей платой для минимизации задержки
}

void loop()
   {
     unsigned int temp;
     temp = analogRead(0);
     temp = temp>>4; //strip low bits to fit in a single byte
     Serial.write(temp);
   }

Затем посмотрите, как выглядят ваши данные, если у вас есть много 00 или много FF, чем вы знаете, что ваши данные us upper или lower ограничены или что не так с вашим сигналом.

Надеюсь вы в курсе, что АЦП преобразования 100us и провод передачи также вокруг 200us максимальная частота дискретизации можно ожидать составляет около 3 кГц и максимальная полоса пропускания аудио сигнала 1.5 кГц, что составляет половину от Телефония пропускной способности, возможно, вы захотите использовать более быстрый ЦАП и использовать неблокирующее чтение АЦП использовать время в АЦП работает как в этой статье

,