Visualizzazione post con etichetta NTP. Mostra tutti i post
Visualizzazione post con etichetta NTP. Mostra tutti i post

martedì 10 maggio 2016

NTP Server con GPS Seriale e Arduino YUN

Nel precedente post avevo utilizzato i dati derivati da un modulo GPS collegato via USB ad una Arduino YUN come fonte dati per un server NTP


Questa configurazione e' un po' costosa ed occupa la porta USB della YUN. Usando un modulo GPS con una seriale TTL con una connessiona a soli tre fili (VCC, GND e GPS-Tx collegato ad Arduino, il cavo GPS-Rx non e' necessaria perche' la comunicazione e' a senso unico) si puo' ottenere lo stesso risultato risparmiando un po'

Per prima cosa si deve configuare la YUN modificando il file /etc/inittab e commentando la terza riga (quella che inizia con ttyATH0...) e si riavvia il dispositivo

si collega poi il pin TX del GPS al pin D8 dell'Arduino e si carica lo sketch che semplicemente prende i dati dalla SoftSeriale e li spedisce sulla Serial1 (che e' quella di collegamento tra Linino ed Arduino)

-------------------------------------------------------
#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 3); // RX, TX

void setup() {
  delay(150000); //questo serve a non inviare dati sulla seriale in fase di boot altrimenti si blocca tutto
  Serial1.begin(115200);
  Serial.begin(115200);
  mySerial.begin(9600);
}

void loop() { 
  if (mySerial.available()) {
    char c = mySerial.read();
    Serial1.write(c);
    Serial.write(c);    
  }
}
---------------------------------------------------
A questo punto doveva essere tutto facile e si dovevano solo replicare i passi del precedente post...in realta', nonostante fosse possibile visualizzare il flusso seriale mediante minicom, il demone di gpsd non riusciva ad agganciarlo. Dopo varie prove ho messo il Serial1 a 115200 e installato stty con il comando

opkg update 
opkg install coreutils-stty
a questo punto ho forzato il riconoscimento della velocita' della seriale con stty
stty -F /dev/ttyATH0 ispeed 115200 && cat </dev/ttyXXX

e lanciato demonizzato gpsd

gpsd -D 5 -N -n /dev/ttyATH0 -F /var/run/gpsd.sock
a questo punto ha iniziato a funzionare cpgs


venerdì 6 maggio 2016

NTP Server con Ublox M8T e Arduino Yun

Avevo gia' fatto qualcosa di simile, ma in questo esempio mostrero' come usare una Arduino Yun ed un modulo Ublox M8T per creare un server NTP che utilizza il segnale GPS per avere l'informazione del tempo




Prima di tutto si deve collegare l'Ublox alla Yun mediante la porta USB. Se si effettua tale operazione da dmesg si vede che il dispositivo e' riconosciuto ma non viene creata la porta seriale corrispondente. Questo e' dovuto al fatto che Linino e' un sistema Linux ridotto all'osso e pochi moduli del kernel sono montati di default

Si deve quindi scaricare il pacchetto kmod.usb-acm mediante le seguenti istruzioni

opkg update
opkg install kmod-usb-serial kmod-usb-acm

a questo punto viene creata una porta seriale virtuale in /dev/ttyACM0
Si scarica e si installa quindi il demone gpsd

opkg update
opkg install gpsd gpsd-clients ntpdate


e si attiva mediante il comando
gpsd /dev/ttyACM0 -n -F /var/run/gpsd.sock
per verificare se il flusso dati proveniente dal GPS e' interpretato in modo corretto si puo' digitare
cgps -s



si installa quindi il server ntp
opkg update
opkg install ntpd ntp-utils

e si modifica il file di configurazione in /etc/ntp.conf aggiungendo queste linee
-----------------------------------------
server 127.127.28.0 minpoll 4 maxpoll 4 
fudge 127.127.28.0 time1 0.0 refid GPS 
server 127.127.28.1 minpoll 4 maxpoll 4 prefer 
fudge 127.127.28.1 refid PPS
-----------------------------------------

e si lancia il servizio
/etc/init.d/sysntpd disable
/etc/init.d/ntpd enable
/etc/init.d/ntpd start

a questo punto digitando
ntpq -p
si vedra' apparire il GPS tra la sorgente delle fonti dati (e visto che sara' anche con quello di minor latenza) sara' il preferito. La Yun e' preconfigurata per usare il tempo UTC (come quello del GPS) e non ha di default configurate le timezone



giovedì 18 giugno 2015

Settare il tempo su Centos 7

Un piccolo promemoria su come settare il tempo su Centos
Per prima cosa si deve settare/modificare la propria timezone mediante il comando


timedatectl set-timezone Europe/Rome (Italia)
timedatectl set-timezone Etc/UTC (UTC)


per sincronizzare l'orologio con un servizio NTP si deve configurare il file /etc/ntp.conf con l'indirizzo di un timeserver ed aggiornare la regola del firewall

firewall-cmd --add-service=ntp --permanent 
firewall-cmd --reload
systemctl start ntpd

mercoledì 14 gennaio 2015

NTP Server con GPS via Android


In questo post viene spiegato come poter utilizzare un telefono Androided  un calcolatore con Linux per creare un semplice NTP server
Questa funzione e' utile nel caso che si abbiano diversi sensori che necessariamente devono lavorare ben sincronizzati ed e' stata necessaria dopo la recente vulnerabilita' di   NTP quando l'amministratore di una grande rete a cui mi appoggio ha deciso di tagliare tutto il traffico NTP (senza peraltro avvisare gli utenti)

Era richiesto che il PC ed il telefono fossero collegati via cavo USB (e non via Bluetooth) in modo da non avere perdita di connessione ed in modo anche di alimentare in modo semplice il telefono


Sul telefono Android si deve installare ed avviare l'applicazione BlueNMEA e si collega il telefono al PC (la modalita' sviluppatore deve essere attivata per aprire il canale ADB)




a questo punto da shell si forwarda tutto il traffico sul protocollo ADB verso la porta 4352 TCP del calcolatore

adb forward tcp:4352 tcp:4352

per verificare la connessione si puo' usare telnet

telnet localhost 4352

se tutto e' andato a buon fine si dovrebbero passare i messaggi NMEA (anche se non si e' ottenuto il fix del GPS si vedono comunque le stringhe)

a questo punto si puo' installare il demone GPSD 

apt-get install gpsd gpsd-clients python-gps

si lancia quindi il demone che ascolta la porta 4352 dopo prima era stato dirottato il trafffico GPS del telefono

gpsd tcp://localhost:4352

per verificare se funziona il demone si puo' usare a linea di comando 

cgps -d

mentre in X

xgps


per fare in modo da usare il dato del tempo per il server del tempo si deve installare il demone di NTP

apt-get install ntp 

e si modifica il file di configurazione in /etc/ntp.conf


# gps ntp
server 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid PPS

si riavvia il servizio e si puo' interrogare


ntpq -p

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...