RandomRace.ru - radiogoniométrie pour les nuls (début)


D'où est venue l'idée?


Un vieil ami à moi s'est engagé à discuter de sa nouvelle aventure avec moi - nous aimions tous en même temps les courses d'aventure, dont il y en a beaucoup dans notre région, mais cela ne permettait pas à une personne de vivre paisiblement dans la prévisibilité d'une course d'aventure classique - les points de contrôle (KP) sont placés par des personnes, ce qui signifie ils peuvent être au moins un peu prédits.
C'est ainsi que RandomRace.ru est apparu (brièvement - RR).

Donc, l'idée principale de RR est de lancer des engrenages de course sur les balles en l'air, à une hauteur aléatoire, les balles éclateront et les engrenages tomberont sur des parachutes. KP donnera leurs coordonnées GPS au serveur de course, et les participants les chercheront ensuite. En principe, le règlement du concours est conçu pour que les sondes KP soient restituées aux organisateurs par les participants. Naturellement, en plus de ces sondes qui se sont distinguées par un hasard accru et se sont envolées quelque part dans ..loin. Ces organisateurs doivent rechercher eux-mêmes les organisateurs. Il se trouve que, par conséquent, j'ai repris la solution technique de la tâche des «100 derniers mètres», lorsque les organisateurs sont arrivés sur les lieux, je veux vraiment trouver le point de contrôle et les coordonnées sont inexactes. À cette fin, il était prévu d'utiliser la radiogoniométrie - chaque sonde transporte un émetteur radio et les organisateurs un radiogoniomètre.


Exigences générales de l'émetteur:

