En el artículo anterior dedicado a la sincronización horaria por radio y SRNS (sistemas de comunicación de navegación por radio), no tuve tiempo de hablar sobre la elección de un receptor GPS / GLONASS con salida PPS. Mientras tanto, la precisión de la recepción de la señal depende de esto, el valor puede ser de un milisegundo a varios microsegundos, y esto a menudo es de importancia decisiva.
Para la recepción de señal horaria más precisa, necesita un receptor GPS / GLONASS con salida PPS. Sin embargo, el punto es que en el mercado ruso no es fácil obtener un dispositivo con tales características a un precio asequible. Muchos de estos modelos han dejado de producirse, y en las tiendas en línea abandonadas con diseño en la década de 1990, solo sus descripciones permanecieron con una oferta para suscribirse a una notificación cuando llegaron los productos.
Una lista completa de los equipos GPS probado se puede encontrar en el recurso GitLab NTPSec. No es difícil notar que una pequeña cantidad de dispositivos presentados en la lista están marcados con 3-4 estrellas y la opción PPS. Por lo tanto, los siguientes receptores son preseleccionados.
- Garmin GPS-18, no USB *** (precio aproximado 10 mil rublos)
- 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 * Excelente rendimiento: GPSd reconoce el receptor de forma rápida y confiable, y los informes se generan completa y correctamente.
3 * Buen rendimiento: gpsd con problemas menores o latencia reconoce dispositivos, pero los informes se generan completa y correctamente.
Si el precio de estos modelos le intimida, y tampoco hay un gran deseo de jugar con las glándulas, no puede seguir leyendo. Un receptor conectado a un servidor a través de una interfaz USB o RS232 proporcionará una determinación de tiempo mucho más precisa que un servidor NTP que usa tcp / ip. Pero si el camino del samurai no es ajeno a usted, entonces construyamos su servidor Raspberry PI NTP con sincronización de hora GPS.
Poner juntos Raspberry PI
Entonces: tomamos los siguientes componentes para nuestro micro servidor.
- Placa Raspberry Pi 4 Modelo B, 4 GiB RAM (6200 rublos);
- Caso, por ejemplo esto (890 rublos);
- Tarjeta Micro SD para 32 GiB, 16 GiB es posible; (540 rub.)
- Módulo GPS basado en chip u-blox NEO-M8 (1700 rublos con antena);
- Antena GPS a 15 dB;
- Soldador.
En realidad, u-blox NEO-M8 está equipado con una interfaz UART, pero para la salida PPS, debe soldar el pin-3 en el módulo GPS al conector GPIO correspondiente en la placa Raspberri Pi. El módulo de la compañía suiza ha ganado popularidad entre los especialistas y esto no es casualidad, las características hablan por sí solas.
- SRNS admitidos: BeiDou, Galileo, GNSS; GPS / QZSS, GLONASS;
- Tensión de alimentación: 2.7 ... 3.6 V;
- Interfaces: UART, USB, SPI, DDC, I2C;
- Protocolos admitidos: NMEA 0.183 versión 4.0, UBX (binario), RTCM 2.3;
- Sensibilidad de detección: -167 dBm;
- Sensibilidad de seguimiento: -160 dBm;
- Tiempo de arranque en frío: 26 s;
- Tiempo de arranque en caliente: 1.5 s;
- Consumo de energía: 35 mW;
- Temperatura de trabajo: -40 ... + 85 ° ;
- Dimensiones: 16x12.2x2.4 mm
En esta configuración con el último equipo, el precio total aproximado del Raspberry PI ensamblado será de 9330 rublos. Puede ahorrar dinero comprando un Raspberry PI 3 o un cuatro con 2 GiB RAM. Todavía puede ahorrar en un chip GPS, u-blox NEO-6M con una antena cuesta alrededor de 650 rublos. Luego, el precio del servidor NTP se reducirá a 5500 rublos.
Módulo GPS / Glonass UBLOX NEO 8M
Puede surgir la pregunta, para qué son todas estas inversiones y qué precisión proporciona este o aquel método de sincronización de tiempo. Pequeña placa resumen para referencia.
Fuente de señal de tiempo | Error |
GPS con reloj atómico | ± 50 nSeg |
KPPS | ± 1 μSec |
PPS | ± 5 μSeg |
Interfaz USB 1.1 | ± 1 mSeg |
Interfaz USB 2.0 | ± 100 μSec (100000 nSec) |
NTP a través de la red | ~ ± 30 mSeg |
Kernel PPS (KPPS) difiere de PPS en que utiliza una función de kernel de Linux / Unix para marcar con precisión un cambio de estado en la línea PPS. El PPS habitual se implementa en el espacio de usuario. Si el kernel de Linux admite KPPS a través de API RFC 2783, gpsd lo usará para mejorar la precisión.
Muchas distribuciones de Linux tienen un paquete pps-tools que proporciona soporte KPPS e instala el archivo de encabezado timepps.h. Asegúrese de instalar este paquete.
(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]
Por lo tanto, al conectar un receptor GPS con salida PPS a través de USB, obtenemos un aumento de 300 veces en la precisión de sincronización de tiempo. La lectura del chip GPS en el tablero en modo KPPS proporciona un aumento en la precisión de otros dos órdenes de magnitud .
Seamos honestos: no todos sabemos cómo usar un soldador, no todos usan esta herramienta regularmente. En este caso, tiene sentido buscar un módulo GPS que no requiera contactos de soldadura.
Placa de expansión Raspberry Pi GPS / RTC
Hay pocas placas de este tipo y son caras. La diferencia de precio se compensará totalmente con la compra de un soldador y los costos de mano de obra.
Instalación del sistema operativo
También hay un Raspberry PI OS. ka Raspbian, puedes seguir el enlace , descargar la última versión e instalarlo. Muchas personas hacen esto, pero recordemos que Raspberry PI 4 es compatible con el sistema operativo de 64 bits, mientras que Raspberry PI OS solo tiene modificaciones Debian Linux de 32 bits para la arquitectura Arm.
Existe un punto de vista tal que no está justificado en un sistema operativo de 64 bits en Raspberry PI 4, ya que no hay forma de proporcionar una ganancia de rendimiento debido a las características de arquitectura y ensamblaje. Este punto de vista me parece dudoso, ya han escrito sobre esto en Habré: el sistema operativo de 64 bits es más rápido .
Hay un puerto de Debian Linux para la arquitectura arm64, sin embargo, la distribuciónUbuntu para Raspberry PI tiene una página clara e instrucciones. En la página encontramos confirmación adicional de que es mejor elegir un sistema operativo de 64 bits.
Inventario de instalación:
- Raspberry Pi 4;
- Cable de alimentación USB-C para Pi 4;
- Tarjeta Micro SD con imagen de instalación de Ubuntu;
- Monitor con salida HDMI;
- Cable MicroHDMI;
- Teclado USB
El siguiente paso es escribir la imagen de instalación en la tarjeta Micro SD. Si no tiene una utilidad y un programa especializados a mano para estos fines, en el caso más simple es suficiente.
sudo dd if=/path/to/ubuntu-core-arm64.iso of=/dev/mmcblk0 status=progress
El nombre exacto del dispositivo se ve en la salida dmesg cuando se detecta un nuevo dispositivo.
PM: Adding info for No Bus:179:0
device: 'mmcblk0': device_add
PM: Adding info for No Bus:mmcblk0
Inserte una tarjeta Micro SD, conecte un monitor HDMI, un teclado USB y un cable de alimentación para arrancar en Ubuntu Server en la Raspberry Pi. El nombre de usuario y contraseña predeterminados es ubuntu.
Configuración del servidor 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