→
Parte 1 ,
Parte 2Um ano se passou desde a última publicação, e muitas vezes me perguntam o que mudou desde então. Em resumo, foi feita a transição para os chips Ntag, pequenas alterações foram feitas no circuito para proporcionar melhor sensibilidade, volume do sinal e o movimento correto do relógio, e um software foi criado para funcionar com o sistema. Em geral, o sistema estabilizou e está pronto para reprodução e uso. Mais detalhes abaixo.
Antes de tudo, vou falar sobre os chips RFID, por que a transição foi feita para a Ntag. Deixe-me lembrá-lo de que a memória Mifare Classic 1K contém 1024 bytes, dos quais 752 bytes estão disponíveis para armazenamento de informações. A estrutura da memória é dividida em 16 blocos, que contêm 4 páginas de 16 bytes, uma das quais é reservada para criptografia. Se você usar uma página como serviço, ainda haverá 46 páginas para marcas de gravação.
No início do desenvolvimento, usei a memória livremente - uma página de 16 bytes por marca, o que limita o uso de partidas de tamanho médio. E para rogaining, orientação turística ou corrida de aventura, 46 estações são poucas. Portanto, a idéia de compactação foi realizada: duas marcas foram escritas em cada página. Ao mesmo tempo, havia um risco de perda de dados, porque a unidade de gravação é uma página e, ao regravar, você precisa ler a metade já gravada para escrevê-la novamente. Na verdade, eu entrei nesse rake durante o Rogaining em novembro passado, uma pequena parte dos dados foi perdida, tive que editar muito manualmente. E, embora um erro no código tenha sido detectado, decidi mudar para chips mais amplos sem o risco de perda de dados durante a reescrita.
Uma das opções possíveis é usar os chips Mifare 4K, cuja estrutura difere de 1K em apenas quatro vezes a grande quantidade de memória. Mas esses chips são mais caros e a duração da limpeza aumentaria. Outra opção é usar os chips da série Ntag (213/215/216). A estrutura da memória dos chips Ntag é bastante simples - a memória é dividida em páginas de 4 bytes, as primeiras 4 e as 5 últimas páginas são reservadas para armazenar informações de serviço, o restante pode ser usado. Os chips da série Ntag diferem no tamanho da memória, o Ntag213 possui 36 páginas (144 bytes) livres, o Ntag215 possui 126 páginas (504 bytes) e o Ntag216 possui 222 páginas (888 bytes). Como resultado, percebi o suporte de todos os chips desta série, embora o Ntag215 possa ser considerado ideal, cuja memória é suficiente para 120 marcos e o preço é bastante baixo (cerca de US $ 0,2 por chip na forma de adesivo ou US $ 0,4 na forma de chaveiro). Além disso, a conselho da SFR, ele decidiu abandonar o armazenamento de informações críticas - o número da última página gratuita em favor de sua pesquisa binária. Isso aumentou o carimbo de hora, mas aumentou a confiabilidade.
A página Ntag da memória contém 4 bytes, nos quais você precisa ajustar o número da estação - 1 byte e o registro de data e hora - 4 bytes. O problema foi resolvido pelo fato de que o tempo inteiro de inicialização (limpeza) do chip é gravado em uma página separada e, quando marcado, apenas os 3 bytes inferiores do tempo. Em seguida, ao ler, o tempo das marcas é completamente restaurado com base no tempo de inicialização. Outra página no chip é ocupada pelo número do chip e duas são deixadas na reserva. A estrutura resultante é apresentada abaixo:

O uso do Ntag permitiu resolver a questão da gravação segura de um grande número de marcas no chip, mas surgiu outro problema. Os chips Ntag requerem mais energia do que o Mifare com a mesma área de antena, e os chips de chaveiro nos quais a antena é da ordem de 2 cm ^ 2 podem não funcionar corretamente no módulo RC522 como padrão. A solução para o problema foi soldar as indutâncias do módulo para outras mais poderosas. Ao mesmo tempo, o alcance da resposta aumentou significativamente, para chips Ntag de até 2 cm e Mifare até 3 cm. Mas alguns módulos começaram a funcionar mal devido a essa solda: os chips foram gravados apenas com uma certa e imprevisível faixa de distâncias da antena de transmissão. Eu tive que entrar na biblioteca do Arduino RC522 e encontrar o parâmetro de ganho lá, responsável pela energia da antena; editá-lo para estações individuais resolveu o problema. Ele também dominou a fabricação manual de chips em uma pulseira de adesivos. O Alibaba já está à venda pronto e bonito, mas sua área de antena é quase metade disso, a marca passa menos estável. Observo também que deixei o suporte para os chips Mifare 1K, você pode trabalhar com eles, mas para isso é necessário usar um firmware separado, e a capacidade do chip é limitada a 42 marcas, mas elas vêm com módulos RC522.

