Bu yazıda; on sene önce çalıştığım şirkette bir prototipini gerçekleştirdiğimiz, ancak "paradigma kayması" nedeniyle devam ettirmediğimiz "amatör işi" bir AIS alıcısı ve data yorumlayıcısının kabaca bir tarifini vereceğim. Yazıya özetin özeti desem yeridir. Tüm ayrıntıları forum ortamında aktarmam mümkün değil. Aslında kaynakları verdiğim sürece ayrıntıları aktarmam gerekli de değil. "Haa böyle de bir şey varmış" dedirtse yazı amacına ulaşmış olur. Konu, üzerinden hayli zaman geçtiği için anlamını yitirmiş gibi görünse de ilginç olabilir.
Yazıda bahsedilen uygulamaları gerçekleştirebilmek için başlangıç seviyesinde elektronik ve programlama işlerine âşina olmak yeterli.
Yazıya bir takım kavramları açıklayarak başlayalım.
AIS Nedir? Automatic Identification System (tr: Otomatik tanımlama sistemi)
En kaba tarifle, belli büyüklükteki tüm deniz taşıtlarının bulundurması zorunlu bir kısa mesafe iletişim donanımı. Denizde yüzer durumdaki ticari -yolcu/yük- gemilerin %99'unda bulunmak zorunda.
AIS'e kısaca; NMEA 0183 veri protokolünün varyasyonlarını kullanarak deniz taşıtlarının birbiriyle iletişim kurabilmesini sağlayan bir deniz taşıtı plakası da diyebiliriz.
AIS; geminin konumu, yükü, rotası, boyutları hakkında bilgiler yayımlamak zorundadır. Bu bilgilerin bazıları gemi personeli tarafından elle girildiğinden çoğu durumda doğru olmayabilir. Ancak deniz taşıtının konum verilerini doğru olarak yayımlamakla zorunlu olduğundan, yayımladığı konum ve hız bilgileri konusunda şüphe etmeye gerek yoktur. Tahmin edilebileceği gibi hız verisini konumlar arasını hesaplayarak buluyoruz.
Ek olarak günümüzde tüm AIS donanımları MMSI numarası ile hedeflenen bir gemiye kısa ileti gönderebilmeye imkan tanır.
AIS'i açık olmayan bir deniz taşıtı, sahil güvenlik tarafından tutuklanabilir. Yani AIS'iniz kapalı durumda seyir yapıyorsanız denizde plakasız dolaşıyormuşsunuz gibi muâmele görürsünüz.
AIS verilerini okumanın anlamı nedir? Belli bir alandaki deniz trafiğinin tümünü dinleyebilmek olarak özetlenebilir.
Profesyonel AIS alıcıları ve gönüllü veri kaynaklarıyla bu işi yapan internet siteleri var:
http://www.marinetraffic.com/tr/http://www.vesselfinder.com/trBu siteler, AIS verilerini gönüllü kullanıcıların yayımlarından ve piyasada satılan AIS alıcılarından oluşturdukları ağlardan temin ederler. AIS işaretlerinin menzili oldukça düşüktür. İyonosfer'e anten asabilseniz dahi en fazla 480km çapında bir alanı dinleyebilirsiniz. Karada 15m yükseklikten en fazla 80km çapında bir alanı dinleyebilirsiniz. Uygun durumda standart AIS donanımları da ancak bu mesafeyi tarayabilirler. Bu nedenle AIS verilerini dinleyerek deniz trafiğini gözlemlemek sahilden 50-60km açığa kadar etkili olabilecek bir yöntemdir.
Bizim sırrımız, yani yazının aktarılma amacı AIS verilerini temin etme yöntemimizde saklı. Herhangi bir AIS alıcısı kullanmadan verileri karadan alıp, çözümleyebiliriz.
Bir AIS donanımı, temelde belli telsiz frekanslarına bindirilmiş -GMSK modülasyonu- veri paketlerini decode/encode edebilen bir alıcı/vericidir. Yani AIS donanımının çalışma frekanslarını bir şekilde dinleyebilirsek veri paketlerinin içinde bulunduğu telsiz işaretlerini de alabiliriz.
Tüm bu yazının gerekçesi de zaten pahalı AIS donanımları yerine -son 4-5 yıldır ucuzları da var- bu işi elimizde hali hazırda varolan basit el telsizleriyle yapabiliyor oluşumuz (elbette biraz bozarak).
Özellikle denizde kullanılmak üzere tasarlanmış, deniz tipi el telsizlerinin büyük çoğunluğu işimizi görecektir. Tek kıstasımız, telsizin PCB'sinde bir discriminator devresinin olması. Bu devrenin telsizin durumuna -marka, model- göre bir bacağından alacağımız "ham ses verisi" AIS veri paketlerini içeriyor.
Elinizdeki telsizin bu devreye sahip olup olmadığını, varsa bile hangi bacağından veriyi alabileceğinizi öğrenmek için tasarlanmış bir internet sitesi mevcut (sitede Receivers -> Marine VHF). Siteyi tümüyle bilgisayarınıza indirmenizde fayda var. Zira kaybolabilir
http://www.discriminator.nl/index-en.html Sitede tüm telsiz modelleri yok. Ancak oldukça fazla çeşit var. Elinizdeki telsiz oradaki listede yoksa bile discriminator devresi muhtemelen generic bir marka olacağından farklı telsizlerdeki devreleri kontrol edebilirsiniz.
Sizi siteye yönlendirdiğimde inceleme fırsatı bulduysanız, sitenin tam da yapmak istediğimiz işe yönelik tonlarca bilgi içerdiğini görmüşsünüzdür. Bu noktadan sonra isterseniz oradan devam edebilirsiniz. Zira hemen hemen aynı işleri farklı biçimlerde yapacağız.
...
Bu yazıya geri döndüyseniz DISCRIMINATOR.NL'den yardım alarak telsizinizi modifiye ettiğinizi farzediyorum (ya da henüz hiç bir şey yapmadan sadece okuyorsunuz).
Telsizin standart alıcı anteninin menzili oldukça düşüktür. Yine de sahile yakın yüksekçe bir konumdan bir çok gemiyi dinlemeniz mümkün. Anteni biraz masrafla geliştirmek isterseniz deniz tipi dikey kamçı anten kullanabilirisiniz (ya da Coaxial Collinear).
Anteninizi uygun bir konuma getirip telsizinizi 88. kanal 162 Mhz'e ayarlayın ve dinlemeye başlayın.
Bu esnada devrenin bacağından aldığınız ham ses verisini bir jakla ses kartının line-in veya mikrofon girişine verip bilgisayarda işleyeceğiz (bunu zaten discriminator.nl'den gördüğünüz şekliyle yapmış olmalısınız). İsterseniz bir kaç dakikalık bir örnek kaydedebilirsiniz (Audacity kayıt ve ses işleme için gayet iyi bir yazılımdır).
Telsizden ses verisini kaydedebiliyorsanız şimdi sıra geldi frekansa bindirilmiş sayısal veri paketlerini açığa çıkarmaya. Bu noktada aşağıdaki türde bedava ve açık kaynaklı yazılımlar kullanabilirsiniz.
http://gnuais.sourceforge.net/http://forum.aishub.net/ais-decoder/ais-decoder-beta-release/Bu mini yazılımlar telsizinizle bilgisayarınıza kaydettiğiniz ham ses verisinden GMSK dataları kolayca ayırmanızı sağlar ve size ASCII paketleri çıktılarlar (bu paketlerin de ayrıştırılması gerekiyor).
Harita desteği olan, yani baştan sona her işi kendisi yapan ticari bir uygulama ararsanız ShipPlotter(
http://www.coaa.co.uk/shipplotter.htm) bu iş için biçilmiş kaftan.
ShipPlotter benzeri farklı ticari/hobi alternatifler bulunabilir.
Biz manuel yoldan devam edelim ve örneğin GNUAIS ile sesten AIS veri paketlerinin ayrıştırılması ve son kullanıcı verilerine dönüştürülmesi işine odaklanalım.
GNUAIS düzgün çalışıyorsa "!AIVDM,1,1,,A,13u?etPv2;0n:dDPwUM1U1Cb069D,0*24" gibi ASCII veri paketlerini ham ses verisinden süzebiliyor olmalısınız. GNUAIS bu veri paketlerini bir MySQL veritabanına kaydedecektir (elbette text dökümanı olarak çıktılamasını sağlayabilirsiniz).
!AIVDM,1,1,,A,13u?etPv2;0n:dDPwUM1U1Cb069D,0*24
!AIVDM,1,1,,A,18UG;P0012G?Uq4EdHa=c;7@051@,0*53
!AIVDM,2,2,0,B,00000000000,2*27
Bu tür paketleri nasıl açıp okuyabileceğinizi anlatmayacağım, onun yerine bu ve benzeri paketleri anlaşılabilir verilere dönüştürmeyi öğrenebileceğiniz bir kaynak vereceğim:
http://catb.org/gpsd/AIVDM.htmlSayfa, bu verilerin nasıl yorumlanacağını öğrenebileceğiniz halka açık ve kapsamlı tek yer. Burası varolmasaydı muhtemelen NMEA0183 ve NMEA2000 için spesifikasyon, uygulama dökümanlarını iyice araştırıp satın almanız gerekecekti (IMO, ITU, SOLAS Rec.). Hangi dökümanın ne kadar eksik, doyurucu ve kapsamlı olduğunu, tüm dökümanları iyice idrak etmenin ne kadar zaman alacağını, işin ne kadara patlayacağını hiç sormayın.
Halka açık dökümanı geliştiren Eric S. Raymond'u linux'cular yakından tanıyacaklardır, kendisine bu eforu için teşekkür ederim... (muhafazakar bir bireysel silahlanma destekçisi olsa da)
ASCII veri paketlerini de ayrıştırdık.
Ayrışan veri paketleri artık gemiler hakkında gözle görülür bilgiler sunuyor olmalı.
Yazıyı bitirirken, şimdiye kadar uyguladığımız her şeyin hava taşıtları için de uygulanabileceğini söylemek isterim. Zira hava taşıtlarında da AIS yerine benzer işi, benzer tekniklerle gerçekleştiren ADS-B donanımı mevcuttur. Tabii çalışma frekansları ve uçak tiplerine göre veri paketlerinin decode edilmesi işi biraz farklıdır.
Önemli not: Bu yazıyı temel alarak yaptığınız işler elinizdeki çalışır malzemeye zarar verebilir. Çok dikkatli ve yaptığınız işin farkında olmanızda fayda var.Okuduğunuz için teşekkürler.
Kaynaklar:
http://catb.org/gpsd/AIVDM.htmlhttp://www.discriminator.nl/index-en.htmlhttp://rl.se/aivdmhttp://forum.aishub.net/ais-decoder/ais-decoder-beta-release/http://www.rtl-sdr.com/rtl-sdr-tutorial-cheap-ais-ship-tracking/http://sharpais.codeplex.com/http://ais.tbsalling.dk/