Ensamblado de wireless fencing scoring con Arduino

@huilen No necesitas antenas especiales con un cable rígido del cual lo puedes extraer de algún cable UTP, una antena látigo seria lo ideal pero al ser muy larga no es viable asi que para ser exactos, la antena debe medir la cuarta parte de esta misma que son 17.3cm de longitud para esta frecuencia.

Nota: Esta debe estar lo mas recta posible por ende debe estar fuera del gabinete ni que este doblada ni en espiral.

Es un proyecto muy interesante que en pocas palabras es un wireless fencing scoring, que por lo general trabajan a 2.4GHz, para mayor precisión y no tener retrasos y líos los modulos NRF24L01 slave/master estarían mejor es solo mi humilde opinión. A futuro los modulos de 433Mhz no te van a dar esa satisfacción y en alguna practica, entrenamiento o incluso un torneo no van a ser muy precisos, para un pequeño robot y cosas asi son aceptables pero para encarar un proyecto como es el WFS hay que elegir el mejor modulo.

El factor de que no te funcione aparte de la antena que la posición de esta también influye, es que cuando se trabaja con modulos RF con tan solo tener un falso contacto en cableado o en soldaduras es un problema grande, por ende lo ideal es realizar un buen PCB y cuando se trabaja en Protoboard también se tienen falsos contactos, hay que tener paciencia con proyectos RF.



 
Muchísimas gracias por toda la información @Jota Jota . Debería haberles consultado antes de empezar, porque ahora veo que mi elección de RF 433 es mala, y me temo que no va a funcionar si depende tanto de la posición de la antena (normalmente un esgrimista está en constante movimiento, no puede ser tan sensible a la posición el componente por lo tanto, me parece). Voy a ver de comprar el NRF24L01 y adaptar el diseño que tengo. Lo de los falsos contactos yo lo pruebo siempre con un tester, pero entiendo que en el futuro si esto funciona lo puedo mandar a hacer el PCB. Esto dicho, realmente me llama mucho la atención no poder hacer andar el RF ni siquiera en el protoboard, estuve leyendo las especificaciones del RF 433 y al parecer el alcance está determinado por esas dos variables: antena y voltaje. El emisor puede recibir hasta 12v, así que le apliqué el máximo, y también construí una antena siguiendo la fórmula con un tamaño de 17.3cm, pero sin éxito. Voy a seguir probando, al menos para saber qué pasa. Muchas gracias de nuevo.
 
¿Que problema había en conectar ambos arduinos por bluetooth?
Desde el bluetooth 1.1 creo recordar que se permiten múltiples conexiones. Si no era esa revisión en la 2.0 y sucesivas seguro que se permiten.
Lo digo porque los módulos bluetooth ya llevan su antena hecha y ya se sabe su alcance.
 
Tenía entendido que un teléfono no se puede conectar a dos Bluetooth, por eso había pensado lo de radio para comunicarlos entre sí y que el master envíe la señal al teléfono. Estoy pensando en un nuevo diseño, si lo puedo hacer con dos módulos Bluetooth quizá sea lo más simple. Lo que me preocupa es la latencia, porque tiene que ser muy preciso. Cómo me aseguro de que ambos tengan la misma latencia? Es decir, en esgrima es muy común que los dos esgrimistas toquen a la vez, y entonces una diferencia de milisegundos es lo que define quién tocó primero. Por eso tiene que ser muy preciso. Si un dispositivo tiene más latencia que el otro, eso introduciría una imprecisión inaceptable porque le daría ventaja a un esgrimista sobre el otro.
 
Pues no es que sea mala elección porque aprendiste mucho mas del tema en RF, lo que pasa es que para tener una mejor precisión y mas para un deporte como el esgrima gana el mas rápido.

Un claro Ejemplo y porque usan los Modulos que menciono, es porque ya varias personas han desarrollado estos proyectos deportivos basados en el NRF24L01 con una excelente precisión, incluso se implementa con un micro motor vibrador para dar esa sensación de mas realismo.

 
Es muy interesante saber que ya lo implementaron con NRF24L01 y funciona bien. Estoy pensando si hacerlo así o sólo con Bluetooth, lo que más me preocupa el tema de la latencia. Con Bluetooth puedo conseguir la misma latencia que con NRF24L01? Otra opción es usar un reloj para sincronizar y así ignorar la latencia, pero no les tengo mucha confianza a los relojes del Arduino. Con Bluetooth la ventaja es que es un diseño más simple (no hay dispositivo master y slave, sino que ambos se conectan directo al teléfono), pero no sé cómo es la latencia por Bluetooth.
 
