Contrôleur de position d'antenne «Raspitrack»

Je désigne par ce mot de «Raspitrack» le néologisme qui décrit le pilotage de ma parabole par un micro-PC de type Raspberry-pi.

Le pilotage d'une antenne THF doit répondre à un certain nombre de critères en particulier de précision de pointage.

Pour des activités EME ou satellite par exemple, il faut en plus de l'azimut contrôler l'élévation.

Dans les zones urbaines polluées radioélectriquement, certains envisagent de déporter les antennes en zone plus calmes.

En plus de proposer une solution simple et précise pour mesurer les positions angulaires, le montage décrit, en faisant largement appel à l'informatique du shack, permet un contrôle à distance total. L'adaptation mécanique des capteurs de position est facilitée pour l'élévation par l'emploi d'un accéléromètre mesurant la gravité. Pour l'azimut, il est juste nécessaire d'accoupler un capteur dans l'axe de rotation.

Contexte de la réalisation :

J'ai repris mon projet de parabole 1,3 / 2,3 GHz qui dort dans le jardin depuis quelques temps.

Elle mesure 3 mètres de diamètre, le F/D est de 0,375 et le gain espéré sur 1,3 GHz est de 29 dBi.

Celle-ci est montée sur un SPID-ROTOR pour l'azimut. L'élévation est faite par un vérin prévu pour la motorisation des antennes de TV satellite et qui fait pivoter une potence de ma fabrication.

 

 
 
 

Description :

L'inconvénient du moteur SPID utilisé en hyper est son manque de précision dû à la lente désynchronisation de l'affichage par rapport à la position réelle si l'on utilise le contrôleur d'origine. C'est pourquoi ici il sera remplacé.

Pour obtenir une information d'azimut fiable et permanente, j'ai rajouté sur l'axe de rotation de la partie mobile un codeur MEGATRON MAB25, qui transmet ainsi dans tous les cas la position réelle de l'antenne.

 

Par prudence, j'ai aussi modifié le moteur pour lui rajouter deux butées électriques assurant un recouvrement de 45° sur la circonférence.

Ce codeur MAB25 est raccordé au capteur d'élévation, objet d'une précédente description sur le WEB dont vous trouverez les références en annexe.

L'ensemble de mesure est constitué du codeur MAB25 pour l'azimut et d’un accéléromètre MEMSIC MX2125 pour le capteur d'élévation, le tout géré par un microcontrôleur PIC. Positionné dans le support mobile, il constitue ainsi un ensemble transmettant toute les 200 ms environ une trame série asynchrone à la norme EIA-485 (RS485), qui comporte les deux informations d'azimut et d'élévation. Cette ligne de transmission, une simple paire téléphonique torsadée, peut être longue de plusieurs centaines de mètres. Si l'information d'élévation est en valeur absolue dans la trame, l'information d'azimut est représentée par une valeur numérique sur 12 bits (4096 positions) qu'il faudra ramener au modulo 360 et qui nécessitera un calage initial pour une lecture réelle de l'azimut.

 

 

Ce développement de capteur date de plusieurs années déjà (2007).

L'accéléromètre MEMSIC MX2125 utilisé commence à dater, et les progrès technologiques autour des Smartphones notamment ont mis sur le marché des composants que certains exploitent sur des cartes de développent de type Arduino ou de véritables pico-ordinateurs comme le Raspberry-Pi. Ceci devrait donner de nouvelles idées à nombre d'entre nous pour des applications de pilotage d'antennes.

Ayant fourni pas mal de PCB de mon capteur à nos amis d'outre Quiévrain, ON4CDU a de son coté développé un ensemble autour de ce capteur. Voir http://on4cdu.net/az-el/
Dans le shack, j'ai utilisé pour ma part un Raspberry-pi pour contrôler et commander la rotation de la parabole.

L'apparition sur le marché de ce petit micro-PC Linux extrêmement versatile (au sens anglais du terme) rend à mon avis totalement caduc le développement de cartes spécifiques à base de PIC ou autres microprocesseurs.

Synoptique du contrôle de position :

synoptique

Réalisation pratique :

 
103913
 

Connecté sur le bus GPIO du Raspberry-Pi, vous pouvez voir une petite carte qui comporte le chip d'interface série RS485, carte par laquelle sont reçues les informations de position des antennes et qui comporte les transistors de commande des relais permettant la mise en rotation des deux moteurs.

