#TekEVENTS – Raspberry Pi /AIS

Posted on
  1. Historique et développement de l A.I.S

Le Système d’identification automatique (SIA) ou Automatic Identification System (AIS) en anglais est un système d’échanges automatisés de messages entre navires par radio VHF ( 161,975 Mhz et 162,025 Mhz) qui permet aux navires et aux systèmes de surveillance de trafic (CROSS en France) de connaître l’identité, le statut, la position et la route des navires se situant dans la zone de navigation.

Le chapitre V de la Convention SOLAS imposait que les navires de jauge brute supérieure à 300 effectuant des voyages internationaux soient équipés de ce dispositif d’ici juillet 2007 au plus tard.

Le signal est multiplexé pour éviter que les navires ne se brouillent mutuellement en émettant au même moment. Pour accroître la capacité du système, la fréquence de rafraîchissement est modulée en fonction de la vitesse du navire et de ses évolutions : un navire lent et suivant une route rectiligne rafraîchira ses données avec une fréquence plus espacée.

 Le type de modulation est GMSK (Gaussian Minimum Shift Keying) et une rapidité de modulation de 9 600 bauds. Les paquets contiennent 168 ou 440 bits, ils sont précédés d’un préambule de 24 bits permettant de synchroniser le récepteur. Les trames sont de type HDLC (qui comporte un code de contrôle de redondance cyclique (CRC) et sont encodées en NRZ. L’empreinte sonore de AIS est proche du bruit de fond, et les trames ne durent que 30 ms.

La portée des communications VHF au sol étant limitée par la rotondité de la terre. Les navires envoient leurs données AIS par satellites. Le système n’ayant pas été prévu pour une telle réception, il a fallu résoudre certaines difficultés techniques, notamment la résolution des collisions entre messages émanant de nombreux navires se trouvant dans la zone de couverture.

2. Raspberry + SDR = Recepteur AIS

On prépare le Raspberry Pi 3 avec la dernière version de Raspbian , on récupère l image qu on intègre à la microSD avec Balena Etcher. On copie un fichier texte sans extension appeler « ssh » dans la racine de la carte SD permettant d activer le SSH dès le premier boot. On peut mettre aussi le fichier » wpa_supplicant.conf » contenant les infos de connexion Wifi pour que le Raspberry ce connecte directement au wifi sans assistance humaine.

On démarre le raspberry Pi avec sa carte microSD inséré, on récupère l ip du Raspberry via son WiFi ou via Ethernet. On se connecte en SSH…

Dans notre configuration on a équipé le RaspBerry Pi d un Ecran OLED Touch se connectant sur le port GPIO. Ce n est pas obligatoire mais ca peut s avérer utilise en mode balade. Une fois connecté , on va installer les drivers pour la prise en charge de l écran OLED Touch

sudo apt-get update
sudo apt-get upgrade
sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/

Ensuite il suffit de lancer la commande qui correspond à votre écran:

sudo ./LCD35-show (pour ma part)

Pour les autres écrans

sudo ./LCD32-show
sudo ./LCD28-show
sudo ./LCD397-show
sudo ./LCD43-show
sudo ./LCD5-show
sudo ./LCD7B-show
sudo ./LCD7C-show

HDMI Display-MPI3508
sudo ./MPI3508_480_320-show
sudo ./MPI3508_720_480-show
sudo ./MPI3508_810_540-show
sudo ./MPI3508_960_640-show

Display-MPI3510
sudo ./MPI3510-show

On commence par faire les dernières MAJ du « Raspbery Pi » pour préparer le terrain pour installer la partie SDR ensuite

sudo apt-get update
sudo apt-get upgrade

Récupération du Drivers pour le SDR

 git clone git://git.osmocom.org/rtl-sdr.git
 

Compilation et installation du driver SDR

cd  rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot

Test pour voir si le module SDR USB est bien pris en charge par le RaspBerry

rtl_test
 

Normalement, on aperçoit les informations techniques du module SDR

Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM

A la fin on peut avoir un message d erreur c est tout a fait normal ça prouve que çà fonctionne bien 😀

Patchage de l erreur pour eviter de l afficher 😀

sudo modprobe -r dvb_usb_rtl28xxu
sudo nano /etc/modprobe.d/rtl-sdr-blacklist.conf
blacklist dvb_usb_rtl28xxu

On refait un test

rtl_test

Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.

3. Calibration du Dongle SDR pour avoir une stabilité en fréquences

sudo apt install build-essential libtool automake autoconf librtlsdr-dev libfftw3-dev
git clone https://github.com/steve-m/kalibrate-rtl
cd kalibrate-rtl/
./bootstrap && CXXFLAGS='-W -Wall -O3'
./configure
make
sudo make install

Test de Calibration

rtl_test -p

Le resultat doit ressembler a ce ce genre de rapport

0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.
Reporting PPM error measurement every 10 seconds…
Press ^C after a few minutes.
Reading samples in async mode…
lost at least 168 bytes
real sample rate: 2047684 current PPM: -154 cumulative PPM: -154
real sample rate: 2048101 current PPM: 50 cumulative PPM: -52
real sample rate: 2048077 current PPM: 38 cumulative PPM: -22
real sample rate: 2048198 current PPM: 97 cumulative PPM: 8
real sample rate: 2048066 current PPM: 33 cumulative PPM: 13
real sample rate: 2048093 current PPM: 46 cumulative PPM: 18
real sample rate: 2048072 current PPM: 36 cumulative PPM: 21
real sample rate: 2047986 current PPM: -6 cumulative PPM: 17
real sample rate: 2048079 current PPM: 39 cumulative PPM: 20
real sample rate: 2048108 current PPM: 53 cumulative PPM: 23
real sample rate: 2048037 current PPM: 18 cumulative PPM: 23

Pour arrêter le processus un petit Ctrl C et c est bon …

Installation du décodeur software AIS

cd ~
git clone https://github.com/dgiardini/rtl-ais
cd rtl-ais
make

Test du Serveur AIS

./rtl_ais -p 35 -n -h 192.168.1.15

-p 35 : Deviation en PPM vu dans le log de calibration.
-n : Log AIS messages to console.
-h : Adresse IP de l’ordinateur destinataire des données AIS équipé de OpenCPN, MaxSea, Adrena, QtVLM, ScanNav, MacENC …