La mejor opción para comunicaciones inalámbricas de corto alcance y baja potencia

Estoy trabajando en un proyecto que se basa en la comunicación inalámbrica y estoy buscando la mejor alternativa. Estos son los requisitos de diseño:

  • Es fácil de interactuar con Arduino
  • Funciona en un rango pequeño (5-6 metros como máximo)
  • Consume poca energía - la mínima posible
  • Los dispositivos no deben interferir entre sí.
  • No es necesario que sea en tiempo real, el retraso puede ser del orden de cientos de milisegundos
  • En general, los dispositivos no están a la vista uno del otro (lo que significa que IR y soluciones similares no funcionarán)

El escenario es:

Unos 10 dispositivos en la misma habitación, comunicándose entre sí, enviándose mensajes cortos (30 caracteres como máximo) de vez en cuando, durante unas horas (sin cambiar las pilas).

Lo mejor que pude encontrar es Bluetooth (BLE, específicamente), principalmente porque hay algunos módulos Arduino + Bluetooth listos para usar y la prometedora etiqueta "Baja energía" (como máximo la mitad del consumo de energía de Bluetooth normal), pero yo Me encantaría conocer la opinión de personas con más experiencia en este campo.

Voto por Bluetooth.
Danos alguna información sobre lo que decidiste no usar y tu justificación.
5 a 6 metros como máximo - bluetooth puede funcionar más allá de esto - ¿6 m es el límite absoluto que no debe superar el límite? Muy poco poder. ¿Qué tal si nombras y avergüenzas algunos números aquí? No deben interferir entre sí. ¿Qué significa esto exactamente?
@Andyaka: No, lo que quiero decir es que los dispositivos estarán separados por 6 metros como máximo, por lo tanto, no hay necesidad de soportar distancias mayores. En cuanto a "muy poca energía", planeo hacer funcionar cada dispositivo (Arduino + LCD + módulo inalámbrico) con una o dos baterías AA como máximo, y estos dispositivos deberían poder comunicarse durante al menos una hora sin cambiar las baterías.
En cuanto a "No deben interferir entre sí", me refiero a que cada uno de estos 10 dispositivos se comunicará con un par de forma independiente (1 a 1), y esto no debería ser un problema (es decir, cada dispositivo aún debe poder para comunicarse de manera confiable, sin importar cuán "abarrotado" esté el lugar).
Suena como una piconet Bluetooth para mí.
Sus requisitos no excluyen las comunicaciones IR, que pueden ahorrar una gran cantidad de energía... si puede orientar sus dispositivos correctamente, por supuesto.
@VladimirCravero: Las comunicaciones IR no son una posibilidad en este caso. Actualizaré la pregunta en consecuencia.

Respuestas (6)

Eche un vistazo a la línea de transceptores XBee . Hay varios tipos según el rango de transmisión y la potencia nominal deseada.

Estos dispositivos también interactúan con los proyectos de Arduino de manera casi trivial. La Serialbiblioteca utiliza el hardware UART del AVR, que es directamente compatible con el pin Rx del XBee. ¡También tenga en cuenta que no se necesitan cambiadores de nivel porque el pin XBee Rx/Tx funciona con 5V!

Sin embargo, tenga en cuenta que el XBee debe funcionar con 3,3 V, por lo que se puede utilizar un regulador de voltaje LDO de 3,3 V simple.

"Mejor" es difícil de definir, pero buscaría un transceptor IEEE 802.15.4.

Usé un MRF24J40MA para un proyecto ( https://github.com/briksoftware/gradusnik ). Puede intentar ver si hay algún código que pueda usar allí. El proyecto es para PIC, pero muchas cosas son en realidad independientes de la plataforma (especialmente los otros proyectos de los que depende).

El módulo consume unos 20mA en rx/tx, que no es mucho. Sin embargo, para prolongar la duración de la batería, debe poner el módulo en reposo la mayor parte del tiempo. Podría usar una red habilitada para balizas para esto, con un dispositivo actuando como coordinador. El módulo consume algunos µA en modo de suspensión (consulte la hoja de datos para conocer los números exactos)

El único problema al interactuar con un Arduino es que necesita una palanca de cambios de nivel 5-> 3.3 (si Arduino todavía usa 5v).

Otro transceptor popular para el protocolo IEEE 802.15.4 es el módulo XBee, pero es mucho más caro.

No lo veo como un problema inalámbrico, sino más bien como un problema de protocolo.

Si la conservación de la batería es el nombre del juego y si un dispositivo puede, a través de la programación adecuada, adoptar el papel de "maestro" temporal, entonces se puede asignar un intervalo de tiempo a cada uno de los demás dispositivos. Una vez que se realiza la asignación, el maestro temporal puede volver a ser un par, pero lo importante es que se ha creado un marco de intervalos de tiempo y todos los pares habrán aceptado este marco.

¿Qué hace esto? Tener un intervalo de tiempo significa que puede apagar la radio durante cientos de milisegundos y despertarse para ver si hay una transmisión en curso destinada a ser recibida. Cuando un par se despierta, tiene que esperar para ver si alguno de los otros 8 pares le está enviando un mensaje. El tiempo es fundamental, pero si desea una batería de larga duración, concéntrese en el protocolo. Esta respuesta es solo una bocanada de una idea. El intervalo de tiempo de activación se subdividirá en otros 8 intervalos en los que cada uno de los otros 8 pares está asignado para transmitir y, si uno está transmitiendo, los demás pueden escuchar primero para verificar si pueden transmitir. Algo como esto: -

ingrese la descripción de la imagen aquí

El espacio "siguiente" permite que nuevos compañeros se unan al grupo.

Los transceptores de baja potencia son un lugar común, así que no voy a investigar esto.

Prueba los módulos txrx de 433 mhz baratos. son útiles y se pueden interconectar fácilmente con arduino. Los uso para mis proyectos personales de robótica de hobby.

Solo por curiosidad, ¿por qué no se ha mencionado el módulo transceptor inalámbrico NRF24L01 de 2,4 GHz? Es una unidad de baja potencia, se puede cambiar a un modo de espera para un consumo aún menor. Funciona con 3.3v, por lo que puede usar un arduino de baja potencia o un divisor, y lo mejor de todo es bastante barato.

Aquí está la página del producto nRF24L01+ junto con un nRF24L01 How-To que contiene información sobre cómo conectar uno a un Arduino junto con un código de muestra.

El RFM12B viene a la mente..

http://www.hoperf.com/rf/fsk_module/RFM12B.htm

Algunas caracteristicas:

  • Interfaz compatible con SPI
  • Alta velocidad de datos (hasta 115,2 kbps en modo digital)
  • Fuente de alimentación de 2,2 V-3,8 V
  • Sintonización automática de antena
  • FIFO de datos RX de 16 bits
  • Desviación de frecuencia de TX programable (de 15 a 240 kHz)
  • Ancho de banda del receptor programable (de 67 a 400 kHz)
  • Indicador de intensidad de señal analógica y digital
  • Reloj y salida de señal de reinicio para uso externo de MCU

La interfaz de comunicaciones SPI debe ser bastante adecuada para configurarse con Arduino.

El modelo RFM12B-S2 se vende por menos de $7 en estos días.