L'ensemble constitue une «boîte noire» raccordée au réseau local du shack, en Ethernet ou par une clef Wifi. L'alimentation externe se fait avec le 13,8 volts de la station, un régulateur interne délivre le 5 volts nécessaire au Raspberry-Pi. C'est cette même tension de 13,8 volts qui alimente les deux moteurs.

Les programmes installés sur le Raspberry-Pi sont contenus dans une carte SD de 8 ou 16 Go qui comprend le système d'exploitation Raspbian, un Linux adapté au hardware, les librairies de communication propres au bus GPIO, les librairies astronomiques pour le calcul de la position des astres, les librairies pour le langage PERL avec lequel Christophe ON4IY a écrit les routines de position. J'ai pour ma part écrit le programme de poursuite automatique de la lune. Vous trouverez en annexe les moyens de télécharger une image toute configurée de la carte SD, ainsi que les schémas et typons des circuits imprimés des cartes d'interface.

Mais la présentation de ces diverses cartes périphériques ferra l'objet d'une prochaine description.

L'interface de commande :

Elle est "virtuelle". Dans un boîtier de commande classique, on s'attend à trouver des poussoirs et un affichage par galvanomètre ou afficheur LCD. Ici, puisque les informations ont été digitalisées dès le départ, nous restons dans du tout numérique et la commande se fait à partir du PC Windows du shack.

Il faut installer un serveur X11, nécessaire pour l'affichage des fenêtres en mode X-window propre à Linux.

C'est un logiciel gratuit nommé XMING. Lancé préalablement une fois pour toute, il se déroule en tâche de fond et on n'a plus à s'en occuper.

La connexion avec le Raspberry-Pi via le réseau local se fait avec un autre logiciel gratuit bien connu nommé PUTTY, grâce auquel on programme la connexion SSH au Raspberry-Pi avec validation du protocole X11. Une fois logué, il faut lancer une commande qui affiche les informations de position ainsi que l'accès aux commandes de rotation. Ainsi décrit, cela peut paraître compliqué, mais en fait c'est relativement simple. D'autre part, le Raspberry-Pi, ainsi connecté à votre réseau local, peut être accessible par Internet via votre Box ADSL, permettant ainsi un pilotage à distance des antennes. Pour une accessibilité externe, le port TCP-IP 22 sera redirigé dans votre Box vers l'adresse locale du Raspberry-Pi. Il est très pratique, avec un petit "notebook" Wifi, de pouvoir commander les diverses rotations en se tenant juste à coté des antennes, chez moi sur le toit.

IHM

La présentation est très simple et sera amenée à évoluer, mais l'ensemble est déjà parfaitement opérationnel et permet de piloter la parabole avec une précision suffisante. Nous avons en illustration une copie d'écran du PC de commande D'autre part, les possibilités de calcul du Raspberry-Pi, nous permettent d'avoir la position de la lune.

La première ligne donne la position de la lune en temps réel. L'indication du QRA locator ainsi que les offsets initiaux sont paramétrés dans le fichier Perl.

La deuxième ligne donne la position réelle des l'antenne.

Cinq "Boutons Radio" exclusifs permettent de commander manuellement l'antenne en site et azimut.

Les boutons "slow" et "fast" permettent de basculer entre vitesse normale et vitesse lente obtenue par un hachage de la tension d'alimentation du moteur d'azimut, seule méthode pour ralentir le moteur sans perte de couple.

Le bouton "track" permet d'enclencher la poursuite automatique de la lune. Une fois celui-ci enclenché, les moteurs suivront la position de l'astre dans une fenêtre d'un degré. La poursuite en azimut passe automatiquement en vitesse basse dès que l'angle d'erreur est inférieur à 3° pour une arrivée en douceur sur la position.

Il ne faut pas se leurrer, les fortes variations de la température extérieure auxquelles ces capteurs sont soumis rendent illusoire la précision théorique du dixième de degré affiché, qui ne résulte que d'une péréquation mathématique des données numériques fournies.

Evolutions :

Le Raspberry-Pi dispose d’un OS avec toutes les couches logicielles de communication réseau et de toutes les librairies scientifiques possibles.

