ESP WSPR – Basit ve Ucuz WSPR Vericisi
ESP WSPR – ESP8266 ve SI5351 ile Gerçekleştirilmiş Basit ve Ucuz bir WSPR Vericisi
- “Bir Fısıltı Macerası…” yazımda sizlere WSPR ile olan maceramı ve ESP_WSPR vericisini nasıl biraraya getirip programlayıp çaliştirip denediğimi hikâye etmeye çalıştım.
Bu yazımda ise sizlerin kendi ESP_WSPR, WSPR vericilerinizi yapmanız için gereken bilgileri aktarmaya çalışacağım.
ESP_WSPR, Espressif firmasının ESP8266EX entegresini kullanan modüllerle ile Silicon labs firmasının SI5351A entegresini bir araya getirip WSPR – Weak Signal Propagation Protokolünü kullanarak yayın yapan ucuz ve basit bir verici.
ESP8266EX Espressif firmasının ürettiği içinde tüm wifi protokolü ile ARM işlemcisi olan bir modül.
https://www.espressif.com/en/products/hardware/esp8266ex/overview
Bu modül ile WIFI routerınıza bağlanabilirsiniz ve internet üzerinden haberleşebilirsiniz.
SI5351A ise Silicon Labs firmasının ürettiği bir Digital Controlled PLL Entegresi. PLL (Phase Locked Loop) Türkçeye Faz kilitlemeli çevrim olarak kabaca çevrilebilir. SI5351A üç adet çıkışından PLL kontrollü, 8khz ile 160 Mhz arasında hertz çözünürlüğünde frekans kontrolü sağlayan kare dalga sinyal üretir. Bu entegrenin ana kullanım amacı bilgisayar sistemlerinde ihtiyaç duyulan farklı saat frekanslarını bir Kristal osilator ile üretmektir.
SI5351A amatör telsizciler arasında oldukça popüler bir entegre ve genelde VFO- değişken frekans osilatörü olarak kullanılıyor.
https://www.silabs.com/documents/public/data-sheets/Si5351-B.pdf
ESPWSPR şemasını inceleyerek başlayalım:
ESPWSPR üç ana modül ya da bolümden oluşuyor.
- WEMOS D1 mini ESP8266 modülü
- SI5351 modülü
- Alçak geçiren filtre
ESP8266 için WEMOS D1 mini modülü elimde vardı onu kullandım. WEMOS D1 mini modülü www.aliexpress.com veya Turkiyede www.direnc.net ve www.N11.com sitelerinden temin edilebilir. Herhangi bir ESP8266 NODEMCU modülü de kullanılabilir.
SI5351A modülü www.aliexpress.com da mevcut. Türkiye’de www.direnc.net ve www.N11.com sitelerinden de temin edilebilir. Fiyatı yaklaşık 5 dolar kadar.
SI5351A çıkışı kare dalga ve direk olarak antene verdiğinizde çok fazla harmonik üretir. Bunu önleyip çıkış sinyalini kare dalgadan temiz bir sinüs sinyale dönüştürmek için SI5351 çıkısında 7 noktalı bir alçak geçiren filtre kullanılıyor.
Alçak geçiren filtre için QRP Labs sitesindeki değerleri 14 mhz için kullandım.
https://www.qrp-labs.com/lpfkit.html
QRP Labs işin ilginci Türkiye’de Muğla Dalyan’da yaşayan bir İngiliz amatör telsizci. Filtre kitlerini 4,60 dolara satıyor. Daha kolayınıza giderse oradan da ısmarlayabilirsiniz.
Ben 20 metre/14 Mhz bandını seçtim. Bunu seçme sebebim anten boyutu nispeten daha küçük ama propagasyon şartları daha yüksek frekanslı bantlara göre daha iyi olması. Bu anlatımda 14mhz/20 metre bandını esas alacağım.
Arzu edilirse diğer bantlarda filtre kullanılarak ve yazılım içindeki frekans değerini değiştirerek 144 mhz’e kadar tüm bantlarda çalışabilir ESP_WSPR.
ESP_WSPR nominal RF çıkış gücü 50 ohm yük altında 10 miliwatt kadardır.
Devre oldukça basit olduğu için baskılı devreye gerek kalmadan delikli pertinaksa kurulabilir
Delikli pertinaksa monte edilmiş devre resimdeki gibi oldukça basit ve küçük bir formda.
Alçak geçiren filtre için toroid bobinler AMIDON firmasının T37-6 tipi. L1 ve L3 bobinleri 0.30 mm lik telden 16 sarim. L2 bobini ise 0.30 mm’lik telden 17 sarim.
Toroid detayları aşağıdaki linkte:
http://www.amidoncorp.com/t37-6/
YAZILIM:
ESP_WSPR programını Arduino ile programlamadan önce birkaç adımı atmamız lazım.
Bunu gerçekleştirmek için basit de olsa Arduino ortamıyla tanışmış olmanız işleri çok kolaylaştırır. Arduino ile ilgili internette bir alay site ve doküman mevcut. Eğer hiç Arduino ile uğraşmadıysanız ESP_WSPR isine girişmeden önce Arduino ile uğraşmanızı tavsiye ederim. Yoksa bolca uykusuz geceler ve error yani hata mesajlarıyla uğraşmak zorunda kalırsınız.
Bu işlemler için bu yazıda detaylı bilgi vermekten kaçındım. Aksi takdirde yazımız epey uzun ve karmaşık bir hal alır. Bunun yerine bu işlemleri detaylı anlatan linkler ile bu yazıyı desteklemek daha mantıklı geldi.
- İlk adım Arduino IDE programını indirip bilgisayarınıza kurun.
https://www.arduino.cc/en/Main/Software
Arduino sitesinden indirip kurabilirsiniz.
- İkinci adım kurduğunuz Arduino IDE programına ESP8266 işlemcili modül kartlarını tanıtmak
https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/
Bu site hem görsel hem de açıklamalarla bu işlemi nasıl gerçekleştireceğinizi anlatıyor.
- Kütüphaneler(library): ESP_WSPR birkaç adet modül ve fonksiyon kütüphanesinden yararlanıyor.
Bu kütüphaneler önceki yazımda bahsettiğim gibi amatör telsizciler ve bu ise gönül vermiş insanlar tarafından hazırlanıp Arduino dünyasına hediye edilmiş yazılımlar. Biz amatör telsizciler ve uygulayıcılar bu kütüphaneleri programlarımızda işimize en uygun şekilde kullanıyoruz. Tabii bu bize korkunç bir emek ve zaman kazancı anlamına geliyor.
Bu hazır kütüphaneleri kullanabilmek için öncelikle Arduino yazılımına bunları tanıtmanız gerek.
Aşağıdaki link size bu işlemi nasıl gerçekleştireceğinizi detaylı bir şekilde anlatmaktadır.
https://www.arduino.cc/en/guide/libraries
Ben tüm gerekli kütüphanelerin zip dosyalarını ESP_WSPR programıyla birlikte yazının sonuna koyacağım ama siz en son versiyonlarını yüklemek isterseniz diye linkleri de aşağıda veriyorum.
ESP_WSPR şu Kütüpaneleri (Library) kullanır:
SI5351 – Bu SI5351 modülünü kullanmak için gerekli kütüphane. Bunun için NT7S Jason Mildrum tarafından yazılmış kütüphaneyi kullandım.
https://github.com/etherkit/Si5351Arduino
Wire – Arduino içinde hazır bulunan bir kütüphane. Kurmanıza gerek yok.
JTEncode – Bu en önemli kütüphanelerden biri. Amacı wspr protokolü için gerekli datayı oluşturup yollamaya hazır hale getirip saklamak. Bu kütüphanede gene NT7S Jason Mildrum tarafından yazılmış.
https://github.com/etherkit/JTEncode
int – int Arduino içindeki bir kütüphane yüklemenize gerek yok.
NTPtimeESP – NTPtimeESP Network Time Protocol serverlarla zaman senkronizasyonunu sağlayan kütüphane.
https://github.com/SensorsIot/NTPtimeESP
TimeLib – Zaman kontrolünü sağlayan kütüphane.
https://github.com/PaulStoffregen/Time
ESP8266WIFI ve WIFIClient ESP8266 nin internete bağlanıp verilere erişmesini sağlayan kütüphaneler. Bu kütüphaneler ESP8266 modülünü tanıttığınız da Arduino’ya otomatik olarak yüklendiği için ayrıca yüklenmesine gerek yok.
(Resim ESP_WSPR kütüphaneler)
ESP8266 Board Seçimi:
Arduino içindeki Tools kısmından Board’a tıklayarak NodeMCU 1.0(ESP12-E Module) seçin.
(Resim: ESP board seçimi)
- Şimdi bu noktada WEMOS D1 Mini veya benzer modülünüzü USB üzerinden bağlayın PC’nize.
Artık Seri haberleşme portunu seçebiliriz. Gene tools menüsünde Port a tuşlayarak uygun Com portu seçin. Arduino ide ekranının sağ alt kösesinde seçtiğiniz com portu görmeniz lazım. Bu sizin ESP8266’ya program yollamanızı sağlayacak. Aynı zamanda devrenin çalışmasını Tools altındaki Serial Monitor ekranını ve ilgili programın baud rate’ini kullanarak izleyebileceksiniz.
(Resim: Seri com port secimi)
Buraya kadar Arduino IDE programını ESP_WSPR ve ESP8266 için hazırlayıp kurduk.
Bu noktada ilk programınızı yükleyip monte ettiğiniz ESP_WSPR çalışıyor mu test etme zamanı geldi.
Bunun için en az 25 mhz band genişliği olan bir osiloskop ve hassas bir en az 25 MHZ frekans metreye ihtiyacınız olacak. Osiloskop sinyalin ne derece temiz olduğunu görmek için, Frekans metrede WSPR frekansını görmek ve SI5351 kalibrasyon ayarını yapmak için gerekli. Birde basit bir 50 ohm suni yükünüz varsa hazırsınız test’lere!
İlk Test:
Bunun için kurduğunuz devrenin alçak geçiren filtresinin çıkışını bir 50 ohm yükle kısa devre edin. Daha sonra bu çıkışı osiloskop ve frekans metreye paralel bağlayın.
Ardından ekteki zip dosyasından ESP_WSPR_SINUS_URETECI.ino dosyasını Arduinoya yükleyin ve ESP8266’yi programlayın. Çalıştırdığınızda 14.000,000 mhz’e yakin temiz bir sinus sinyal görmeniz lazım. Bunu görüyorsanız yaptığınız devre sınıfı geçti! Tam 14.000,000 mhz görmemeniz çok normal.
İlk çalıştırdığımda çıkış sinyalinin kayık olduğunu gördüm.
Aşağıdakine benzer bir sinüs dalga görmeniz lazım osiloskopunuzda. Gördüğünüz gibi 14.000300 mhz yani 300 hz kayık sinyalim. Şimdi bu kayıklığı tam 14.000000 Mhz olacak şekilde kalibre edeceğiz.
(resim:14.000,03 mhz scope)
SI5351 Frekans Kalibrasyonu:
SI5351 arduino kütüphanesindeki örnekler arasında kalibrasyon (ölçümleme) için harika bir program var. Onu kullanarak kalibrasyon değerini tam 14.000,000 Mhz olacak şekilde ayarlayıp bir kenara not edeceksiniz. Bunu ilk çalıştırmada her SI5351 modülü için bir kere yapmanız lazım. Sebebi de kullanılan osilator kristalinin değeri her modul için farklı ve bu farkı kompanse etmek için SI5351 içinde bir kalibrasyon sabiti var. Bunu not edip esp_wspr programında kullanacağız.
Ben kalibrasyon programını biraz değiştirdim. İsterseniz onu kullanın. Ekteki zip dosyasında SI5351_FREKANS_KALIBRASYON.ino isimli dosya. Bu dosyayı Arduino ile açtığınızda ve ESP8266 içine programladığınızda size çıkış sinyalinizi kalibre etme imkani tanır.
Bunu yapmak için Arduino içindeki serial monitor uygulamasını çalıştırın. esp8266 usb portunda bağlı olmalı ve doğru port seçilmiş olmalı Serial Monitor çalıştırılmadan önce.
Serial monitor baud rate hızını 115200 pbs’ye ayarlayıp WEMOS D1 mini üzerinde ki reset tuşuna kısa süre basıp çekin.
Aşağıdaki ekranı görmeniz lazım:
(resim: kalibrasyon ekranı)
Devrenin anten çıkışını bir suni yük yani dummy load’a bağlayın. Aynı anda osiloskopunuza ve frekans metrenize de bağlayın.
Bu arada alçak geçiren filtreyi henüz monte etmediyseniz dert değil, direk olarak SI5351 ilk çıkışını bir Osiloskop ve frekans metreye bağlayıp sinyal frekansını gözleyin. Sinüs yerine kare dalgaya yakın bir çıkış sinyali gözlersiniz.
Ekranda up down ile gösterilen klavye tuşlarıyla oynayarak frekansı tam 14.000,000 mhz olacak şekilde ayarlamaya çalışın.
P ve ; tuşları frekansı 10 khz arttırır veya azaltır. r ve f tuşları ise 0.01 hz arttırır veya azaltır. Diğer tuşlarda ekranda gösterildiği oranda frekansı aşağı veya yukarı çıkarmanızı sağlar.
Amaç bu tuşlarla mümkün olduğu kadar 14.000,000 mhz’e ulaşmak.
Diyelim ki tam 14.000,000 mhz gördünüz frekans metrede veya osiloskopta (bugün modern dijital osiloskopların çoğunda hassas frekans ölçme fonksiyonu mevcuttur).
Frekans tam 14 mhz’de ve siz de tatmin oldunuz bu sonuçtan o zaman q tuşuna basın. Calibration factor is 20000 yazan kısımdaki sayıyı not edin bir kenara. Ben örnek olarak 20000 seçtim sizinki ayarınıza göre bambaşka bir sayı olacaktır. Not ettiğiniz bu sayı sizin Si5351 modülünüz için kalibrasyon katsayınız. SI5351 kristal sapmasını bu sayı kompanse edip gerçek frekansı üretecek.
ESP_WSPR Yazılımı:
Artık ESP_WSPR yazılımını yüklemeye hazırız.
Ekteki zip dosyadan ESP_WSPR_ver_3_006.ino adli programi Arduino IDE ‘ye yükleyin.
Bu noktada Kalibrasyon kat sayısı, WIFI SSID ve şifresini ve kullanıcı bilgilerini programa gireceğiz. Bunu bir kereye mahsus yapacaksınız. Bu bilgiler ESP8266 içinde kaydedilecek programlama esnasında.
(resim: ESP_WSPR_3.006 kullanici parametreleri)
Yukarıdaki ekranda görüldüğü gibi daha evvel not ettiğiniz Kalibrasyon katsayısını cal_factor’a girin. Bu artık frekans sapması olmadan çıkış yapmanızı sağlayacak.
Aynı şekilde SSID yerine kendi wifi router SSID’iniz ve altına WIFI şifrenizi, call yerine kendi çağrı kodunuzu girin. Bunları “ “ arasına gireceksiniz unutmayın! Kalibrasyon katsayısını 0 olan yere sıfırı silip girin.
Loc kısmına ise Maidenhead Grid locator konumuzun ilk dört harfini gireceksiniz.
Maiden head grid locator bilgisini bu siteden elde edebilirsiniz: https://dxcluster.ha8tks.hu/hamgeocoding/
Programlamadan once devrenin anten çıkışını bir suni yük yani dummy load’a bağlayın.
Şimdi programınızı derleyip, ESP8266’yi programlayın.
ESP_WSPR’ı denemeye hazırız.
Devrenin anten çıkışını bir suni yük yani dummy load’a bağlayın. Aynı anda osiloskopunuza ve frekans metrenize de bağlayın.
Tools altından Serial Monitoru açın ve 115200 baud seçin. Kısa süre ESP8266 modulu üstündeki reset tuşuna basın.
Aşağıdaki gibi bir ekran ile çalışmaya başlar ESP_WSPR.
Bu arada ESP8266 modülü üzerindeki mavi led kısa aralıklarla yanıp sönmeye başlar, bu WIFI ağınıza bağlanmaya çalıştığını gösterir. WIFI bağlantısı kurulduğunda mavi led söner. Eğer mavi led uzun süre yanıp sönmeye devam ederse WIFI bağlantınız da bir sorun var demektir ve devre bağlanamıyor. Programınız içindeki girdiğiniz WIFI SSID ve PASSWORD kısımlarını kontrol edin. Doğru girmiş misiniz?
(resim: ESP_WSPR TX ekranı)
WIFI bağlantısı kurulduktan sonra ESP_WSPR NTP server ile zaman senkronunu sağlar. Her zaman senkronu anında mavi led kısa bir sure yanıp söner.
Ardından SI5351 modülü wspr verisini göndermek için hazırlanır. ESP_WSPR tam çift zamanlı saat dakikasını beklemeye baslar yollamaya başlamak için. Yollamaya başladığında mavi led yanar ve yollama işlemi bitene kadar yanık kalır. Bu işlem 110 saniye sürer. Yollama ledi yanmadan 30 saniye önce verici sabit carrier yollayarak devrenin ısıl stabilitesini sağlar. Gönderme boyunca sinyali oslioskop ve frekans metreden takip edebilirsiniz.
Devre bu işlemden sonra tekrar NTP serverla irtibat kurarak wifi üzerinden yeni bir zaman senkronu sağlar. Bunu yaparken mavi led kısaca yanıp söner.
ESP_WSPR 4 dakika boyunca uykuya geçer. Dört dakika sonunda ESP_WSPR uyanır ve yeni bir WSPR datası yollamaya başlar. İşlem bu şekilde devam eder.
Eğer NTP server bağlantısı sırasında mavi led sürekli yanık kalırsa wifi üzerinde bir yavaşlama veya sorun var demektir. ESP8266 reset tuşuna kısaca basıp sistemi resetleyin. Eğer sorun devam ediyorsa wifi sisteminizi kontrol edin. Bağlanma sorunu var demektir.
Size ESP_WSPR, ucuz ve basit bir WSPR vericisi nasıl gerçekleştirilir anlatmaya çalıştım. Umarım bu devreyi gerçekleştirip WSPR SPOT’lari arasına kendi çağrı işaretinizi eklersiniz.
Burada sözünü ettiğim tüm kütüphaneleri ve SI5351 ve ESP_WSPR’la ilgili tüm yazılımları ESPWSPR yazılımlar dosyasında bulabilirsiniz.
Sonuç:
ESP_WSPR ve genel olarak Weak Signal Propagation Reporter – WSPR ile uğraşmak bana sonsuz keyif verdi. İlk sinyalinizin komik sayılabilecek bir güçle binlerce kilometre ötelere ulaştığını gördüğünüzde umarım siz de benim duyduğum heyecanı duyarsınız.
Beni bilgiyle destekleyen ve denemelerimde yardımcı olan dostlarım K1FM Alain DeCoralis ve KD2RCP Çağlar Akgüngör’e teşekkür etmek istiyorum. Onlar sayesinde WSPR ve antenler konusunda çok şey öğrendim.
ESP8266 ile wspr programının temelini atan IW5EJM Marco’ya da teşekkür borçluyum. Onun programı olmasaydı uykusuz geceler artacaktı.
Tüm open source yazılım ve Arduino camiasına saygı duyuyorum. Open source felsefesi olmasa bu tip yazıları yazmak mümkün olmazdı.
Sevgiyle kalın,
Barbaros Aşuroglu, WB2CBA, New York, 17/12/2019