Tenía entendido que un teléfono no se puede conectar a dos Bluetooth
Existe algo que se llama bluetooth LE es un bluetooth Low energy que no está siempre en constante comunicación y cada vez que el cliente manda un beacon el servidor se activa y lo recibe y es de múltiples conexiones.
EL alcance que yo he probado fue de 5m desde mi cuarto hasta cerca del baño, hay que tener en cuenta que pasa por muros y que no esta en linea recta, el alcance en lnea recta no lo he probado porque no tengo el espacio


Lo que me preocupa es la latencia
Con un Arduino no vas a conseguir bajas latencias porque el Arduino es muy lento en comparación al ESP-01 y extremadamente lento en comparación ESP-32
 

Dr. Zoidberg

Well-known-Papá Pitufo
Por que taaaanto lío por la "latencia"?????
El Arduino solo debe grabar un timestamp y este debe sincronizarse periódicamente con algo que garantice que ambos Arduinos vayan con el mismo "tiempo".
En un toque los Arduinos solo informan el timestamp y comparan con el recibido, el que sea menor es el que tocó primero.

Si hubieras informado todo esto en la descripción del primer post ya te habríamos asesorado sobre que es mejor/mas facil/mas conveniente....aunque tengas que descartar el 70% de lo que has hecho.
 
Pero son confiables los relojes de estas cosas? Yo pensé lo del timestamp, pero me inspira desconfianza el reloj del arduino...
Una pregunta, en caso de comprar el NRF24L01, creen que pueda funcionar sin antena? Digo porque lo de la antena es muy incómodo para llevar el dispositivo en la cintura, y además yo sólo necesito 6 metros como mucho.
Ah, estuve probando los módulos RF 433 y no hubo caso, armé dos antenas de 17cm con cablecitos, las soldé y no me puedo alejar más de medio metro... será que alguno de los módulos está dañado? No sé qué pensar ya...
EDIT: Encontré el problema!!!!!! Desajusté el tornillo de la bobina del receptor y milagrosamente empezó a funcionar, me puedo ir hasta la cocina ahora. Increíble.
 
Última edición:
Algunas Características del Modulo:

El NRF24L01 es un pequeño transceptor inalámbrico de muy bajo consumo y muy fácil de utilizar que funciona en el rango de los 2.4 GHz. Puede enviar y recibir datos pero no puede hacerlo al mismo tiempo. Esto hace que se abarate su coste y su funcionamiento sea muy sencillo y robusto. Puedes utilizarlo en cualquier proyecto que necesite enviar y/o recibir datos de forma inalámbrica sin complicaciones. Lo ideal es tener una pareja y hacer un enlace completo. Es totalmente compatible con Arduino.


El NRF24L01 se alimenta con 3.3V y su control de datos se realiza mediante el bus SPI, los pines toleran niveles de 5V así que lo puedes conectar directamente a tu microcontrolador favorito de 5V sin necesidad de ningún conversor de niveles. También lo puedes utilizar con una Raspberry Pi. Más abajo encontrarás una librería para eso.



Tiene una antena integrada, pero no esperes mucho alcance. Lo normal unos 10 o 20 metros aproximadamente en interiores (cuidado con las paredes!) y en campo abierto igual algo más.


Características:


  • Chip NRF24L01
  • Frecuencia: ISM 2.4 GHz
  • Modulación: GFSK con control de ganancia automática
  • Control de datos: SPI
  • Velocidad: 250kbps, 1Mbps y 2Mbps (configurable)
  • Alimentación: 1.9V a 3.6V
  • Consumo: Transmisión: 11.3mA, recepción: 13.5mA @ 2Mbps, 900nA en power down y 26uA en standby.
  • Pin IRQ de interrupción para recepción
Pero son confiables los relojes de estas cosas? Yo pensé lo del timestamp, pero me inspira desconfianza el reloj del arduino...
Una pregunta, en caso de comprar el NRF24L01, creen que pueda funcionar sin antena? Digo porque lo de la antena es muy incómodo para llevar el dispositivo en la cintura, y además yo sólo necesito 6 metros como mucho.
Ah, estuve probando los módulos RF 433 y no hubo caso, armé dos antenas de 17cm con cablecitos, las soldé y no me puedo alejar más de medio metro... será que alguno de los módulos está dañado? No sé qué pensar ya...
EDIT: Encontré el problema!!!!!! Desajusté el tornillo de la bobina del receptor y milagrosamente empezó a funcionar, me puedo ir hasta la cocina ahora. Increíble.