Tous les langages sont disponibles, PERL, Python, C etc. en plus du langage de script de Linux.

Il dispose d’un serveur de pages HTML et donc les informations, par des développements correspondants, peuvent être lues aussi avec un simple navigateur.

Ceci permet d'imaginer bien d'autres applications autour de ces fonctions de pilotage d'antenne.

Conclusion.

Le but de cette description n'est pas de permettre une réalisation à l'identique mais plutôt de donner des idées pour le contrôle d'un système d'antennes plus spécialement adapté aux fréquences THF et SHF, dans une approche originale. Cependant, les schémas des circuits imprimés, non décrits ici, ainsi que les logiciels utilisés sont disponibles de suite aux adresses données en annexe.

Ces cartes seront décrites ultérieurement ainsi que la configuration des différents logiciels utilisés.

Ce projet reprend des développements antérieurs dont vous trouverez ci-dessous les liens de publication des articles sur le WEB.

Vous qui avez déjà réalisé ou allez réaliser un montage de ce type, pensez à partager le fruit de vos efforts avec les autres.

F1TE, août 2015

Bibliographie sur le WEB :

Vous trouverez à cette adresse la description des modifications apportées au moteur : www.f1te.org ou directement http://urls.r-e-f.org/jm905kd.

L'ensemble capteur est décrit à cette adresse : www.f1te.org ou directement http://urls.r-e-f.org/cb185kv

Voir exemple d'utilisation du capteur : http://on4cdu.net/az-el/

Serveur Windows de fenêtres X11, XMING : http://urls.r-e-f.org/je833ce

Logiciel de connexion sécurisées en SSH, PUTTY : http://www.putty.org/

Compléments aux articles techniques sur le site du REF :

Remerciements.

-       F1OAT, F1HDI et F5DJL qui sont intervenus à différents niveaux lors du développement du capteur d'élévation.

-       ON4IY pour ses conseils, sa téléassistance et ses programmes en PERL.

-       F8FIV pour son support pour les affichages X11 sous Windows.

-       Et bien sûr, mon complice F6BKI, toujours présent pour le montage de mes antennes.

 

Interface de commande

 

Dans les systèmes classiques de pilotage des moteurs d'antennes, les commandes se font généralement manuellement à partir de poussoirs de commande, pour tourner, monter ou descendre.

L'affichage de la position se fait avec des galvanomètres ou des afficheurs numériques LCD. Pour la poursuite automatique, une interface de dialogue est prévue avec l'ordinateur qui lui envoie les positions à atteindre.

Dans notre projet, aucun poussoir, aucun bouton, aucun affichage direct sur notre automate.

Alors comment faire ? C'est là tout l'avantage d'un outil "communiquant".

Il est équipé d'un serveur WEB "HTTP" et c'est par cette voie que l'on va se connecter à lui, via notre PC de trafic, notre tablette numérique ou notre Smartphone, avec notre navigateur Internet favori.

Dès lors, plus de limite à l'information disponible et aux commandes possibles puisque tout est dématérialisé. Nous pouvons faire une interface homme/machine (IHM) très poussée, avec toutes les informations de calcul disponibles grâce à notre processeur : Position des astres ou des satellites, commandes manuelles ou poursuite automatique, affichage de carte etc, grâce à des boutons clicables à la souris.

Le matériel étant réduit au minimum, le cout de l'ensemble de pilotage sera lui aussi réduit au minimum. Une fois monté dans une boîte très simple, avec les quelques connecteurs nécessaires, le reste est une affaire de software. Plus de face avant à percer, plus de design esthétique à réaliser. Une simple "boîte noire" suffit.

C'est en soft que l'on va créer tout le look de cette interface de commande.
 Exemples
 
 
C'est ce à quoi nous nous employons avec mon complice sur ce projet, Christian F6DDW.
 

Synoptique du pilotage des antennes

 

 

20130214 105808

Raspberry Pi et son interface de commande

<=>

2

Capteur d'élévation et d'azimut

 

 

 

 

 

 

 

 

 

 

 

 

 

Librairie Perl du bus GPIO

 
Librairie C bcm2835 
wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.17.tar.gz
gunzip bcm2835-1.17.tar.gz
tar xvf bcm2835-1.17.tar
cd bcm2835-1.17
./configure
make
sudo make check
sudo make install
Librairie Perl correspondante :
sudo cpan install Device::BCM2835
 