Outro problema que precisou ser resolvido durante o desenvolvimento foi o curso incorreto do relógio. Em algumas estações, o relógio começou a atrasar ou acelerar até 5 minutos por dia. Por um longo tempo, não entendi qual era o motivo, então descobri que apenas as estações com uma placa de circuito impresso fabricada na fábrica são de buggy, enquanto tudo funciona bem nas gravadas manualmente. Eu pensei sobre o que isso poderia estar conectado. Em esteiras gravadas à mão, bastante espessas, devido ao seu estanho abundante, menos resistência. Descobriu-se que o capacitor na saída do estabilizador não é suficiente para desacoplar a potência do relógio em trilhas finas de fábrica. Coloquei outro capacitor próximo ao relógio e o problema, na maior parte, foi resolvido. Uma pequena parte do relógio ainda falha, mas eu já associo isso ao casamento de relógios baratos com todos, é preciso procurar fornecedores confiáveis.
Bem, a última mudança no circuito é a amplificação do sinal sonoro. Anteriormente, o controle e a potência do tweeter no circuito eram realizados a partir do pé do microcontrolador, portanto, era bastante limitado em potência. Agora a energia vai diretamente das baterias e o controle é através de um transistor, o que aumentou significativamente o volume do sinal. Todas essas mudanças agora são levadas em consideração e introduzidas nos arquivos Gerber, mas eu refiz manualmente cerca de 40 estações, tive que escolher o composto, cortar as faixas, pendurar o transistor nos fios, houve algumas estações quebradas.

Devido à transição para outros chips, o firmware das estações base teve que ser substancialmente alterado, mas o princípio e a lógica do trabalho, na maioria das vezes, permaneceram os mesmos. Os mesmos modos de economia de energia, sono, trabalho e configuração usando chips mestre. Mas o firmware do gateway foi completamente redesenhado. O protocolo de comunicação anterior, quando os dados estavam sendo transmitidos em uma porta COM em um fluxo contínuo, parecia vulnerável: um byte foi perdido e todos os dados se transformaram em abóbora. Adaptar-se aos protocolos de transferência de dados existentes parecia chato, então ele inventou sua bicicleta.
As informações são transmitidas e recebidas sequencialmente transmitindo pacotes de até 32 bytes. Se os dados transmitidos não couberem no pacote, a transmissão será feita encaminhando os pacotes sequencialmente. O pacote começa com o byte inicial 0xFE, seguido pelo número do comando, pelo comprimento do pacote, pelos dados e no final da soma de verificação. Os comandos passam apenas com o valor correto da soma de verificação e iniciam os bytes. Bastante simples e confiável o suficiente.

A conexão foi estabelecida, mas era necessário escrever um software normal para o computador, minhas habilidades em Processamento não eram adequadas para isso. Semyon Yakimov, que criou
um módulo Python para trabalhar com o sistema, aceitou isso, pelo qual ele é muito grato. O módulo permite que você se comunique com o gateway, transmita e receba dados em um formato conveniente. Depois disso, dominei o Python como uma primeira aproximação e escrevi um
aplicativo GUI simples baseado neste módulo e no PyQt, que pode ser usado para configurar o sistema, bem como coletar dados de chips na forma de um arquivo JSON. Bem, então os dados podem ser processados usando pequenos scripts para competições com uma variedade de condições e regras, emitidas de forma conveniente (
orientação turística ,
rogaining ). Mas, de qualquer forma, isso implica em algumas habilidades, e a felicidade seria incompleta se não fosse pelos desenvolvedores do programa
SportOrg , que adicionaram suporte ao Sportiduino (além do Sportident e SFR). O programa está se desenvolvendo ativamente e muitas coisas são capazes de julgar o início da orientação.
Conclusão
Portanto, no momento há um hardware e software de trabalho estáveis. Acredito que o objetivo do empreendimento foi alcançado: surgiu um sistema de marcação eletrônica barato. Não vou mudar nada dentro da estrutura deste esquema, exceto se houver algum tipo de bug. O sistema de marcação já foi desenvolvido e testado em um grande número de competições diferentes: orientação, rogaining, marcha-arremesso, trilha, etapas turísticas. Além de mim, é usado por várias pessoas em lugares diferentes. Alguém jogou o sistema, alguém fez acréscimos lá, por exemplo, um
módulo de rádio ou o uso de
baterias de
lítio e chips
Mifare como os principais.
O desenvolvimento é aberto e não comercial, licenciado sob a GNU GPLv3. Qualquer pessoa pode copiar, reproduzir, modificar e usá-lo livremente. No ano passado, fiz muitas perguntas sobre a venda de uma estação. Não, não quero fazer isso. Por outro lado, não me importo se alguém preencher esse nicho. Só estou pronto para dar conselhos sobre montagem e uso, pois tudo é bem simples lá.
O projeto está disponível no
github , existem diagramas localizados, instruções e outros materiais úteis. Obrigado pela atenção.