Sportiduino - sistema de marcado electrónico para eventos deportivos, parte 3

Parte 1 , Parte 2

Ha pasado un año desde la última publicación, y a menudo me preguntan qué ha cambiado desde entonces. En resumen, se hizo la transición a los chips Ntag, se hicieron pequeños cambios en el circuito para proporcionar una mejor sensibilidad, volumen de señal y el movimiento correcto del reloj, y se creó un software para trabajar con el sistema. En general, el sistema se ha estabilizado y está listo para su reproducción y uso. Más detalles a continuación.

En primer lugar, te contaré sobre los chips RFID, por qué se hizo la transición hacia Ntag. Permítame recordarle que la memoria Mifare Classic 1K contiene 1024 bytes, de los cuales 752 bytes están disponibles para almacenar información. La estructura de la memoria se divide en 16 bloques, que contienen 4 páginas de 16 bytes, uno de los cuales está reservado para el cifrado. Si utiliza una página como servicio, aún quedan 46 páginas para registrar marcas.

Al comienzo del desarrollo, utilicé la memoria libremente: una página de 16 bytes por marca, lo que limita el uso de inicios de tamaño mediano. Y para rogaining, orientación turística o carreras de aventura, 46 estaciones son pocas. Por lo tanto, se realizó la idea de compactación: se escribieron dos marcas en cada página. Al mismo tiempo, existía el riesgo de pérdida de datos, porque la unidad de grabación es una página, y al volver a grabar, debe leer la mitad ya grabada para volver a escribirla. En realidad, pisé este rastrillo durante Rogaining en noviembre pasado, se perdió una pequeña parte de los datos, tuve que editar mucho manualmente. Y, aunque se detectó un error en el código, decidí cambiar a chips más potentes sin riesgo de pérdida de datos durante la reescritura.

Una de las opciones posibles es usar chips Mifare 4K, cuya estructura difiere de 1K en solo cuatro veces la gran cantidad de memoria. Pero tales chips son más caros y la duración de la limpieza, las marcas con su uso aumentarían. Otra opción es usar los chips de la serie Ntag (213/215/216). La estructura de memoria de los chips Ntag es bastante simple: la memoria se divide en páginas de 4 bytes, las primeras 4 y las últimas 5 páginas están reservadas para almacenar información de servicio, el resto se puede utilizar. Los chips de la serie Ntag difieren en tamaño de memoria, Ntag213 tiene 36 páginas (144 bytes) libres, Ntag215 tiene 126 páginas (504 bytes) y Ntag216 tiene 222 páginas (888 bytes). Como resultado, implementé el soporte para todos los chips de esta serie, aunque Ntag215 puede considerarse óptimo, cuya memoria es suficiente para 120 marcas, y el precio es bastante bajo (alrededor de $ 0.2 por chip en forma de pegatina o $ 0.4 en forma de llavero). Además, siguiendo el consejo de SFR, decidió negarse a almacenar información crítica: el número de la última página gratuita a favor de su búsqueda binaria. Esto aumentó la marca de tiempo, pero aumentó la confiabilidad.

La página de memoria Ntag contiene 4 bytes, en los que debe ajustar el número de estación - 1 byte y la marca de tiempo - 4 bytes. El problema se resolvió por el hecho de que el tiempo completo de inicialización (limpieza) del chip se escribe en una página separada y, cuando está marcado, solo los 3 bytes inferiores del tiempo. Luego, al leer, el tiempo de las marcas se restaura por completo en función del tiempo de inicialización. Otra página en el chip está ocupada por el número de chip y dos quedan en reserva. La estructura resultante se presenta a continuación:



El uso de Ntag permitió resolver el problema de la grabación segura de una gran cantidad de marcas en el chip, pero surgió otro problema. Los chips Ntag requieren más potencia del transmisor que Mifare con la misma área de antena, y los chips de llavero en los que la antena es del orden de 2 cm ^ 2 pueden no funcionar bien en el módulo RC522 como estándar. La solución al problema fue soldar las inductancias en el módulo a otras más potentes. Al mismo tiempo, el rango de respuesta aumentó significativamente, para chips Ntag de hasta 2 cm y para Mifare de hasta 3 cm. Pero algunos módulos comenzaron a funcionar mal debido a dicha soldadura: los chips se registraron solo con un rango de distancias determinado y bastante impredecible desde la antena transmisora. Tuve que ingresar a la biblioteca RC522 Arduino y encontrar el parámetro de ganancia allí, que es responsable de la potencia de la antena; la edición para estaciones individuales resolvió el problema. También dominó la fabricación manual de chips en un brazalete con pegatinas. Alibaba ya está a la venta lista para usar y hermosa, pero su área de antena es casi la mitad de eso, la marca pasa menos estable. También noto que dejé el soporte para los chips Mifare 1K, puede trabajar con ellos, pero para esto necesita usar un firmware separado, y la capacidad del chip está limitada a 42 marcas, pero vienen con módulos RC522.



