
Sortir à la campagne est toujours merveilleux, mais avec une carte en main et un objectif conscient est toujours plus intéressant. Il existe des types d'activités de plein air comme la course d'orientation, les rogains, les multi-courses, auxquelles vous pouvez vous amuser. La tâche de l'orienteur est de visiter les points de contrôle indiqués sur la carte en un minimum de temps. Afin de prouver le fait de leur visite, ils sont utilisés comme les soi-disant Systèmes de marquage «traditionnels»: crayons de couleur, symboles codés, composteurs, etc., ainsi que systèmes électroniques. Malgré la commodité de ce dernier, les méthodes traditionnelles sont encore largement utilisées dans les compétitions amateurs. Cela est dû au coût du matériel (de 3500 roubles par marque de gare et de 450 roubles par puce), avec la possibilité de vol de stations installées dans les lieux publics, la nécessité de prendre une caution pour la puce. Par conséquent, je me suis fixé comme objectif de créer une alternative plus abordable. Son implémentation dans l'environnement Arduino est décrite ci-dessous.
Un système d'étiquetage électronique se compose généralement de puces et de stations RFID - des dispositifs spéciaux pour leur enregistrement et leur lecture. Le système fonctionne comme suit. Au départ, l'athlète d'orientation reçoit une puce, prend une carte et démarre. En courant vers le CP, il met sa puce à la station de marquage, elle enregistre l'heure actuelle sur la puce et donne un signal, après quoi l'athlète peut continuer. À la ligne d'arrivée, l'athlète remet la puce au juge, qui lit les informations à l'aide de la passerelle et annonce le résultat à l'athlète - son temps à distance, le nombre de CP visités, le respect d'une direction donnée. Il peut également imprimer des fractionnements - des périodes de temps passées sur le chemin entre le CP, ce qui permet à l'athlète d'analyser son chemin et de se comparer aux autres sur un segment particulier de la distance.
Pour travailler avec des puces RFID, il existe un module largement disponible RFID-RC522, pour lequel il existe une excellente bibliothèque pour Arduino, à bien des égards, ce fait a déterminé son utilisation. Le module fonctionne à une fréquence de 13,56 MHz et prend en charge la norme ISO 14443, fonctionne avec différentes puces, la lecture et l'écriture s'effectuent à une distance de plusieurs centimètres, ce qui est bien adapté à nos besoins.
ChipsPour créer un système de marquage, j'ai utilisé la puce Mifare Classic 1K (S50) en raison de sa large disponibilité dans différents modèles et de son faible coût (11 roubles par puce sous la forme d'un porte-clés). La puce vous permet de lire et d'écrire des informations rapidement et de manière fiable. La mémoire de la puce est structurellement divisée en 16 secteurs, chacun contenant 4 blocs de 16 octets. Le 4ème bloc de chaque secteur contient des clés qui peuvent être utilisées pour écrire / lire des blocs dans le secteur. De plus, dans le secteur zéro, le bloc zéro contient l'UID et des informations sur le fabricant. Ainsi, il reste 3 blocs de 16 octets pour l'écriture dans les secteurs du 1er au 15e et deux blocs dans le 0e secteur. La structure d'enregistrement est présentée dans le tableau ci-dessous, toutes les données sont enregistrées en triple pour plus de fiabilité.

Ce système d'enregistrement vous permet d'enregistrer 45 points en mémoire, y compris le début et la fin, pour la plupart des compétitions, cela suffit. Mais si vous optimisez l'utilisation de la mémoire et mettez un peu plus de temps sur la marque, la capacité peut être considérablement augmentée.
Station StationsSchéma et installationLes principaux composants des stations de la marque: microcontrôleur - Atmega328p-au, module RF522, horloge DS3231. Alimenté par 3 piles AA via le stabilisateur linéaire MCP1700T-33.

J'ai installé les composants sur une carte de circuit imprimé, tous les composants SMD, avec la carte RFID, j'ai fait la connexion en soudant à travers le connecteur à broches. Les panneaux ont été fabriqués à l'aide de photorésist, des pistes de 0,5 mm. Pendant que je perfectionnais la méthode, j'avais fait pas mal de mariage, il est probablement plus judicieux de faire des fichiers gerber et de commander leur production à part, car ce n'est pas très cher.

J'utilise le g1020BF abordable comme le cas. J'ai percé un trou dans la boîte pour la LED et j'ai coupé l'excès de plastique pour entrer dans le compartiment des piles. Le trou pour la LED a été traité avec de l'époxy, puis il a inséré une carte de circuit imprimé soudée. Après durcissement de l'époxy, il a injecté 30 millilitres de composé PK-68, ce qui était juste suffisant pour couvrir la planche. J'ai inséré des piles dans le compartiment à piles et tout enduit de graisse pour l'étanchéité. Après avoir serré le couvercle, la station est prête à l'emploi.