- poids et volume légers
- alimentés par une pile au lithium-polymère (batterie d'un téléphone portable)
- autonomie d'au moins 24 heures
- prix bas, car la probabilité de perdre l'appareil est considérable

Exigences générales du récepteur:

- poids et volume modérés
- antenne directionnelle - indication
sonore et visuelle du niveau du signal
- autonomie de la batterie d'au moins 2 heures
- portée de détection du récepteur - à partir de 100 mètres dans la forêt.

Plus tard, notre équipe a commencé à participer au Global Balloon Space Challenge , ainsi qu'à d'autres événements, et, bien sûr, des balises ont été utilisées dans tous les cas.

Fréquences et antennes


Les fréquences standard de «chasse au renard» ont dû être abandonnées en raison des dimensions des antennes, et à la suite d'une délibération douloureuse, il a été décidé d'utiliser la fréquence de 433 MHz. Sans licence conditionnelle, ne nécessite pas de grandes antennes, il existe un certain nombre d'émetteurs et de récepteurs en vente pour cette gamme. L'antenne de l'émetteur doit être omnidirectionnelle, l'antenne du récepteur - au contraire, étroitement orientée. Dans le cas de l'émetteur, il n'y avait pas de choix particulier - une antenne à ressort ou une antenne imprimée. Pour le récepteur, le choix est plus large - cadre, cadre classique "renard" + pin, carré double ou triple, yoga, canal d'ondes. Une autre soirée sur le forum Sugaret les méditations douloureuses ont conduit à la conclusion que, après tout, un double carré. Il s'agit d'un compromis entre une taille, une simplicité et une qualité de réception distinctes. La taille de toute l'antenne est d'environ 18 * 18 * 8 cm, le carré avant est un vibrateur ouvert, l'arrière est un peu plus grand, un réflecteur fermé. La carte réceptrice était montée dans l'espace du vibrateur. La géométrie de telles antennes est souhaitable pour résister aussi précisément que possible. Le matériau pour la fabrication de l'antenne est un tuyau de frein pour le "Lada" et plusieurs morceaux de plexiglas, obtenus dans le garde-manger.


Deux carrés du tube sont maintenus par une partie diagonale et deux plaques trapézoïdales coudées dans les coins. L'ensemble de la structure est solidement serré avec des attaches de câble. Pour la fabrication de pièces, j'ai imprimé les dessins à l'échelle réelle et les ai collés sur du plexiglas. Il a ensuite percé des trous et découpé les contours avec une scie sauteuse. Malgré mes inquiétudes, l'antenne s'est avérée plutôt rigide, mais en même temps, le plexiglas était un matériau trop fragile et s'est cassé rapidement. La deuxième fois, des parties non métalliques de l'antenne ont été réalisées selon les mêmes dessins sur un découpeur laser en contreplaqué (merci, Fablab Polytechnic ). Une poignée pistolet et des trous en relief ont été ajoutés aux dessins. Pour protéger contre l'eau, le contreplaqué a été recouvert d'un vernis acrylique en aérosol.

Apprendre à les cuisiner


Pour toute l'électronique du projet, des microcontrôleurs de la série STM8 ont été utilisés - pas les plus populaires, mais je les aime. Le faible prix, qui est l'une des principales conditions de ce projet, la richesse des périphériques, la possibilité d'alimenter les microns directement à partir d'une batterie Li-Po, la simplicité générale et les bonnes cartes de démonstration sont ce qui m'attire vers ces puces. Il convient également de noter la simplicité des planches, car MK cousu sur 1 fil (parfois 2 - nécessite encore une réinitialisation). Le débogueur matériel fonctionne sur la même interface.
Pour flasher le microcontrôleur STM8, vous avez besoin d'un programmeur compatible. Le programmateur peut être acheté séparément, mais il est plus facile et moins cher de prendre l'une des cartes STM8-something_disc-DISCOVERY. Pour utiliser le programmateur intégré, il est nécessaire de dessouder 2 cavaliers et de câbler les broches de la carte à l'appareil cible. Personnellement, j'utilise un programmeur qui était à l'origine interrompu de STM8S-DISCOVERY, et pour le flash de masse, j'utilise un adaptateur spécial avec deux crocodiles et deux sondes du testeur. Malheureusement, gcc n'est pas porté sur le noyau STM8; vous devez utiliser des versions gratuites de compilateurs payants. Dans mon cas, c'est la raison, l'environnement de développement est stvd.

La première version de l'électronique


Émetteur

Pour la première version de l'appareil, des modules Telecontrolli ont été achetés. Pour les émetteurs - RT4-433 (plus tard RT14-433). Au début, cela semblait être une bonne option. Pour contrôler les modules dans l'émetteur, l'un des MCU les moins chers a été utilisé - STM8S003F3, dans le boîtier SO-16, qui était pratique pour le soudage. Le schéma banal est en fait le MCU, un condensateur obligatoire, un condensateur de filtrage dans le circuit de puissance, un module radio, une LED et une résistance. Environ une fois par seconde, l'émetteur émet une impulsion modulée en AM d'environ une demi-seconde avec une fréquence de 200 Hz et clignote une LED. Cette variation du phare a survécu à plusieurs épreuves et incarnations.
Des planches pillées faites maison ont été utilisées,


PP chinois avec seeedstudio;


Antennes - ressorts et imprimés.

Il y a également eu des expériences avec différentes LED et différents courants - par exemple, il y avait une idée que de courts flashs nets d'une couleur bleue non naturelle à l'intérieur d'un conteneur transparent pourraient aider à trouver le conteneur dans la forêt la nuit. Les modules radio varient également en fonction des conditions du marché des composants radio.

Récepteur


Pour le radiogoniomètre, des modules RRQ14-433 du même Telecontrolli ont été utilisés. Le module a deux sorties - les données reçues et le niveau analogique de l'AGC, il est également RSSI. Les deux sont connectés au microcontrôleur STM8S903C, mais la sortie de données était juste au cas où, le signal était ignoré par le firmware. RSSI a été interrogé en continu à l'aide du contrôleur ADC intégré. L'indication de la force du signal doit être double - d'une part visuellement, avec des nombres modérément grands visibles de jour comme de nuit. D'autre part, vous devez attacher un son - de sorte que vous n'ayez pas à regarder constamment l'indicateur. Eh bien, les traditions hollywoodiennes sont comme ça - ça devrait grincer. Le contrôleur était à nouveau de la famille STM8S, mais l'autre était le STM8S903, équipé d'une source de tension de référence intégrée, qui est nécessaire pour mesurer RSSI. L'indicateur s'est vu attribuer un indicateur LED à 7 chiffres à deux chiffres.Je ne voulais pas vraiment faire des circuits classiques de type arduin avec une montagne de résistances, d'indicateurs dynamiques et d'autres choses, alors le pilote LED intégré STP16CP05 est entré en activité. Il s'agit d'un registre à décalage à 16 canaux avec stabilisation du courant à chaque sortie, et la valeur actuelle est définie par une résistance à la fois pour toutes les sorties. 16 canaux - seulement 2 chiffres de 7 segments + points décimaux. L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).Je ne voulais pas faire d'histoires avec les indicateurs dynamiques, et donc le pilote LED intégré STP16CP05 est entré en activité. Il s'agit d'un registre à décalage à 16 canaux avec stabilisation du courant à chaque sortie, et la valeur actuelle est définie par une résistance à la fois pour toutes les sorties. 16 canaux - seulement 2 chiffres de 7 segments + points décimaux. L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).Je ne voulais pas faire d'histoires avec les indicateurs dynamiques, et donc le pilote LED intégré STP16CP05 est entré en activité. Il s'agit d'un registre à décalage à 16 canaux avec stabilisation du courant à chaque sortie, et la valeur actuelle est définie par une résistance à la fois pour toutes les sorties. 16 canaux - seulement 2 chiffres de 7 segments + points décimaux. L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).Il s'agit d'un registre à décalage à 16 canaux avec stabilisation du courant à chaque sortie, et la valeur actuelle est définie par une résistance à la fois pour toutes les sorties. 16 canaux - seulement 2 chiffres de 7 segments + points décimaux. L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).Il s'agit d'un registre à décalage à 16 canaux avec stabilisation du courant à chaque sortie, et la valeur actuelle est définie par une résistance à la fois pour toutes les sorties. 16 canaux - seulement 2 chiffres de 7 segments + points décimaux. L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).L'indicateur lui-même est simplement un indicateur d'une taille distincte avec une anode commune. Le son que j'ai fait au dernier moment à partir des écouteurs du lecteur qui sont venus à la main. Les écouteurs étaient connectés via une résistance (afin de ne pas tourmenter MK avec des courants élevés), aux sorties directes et inverses de la minuterie MK. Étant donné que le module radio nécessite 5V, j'ai dû augmenter la tension d'alimentation (modèle à 2 cellules LiPo à 800mAh) et régler LDO à 5V (il n'est pas sur le circuit).

Le firmware du contrôleur mesure en continu le niveau RSSI, essaie d'y trouver les pics au moment de la réception du signal radio, les compte dans certains «perroquets» et les affiche sur l'indicateur. Ces perroquets sont convertis en durée de "bips" périodiques. À 0 perroquet, le radiogoniomètre est silencieux; à 99, il grince continuellement. Le micrologiciel de l'émetteur a été refait 100 500 fois, principalement en raison d'un recomptage RSSI distinct. Le code à partir de là, je ne le montrerai à personne, vous ne pouvez pas effrayer les gens comme ça.

Première pancake.com



Les premiers tests et concours utilisant le système "find me" obtenu ont été généralement couronnés de succès, le radiogoniomètre a permis de retrouver une sonde tombée dans la forêt à quelques reprises. L'antenne a montré une orientation acceptable, les sondes, comme prévu, peuvent être entendues à la radio. La distance de détection dans la forêt est également raisonnable. Parmi les découvertes désagréables, c'est que les paramètres des modules émetteurs «marchent» assez souvent d'une instance à l'autre - à la fois en fréquence et en puissance. Différents modules grinçaient sur les canaux 32-42, avec les 34 attendus. Le niveau RSSI du récepteur se comportait également quelque peu étrange, mais un certain chamanisme dans l'algorithme du récepteur nous permettait de voir sur l'indicateur une certaine valeur similaire au niveau du signal de l'émetteur chez certains perroquets. En prévision de faire un autre lot, il est soudain devenu clairque les modules émetteurs clés pour l'ensemble du projet sont devenus beaucoup plus chers et ont généralement presque disparu du marché. Dans la mélancolie, j'ai tristement fouillé dans les trésors d'aliexpress, sans grand espoir de trouver un remplaçant.

Et ici.



Et puis suit .

Liens:
Suite: geektimes.ru/post/270170
À peu près la même chose en anglais: www.randomrace.ru/2015/gsbc/preparation/transmitter/eng
RandomRace: randomrace.ru (les compétitions les plus proches: www.randomrace.ru/2016/spring )
Sources de tous les micrologiciels: sourceforge.net/projects/randomracebeacon
GBSC: www.balloonchallenge.org/teams/15

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


All Articles