Es muy probable que alguno no este funcionando como debe, una pregunta por curiosidad en algún momento juntaste las 2 antenas de los modulos..?
 
Última edición:

Dr. Zoidberg

Well-known-Papá Pitufo
Pero son confiables los relojes de estas cosas? Yo pensé lo del timestamp, pero me inspira desconfianza el reloj del arduino...
Y cual es el problema? Solo necesitás que sean precisos mientras dura "el duelo" de espadas. Cuando termina el duelo (no sé cuanto demora, pero deben ser algunos minutos) los reinicializás otra vez para el próximo.

Por otra parte, no es taaan time-stamp...son solo dos contadores monótonos crecientes que arrancan juntos cuando comienza el duelo. No es que le vas a mandar horas:minutos:segundos...le vas a mandar una cuenta de "ticks" con la resolución que necesites. Por ejemplo, activás un contador que se incrementa cada 10 milisegundos (ponele...) en uno y en otro Arduino. Si se tocaron al mismo tiempo cuando el contador de uno iba por 2577 ticks y el del otro por 2580 ticks, ganó el primero por que el contador era mas chico con una diferencia de 30 ms. PLIM!!!!
 
Muchas gracias. Lo del NRF24L01 muy interesante, en el futuro puedo armarlo con ese módulo para obtener más precisión. Por ahora creo que con el RF para las prácticas va a ser suficiente, lo estoy probando y no es ultra preciso pero anda. Respecto a lo de los timestamps, es un buen punto, podría poner un botón para sincronizarlos cada tanto. Por ahora lo implementé asumiendo una latencia constante, pero esa es otra posible implementación que se puede tener en cuenta. Gracias a todos, voy a publicar un nuevo thread con un problema que encontré muy desafiante con las cazoletas de las espadas, que no había pensado en la etapa de diseño.

EDIT: lo que sigue lo había puesto en un thread aparte porque es un problema distinto que no tiene nada que ver con lo anterior, aunque sea parte del mismo proyecto...

Hola a todos, esto es parte del proyecto de wireless fencing scoring con el que me estuvieron ayudando en otro thread. Éncontré un problema que no sé cómo resolver y que no había tenido en cuenta durante el diseño, creo que es muy interesante igual.

Les cuento primero un poco de contexto para los que no estén familiarizados con la esgrima deportiva. Las espadas de esgrima tienen un circuito muy simple que consiste en un cable que va desde la punta de la espada hasta un aparato que contabiliza los puntos. La punta de la espada es un interruptor que al presionarse (es decir al hacer presión contra el oponente) permite pasar la corriente y cuando no está presionado la corriente no pasa. Entonces el aparato que contabiliza está continuamente haciendo pasar una corriente por ese cablecito. Cuando ocurre un toque se presiona el interruptor que permite pasar la corriente y entonces el aparato que contabiliza cuenta el toque.

Bueno, este aparato normalmente es cableado. Es decir, ambos esgrimistas están conectados por un cable grueso al mismo aparato. Esto es bastante incómodo, y el proyecto en el que estoy trabajando es para hacerlo wireless.

Bueno, hasta ahí fue para darles contexto. Ahora voy al problema concreto.

Cuando un esgrimista toca con la punta de su espada la cazoleta del oponente (la cazoleta es la parte metálica que protege la mano) ese toque NO debe ser contabilizado. Normalmente, como el aparato es cableado, esto se resuelve de una forma muy sencilla. La cazoleta (que es toda metálica) está conectada a tierra (del aparato cableado estamos hablando). Esto hace que la corriente que pasa por la punta de la espada (es todo metálico) se desvíe al tocar la cazoleta del oponente y vaya a tierra (el camino más corto). Esto para el aparato cableado funciona perfecto y es la solución más sencilla.

Ahora bien, en el aparato wireless, la espada no está conectada al mismo circuito que está conectada la cazoleta/espada del oponente. Ambos tienen distintos planos de tierra (porque son wireless, claro está), y por lo tanto no es posible implementar esto de la manera convencional que se usa para los aparatos cableados.

Entonces, ¿cómo detectar que la espada tocó la cazoleta del oponente y evitar contabilizar el punto? Aclaro que esto es importante, ya que los aparatos convencionales de esgrima deportiva funcionan así y que no funcione esto es inaceptable para el aparato wireless.