Une fois ces deux packages installés, nous serons prêt à manipuler les bits d'E/S du bus GPIO utilisés dans ma carte interface.

Installer les librairies de Perl

 
Nous allons avoir besoin d'installer au moins deux librairies du language PERL pour notre projet.
les librairies "celestes" pour connaitre la position des astres.
Les librairie de pilotage des lignes digitales du bus GPIO.
Pour cela, nous allons utiliser un site d'archive spécialisé CPAN comme "Comprehensive Perl Archive Network"
Le Rpi doit bien sur être connecté à votre BOX-ADSL
En général il trouve automatiquement la connexion au boot et se fait attribuer une adresse par le serveur DHCP de la BOX.
La commande d'installation des librairies celestes est :
sudo cpan install Astro::Coord::ECI
Personnellement cette commande n'a jamais abouti chez moi.
pi@home> ~ $ sudo cpan install Astro::Coord::ECI
Going to read '/root/.cpan/Metadata'
Database was generated on Sun, 10 Feb 2013 07:07:31 GMT
Running install for module 'Astro::Coord::ECI'
Running make for W/WY/WYANT/Astro-satpass-0.056.tar.gz
Fetching with HTTP::Tiny:
http://www.mirrorservice.org/sites/cpan.perl.org/CPAN/authors/id/W/WY/WYANT/Astro-satpass-0.056.tar.gz
Fetching with HTTP::Tiny:
http://www.mirrorservice.org/sites/cpan.perl.org/CPAN/authors/id/W/WY/WYANT/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/W/WY/WYANT/Astro-satpass-0.056.tar.gz ok
Uncompressed /root/.cpan/sources/authors/id/W/WY/WYANT/Astro-satpass-0.056.tar.gz successfully
Using Tar:/bin/tar xf "Astro-satpass-0.056.tar":
Couldn't untar Astro-satpass-0.056.tar
Package seems to come without Makefile.PL.
(The test -f "/root/.cpan/build/WYANT-uBY0Ap/Makefile.PL" returned false.)
Writing one on our own (setting NAME to AstroCoordECI)
Had problems unarchiving. Please build manually
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
pi@home ~ $
Si le téléchargement du module se fait bien convenablement, on voit qu'il y a un problème au moment du décompactage.
Alors, avec les privilèges "root", je suis allé dans le répertoire /root/.cpan/sources/authors/id/W/WY/WYANT/
J'ai fait le tar en commande manuelle : tar Astro-satpass-0.056.tar
Et tout c'est bien passé. ensuite cd Astro-satpass-0.056#
Et comme indiqué dans le README :
perl Makefile.PL
make
make test
sudo make install
Voila, c'est pout pour la librairie "ASTRO".
 

UART du bus GPIO

 
Pour que l'interface puisse utiiser l'UART /dev/ttyAMA0 du bus GPIO, il faut le rendre disponible pour cet usage.
Pour cela, passer ces commandes suivantes :

Faire une sauvegarde du fichier /boot/cmdline.txt

sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt

L'éditer soit avec vi, nano ou leafpad

sudo vi /boot/cmdline.txt

Remplacer la ligne qui s'y trouve :

dwc_otg.lpm_enable=0 rpitestmode=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
Par celle-ci :
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

Puis éditer le fichier /etc/inittab et commenter la dernière ligne par un "#"

sudo vi /etc/inittab
#2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Faire une reboot par la commande :

sudo shutdown -r now

Soft

Et le soft dans tout ça ?
Voila une jolie plaquette connectée sur le BUS "GPIO". Maintenant il faut :
  1. Déterminer la position de la lune
  2. Connaitre la position des antennes
  3. Faire fonctionner les relais pour faire tourner les moteurs dans le bon sens pour assurer la poursuite.
A ce stade il faut que je vous avoue un complice dans le projet.
C'est Christophe, ON4IY qui écrit les programmes.
En effet, il faut savoir qui est le plus compétent pour cela, surtout pour manier les librairies astronomiques, la programmation en Perl où je suis totalement incompétent.
Pour le moment, je ne vous donnerai pas le code source de son travail, nous sommes en test et il le ferra surement lui même.
Mais au moins les éléments pour configurer l'UART du bus GPIO, la mise en place des librairies pour manipuler les E/S digitales, les librairies astro pour la lune et le soleil.
Enfin, tout ce qui est nécessaire au niveau de l'OS pour que les applicatifs spécifiques au projet de tracker puissent fonctionner correctement.
 

