Мой эксперимент предполагает, что ESP8266 NodeMCU 12E имеет максимальную частоту дискретизации АЦП только 6 кГц? - PullRequest
0 голосов
/ 10 февраля 2019

В качестве моего первого проекта типа IoT я пытался подключить электретный микрофон с предварительным усилением к плате разработки ESP8266 NodeMCU 12E, а затем передавать этот звук на другой компьютер через Интернет.Я пробовал различные протоколы и подходы к потоковой передаче аудиоданных, но мои лучшие усилия все же привели к искаженному качеству звука на принимающей стороне.

Я начал устранять неполадки с моим низким качеством сигнала, исследуя частоту дискретизации * 1003.*.Я написал код ниже, чтобы показать мне, сколько времени требуется для выборки 1000 аналоговых точек данных:

#include <ESP8266WiFi.h>

const char* ssid = "___";
const char* pass = "___";

char pay_load[1000] = {0};
int pay_load_length = sizeof(pay_load)/sizeof(pay_load[0]);

void setup()
{
  Serial.begin(115200);
  Serial.println(0);      //start
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);

}

void loop()
{

  int count = micros();
  for(int i=0; i<pay_load_length;i++){

    int analog = analogRead(A0);

  }

  Serial.println(micros()-count);
}

Последовательный монитор напечатал значения около 166000 с плюсом или минусом около 100. Означает ли этотребуется около 166us, чтобы получить одно значение из analogRead(A0)?Что означало бы, что в моем нынешнем виде максимальная частота дискретизации аналогово-цифрового сигнала составляет 6 кГц? И эта низкая частота является основным вкладом в мое плохое качество сигнала?(Когда я увеличиваю длину pay_load, время выполнения цикла увеличивается линейно).

Я просто хочу убедиться, что мой эксперимент выше не вводит меня в заблуждение, заставляя думать, что ESP8266 трудно захватить (исо временем передаю) стерео качество звука.

Примечание по теме: Я пытался выяснить, как написать ISR с использованием аппаратного таймера, потому что другие, работающие в режиме stackoverflow, предложили, что может помочь мне выбрать аналоговые точки данных с большей частотой без дрожания.Но я чувствую, что теряюсь в лабиринте, потому что у меня FreeRTOS, которая не поддерживает аппаратный таймер, и теперь мне нужно исследовать, как получить nonos sdk вместо этого… и не уверен, какая проблема встанет после этого.Просто интересно, проще ли получить arduino с сетевым экраном?

...