No se me ocurre ninguna forma de conectar ambos aparatos si están en circuitos distintos y con distintos planos de tierra. Estuve viendo posibles soluciones con sensores capacitivos, pero no me queda claro cómo funcionarían en este caso, porque con un sensor capacitivo se detectaría el toque en la cazoleta también si la toco con la mano, pero lo que necesito es que sólo haya toque de cazoleta si la espada del oponente la toca. Alguna idea? Hay alguna forma de resolverlo emitiendo una señal analógica que pueda leerse desde el otro circuito? Cómo sería?

Saludos!
 
Última edición:

DOSMETROS

High 2m Modereitor
No se me ocurre ninguna forma de conectar ambos aparatos si están en circuitos distintos y con distintos planos de tierra. Estuve viendo posibles soluciones con sensores capacitivos, pero no me queda claro cómo funcionarían en este caso, porque con un sensor capacitivo se detectaría el toque en la cazoleta también si la toco con la mano, pero lo que necesito es que sólo haya toque de cazoleta si la espada del oponente la toca. Alguna idea? Hay alguna forma de resolverlo emitiendo una señal analógica que pueda leerse desde el otro circuito? Cómo sería?

Fijate cómo funcionan los localizadores de cables telefónicos o automotrices , son dos módulos que no comparten tierra , el primero inyecta una señal de alta frecuencia en el cable a ser seguido y el segundo lo detecta con una punta cuando se toca el plástico aislante.
Juraría que esos diagramas están en el foro !
 
Eso serviría para corriente continua? Es algo relativamente fácil de hacer? (Para tener una idea de en qué me estoy metiendo).
EDIT: Recién encontré uno de esos que detecta corriente continua, pero el problema que veo es que funcionan sin contacto. Yo necesito sí o sí que haya contacto entre la espada y la cazoleta.
 
Última edición:
Gracias, lo estoy leyendo. El Sensor Breakout AT42QT1012 es un sensor capacitivo, entiendo que reaccionaría también si toco la cazoleta con la mano, no?
 

Dr. Zoidberg

Well-known-Papá Pitufo
A ver...
Primero dijiste esto:
La punta de la espada es un interruptor que al presionarse (es decir al hacer presión contra el oponente) permite pasar la corriente y cuando no está presionado la corriente no pasa.
Y luego decís esto otro:

La cazoleta (que es toda metálica) está conectada a tierra (del aparato cableado estamos hablando). Esto hace que la corriente que pasa por la punta de la espada (es todo metálico) se desvíe al tocar la cazoleta del oponente y vaya a tierra (el camino más corto).

Entonces NO es un interruptor lo que tiene la espada en la punta sino otra cosa que cierra el circuito de forma desconocida. Por que a un interruptor cerrado poco le importa donde está GND, si se cierra deja pasar la corriente y yá.

Podrias mostrar una foto y un circuito electrico del sistema cableado, incluyendo el sensor/interruptor de la espada???
 
La espada en el sistema tradicional no tiene un sensor en ninguna parte. Es simplemente un interruptor que deja pasar la corriente. Si bien no sé exactamente cómo está implementado en el sistema tradicional, una forma sería la siguiente (no coincide con lo que dije más arriba, pero esta forma funciona con toda seguridad en el sistema cableado):
- la cazoleta conectada a un pin de entrada del arduino;
- el interruptor de la espada conectado un extremo al pin de 3v del arduino, el otro extremo conectado a un resistor pull down conectado a un pin de entrada del arduino.
Cuando ocurre un toque (el interruptor cierra y deja pasar corriente) llega el dato al pin de entrada de la espada. Si toca cazoleta, también llega el dato al pin de entrada de la cazoleta. Entonces lo único que hace el sistema es descontar el punto si fue tocada la cazoleta. Adjunto el circuito.
 

Adjuntos

  • IMG_20200801_170322504.jpg
    IMG_20200801_170322504.jpg
    160.9 KB · Visitas: 4

Dr. Zoidberg

Well-known-Papá Pitufo
no sé exactamente cómo está implementado en el sistema tradicional
Ese es el punto. Averiguá como funciona en el sistema tradicional para ver que se puede hacer para adaptar tu sistema, por que dudo que vayan a querer cambiar el sistema que las espadas tienen instalado ahora, ergo...hay que adaptarse a lo que ya está.
 
Arriba