Prototype

 

20130217 154926

 

PCB

 

imp

Implantation

pcb top

TOP

pcb bot

 BOTTOM

Carte d'extension E/S pour piloter les antennes
 
Une fois le Raspberry-Pi opérationnel sous Linux, il faut penser à la carte d'extension spécifique à la commande des moteurs.
La carte possède un connecteur 26 points HE10 comportant entre autres des lignes d'entrées/sorties digitales et un UART.
Je prévois d'utiliser cet UART pour l'acquisition en RS485 des données du capteur de position des antennes et 4 lignes de sorties pour commander les moteurs, UP ou DOWN, LEFT ou RIGHT.
Une ligne en entrée est prévue pour le comptage des pulses en provenance des moteurs de type SPID-Rotor.

Ce qui donne le schéma suivant :

extensions lnd thumb

Les pulses mis en forme ne sont pas raccordés, je ne sais pas encore quelle ligne d'entrée utiliser.
Je vais faire un circuit imprimé proto et si le projet est mené à son terme je ferrai réaliser un PCB industriel, trous métallisés, vernis épargne, sérigrafié et tout et tout.

Créer le disque Linux sur la carte SD.

 
La première chose à faire est de télécharger un outil pour formater le disque sur la carte SD.
Pour cela, il faut une carte SD 4 ou 8 Go et un lecteur pour ces cartes raccordé sur un PC.
Avec Windows, il faut télécharger le programme  Win32DiskImager
Cet outil vous permettra de formater la carte avec les partitions Linux à partir de l'image de la distribution "raspbian".
L'image de cette distribution se trouve sur le site de Rasberry Pi section Download : 2013-02-09-wheezy-raspbian.zip
Il faut décompacter l'image et lancer le programme Win32DiskImager pour formater la carte SD, par la fonction Write.
Ce programme servira aussi, après les diverses configurations et personnalisations de Linux, à faire une sauvegarde globale de votre SD.
Ensuite, il faut monter la carte sur le Raspberry, raccorder un écran et un clavier si vous avez, et mettre sous tension.
Le login par défaut est : pi et le password raspberry.
En général le programme raspi-config est lancé automatiquement la première fois pour configurer le clavier et la timezone.
Profitez en aussi pour valider les connexions SSH, très pratique pour prendre la main à distance.
 

 

Il semble que ce petit appareil soit distribué en exclusivité par Farnell et Radiospares.
Mais on le trouve aussi partout sur Ebay.
J'ai commendé le mien chez Farnell par l'intermédiaire de leur site spécialisé Kubii.fr
Livré sous 8 jours.
Il faut aussi disposer d'une alimentation 5V 1A minimum,  à cause des extensions prévues.
Le connecteur d'alim est spécial, style smartphone.
Prévoir aussi un lot de cartes SD, 4 ou 8Go pour avoir des sauvegardes une fois la configuration terminée.
Si vous avez un écran HDMI ce sera parfait.
On peut aussi raccorder un petit écran LCD 3.5", le Raspberry est équipé d'une sortie vidéo NTSC.
Le luxe avec clavier et souris USB.
Un cordon Ethernet pour la connexion à la Box ADSL, mais des clefs USB wifi peuvent être aussi utilisées.
Peut être alors un Hub USB sera nécessaire.
Tout ces petits accessoires se trouvent facilement sur le marché à faible cout.
 

 Raspberry Pilogo-rasp rasp

Un mini PC format carte de crédit pour 35 €  environ ?
Évidemment c’est tentant.
La première idée venue est de développer un outil de pilotage des antennes EME.
Le Raspberry PI calcule la position de la lune à partir de notre QRA-Locator.
Il détermine la position des antennes par l'acquisition des données du capteur élévation/azimut déjà décrit.
Il commande les moteurs pour un pilotage manuel à l'aide d'une interface additionnelle.
Il assure le tracking automatique de la lune sur demande.
Et comme c'est un PC Linux avec connexion Ethernet, il est raccordable sur la Box ADSL pour un pilotage à distance des antennes via une inerface WEB