Difference between revisions of "WSPR: RaspberryPi"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) (→Credit) |
||
(28 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
− | + | [[Image:LPF.png|center|500px|thumb|LPF untuk QRP Transmitter dari http://www.gqrp.com/harmonic_filters.pdf]] | |
− | |||
− | |||
− | |||
− | + | Membuat WSPR beacon sederhana dengan RaspberryPi dengan menyambungkan GPIO port ke Antenna (dan Low Pass Filter), dapat beroperasi di band LF, MF, HF, dan VHF dari 0 s/d 250 MHz. | |
− | + | Source yang ada sekarang ini compatible dengan Raspberry Pi dan Raspberry Pi 2. | |
− | kernel | + | |
+ | ==Hardware== | ||
+ | |||
+ | Penampakan hasil solderan :) | ||
+ | |||
+ | |||
+ | [[Image:Wspraspi-1.png|center|200px|thumb|Low Pass Filter 21MHz]] | ||
+ | |||
+ | [[Image:Wspraspi-2.png|center|200px|thumb|WSPR RaspberryPi dengan LPF 21MHz]] | ||
+ | |||
+ | [[Image:Wspraspi-3.png|center|200px|thumb|Switching Power Supply 5V 3A casing jala untuk operasi 24 jam RaspberryPi]] | ||
+ | |||
+ | |||
+ | ==Komponen dan Peralatan yang dibutuhkan== | ||
+ | |||
+ | Komponen semua ada di Lindetives Glodok / Tokopedia | ||
+ | |||
+ | * RaspberryPi - Rp. 500.000-an | ||
+ | * SD Card (2-4Gb yang besar) untuk sistem operasi Raspbian - Rp. 50.000-an | ||
+ | * Switching Power Supply 5V 3A - Rp. 80.000-an | ||
+ | * Kabel USB charger - Rp. 10.000-an | ||
+ | * Kabel USB Extender - Rp. 10.000-an | ||
+ | * Connector Coax Female untuk body - Rp. 25.000-an | ||
+ | * 100nF | ||
+ | * 82pF (2 buah) | ||
+ | * 220pF (2 buah) | ||
+ | * Koker untuk koil (3 buah) | ||
+ | * Kawat kecil / kawat email | ||
+ | * Kabel Jumper (Rp. 20.000 isinya banyak banget) | ||
+ | * PCB prototyping (yang bolong2) | ||
+ | * Box Plastik buatan dalam negeri yang agak besar (atau box makanan juga OK) | ||
+ | |||
+ | ===Alat=== | ||
+ | |||
+ | * Solder | ||
+ | * Timah | ||
+ | * Multimeter | ||
+ | * Capacitance / Inductance Meter (kalau ada) | ||
+ | * Tang Potong | ||
+ | * Cutter | ||
+ | * Pengupas Kabel | ||
+ | |||
+ | ==Instalasi== | ||
+ | |||
+ | Pastikan kita menggunakan kernel yang terakhir dengan cara mengupdate sistem yang kita gunakan. Kernel terakhir termasuk berbagai perbaikan yang memperbaiki keakuratan pengukuran ppm menggunakan NTP. | ||
+ | |||
+ | Lakukan: | ||
sudo apt-get update | sudo apt-get update | ||
sudo apt-get dist-upgrade | sudo apt-get dist-upgrade | ||
− | Download | + | Download dan compile code: |
sudo apt-get install git | sudo apt-get install git | ||
Line 26: | Line 69: | ||
make | make | ||
− | + | Baca file BUILD untuk detail lebih lanjut. | |
+ | |||
+ | |||
+ | ==Penggunaan (WSPR --help output):== | ||
− | + | Penggunaan | |
wspr [options] callsign locator tx_pwr_dBm f1 <f2> <f3> ... | wspr [options] callsign locator tx_pwr_dBm f1 <f2> <f3> ... | ||
− | + | atau | |
wspr [options] --test-tone f | wspr [options] --test-tone f | ||
− | + | Opsi: | |
− | + | ||
-h --help | -h --help | ||
Print out this help screen. | Print out this help screen. | ||
Line 59: | Line 105: | ||
for testing only. | for testing only. | ||
− | + | Frekuensi yang digunakan dapat menggunakan Frekuensi absolut dari TX carrier, atau menggunakan string berikut. Jika string digunakan, maka pancaran akan dilakukan di tengah-tengah dari wilayah WSPR dari band terpilih. Pilihan string, | |
− | + | ||
− | |||
− | |||
LF LF-15 MF MF-15 160m 160m-15 80m 60m 40m 30m 20m 17m 15m 12m 10m 6m 4m 2m | LF LF-15 MF MF-15 160m 160m-15 80m 60m 40m 30m 20m 17m 15m 12m 10m 6m 4m 2m | ||
− | '''-15 | + | '''-15 menunjukan bagian WSPR-15 dari band''' |
− | + | Jika kita tidak ingin memancar, atau membuat gap antar satu pancaran dengan pancaran yang lain, kita dapat melakukan dengan menyebutkan frekuensi TX sebagai 0. | |
− | + | Perlu di catat bahwa 'callsign', 'locator', dan 'tx_power_dBm' akan langsung digunakan untuk mengisi field yang ada pada WSPR message. Biasanya, tx_power_dBm yang digunakan adalah 10, yang merepresentasikan dari power yang dikeluarkan oleh RaspberryPi. Set nilai ini jika kita menggunakan external amplifier. | |
− | |||
− | |||
− | |||
− | ==Radio | + | ==Lisensi Radio / RF== |
+ | Agar kita dapat memancar secara legal dalam experimen ini, kita harus memiliki lisensi amatir radio / ORARI. Karena sinyal output adalah sinyal kotak (square wave), maka kita HARUS memasang Low Pass Filter (LPF). Sambungkan LPF (via C coupling) ke pin GPIO4 (GPCLK0) dan GND yang merupakan pin 7 dan 9 pada header P1. Pin terdekat dengan label P1 adalah pin 1, dan tetangga ke 3 dan 4-nya adalah pin 7 dan 9. | ||
− | + | Untuk melihat pin layout kita dapat menggunakan http://elinux.org/RPi_Low-level_peripherals . Sementara contoh Low Pass Filter (LPF) dapat dilihat di http://www.gqrp.com/harmonic_filters.pdf | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Power output yang akan keluar dari RaspberryPi adalah 10mW (+10dBm) pada beban 50 Ohm. Tampaknya ini kecil sekali, tapi jika kita sambungkan ke antenna dipole sederhana ini akan dapat mencapai beberapa ribu kilometer. | |
− | |||
− | |||
− | + | Karena RaspberryPi tidak meredam ripple dan noise dari power supply 5V USB, sangat DISARANKAN untuk menggunakan switching power supply yang baik yang mempunyai kemampuan untuk menekan ripple. Ripple dari power supply akan terlihat sebagai hasil mixing dari transmit carrier sekitar 100/120Hz. | |
− | 5V USB power supply | ||
− | |||
− | |||
− | + | JANGAN SAMPAI memberikan GPIO4 ke Tegangan dan Arus di atas Maksimum Limit. GPIO4 mengeluarkan digital clock dengan 3V3 logic, dengan maksimum arus 16mA. Tidak tersedia proteksi arus dan ada komponen DC 1.6V. | |
− | + | ||
− | + | JANGAN PERNAH men-short circuit dan penempatkan dummy load langsung pada GPIO4 pin, karena akan menarik banyak arus. Sebaiknya, gunakan coupling capacitor untuk membuang komponen DC-nya sebelum menyambungkan ke dummy load, transformer, antenna dll. | |
− | + | ||
− | + | JANGAN PERNAH mengekspose GPIO4 ke tegangan elektro-statik atau tegangan yang melebihi range logik 0 - 3.3V, menyambungkan antenna langsung ke GPIO4 akan menyebabkan kerusakan pada RPi karena tegangan transient karena petir, statik atau RF dari pemancar dekat antenna kita. Oleh karenanya sangat di REKOMENDASIKAN untuk menambahkan isolasi, dengan menggunakan RF transformer, buffer / driver / PA sederhana, atau dua small signal schottky diode back to back seperti 1N914 (atau 1N4148). | |
− | |||
− | |||
− | |||
− | antenna | ||
− | |||
− | |||
− | |||
− | |||
==TX Timing== | ==TX Timing== | ||
− | + | Software ini menggunakan system time untuk menentukan kapan mulai pancaran WSPR, untuk memastikan system time sinkron dengan presisi 1 detik kita dapat menggunakan sinkronisasi NTP (Network Time Protocol) atau set waktu secara manual menggunakan perintah date. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Sebuah broadcast WSPR akan mulai pada menit genap dan akan membutuhkan 2 menit untuk WSPR-2. Sementara untuk WSPR-15 akan mulai pada :00, :15, :30,:45 dan akan membutuhkan 15 menit untuk setiap beacon. Setiap pancaran akan berisi callsign, 4 digit Maidenhead square locator dan transmission power. Laporan penerimaan dapat dilihat di Weak Signal Propagation Reporter Network pada http://wsprnet.org/drupal/wsprnet/spots | ||
− | == | + | ==Kalibrasi== |
− | + | Kalibrasi frekuensi HARUS dilakukan untuk menjamin bahwa pancaran WSPR-2 berada dalam band sempit 200 Hz. Masalahnya, kristal referensi RPi kemungkinan akan mengalami kesalahan, salah satunya adalah karena drift oleh temperatur kira-kira bisa mencapai -1.3Hz/degC @10MHz. Untuk mengkalibrasi, frekuensi dapat secara manual di koreksi menggunakan command line atau koreksi PPM dapat dimasukan di command line. | |
− | |||
− | |||
− | @10MHz | ||
− | command line | ||
− | ===NTP | + | ===Kalibrasi NTP=== |
− | NTP | + | NTP akan secara automatis mengikuti dan menghitung koreksi frekuensi PPM. Jika kita menjalankan NTP di RPi, kita dapat menggunakan opsi --self-calibration untuk memaksa program ini untuk querry NTP untuk koreksi frekuensi terakhir sebelum setiap kali melalukan pancaran WSPR. Sisa kesalahan frekuensi akan tetap ada karena delay dalam loop pengukuran NTP, oleh karenanya metoda ini akan sangat baik jika RPi kita dijalankan dalam waktu lama, dan temperatur kristal sudah stabil dan kontrol loop NTP sudah konvergen. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ===Kalibrasi AM=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Salah satu cara praktis untuk mengkalibrasi adalah dengan men-tune ke pemancar dengan frekuensi yang sama dari broadcast AM / MW; lakukan tuning terus sampai zero beat (tidak ada nada di radio penerima, karena kedua pemancar bekerja pada frekuensi yang persis sama), kemudian cek berapa perbedaan frekuensi dengan frekuensi pemancar AM tersebut. Kesalahan frekuensi ini dapat digunakan untuk koreksi saat tuning frekuensi WSPR. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Misalkan station AM lokal anda adalah 780kHz. | ||
+ | Gunakan opsi --test-tone untuk membuat tune pada sekitar 780kHz (misalnya 780100 Hz) ubah terus sampai kita dapat secara baik zero beat AM station tersebut pada radio penerima kita. | ||
+ | |||
+ | Jika zero beat tone yang berhasil kita peroleh adalah F, maka perbaikan PPM yang dibutuhkan adalah | ||
+ | |||
+ | ppm=(F/780000-1)*1e6 | ||
+ | |||
+ | Selanjutnya, kita dapat menuliskan nilai ppm menggunakan argumen --ppm di command line. Kita dapat mem-verifikasi apakah nilai ppm tersebut benar dengan cara menjalankan argumen, misalnya, | ||
+ | |||
+ | --test-tone 780000 --ppm <ppm> | ||
+ | |||
+ | pastikan bahwa RPi zero beat dengan station AM yang kita inginkan. | ||
==PWM Peripheral== | ==PWM Peripheral== | ||
− | + | Code yang dikembangkan menggunakan RPi PWM peripheral untuk menset waktu dari frekuensi transisi dari output clock. Peripheral ini juga digunakan oleh RPi sound systion oleh karenanya jika ada sound event yang terjadi saat transmisi WSPR akan menginterferensi transmisi WSPR yang ada. Sound dapat secara permanen di disable dengan mengedit | |
− | + | ||
− | + | /etc/modules | |
− | |||
− | |||
+ | dan memberikan # pada device snd-bcm2835 | ||
− | == | + | ==Contoh Pemakaian== |
− | + | Memperlihatkan help screen | |
./wspr --help | ./wspr --help | ||
− | Transmit | + | Transmit test tone konstan pada 780 kHz. |
sudo ./wspr --test-tone 780e3 | sudo ./wspr --test-tone 780e3 | ||
− | + | Gunakan callsign YB9NNN, locator OI33, dan TX power 33 dBm, pancarkan satu WSPR pada band 20m menggunakan NTP based frequency offset calibration. | |
− | WSPR | + | |
− | calibration | + | sudo ./wspr --self-calibration YB9NNN OI33 33 20m |
− | + | Pancarkan WSPR transmission agak sedikit off-center di 30m setiap 10 minutes sebanyak 7 transmission, dan gunakan nilai PPM correction yang fixed. | |
− | + | sudo ./wspr --repeat --terminate 7 --ppm 43.17 YB9NNN OI33 33 10140210 0 0 0 0 | |
− | |||
− | + | Transmit terus menerus di 40m, gunakan NTP based frequency offset calibration, | |
+ | dan tambahkan random frequency offset di setiap pancaran untuk meminimalkan tabrakan dengan pancaran yang lain, | ||
− | + | sudo ./wspr --repeat --offset --self-calibration YB9NNN OI33 33 40m | |
− | |||
− | |||
− | sudo ./wspr --repeat --offset --self-calibration | + | Contoh lain untuk station YB9NNN antenna tri-bander 40m, 20m, 15m |
+ | |||
+ | sudo ./wspr --repeat --offset --self-calibration YB9NNN OI33 33 40m 0 0 0 0 20m 0 0 0 0 15m 0 0 0 0 | ||
+ | |||
+ | Kita dapat memasukan perintah di atas di /etc/rc.local atau di crontab. | ||
+ | |||
+ | ===Contoh Tampilan Help WSPR=== | ||
Line 200: | Line 208: | ||
wspr-2 or wspr-15 mode selection based on specified frequency. | wspr-2 or wspr-15 mode selection based on specified frequency. | ||
− | WSPR | + | WSPR menggunakan frekuensi berikut (batasan IARU setempat tetap berlaku): |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | LF 137400 - 137600 | |
− | + | 137600 - 137625 (WSPR-15) | |
− | + | MF 475600 - 475800 | |
− | + | 475800 - 475825 (WSPR-15) | |
+ | 160m 1838000 - 1838200 | ||
+ | 1838200 - 1838225 (WSPR-15) | ||
+ | 80m 3594000 - 3594200 | ||
+ | 60m 5288600 - 5288800 | ||
+ | 40m 7040000 - 7040200 | ||
+ | 30m 10140100 - 10140300 | ||
+ | 20m 14097000 - 14097200 | ||
+ | 17m 18106000 - 18106200 | ||
+ | 15m 21096000 - 21096200 | ||
+ | 12m 24926000 - 24926200 | ||
+ | 10m 28126000 - 28126200 | ||
+ | 6m 50294400 - 50294600 | ||
+ | 4m 70092400 - 70092600 | ||
+ | 2m 144490400 -144490600 | ||
− | + | ==Credit== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Credit diberikan kepada Oliver Mattos dan Oskar Weigl yang mengimplementasi PiFM berbasis pada ide untuk mengexploitasi RPi DPLL sebagai FM transmitter. | ||
+ | Dan MD1CLV menggabungkan usaha di atas dengan WSPR encoding algorithm dari F8CHK, | ||
+ | menghasilkan WsprryPi sebuah WSPR beacon untuk LF dan MF band. | ||
+ | Guido PE1NNZ <pe1nnz@amsat.org> mengembangkan lebih lanjut dengan DMA based PWM | ||
+ | modulation dari fractional divider yang merupakan bagian dari PiFM, memungkinkan WSPR beacon beroperasi di HF dan VHF bands. Dengan tambahan implementasi time-synchronisation dan double amount of power output. | ||
+ | Peroulas <james@peroulas.com> menambahkan beberapa opsi pada command line, makefile, memperbaiki ketepatan pembangkitan frekuensi sehingga dapat membangkitkan presisi tone beberapa Hz, menambahkan fitur self calibration dari informasi kalibrasi frekuensi yang di peroleh dari NTP. Selanjutnya, panjang TX dari simbol WSPR lebih presisi dan tidak bervariasi berbasis pada load system atau frekuensi clock PWM. | ||
==Referensi== | ==Referensi== |
Latest revision as of 06:42, 2 May 2016
Raspberry Pi bareback LF/MF/HF/VHF WSPR transmitter
Membuat WSPR beacon sederhana dengan RaspberryPi dengan menyambungkan GPIO port ke Antenna (dan Low Pass Filter), dapat beroperasi di band LF, MF, HF, dan VHF dari 0 s/d 250 MHz.
Source yang ada sekarang ini compatible dengan Raspberry Pi dan Raspberry Pi 2.
Hardware
Penampakan hasil solderan :)
Komponen dan Peralatan yang dibutuhkan
Komponen semua ada di Lindetives Glodok / Tokopedia
- RaspberryPi - Rp. 500.000-an
- SD Card (2-4Gb yang besar) untuk sistem operasi Raspbian - Rp. 50.000-an
- Switching Power Supply 5V 3A - Rp. 80.000-an
- Kabel USB charger - Rp. 10.000-an
- Kabel USB Extender - Rp. 10.000-an
- Connector Coax Female untuk body - Rp. 25.000-an
- 100nF
- 82pF (2 buah)
- 220pF (2 buah)
- Koker untuk koil (3 buah)
- Kawat kecil / kawat email
- Kabel Jumper (Rp. 20.000 isinya banyak banget)
- PCB prototyping (yang bolong2)
- Box Plastik buatan dalam negeri yang agak besar (atau box makanan juga OK)
Alat
- Solder
- Timah
- Multimeter
- Capacitance / Inductance Meter (kalau ada)
- Tang Potong
- Cutter
- Pengupas Kabel
Instalasi
Pastikan kita menggunakan kernel yang terakhir dengan cara mengupdate sistem yang kita gunakan. Kernel terakhir termasuk berbagai perbaikan yang memperbaiki keakuratan pengukuran ppm menggunakan NTP.
Lakukan:
sudo apt-get update sudo apt-get dist-upgrade
Download dan compile code:
sudo apt-get install git git clone https://github.com/JamesP6000/WsprryPi.git cd WsprryPi make
Baca file BUILD untuk detail lebih lanjut.
Penggunaan (WSPR --help output):
Penggunaan
wspr [options] callsign locator tx_pwr_dBm f1 <f2> <f3> ...
atau
wspr [options] --test-tone f
Opsi:
-h --help Print out this help screen. -p --ppm ppm Known PPM correction to 19.2MHz RPi nominal crystal frequency. -s --self-calibration Call ntp_adjtime() before every transmission to obtain the PPM error of the xtal. -r --repeat Repeatedly, and in order, transmit on all the specified freqs. -x --terminate <n> Terminate after n transmissions have been completed. -o --offset Add a random frequency offset to each transmission: +/- 80 Hz for WSPR +/- 8 Hz for WSPR-15 -t --test-tone freq Simply output a test tone and the specified frequency. Only used for debugging and to verify calibration. -n --no-delay Transmit immediately, do not wait for a WSPR TX window. Used for testing only.
Frekuensi yang digunakan dapat menggunakan Frekuensi absolut dari TX carrier, atau menggunakan string berikut. Jika string digunakan, maka pancaran akan dilakukan di tengah-tengah dari wilayah WSPR dari band terpilih. Pilihan string,
LF LF-15 MF MF-15 160m 160m-15 80m 60m 40m 30m 20m 17m 15m 12m 10m 6m 4m 2m
-15 menunjukan bagian WSPR-15 dari band
Jika kita tidak ingin memancar, atau membuat gap antar satu pancaran dengan pancaran yang lain, kita dapat melakukan dengan menyebutkan frekuensi TX sebagai 0.
Perlu di catat bahwa 'callsign', 'locator', dan 'tx_power_dBm' akan langsung digunakan untuk mengisi field yang ada pada WSPR message. Biasanya, tx_power_dBm yang digunakan adalah 10, yang merepresentasikan dari power yang dikeluarkan oleh RaspberryPi. Set nilai ini jika kita menggunakan external amplifier.
Lisensi Radio / RF
Agar kita dapat memancar secara legal dalam experimen ini, kita harus memiliki lisensi amatir radio / ORARI. Karena sinyal output adalah sinyal kotak (square wave), maka kita HARUS memasang Low Pass Filter (LPF). Sambungkan LPF (via C coupling) ke pin GPIO4 (GPCLK0) dan GND yang merupakan pin 7 dan 9 pada header P1. Pin terdekat dengan label P1 adalah pin 1, dan tetangga ke 3 dan 4-nya adalah pin 7 dan 9.
Untuk melihat pin layout kita dapat menggunakan http://elinux.org/RPi_Low-level_peripherals . Sementara contoh Low Pass Filter (LPF) dapat dilihat di http://www.gqrp.com/harmonic_filters.pdf
Power output yang akan keluar dari RaspberryPi adalah 10mW (+10dBm) pada beban 50 Ohm. Tampaknya ini kecil sekali, tapi jika kita sambungkan ke antenna dipole sederhana ini akan dapat mencapai beberapa ribu kilometer.
Karena RaspberryPi tidak meredam ripple dan noise dari power supply 5V USB, sangat DISARANKAN untuk menggunakan switching power supply yang baik yang mempunyai kemampuan untuk menekan ripple. Ripple dari power supply akan terlihat sebagai hasil mixing dari transmit carrier sekitar 100/120Hz.
JANGAN SAMPAI memberikan GPIO4 ke Tegangan dan Arus di atas Maksimum Limit. GPIO4 mengeluarkan digital clock dengan 3V3 logic, dengan maksimum arus 16mA. Tidak tersedia proteksi arus dan ada komponen DC 1.6V.
JANGAN PERNAH men-short circuit dan penempatkan dummy load langsung pada GPIO4 pin, karena akan menarik banyak arus. Sebaiknya, gunakan coupling capacitor untuk membuang komponen DC-nya sebelum menyambungkan ke dummy load, transformer, antenna dll.
JANGAN PERNAH mengekspose GPIO4 ke tegangan elektro-statik atau tegangan yang melebihi range logik 0 - 3.3V, menyambungkan antenna langsung ke GPIO4 akan menyebabkan kerusakan pada RPi karena tegangan transient karena petir, statik atau RF dari pemancar dekat antenna kita. Oleh karenanya sangat di REKOMENDASIKAN untuk menambahkan isolasi, dengan menggunakan RF transformer, buffer / driver / PA sederhana, atau dua small signal schottky diode back to back seperti 1N914 (atau 1N4148).
TX Timing
Software ini menggunakan system time untuk menentukan kapan mulai pancaran WSPR, untuk memastikan system time sinkron dengan presisi 1 detik kita dapat menggunakan sinkronisasi NTP (Network Time Protocol) atau set waktu secara manual menggunakan perintah date.
Sebuah broadcast WSPR akan mulai pada menit genap dan akan membutuhkan 2 menit untuk WSPR-2. Sementara untuk WSPR-15 akan mulai pada :00, :15, :30,:45 dan akan membutuhkan 15 menit untuk setiap beacon. Setiap pancaran akan berisi callsign, 4 digit Maidenhead square locator dan transmission power. Laporan penerimaan dapat dilihat di Weak Signal Propagation Reporter Network pada http://wsprnet.org/drupal/wsprnet/spots
Kalibrasi
Kalibrasi frekuensi HARUS dilakukan untuk menjamin bahwa pancaran WSPR-2 berada dalam band sempit 200 Hz. Masalahnya, kristal referensi RPi kemungkinan akan mengalami kesalahan, salah satunya adalah karena drift oleh temperatur kira-kira bisa mencapai -1.3Hz/degC @10MHz. Untuk mengkalibrasi, frekuensi dapat secara manual di koreksi menggunakan command line atau koreksi PPM dapat dimasukan di command line.
Kalibrasi NTP
NTP akan secara automatis mengikuti dan menghitung koreksi frekuensi PPM. Jika kita menjalankan NTP di RPi, kita dapat menggunakan opsi --self-calibration untuk memaksa program ini untuk querry NTP untuk koreksi frekuensi terakhir sebelum setiap kali melalukan pancaran WSPR. Sisa kesalahan frekuensi akan tetap ada karena delay dalam loop pengukuran NTP, oleh karenanya metoda ini akan sangat baik jika RPi kita dijalankan dalam waktu lama, dan temperatur kristal sudah stabil dan kontrol loop NTP sudah konvergen.
Kalibrasi AM
Salah satu cara praktis untuk mengkalibrasi adalah dengan men-tune ke pemancar dengan frekuensi yang sama dari broadcast AM / MW; lakukan tuning terus sampai zero beat (tidak ada nada di radio penerima, karena kedua pemancar bekerja pada frekuensi yang persis sama), kemudian cek berapa perbedaan frekuensi dengan frekuensi pemancar AM tersebut. Kesalahan frekuensi ini dapat digunakan untuk koreksi saat tuning frekuensi WSPR.
Misalkan station AM lokal anda adalah 780kHz. Gunakan opsi --test-tone untuk membuat tune pada sekitar 780kHz (misalnya 780100 Hz) ubah terus sampai kita dapat secara baik zero beat AM station tersebut pada radio penerima kita.
Jika zero beat tone yang berhasil kita peroleh adalah F, maka perbaikan PPM yang dibutuhkan adalah
ppm=(F/780000-1)*1e6
Selanjutnya, kita dapat menuliskan nilai ppm menggunakan argumen --ppm di command line. Kita dapat mem-verifikasi apakah nilai ppm tersebut benar dengan cara menjalankan argumen, misalnya,
--test-tone 780000 --ppm <ppm>
pastikan bahwa RPi zero beat dengan station AM yang kita inginkan.
PWM Peripheral
Code yang dikembangkan menggunakan RPi PWM peripheral untuk menset waktu dari frekuensi transisi dari output clock. Peripheral ini juga digunakan oleh RPi sound systion oleh karenanya jika ada sound event yang terjadi saat transmisi WSPR akan menginterferensi transmisi WSPR yang ada. Sound dapat secara permanen di disable dengan mengedit
/etc/modules
dan memberikan # pada device snd-bcm2835
Contoh Pemakaian
Memperlihatkan help screen
./wspr --help
Transmit test tone konstan pada 780 kHz.
sudo ./wspr --test-tone 780e3
Gunakan callsign YB9NNN, locator OI33, dan TX power 33 dBm, pancarkan satu WSPR pada band 20m menggunakan NTP based frequency offset calibration.
sudo ./wspr --self-calibration YB9NNN OI33 33 20m
Pancarkan WSPR transmission agak sedikit off-center di 30m setiap 10 minutes sebanyak 7 transmission, dan gunakan nilai PPM correction yang fixed.
sudo ./wspr --repeat --terminate 7 --ppm 43.17 YB9NNN OI33 33 10140210 0 0 0 0
Transmit terus menerus di 40m, gunakan NTP based frequency offset calibration, dan tambahkan random frequency offset di setiap pancaran untuk meminimalkan tabrakan dengan pancaran yang lain,
sudo ./wspr --repeat --offset --self-calibration YB9NNN OI33 33 40m
Contoh lain untuk station YB9NNN antenna tri-bander 40m, 20m, 15m
sudo ./wspr --repeat --offset --self-calibration YB9NNN OI33 33 40m 0 0 0 0 20m 0 0 0 0 15m 0 0 0 0
Kita dapat memasukan perintah di atas di /etc/rc.local atau di crontab.
Contoh Tampilan Help WSPR
sudo ./wspr <[prefix]/callsign[/suffix]> <locator> <power in dBm> [<frequency in Hz> ...] e.g.: sudo ./wspr PA/K1JT JO21 10 7040074 0 0 10140174 0 0 where 0 frequency represents a interval for which TX is disabled, wspr-2 or wspr-15 mode selection based on specified frequency.
WSPR menggunakan frekuensi berikut (batasan IARU setempat tetap berlaku):
LF 137400 - 137600 137600 - 137625 (WSPR-15) MF 475600 - 475800 475800 - 475825 (WSPR-15) 160m 1838000 - 1838200 1838200 - 1838225 (WSPR-15) 80m 3594000 - 3594200 60m 5288600 - 5288800 40m 7040000 - 7040200 30m 10140100 - 10140300 20m 14097000 - 14097200 17m 18106000 - 18106200 15m 21096000 - 21096200 12m 24926000 - 24926200 10m 28126000 - 28126200 6m 50294400 - 50294600 4m 70092400 - 70092600 2m 144490400 -144490600
Credit
Credit diberikan kepada Oliver Mattos dan Oskar Weigl yang mengimplementasi PiFM berbasis pada ide untuk mengexploitasi RPi DPLL sebagai FM transmitter.
Dan MD1CLV menggabungkan usaha di atas dengan WSPR encoding algorithm dari F8CHK, menghasilkan WsprryPi sebuah WSPR beacon untuk LF dan MF band.
Guido PE1NNZ <pe1nnz@amsat.org> mengembangkan lebih lanjut dengan DMA based PWM modulation dari fractional divider yang merupakan bagian dari PiFM, memungkinkan WSPR beacon beroperasi di HF dan VHF bands. Dengan tambahan implementasi time-synchronisation dan double amount of power output.
Peroulas <james@peroulas.com> menambahkan beberapa opsi pada command line, makefile, memperbaiki ketepatan pembangkitan frekuensi sehingga dapat membangkitkan presisi tone beberapa Hz, menambahkan fitur self calibration dari informasi kalibrasi frekuensi yang di peroleh dari NTP. Selanjutnya, panjang TX dari simbol WSPR lebih presisi dan tidak bervariasi berbasis pada load system atau frekuensi clock PWM.
Referensi
- https://github.com/JamesP6000/WsprryPi
- https://github.com/threeme3/WsprryPi
- https://github.com/DanAnkers/WsprryPi
- http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
- http://www.scribd.com/doc/127599939/BCM2835-Audio-clocks
- http://www.scribd.com/doc/101830961/GPIO-Pads-Control2
- https://github.com/mgottschlag/vctools/blob/master/vcdb/cm.yaml
- https://www.kernel.org/doc/Documentation/vm/pagemap.txt
- http://www.gqrp.com/harmonic_filters.pdf