5 votos

Límites de mi Arduino <-> comunicación Smartphone

Quiero transferir las señales de mi smartphone a mi Arduino Uno mediante el jack de audio. He conectado directamente a un canal de audio a la entrada analógica de la placa. El smartphone está enviando ~ +-0.5 V. Esto se interpreta como un 1 o un 0 bits de las señales.

Tengo el Arduino para leer el voltaje dentro de ~10 microsegundos (100kHz). Mi problema es que no puedo enviar datos de este tipo, pero quiero acelerar la transmisión de la medida de lo posible.

A continuación puedes ver la tensión que se lee con 100kHz. En la parte superior derecha se puede ver el valor del bit. Los bits se envían con 10kHz. Con mayor frecuencia de envío de los bits "bloques" no blocklike más y se confunden el uno al otro.

Recieved voltage

Se trata de un problema de los smartphone? No se puede producir buenas señales con esto de las altas frecuencias?

O es un problema del circuito?

¿Qué puedo hacer para obtener una mejor señal?

Editar: Aquí está el código de Arduino Uno:

byte data[500];
unsigned long lastRead =micros();
int i;

void setup() {
  bitClear(ADCSRA,ADPS0) ; //boost up analogread
  bitSet(ADCSRA,ADPS1) ;
  bitClear(ADCSRA,ADPS2) ;
  Serial.begin(9600);
}

void loop() { 
 while(analogRead(A0)<50) (true); //wait for start of transmission
  for(i = 0; i<500;i++){
   data[i]=analogRead(A0);    
  }
  for(int i = 0;i<500;i++){
    Serial.println(data[i]);
  }
  delay(1000);//just prevent starting again to soon
}

6voto

Simon Puntos 31

La salida de audio de su teléfono inteligente está equipado con un filtro de paso de banda: de paso alto para proteger la membrana de los auriculares/altavoces en contra de DC que haría inútil el estrés mecánico, y de paso bajo para asegurarse de que poco se oye ruido. Ya que el audio es de aproximadamente 20 hz-20 khz, las señales con una frecuencia más alta se obtiene atenuada a una tasa según el orden del filtro - al menos -3 db/década.

De hecho, que la salida no puede incluso con precisión la salida de señales digitales de hasta 20 khz. Por qué? Debido a los bordes afilados de las señales digitales están formadas por un número infinito de primaria de los sinusoides. La parte inferior de la frecuencia de corte, la más armónicos vas a atenuar, distorsión de la señal como esta: enter image description here

Usted puede filtrar lo que se mide para intentar reconstruir la onda cuadrada pero aún así, no es muy atractivo.

Ahora, usted puede aumentar la datarate para una razonable frecuencia de la portadora (es decir, 4kHz), cambiando el tipo de modulación y/o de codificación. La modulación es el proceso que transforma los datos a enviar en una señal de aplicar el medio de transmisión (a través de la etapa de potencia. + antena por ejemplo) - la capa de transporte. La codificación de nivel superior, se ocupa de la detección y corrección de anomalías. La suya es, por defecto, sin duda, en su forma más simple (bits de paridad, en comparación con las más avanzadas máquinas de estado, etc.), pero el primer paso a tomar para aumentar la datarate no críticos de la comunicación es la modulación.

Hay una serie de posibles técnicas de modulación por ahí. Cada uno de ellos tendrá una diferente relación señal / ruido - tasa de error de relación y, además, un símbolo diferente de la tasa de salida para una determinada datarate.

Entre todos esos, te recomiendo el más sencillo digital de modulación de amplitud. A medida que aumente el número de posibles niveles de salida, la relación señal a ruido disminuirá por lo que tendrá que encontrar el punto dulce. Para aumentar su datarate por N, tendrás que ser capaz de leer 2^N los diferentes niveles.

enter image description here Nota: olvídate de la compañía (el medio no es el aire, así que no hay necesidad de RF), y en este ejemplo 0 se codifica con cierta amplitud, pero no tiene que ser.

Si necesita más, usted puede mejorar su codificación para disminuir la necesaria relación señal / ruido y por lo tanto aumentar el número de niveles un poco más. Si no es suficiente, echa un vistazo a una más compleja técnica, por ejemplo, QAM. ADSL utiliza la modulación para impulsar la datarate en la misma línea; no recuerdo la velocidad de símbolo, pero la compañía fue de alrededor de 1 mhz para evitar la interferencia con el teléfono < 4kHz, y lograron en menos de 512 kb/s en el tiempo, imposible de lograr sin una muy densa de modulación. No estoy seguro de si el Arduino es lo suficientemente potente para esto, además de su aplicación, aunque.

0voto

Andreas Puntos 1

Me gustaría utilizar un transistor para amplificar la señal y, a continuación, utilizar la entrada digital pin en lugar de analógica. La lectura digital es más rápido y se puede utilizar en cambio interrupciones en lugar de estar verificando constantemente el valor. En el esquema inferior de la entrada será negado.

schematic

simular este circuito – Esquema creado mediante CircuitLab

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X