Otro problema que tuvo que resolverse durante el desarrollo fue el curso incorrecto del reloj. En algunas estaciones, el reloj comenzó a retrasarse o apresurarse hasta 5 minutos al día. Durante mucho tiempo no pude entender cuál era la razón, luego descubrí que solo las estaciones con una placa de circuito impreso fabricada en la fábrica tienen errores, mientras que todo funciona bien en las grabadas manualmente. Pensé en lo que esto podría estar relacionado. En pistas grabadas a mano bastante gruesas debido a su abundante estañado, menos resistencia. Resultó que el condensador en la salida del estabilizador no es suficiente para desacoplar la potencia del reloj en pistas delgadas de fábrica. Puse otro condensador cerca del reloj, y el problema, en su mayor parte, se resolvió. Una pequeña parte del reloj todavía falla, pero ya asocio esto con el matrimonio de relojes baratos con Ali, necesita buscar proveedores confiables.

Bueno, el último cambio en el circuito es la amplificación de la señal de sonido. Anteriormente, el control y la potencia del tweeter en el circuito se realizaban desde el pie del microcontrolador, por lo tanto, su potencia era bastante limitada. Ahora la energía proviene directamente de las baterías, y el control se realiza a través de un transistor, que aumentó significativamente el volumen de la señal. Todos estos cambios ahora se tienen en cuenta y se introducen en los archivos de Gerber, pero modifiqué manualmente unas 40 estaciones, tuve que elegir el compuesto, cortar las pistas, colgar el transistor en los cables, había algunas estaciones rotas.



Debido a la transición a otros chips, el firmware de las estaciones base tuvo que modificarse sustancialmente, pero el principio y la lógica del trabajo, en su mayor parte, permanecieron igual. Los mismos modos de ahorro de energía, sueño, trabajo, configuración usando chips maestros. Pero el firmware de la puerta de enlace se ha rediseñado por completo. El protocolo de comunicación anterior, cuando los datos se transmitían en un puerto COM en un flujo continuo, parecía vulnerable: se omitió un byte y todos los datos se convirtieron en una calabaza. Adaptarse a los protocolos de transferencia de datos existentes parecía aburrido, por lo que inventó su bicicleta.

La información se transmite y recibe secuencialmente transmitiendo paquetes de hasta 32 bytes. Si los datos transmitidos no caben en el paquete, la transmisión se realiza reenviando secuencialmente los paquetes. El paquete comienza con el byte de inicio 0xFE, seguido del número de comando, la longitud del paquete, los datos y al final de la suma de verificación. Los comandos pasan solo con el valor correcto de la suma de verificación y comienzan los bytes. Bastante simple y lo suficientemente confiable.



Se estableció la conexión, pero era necesario escribir un software normal para la computadora, mis habilidades en el procesamiento no eran adecuadas para esto. Semyon Yakimov, quien creó un módulo de Python para trabajar con el sistema, asumió esto, por lo cual está muy agradecido. El módulo le permite comunicarse con la puerta de enlace, transmitir y recibir datos en un formato conveniente. Después de eso, dominé Python como primera aproximación y escribí una aplicación GUI simple basada en este módulo y PyQt, que se puede usar para configurar el sistema, así como para recopilar datos de chips en forma de un archivo JSON. Bueno, entonces los datos pueden procesarse usando pequeños guiones para competiciones con una variedad de condiciones y reglas, emitidas en una forma conveniente ( orientación turística , itinerancia ). Pero, de todos modos, esto implica algunas habilidades, y la felicidad sería incompleta si no fuera por los desarrolladores del programa SportOrg , que agregaron soporte para Sportiduino (además de Sportident y SFR). El programa se está desarrollando activamente y muchas cosas pueden juzgar los inicios de orientación.

Conclusión


Por lo tanto, en este momento hay un hardware y software de trabajo estable. Creo que se ha logrado el objetivo de la empresa: ha aparecido un sistema de marcado electrónico barato. No voy a cambiar nada dentro del marco de este esquema, excepto si hay algún tipo de error. El sistema de marcado fue desarrollado y probado ya en una gran cantidad de competiciones diferentes: orientación, rogaining, marcha-lanzamiento, sendero, etapas turísticas. Además de mí, es utilizado por varias personas en diferentes lugares. Alguien jugó el sistema, alguien hizo adiciones allí, por ejemplo, un módulo de radio o el uso de baterías de litio y chips Mifare como los principales.

El desarrollo es abierto y no comercial, bajo licencia GNU GPLv3. Cualquiera puede copiarlo, reproducirlo, modificarlo y usarlo libremente. Durante el año pasado, he planteado muchas preguntas sobre si estoy haciendo una venta en la estación. No, no quiero hacer esto. Por otro lado, no me importa si alguien llena este nicho. Solo estoy listo para dar consejos sobre el montaje y el uso, ya que todo es bastante simple allí.

El proyecto está disponible en github , hay diagramas ubicados, instrucciones y otro material útil. Gracias por su atencion

Source: https://habr.com/ru/post/es427661/


All Articles