Le coût des composants et des matériaux de la station pour sa fabrication est d'environ 500 roubles. Il me faut environ une heure et demie de temps pur pour créer et configurer une station.
Micrologiciel de la stationPendant le fonctionnement de la station, différents types de dysfonctionnements sont possibles, il était nécessaire de mettre en œuvre le travail de chien de garde, vous devez donc utiliser un Bootloader compatible pour qu'il fonctionne correctement. Une bonne version du chargeur de démarrage pour Atmega328p et des instructions pour l'installer sont
ici . Vous devez également modifier la bibliothèque de fils standard en non bloquante afin que la station continue de fonctionner lorsque la ligne i2c se casse et n'entre pas dans une boucle sans fin. J'ai chargé le chargeur de démarrage en utilisant un autre arduino via l'Arduino en tant que firmware isp, connecté les contacts SPI via les broches menant au module RFID, que j'ai mordu après un démarrage réussi. Après quoi j'ai installé le firmware principal.
Avec le micrologiciel principal, lorsque le plateau est inséré, la station lit un bloc d'informations à partir duquel elle apprend les numéros du dernier bloc enregistré et la station sur laquelle la marque s'est produite. Si le numéro de station est différent, le bloc d'informations est mis à jour et le numéro de station et l'heure actuelle sont enregistrés dans le bloc libre suivant. L'heure et le numéro de station peuvent être ajustés à l'aide de puces spéciales et de la station passerelle.
La nutritionL'un des problèmes les plus importants qui méritait d'être résolu était de savoir comment maximiser la durée de vie des stations à partir d'un ensemble de batteries. Ceci est particulièrement critique pour l'orientation touristique, lorsqu'il arrive que les stations soient installées bien avant la compétition et qu'il est nécessaire qu'elles soient garanties de fonctionner pendant plus d'un mois.
Pour réduire la consommation, les modes veille sont utilisés pour le contrôleur, ainsi que pour le RC522. En mode veille, la station ne consomme que 0,02 mA contre 20 mA en fonctionnement. Pour utiliser l'énergie plus économiquement, trois modes de fonctionnement de la station avec différents intervalles de temps de sommeil ont été mis en œuvre.
Par défaut, la station démarre en mode veille. Dans le même temps, la puce est recherchée toutes les secondes, la capacité de la batterie est suffisante pour 160 jours. Lorsque la puce est en plateau (ceci est fait par le juge de production ou le premier athlète qui a accouru à la station), la station passe en mode de fonctionnement. En mode de fonctionnement, une recherche de puce est implémentée toutes les 250 ms. Les nouvelles piles durent 45 jours d'utilisation continue. Après 6 heures d'inactivité, la station revient en mode veille.
Lorsque la puce de sommeil principale (puce d'arbitre spéciale avec paramètres de station) est introduite, la station passe en mode de stockage (recherchez la puce toutes les 25 secondes), sélectionne 3 fois et redémarre. Les nouvelles batteries dans ce mode dureront 5 ans. Lorsqu'un plateau est placé sur une puce, la station passe en mode veille et la charge restante de la batterie est mesurée. Si la tension chute en dessous de 3,1 V, ce qui indique qu'il reste environ 15% de la charge, la station le signale.
Interface et traitement des donnéesUne station d'interface est prévue pour travailler avec des puces et des stations de marquage. À l'aide de la station passerelle, vous pouvez définir et régler l'heure et les numéros de station à l'aide de puces principales spéciales. En outre, la station passerelle effectue le nettoyage et la vérification des puces avant le lancement, les saisit avec les informations initiales et un numéro individuel. Eh bien, bien sûr, il lit les puces et obtient les résultats.
Au circuit, j'ai également ajouté un module SD pour l'enregistrement des splits et un module Bluetooth afin que la station puisse être connectée à un téléphone ou un ordinateur pour recevoir ou transmettre des données.

Alors que le circuit et le firmware ne sont pas encore suffisamment optimisés et mis en œuvre si loin des modules, à genoux. À l'avenir, il est prévu de finaliser pour une utilisation plus pratique.

À l'heure actuelle, le traitement des données est effectué de manière semi-manuelle en triant les fichiers CSV résultants. Le système est très flexible et peut être facilement configuré pour n'importe quelle compétition, pour mettre en œuvre le prétraitement des données dans la passerelle de manière pratique dans différents cas. Pour l'avenir, il est prévu d'écrire un logiciel pour automatiser le traitement des données.
ConclusionJe suis nouveau dans la programmation et le développement d'appareils électroniques et je le fais depuis moins d'un an. Par conséquent, les solutions de code et de circuits sont très probablement loin d'être optimales ou complètement incorrectes. Je serai très heureux de critiquer, l'ensemble du projet est disponible gratuitement
sur le github .
Je veux également exprimer ma gratitude à ceux qui ont déjà aidé avec des conseils et intéressés par le développement.