Dans l' article précédent consacré à la synchronisation de l'heure par radio et SRNS (systèmes de communication radio navigation), je n'ai pas eu le temps de parler du choix d'un récepteur GPS / GLONASS avec une sortie PPS. Pendant ce temps, la précision de la réception du signal en dépend, la valeur peut aller d'une milliseconde à plusieurs microsecondes, ce qui est souvent d'une importance décisive.
Pour une réception du signal horaire la plus précise possible, vous avez besoin d'un récepteur GPS / GLONASS avec une sortie PPS. Le fait est, cependant, que sur le marché russe, il n'est pas facile d'obtenir un appareil avec de telles caractéristiques à un prix abordable. Beaucoup de ces modèles ont depuis longtemps cessé d'être produits, et dans les magasins en ligne abandonnés avec une mise en page des années 1990, seules leurs descriptions restaient avec une offre de souscrire à une notification lorsque les marchandises sont arrivées.
Une liste complète des équipements GPS testés est disponible sur la ressource GitLab NTPSec. Il n'est pas difficile de remarquer qu'un petit nombre d'appareils présentés dans la liste sont marqués de 3 à 4 étoiles et de l'option PPS. Ainsi, les destinataires suivants sont présélectionnés.
- Garmin GPS-18, pas USB *** (prix approximatif 10 mille roubles)
- GlobalSat MR-350P ****
- Jackson Labs FireFly-II ***
- Magellan Thales AC12 ***
- Motorola Oncore GT + ***
- Navisys GR601-W ****
- SkyTraq SKG16B ****
- Trimble Lassen IQ ***
- u-blox ANTARIS LEA-4T ***
- u-blox EVK 6H ****
- u-blox LEA SQ ****
4 * Excellentes performances: GPSd reconnaît le récepteur rapidement et de manière fiable, et les rapports sont générés entièrement et correctement.
3 * Bonnes performances: gpsd avec des problèmes mineurs ou une latence reconnaît les périphériques, mais les rapports sont générés complètement et correctement.
Si vous êtes intimidé par le prix de ces modèles, et qu'il n'y a pas non plus de grande envie de bricoler des glandes, vous ne pouvez pas lire plus loin. Un récepteur connecté à un serveur via une interface USB ou RS232 fournira une détermination de l'heure beaucoup plus précise qu'un serveur NTP utilisant tcp / ip. Mais si le chemin du samouraï ne vous est pas étranger, construisons votre serveur Raspberry PI NTP avec synchronisation de l'heure GPS.
Assembler Raspberry PI
Donc: nous prenons les composants suivants pour notre micro serveur.
- Carte Raspberry Pi 4 modèle B, 4 Gio de RAM (6200 roubles);
- Cas, par exemple ceci (890 roubles);
- Une carte Micro SD pour 32 Gio, 16 Gio est possible; (540 frotter.)
- Module GPS basé sur la puce u-blox NEO-M8 (1700 roubles avec antenne);
- Antenne GPS à 15 dB;
- Fer à souder.
En fait, u-blox NEO-M8 est équipé d'une interface UART, mais pour la sortie PPS, vous devez souder la broche 3 du module GPS au connecteur GPIO correspondant sur la carte Raspberri Pi. Le module de la société suisse a gagné en popularité auprès des spécialistes et ce n'est pas un hasard, les caractéristiques parlent d'elles-mêmes.
- SRNS pris en charge: BeiDou, Galileo, GNSS; GPS / QZSS, GLONASS;
- Tension d'alimentation: 2,7 ... 3,6 V;
- Interfaces: UART, USB, SPI, DDC, I2C;
- Protocoles pris en charge: NMEA 0.183 version 4.0, UBX (binaire), RTCM 2.3;
- Sensibilité de détection: -167 dBm;
- Sensibilité de suivi: -160 dBm;
- Temps de démarrage à froid: 26 s;
- Temps de démarrage à chaud: 1,5 s;
- Consommation électrique: 35 mW;
- Température de fonctionnement: -40 ... + 85 ° ;
- Dimensions: 16x12,2x2,4 mm
Dans cette configuration avec le dernier équipement, le prix total approximatif du Raspberry PI assemblé sera de 9330 roubles. Vous pouvez économiser de l'argent en achetant un Raspberry PI 3 ou un quatre avec 2 Gio de RAM. Vous pouvez toujours économiser sur une puce GPS, u-blox NEO-6M avec une antenne coûte environ 650 roubles. Ensuite, le prix du serveur NTP tombera à 5500 roubles.
Module GPS / Glonass UBLOX NEO 8M La
question peut se poser, à quoi servent tous ces investissements et quelle précision est apportée par telle ou telle méthode de synchronisation horaire. Petite plaque récapitulative pour référence.
Source du signal horaire | Erreur |
GPS avec horloge atomique | ± 50 nSec |
KPPS | ± 1 μSec |
PPS | ± 5 μSec |
Interface USB 1.1 | ± 1 ms |
Interface USB 2.0 | ± 100 μSec (100000 nSec) |
NTP sur le réseau | ~ ± 30 ms |
Kernel PPS (KPPS) diffère de PPS en ce qu'il utilise une fonction de noyau Linux / Unix pour horodater avec précision un changement d'état dans la ligne PPS. Le PPS habituel est implémenté dans l'espace utilisateur. Si le noyau Linux prend en charge KPPS via l'API RFC 2783, gpsd l'utilisera pour améliorer la précision.
De nombreuses distributions Linux ont un package pps-tools qui fournit la prise en charge de KPPS et installe le fichier d'en-tête timepps.h. Assurez-vous d'installer ce package.
(1:1146)$ sudo emerge -av pps-tools
Local copy of remote index is up-to-date and will be used.
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary R ] net-misc/pps-tools-0.0.20120407::gentoo 0 KiB
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No]
Ainsi, en connectant un récepteur GPS avec sortie PPS via USB, nous obtenons une précision de synchronisation temporelle 300 fois supérieure. La lecture de la puce GPS sur la carte en mode KPPS donne une augmentation de précision de deux autres ordres de grandeur .
Soyons honnêtes - nous ne savons pas tous comment utiliser un fer à souder, tout le monde n'utilise pas cet outil régulièrement. Dans ce cas, il est judicieux de rechercher un module GPS qui ne nécessite pas de contacts à souder.
Carte d'extension Raspberry Pi GPS / RTC
Il existe peu de cartes de ce type et elles sont chères. La différence de prix sera entièrement compensée par l'achat d'un fer à souder et les frais de main-d'œuvre.
Installation du système d'exploitation
Il existe également un système d'exploitation Raspberry PI. ka Raspbian, vous pouvez simplement suivre le lien , télécharger la dernière version et l'installer. Beaucoup de gens le font, mais rappelons-nous que Raspberry PI 4 prend en charge le système d'exploitation 64 bits, tandis que Raspberry PI OS n'a que des modifications Debian Linux 32 bits pour l'architecture Arm.
Il y a un tel point de vue qu'il n'est pas justifié sur un OS 64 bits sur Raspberry PI 4, puisqu'il n'y a aucun moyen de fournir un gain de performances en raison des particularités de l'architecture et de l'assemblage. Ce point de vue me semble douteux, ils ont déjà écrit à ce sujet sur Habré - l' OS 64 bits est plus rapide .
Il existe un portage de Debian Linux pour l'architecture arm64, mais la distributionUbuntu pour Raspberry PI a une page et des instructions claires. Sur la page, nous trouvons une confirmation supplémentaire qu'il est préférable de choisir un système d'exploitation 64 bits.
Inventaire des installations:
- Raspberry Pi 4;
- Câble d'alimentation USB-C pour Pi 4;
- Carte Micro SD avec image d'installation Ubuntu;
- Moniteur avec sortie HDMI;
- Câble MicroHDMI;
- Clavier USB.
L'étape suivante consiste à écrire l'image d'installation sur la carte Micro SD. Si vous ne disposez pas d'un utilitaire et d'un programme spécialisés à ces fins, dans le cas le plus simple, cela suffit.
sudo dd if=/path/to/ubuntu-core-arm64.iso of=/dev/mmcblk0 status=progress
Le nom exact du périphérique est affiché dans la sortie dmesg lorsqu'un nouveau périphérique est détecté.
PM: Adding info for No Bus:179:0
device: 'mmcblk0': device_add
PM: Adding info for No Bus:mmcblk0
Insérez une carte Micro SD, connectez un moniteur HDMI, un clavier USB et un câble d'alimentation pour démarrer dans Ubuntu Server sur le Raspberry Pi. Le nom d'utilisateur et le mot de passe par défaut sont ubuntu.
Configuration du serveur NTP
- Raspberry PI (headless), IP . .
(1:1151)$ arp -na | grep -i "dc:a6:32"
Pi HDMI USB , 1-2 . - ssh
(1:1152)$ ssh ubuntu@<Raspberry Pi’s IP address>
- .
user@server ~$ sudo apt-get install aptitude user@server ~$ sudo aptitude install wpasupplicant gpsd chrony
- Wi-Fi wpasupplicant.
- Linux UART0 Pi /dev/ttyAMA0. UART0 GPS Linux. console=ttyAMA0,115200, console=tty1. /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT. , /boot/config.txt, .
Raspberry Pi 4 6 UART-
UART2-5 .UART0 PLO11 /dev/ttyAMA0 (Bluetooth) UART1 mini UART /dev/ttyS0 UART2 PLO11 UART3 PLO11 UART4 PLO11 UART4 PLO11
, UART0 — , UART1, mini UART. Bluetooth UART1 , UART0. /etc/default/grub, /boot/config.txt enable_uart=1. - /etc/defaults/gpsd .
DEVICES="/dev/ttyAMA0 /dev/pps0" GPSD_OPTIONS="-n" USBAUTO="false"
- , gpsd.
user@server ~$ sudo /etc/init.d/gpsd start user@server ~$ sudo /etc/init.d/gpsd restart
- GPS.
user@server ~$ cat /dev/ttyAMA0 user@server ~$ cgps -s user@server ~$ ppstest /dev/pps0
- /etc/ntp.conf.
, Stratum 1, 2 NTP (, pool [0-9].subdomain.pool.ntp.org) , GPS/PPS .
# GPS Serial data reference (NTP0) server 127.127.28.0 minpoll 4 fudge 127.127.28.0 flag1 1 time1 0.9999 refid GPS #flag1 - PPS on
# GPS PPS reference (NTP1) server 127.127.22.0 minpoll 4 fudge 127.127.22.0 flag3 1 refid PPS #flag3 - enable KPPS API
NTP0 , GPS. NTP1 PPS . - ntpd
user@server ~$ sudo /etc/init.d/ntpd restart
- GPSD Time Service HOWTO
- The Raspberry Pi as a Stratum-1 NTP Server
- How to Setup a GPS PPS NTP Time server on Raspberry Pi
- GPS Raspberry Pi
- UART configuration