5 votos

La mejor forma de enviar lecturas de sensor a través de una simple conexión de RF

He comprado un par de sencillos 315MHz TX/RX módulos. Quiero usar estos para conectar una batería ATTiny85 a un Arduino estación base. El ATTiny necesita regularmente despertar y enviar una lectura del sensor a la estación base.

En teoría debería ser capaz de simplemente escribir datos en el TX y leer desde el RX del módulo. Sin embargo, ¿cómo puedo asegurarme de que puedo escribir/leer a la velocidad correcta? ¿Qué código tengo que usar para transmitir a una determinada velocidad (bytes/segundo)? ¿Cuál es la mejor manera de hacer la corrección de errores de detección?

Ya quiero el transmisor para ser alimentado a batería podría utilizar un transistor para desactivar VCC para el TX del módulo cuando está inactivo. ¿Cuál será el RX del módulo de recibir cuando el TX del módulo se apaga?

10voto

RelaXNow Puntos 1164

Los módulos básicamente hacen que el receptor pin de maniobra en respuesta a tu forma de conducir el transmisor pin. Ellos no saben nada acerca de lo que usted piensa mover el pin de medios, y no contienen una UART. Más detalles no fueron evidentes de inmediato sin excavar. Ese es tu trabajo, así que no me molesté en ir más allá. Usted debe proporcionar un enlace a la hoja de datos, no el producto de la página de presentación.

Estos módulos funcionan en la modulación AM. El breve valoración crítica dice que PREGUNTE, pero probablemente solo on/off keying del transmisor (que técnicamente es un subconjunto de PREGUNTAR). El problema con este esquema es que el receptor no puede inherentemente conocer el nivel para cuando el transmisor está encendido. Por lo tanto, más probable es que se ve en los últimos señal recibida fortalezas y selecciona un valor en el medio para decidir entre encendido y apagado. Esto se llama datos de rebanar.

Si usted no está regularmente transmitir abiertos y cerrados, el receptor pierde la pista de lo que los niveles de encendido y apagado, y no puede segmento de datos correctamente. Esto suele tratarse de dos maneras. En primer lugar, un preámbulo se envía. Este contiene un montón de complementos y desventajas en rápida sucesión, de manera que el receptor puede asentarse en una buena información de la cortadora de umbral. Se espera que todos o algunos de estos bits no son interpretados correctamente por el receptor, por lo tanto, no son realmente "recibido". La segunda estrategia es el envío de datos de manera que siempre hay un reciente encendido y apagado para el receptor de referencia. Algunos receptores, especialmente barato que los datos loncheado en analógico, la corte sobre el filtrado de paso bajo promedio de intensidad de la señal recibida. Para dichos receptores, no sólo se necesita variar entre encendido y apagado con frecuencia, pero el promedio debe estar cerca de 1/2.

Esta es la razón por la codificación manchester es tan popular para tales enlaces de RF. No voy a entrar en la codificación manchester aquí, ya que esto es bien sabido y no tendrá ningún problema en encontrar un montón de información sobre lo que hay. Una característica interesante de manchester código es que los promedios a 1/2 sobre cada uno de los bits. Un poco está dividido en dos mitades. On-off puede significar 1 y off-on 0. Manchester es probablemente el mejor el más fácil hacer esquema de codificación.

Puede utilizar una UART, pero tienes que tener cuidado y no se va a renunciar a algunos de ancho de banda (batería). Miren lo que un UART va a transmitir. Si usted envía los caracteres inmediatamente después de la otra, entonces cada uno tendrá de 10 bits de veces. Habrá un bit de inicio, 8 bits de datos y un bit de parada. El inicio y el bit de parada siempre son de polaridad opuesta. Usted puede hacer uso de los códigos en el resto de los 8 bits que tienen un número igual de 0s y 1s para mantener los datos de segmentación de umbral en el medio. Esto significa que sólo puedes enviar 4 bits de información en cada UART carácter. Usted también tendrá que pensar en el preámbulo cuidadosamente.

En general, usted debe asumir que ninguna transmisión de RF tiene una posibilidad significativa de errores de bits. Esto significa algún tipo de suma de comprobación es una buena idea. Usted puede enviar paquetes de datos, e incluir algo así como un 16 o 20 bits de suma de comprobación CRC con cada paquete. Si el paquete no es recibido intactas, entonces se descarta como si nunca hubiera sucedido.

El sistema también tiene que lidiar con el ruido aleatorio recibido cuando el transmisor está apagado. En ese caso, el receptor umbral va a caer y va a empezar de datos rebanar cualquier ruido aleatorio que se recoge. Con un diseño adecuado y el preámbulo y la suma de comprobación, usted puede tomar la oportunidad de ruido aleatorio mirando como datos válidos muy pequeña.

2voto

Grishanko Puntos 111

Terminé usando una biblioteca de codificación de Manchester. La última versión de esta biblioteca ha sido publicada aquí: https://github.com/mchr3k/arduino-libs-manchester

Los detalles sobre mi uso de esta biblioteca se pueden ver aquí: http://mchr3k-arduino.blogspot.com/

1voto

JW. Puntos 145

Esta pregunta está directamente dirigida por el Malvado Nodo / Wicked Receptor Escudo de productos que puedo hacer (divulgación) en Wicked Dispositivo. Por favor, comprobar a cabo. Constituyen un bajo costo PREGUNTE enlace de radio 433MHz para obtener hasta cuatro analógica de las lecturas del sensor (por Malvados Nodo) de forma inalámbrica a tu Arduino a intervalos prescritos. He utilizado un ATTiny24A en lugar de un ATTiny85 principalmente para las entradas Analógicas adicionales. El software utiliza los modos de suspensión ampliamente y los Impíos Nodo está diseñado para funcionar a partir de una batería de 9V para varios meses.

0voto

Flethuseo Puntos 464

A pesar de que el cartel original ya había encontrado una solución. Me acaba de añadir un poco de info para la gente que termina aquí. Básicamente hay 2 formas establecidas para enviar datos inalámbrica entre arduino/Attiny: VirtualWire y Manchester. Ambos tienen las bibliotecas disponibles. Virtualwire entiendo que sólo se puede enviar caracteres (aunque no es un trabajo de todo), Manchester puede enviar números. En el uso de la biblioteca de manchester, asegúrese de tener la última. Ambos VirtualWire y el manchester se puede poner en un Attiny. Con respecto a la conmutación del Transmisor encendido o Apagado para ahorrar el uso de la batería, le sugiero que ponga el Attiny a dormir y cuando se despierta, que se encienda el suministro del transmisor a través de un transistor (attiny pin a base de alta, etc). Hay un ejemplo (probablemente más de uno) en instructables: http://www.instructables.com/id/Attiny85-RF-Transmitter-to-Arduino-Uno-Receiver-Ma/?comments=all#CWNVMX4I6RT1A1N

0voto

Kris Puntos 172

Dependiendo de cuánto interoperabilidad con los dispositivos existentes que quieras, pero si usted quiere un montón, http://www.dealextreme.com/p/wireless-bluetooth-rs232-ttl-transceiver-module-80711 podría ser vale la pena considerar. Es sólo una muy barato Bluetooth enlace serie y apenas alrededor de cualquier equipo con bluetooth podría leerlo. Bluetooth también tiene un excelente rendimiento (relativamente) incluso en entornos muy ruidosos 2.4 GHz comms.

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