Prevención de interferencias al usar transmisores y receptores de RF

Quiero usar un enfoque de "escuchar antes de hablar" para transmitir datos de sensores conectados a un par de transmisor y receptor a una MCU conectada a un transmisor y receptor, lo que significa que el sensor solo transmitirá datos una vez que se le haya pedido hacerlo por la MCU, pero el problema que tengo es que mis receptores no tendrán forma de saber si la información que está recibiendo es de uno de mis transmisores o de algún otro transmisor 433 en el área. El receptor que quiero usar tiene una descripción del producto aquílo que parece sugerir que puede haber un método para emparejar mis transmisores y receptores, pero ¿cómo? Si transmito información de ID del transmisor, por ejemplo, si el transmisor está transmitiendo 4 bits, hago que los dos primeros bits sean siempre "11" para que el receptor sepa que la información proviene de uno de los transmisores que debe escuchar. ¿Podría entonces filtrar los datos? No quiero en el AVR?

@DaveTweed parece estar relacionado, pero no un duplicado.
@Kortuk: mire el historial de revisión de la otra pregunta (y tenga en cuenta las marcas de tiempo).
@DaveTweed Ah, sí, el usuario pensó que seguía editando para agregar más a la pregunta. Esto es mucho mejor, haz cada pregunta discretamente. ¡Gracias por la explicación!

Respuestas (1)

Ese tipo de transmisores y receptores solo funcionan en un solo canal. Los receptores generalmente emplean una forma de control de ganancia activo (AGC), por lo que aumentarán la ganancia hasta que se reciba algo (generalmente ruido). La ganancia se reduce a un nivel apropiado cuando comienza una transmisión.

En general, la mejor práctica es:

  • Acuerde una tasa de bits entre los dos sistemas (por ejemplo, 4800 bps). Por lo general, los pares de receptor/transmisor le brindarán alguna orientación al respecto.
  • Transmita un preámbulo de 10101010 (generalmente entre 8 y 40 bits) antes de iniciar la transmisión principal. Esto tiene dos propósitos: permite que el AGC se establezca en un buen punto y puede ser detectado por el microcontrolador para que sepa que se está iniciando una transmisión.
  • Transmita una palabra de sincronización, por ejemplo, 0xD5F7, y solo escuche los paquetes que tengan la palabra de sincronización correcta. La longitud de la palabra de sincronización varía.
  • Use el resto del paquete de datos para detallar la dirección, la dirección y los datos.

Descubrí que la biblioteca VirtualWire para Arduino es en realidad un buen y claro ejemplo de cómo hacer esto. Tal vez eche un vistazo, incluso si está trabajando con otra familia de microcontroladores.

Otra cosa que vale la pena considerar es la codificación de bits. Simplemente puede enviar un 1 como 1 y un 0 como 0. Sin embargo, existen esquemas más complejos. La codificación Manchester garantiza que cada bit de datos transmitido tenga al menos una transición de señal. Esto tiene dos efectos significativos:

  1. Independientemente de los datos enviados, habrá un número igual de altos y bajos enviados. Esto significa que el AGC puede funcionar correctamente y no hay polarización de CC en la señal.
  2. Como hay una transición para cada bit, es fácil recuperar el reloj de la señal, incluso si no se conoce. Esto realmente significa que sus transmisores ya no necesitan usar un cristal externo: el oscilador interno es lo suficientemente preciso.
+1 para Preámbulo ... también puede agregar un SOM si lo desea.