La tarea recayó en mí para realizar un sistema de comunicación inalámbrico en cadena. La comunicación debe ser inalámbrica, esp. a través de diodos infrarrojos. El final de la cadena está conectado a una PC (por cable). El sistema completo consta de n miembros. Cada miembro tiene dos lados con un diodo emisor y receptor.
El objetivo es:
Mi enfoque hasta ahora:
El reto es:
Las señales IR rebotan: se atenúan o, en ocasiones, se reflejan de formas inesperadas. Como dijiste, esto tiene que ser atendido.
Si estos dispositivos están en una habitación, los dispositivos 2 y n-1 pueden ver la misma señal del dispositivo 1 y responder al mismo tiempo: ¿qué sucede entonces?
Me parece que primero necesitará descubrir dispositivos y construir una red, luego estructurar mensajes para usar la red.
Por ejemplo:
etapa 1) Descubrimiento de red. Supongo que (a) sabe cuántos (n) son, (b) puede programar variaciones en cada dispositivo individual (c) cada dispositivo puede medir la intensidad de la señal (o la calidad de la señal de alguna manera).
El dispositivo 1 transmite un mensaje de difusión. Todos los dispositivos receptores esperan (un tiempo diferente en cada caso para evitar colisiones) y responden con la intensidad de la señal. Algunos mensajes vuelven a él, otros no.
El dispositivo 1 ahora tiene una lista de estaciones con las que puede hablar de manera confiable, ordenadas por calidad de señal bidireccional y cuáles no puede alcanzar. Llame al más fuerte "Dispositivo 2".
Ahora le pide al Dispositivo 2 que haga lo mismo y le devuelva su lista. Esto pone más carga en el Dispositivo 1 o en la computadora host para construir las rutas más eficientes para cada dispositivo y las alternativas.
etapa 2) Uso de la red: Cada mensaje incluye 2 direcciones: el destino final y el objetivo inmediato (generalmente el Dispositivo 2, desde el Dispositivo 1). Solo el objetivo inmediato responderá al mensaje, evitando colisiones sin necesidad de los retrasos utilizados en el descubrimiento de redes.
Asigne a cada unidad su propia ID de nodo codificada intrínsecamente única, que ayudará a ciertos problemas y algoritmos. O puede generar uno "al azar" si quiere como un GUID.
Asigne a cada "mensaje" una "ID de mensaje" única y eso puede ayudarlo a decidir si un mensaje determinado ha sido visto/procesado/reenviado una o más veces o no por un nodo determinado.
Asigne a cada mensaje un "tipo" como "SOLICITUD DE COMANDO DE INICIO", "RESPUESTA DE COMANDO DE INICIO", "TRANSMISIÓN DE BALIZA", lo que sea.
Use banderas como "mensaje reenviado", "mensaje original" si lo desea.
Utilice datos de carga útil del mensaje como "recuento de saltos reenviados" (incrementos cada vez que se reenvía), "tiempo de vida" (número de episodios de reenvío antes de que caduque un mensaje) si lo desea.
Use algoritmos como nodos que solo reenvíen a otros nodos o nodos en una secuencia determinada si lo desea.
Por supuesto, probablemente podría usar módulos XBEE o WiFly o algo así si quiere renunciar a IR por RF. O podrías hacer algo divertido (exagerado, sí, pero divertido) como usar TinyOS, Contiki, UDP o lo que sea si quisieras y usaras nodos lo suficientemente potentes. O podría portar SimpliciTI o similar. Porte cualquiera de las capas de red para usar el medio infrarrojo.
En cuanto al ruido ambiental, use fototransistores con filtro IR, que reducirán el ruido que no es IR. Si el ruido IR de banda base sigue siendo un problema, use módulos IRDA que tienen filtrado óptico y de banda base para ayudar. O puede usar la modulación de CA en una portadora analógica infrarroja y recibir los datos en formato analógico o digital. Podrías hacer múltiples canales FDM si quisieras entre 1kHz y 10kHz o lo que sea. En analógico, podría usar un decodificador de tono PLL como el NE567 o el HC4046 para recibir modulación FM, pero ¿por qué molestarse si hacer algunos filtros digitales es solo unas pocas líneas de código MCU? Diablos, usa DTMF, hay un código fuente para eso. O salida PWM FSK y filtro digital para recibir.
La corrección de errores de reenvío podría ayudar a la verificación e integridad de los mensajes. O una simple suma de comprobación o CRC.
Tim
Kaz
Kaz
Andy alias
Anindo Ghosh
norberto