Se trata de los módulos Ciseco XRF, la mayoría de la documentación existente menciona los módulos XBee, que permiten a sus arduinos hablar sin cables entre sí. Sin embargo, los módulos de Xbee que he visto tienden a funcionar a 2,4GHz (junto con todos los dispositivos inalámbricos en mi casa y las casas de mi alrededor. Así que los Ciseco XRF son una buena alternativa a esta banda. Además, los XBee son moderadamente caros según sean de más o menos alcance en mW.
Por unos 10€, se puede obtener un módulo inalámbrico compatible con Xbee (Serie 1) que funciona en un rango de frecuencias diferentes dependiendo de como se configure (868.3MHz por defecto, pero también 315MHz, 433.5MHz, 868MHz, 903MHz y 915MHz), y tiene una gama estándar de aproximadamente 300 metros (aunque se gamas de más de 3km). Esto es en teoría, porque como veremos a continuación, leyendo estos alcances teóricos te esperas grandes resultados con estos módulos, pero los resultados que yo he obtenido con antenas de 3db dejan bastante que desear, llegando incluso a alcances similares de los ESP8266 y la cobertura tradicional de los puntos de acceso tradicionales.
Para las pruebas que vamos a llevar a cabo vamos a necesitar:
2 Arduino Uno
2 Módulos Cisexo XRF
2 Shield Xbee compatible V1 (yo tengo en concreto Keyes Xbee Shield)
La shield de Xbee se necesita porque los pins que traen por defecto los Ciseco son demasiado pequeños para montarlos en una protoboard.
Nota: Si quereis más información de pin, datos de conexión, etc... como son compatibles con Xbee versión 1 es mejor si buscais información acerca de ellos qu de los XRF propios. Encontrareis más de donde tirar del hilo.
Aquí teneis unas imágenes del material utilizado
El arduino Uno lo conocemos de sobra, así que me ahorro cargar de imágenes la entrada.
Como vemos, tiene un trozo de cable soldado en la salida inalámbrica y viene configurado por defecto en 868MHz, así que haremos las pruebas en esta banda.
Como este modelo fue prestado, mi director de proyecto cortó el trozo de cable que funcionaba a forma de antena y soldó un conector rp-sma base para poder enroscar antenas convencionales. Se verá en las fotos de a continuación.
Empezamos con la prueba rápida de cobertura...
Los XRF son bastante simples de utilizar, simplemente es una cuestión de:
- Conectar las 3 PCB juntas (Shield de Xbee encima del Arduino, XRF encima de la shield).
- Habilitar el módulo XRF pinchando el pin 8 a High (3,3v).
- Lectura/Escritura entre los arduinos usando los comandos estándar Serial.read() / Serial.wite().
Las conexiones que hay que hacer básicamente son:
Los pines de los Xbee se leen de arriba a la izquierda a abajo, y a continuación de arriba a la derecha hacia abajo. Siendo el pin número 1 el de arriba a la izquierda y el 20 el de arriba a la derecha.
El Pin 1 del shield a 3,3v
El Pin 2 del shield a Rx del Arduino
El Pin 3 del shield a Tx del Arduino
Pincharemos también un LED que alumbrará cuando un arduino reciba la señal del otro y un buzzer que sonará a la vez que el LED se ilumina.
El LED podemos pincharlo directamente en la placa Arduino en el PIN 13 el positivo y el PIN negativo (la patilla corta) al pin GND que tiene exactamente a su izquierda tal y como muestra la imagen. (En el ejemplo que utilizo yo uso una protoboard para pinchar el LED con una resistencia y darle corriente al buzzer de manera más cómoda, pero serviría también pincharlos directos en la placa sin resistencia).
Para conectar el Buzzer, lo haremos de la misma manera que un LED, pero en nuestro ejemplo lo pincharemos el polo positivo en el PIN7, en lugar del 13 como se enseña en la imagen. El dibujo es meramente orientativo para saber como pincharlo. En mi ejemplo lo pincharé también en la protoboard.
Si ya hicisteis todas las conexiones solo falta añadir una más. Es la última, pero no por tanto menos importante, sino que diría que incluso la más importante, ya que sin esta última conexión, según nuestro código el XRF no funcionará.
Se trata de pincha el pin 8 de la shield del Xbee a Vcc (3,3v). Es el PIN que indica al Shield que esté activado.
Si no quereis hacer distinción entre emisor y receptor podeis realizar dos esquemas exactamente iguales, y luego cargarle a cada placa de arduino sketch diferentes. Funcionará lo mismo, solo que en el emisor no alumbrará ni se escuchará nada, solo en el receptor.
Cuando haceis todas las conexiones debe de quedar de un estilo como el siguiente
Son dos equemas exactamente iguales de montaje.
Para terminar, falta cargar los sketch correspondientes en cada Arduino.
Antes de empezar tengo que decir, que si os da fallo al cargar los sketch en los arduino, desconecteis todo, cargueis los sketch y luego volvais a conectar los cables. A mi me pasó eso y lo logré cargar de esta manera.
La prueba que realizaremos es muy básica:
El Arduino emisor emitirá un mensaje por el puerto serie que el otro arduino tendrá que recibir y reenviar por el puerto serie otro mensaje. Si el primer arduino recibe la respuesta del segundo arduino al mensaje enviado, emitirá un sonido y el led se encenderá durante un instante. Esto es lo que tendremos en cuenta para saber que los dos arduinos aún están en línea y hacer pruebas de cobertura.
Esto se repitirá continuamente. Si los conectais a un pc en lugar de a una batería a 5v y abrís la consola del puerto serie a 9600 podeis ver los mensajes que envian y reciben uno del otro, pero esto no es completamente necesario. Los detalles de la programación os los muestro el código de cada arduino a continuación:
Sketch para el emisor:
sketch para el receptor:
Nota: El emisor envía una "H" por cada mensaje que tiene que recibir el receptor, y el receptor devuelve una "K" en respuesta que recibe e imprime el emisor por cada mensaje devuelto en respuesta.
Cuando tuve todo listo hice pruebas de cobertura básica. La verdad es que me decepcionaron bastante en cuánto a longitud, pero en potencia a corto alcance funcionan bastante bien.
Hay que decir que las pruebas las hice en la casa donde estoy implantando el proyecto, desde la punta más abajo hasta la punta más arriba, muros de hormigón de arriba abajo, con piedras, hierro en la estructura,... y los módulos respondieron bien, sin perder conexión en ningún momento. Hablamos aproximadamente que tuvieron que traspasar de media unos 7 u 8 muros de este tipo.
Pero a largo alcance, cuando me esperaba obtener una amplia distancia, en unos 70 metros con visión casi directa pero con algunos obstáculos de diversos tipos por el medio empezaron a perder la señal.
Lo más que pude obtener como muestro en alguna imagen de a continuación fueron unos 100 y pico metros en visión directa, y aún así depende de la posición en la que los pusiesen cogían cobertura o no.
Hasta unos 50 metros hay que decir que con visión directa funcionaron sin problema.
Hasta 100 metros con visión directa funcionaba, pero tenía que ser visión muy directa, sino dejaba de funcionar.
Agradezco a mi padre los servicios prestados... Es el que sale con el círculo rojo en las imágenes. Además nos cogió un día malo porque llovía bastante.
Y por último un video de como debería funcionar el sistema si lo montasteis bien
Conclusiones:
Ahora que tenemos un par de posibilidades probadas para formar nuestro sistema es necesario hacer un review de los pros y los contras para así poder decantarse por uno u otro, aquí o en otro proyecto, así que evaluaremos un poco los dos sistemas con sus pros y contras.
Wifi ESP8266
Extremadamente barato, los puedes conseguir por menos de un euro.
Capaces de albergar un servidor web en sí mismos y recibir órdenes a través de navegador.
Funcionan bien si la red wifi sobre la que están montados funciona bien.
Pila TCP/IP asociada al módulo con cobertura B/G/N y encriptado WPA2 entre otros.
Documentación abundante, posibilidad de expansión mediante otras placas o pines disponibles en sí mismas según el modelo de ESP. (puede que dedique una entrada del blog para ver los distintos modelos que hay de este módulo).
Usan la banda inalámbrica 2,4GHz. Esto puede ser un pro o un contra según se mire.
Cisexo XRF
Son más caros que los Wifi ESP8266, pero muchísimo más baratos que los Xbee puros. Alrededor de los 10 euros cada módulo.
No se les puede meter un servidor web en ellos. No tienen una pila TCP/IP implementada.
Poca documentación, la documentación se confunde con los de la versión Xbee V1
Usan distintas frecuencias para comunicarse mediante su programación dejando la banda inalámbrica libre. Esto es lo único que destacaría de ellos en mejora respecto a los ESP.
Reedito este documento porque en las primeras pruebas que hice me quedé bastante con la mosca detrás de la oreja en cuánto alcance de estos módulos. Comentándolo con mi director de proyecto me dijo que el poco alcance de estos módulos podía ser debido a que las antenas que utilicé estaban más orientadas a la banda 2,4Ghz que a la 800 que usan los ESP. Además, utilicé directamente la alimentación USB de dos portátiles, y no reparé en que el amperaje que pueden demandar los XRF en ocasiones es más alto que el que pueden entregar los USB.
Pues bien, he suplido estas carencias gracias a los nuevos SAIS que he inventado en esta entrada del blog y con las antenas que me ha prestado, que en teoría tenían que funcionan mejor.
Y siento decirlo, pero he obtenido los mismos resultados que cuando no había modificado nada de lo comentado.
Dicho esto, ya sabéis con cual seguiremos trabajando a partir de ahora...
Un saludo a todos.
No hay comentarios:
Publicar un comentario