Difference between revisions of "WSPR: RaspberryPi"

From OnnoWiki
Jump to navigation Jump to search
(New page: Raspberry Pi bareback LF/MF/HF/VHF WSPR transmitter Makes a very simple WSPR beacon from your RasberryPi by connecting GPIO port to Antenna (and LPF), operates on LF, MF, HF and VHF bands...)
 
 
(32 intermediate revisions by the same user not shown)
Line 1: Line 1:
Raspberry Pi bareback LF/MF/HF/VHF WSPR transmitter
+
==Raspberry Pi bareback LF/MF/HF/VHF WSPR transmitter==
  
Makes a very simple WSPR beacon from your RasberryPi by connecting GPIO
 
port to Antenna (and LPF), operates on LF, MF, HF and VHF bands from
 
0 to 250 MHz.
 
  
It is now compatible with both the original Raspberry Pi and the Raspberry Pi 2.
+
[[Image:Raspi-wspr.jpg|center|500px|thumb|Rangkaian RaspberryPi untuk WSPR]]
  
******
 
Installation / update:
 
******
 
  Make sure you are using the latest kernel by updating your system. The latest
 
  kernel includes fixes wich improve NTP ppm measurement accuracy:
 
    sudo apt-get update
 
    sudo apt-get dist-upgrade
 
  
  Download and compile code:
+
[[Image:LPF.png|center|500px|thumb|LPF untuk QRP Transmitter dari http://www.gqrp.com/harmonic_filters.pdf]]
    sudo apt-get install git
 
    git clone https://github.com/JamesP6000/WsprryPi.git
 
    cd WsprryPi
 
    make
 
  
  See the accompanying BUILD file for more details.
 
  
******
+
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.
Usage: (WSPR --help output):
 
******
 
  Usage:
 
    wspr [options] callsign locator tx_pwr_dBm f1 <f2> <f3> ...
 
      OR
 
    wspr [options] --test-tone f
 
  
  Options:
+
Source yang ada sekarang ini compatible dengan Raspberry Pi dan Raspberry Pi 2.
    -h --help
+
 
 +
==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 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.
 
       Print out this help screen.
    -p --ppm ppm
+
-p --ppm ppm
 
       Known PPM correction to 19.2MHz RPi nominal crystal frequency.
 
       Known PPM correction to 19.2MHz RPi nominal crystal frequency.
    -s --self-calibration
+
-s --self-calibration
 
       Call ntp_adjtime() before every transmission to obtain the PPM error of the xtal.
 
       Call ntp_adjtime() before every transmission to obtain the PPM error of the xtal.
    -r --repeat
+
-r --repeat
 
       Repeatedly, and in order, transmit on all the specified freqs.
 
       Repeatedly, and in order, transmit on all the specified freqs.
    -x --terminate <n>
+
-x --terminate <n>
 
       Terminate after n transmissions have been completed.
 
       Terminate after n transmissions have been completed.
    -o --offset
+
-o --offset
 
       Add a random frequency offset to each transmission:
 
       Add a random frequency offset to each transmission:
 
         +/- 80 Hz for WSPR
 
         +/- 80 Hz for WSPR
 
         +/- 8 Hz for WSPR-15
 
         +/- 8 Hz for WSPR-15
    -t --test-tone freq
+
-t --test-tone freq
 
       Simply output a test tone and the specified frequency. Only used
 
       Simply output a test tone and the specified frequency. Only used
 
       for debugging and to verify calibration.
 
       for debugging and to verify calibration.
    -n --no-delay
+
-n --no-delay
 
       Transmit immediately, do not wait for a WSPR TX window. Used
 
       Transmit immediately, do not wait for a WSPR TX window. Used
 
       for testing only.
 
       for testing only.
  
  Frequencies can be specified either as an absolute TX carrier frequency, or
+
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,
  using one of the following strings. If a string is used, the transmission
+
  will happen in the middle of the WSPR region of the selected band.
+
  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
 
  <B>-15 indicates the WSPR-15 region of band <B>.
 
  
  Transmission gaps can be created by specifying a TX frequency of 0
+
'''-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.
 
    
 
    
  Note that 'callsign', 'locator', and 'tx_power_dBm' are simply used to fill
+
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.
  in the appropriate fields of the WSPR message. Normally, tx_power_dBm should
 
  be 10, representing the signal power coming out of the Pi. Set this value
 
  appropriately if you are using an external amplifier.
 
  
******
+
==Lisensi Radio / RF==
Radio licensing / RF:
 
******
 
  In order to transmit legally, a HAM Radio License is REQUIRED for running
 
  this experiment. The output is a square wave so a low pass filter is REQUIRED.
 
  Connect a low-pass filter (via decoupling C) to GPIO4 (GPCLK0) and Ground pin
 
  of your Raspberry Pi, connect an antenna to the LPF. The GPIO4 and GND pins
 
  are found on header P1 pin 7 and 9 respectively, the pin closest to P1 label
 
  is pin 1 and its 3rd and 4th neighbour is pin 7 and 9 respectively. See this
 
  link for pin layout: http://elinux.org/RPi_Low-level_peripherals Examples of
 
  low-pass filters can be found here: http://www.gqrp.com/harmonic_filters.pdf
 
  
  The expected power output is 10mW (+10dBm) in a 50 Ohm load. This looks
+
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.
  neglible, but when connected to a simple dipole antenna this may result in
 
  reception reports ranging up to several thousands of kilometers.
 
  
  As the Raspberry Pi does not attenuate ripple and noise components from the
+
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
  5V USB power supply, it is RECOMMENDED to use a regulated supply that has
 
  sufficient ripple supression. Supply ripple might be seen as mixing products
 
  products centered around the transmit carrier typically at 100/120Hz.
 
  
  DO NOT expose GPIO4 to voltages or currents that are above the specified
+
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.
  Absolute Maximum limits. GPIO4 outputs a digital clock in 3V3 logic, with a
 
  maximum current of 16mA. As there is no current protection available and a DC
 
  component of 1.6V, DO NOT short-circuit or place a resistive (dummy) load
 
  straight on the GPIO4 pin, as it may draw too much current. Instead, use a
 
  decoupling capacitor to remove DC component when connecting the output dummy
 
  loads, transformers, antennas, etc. DO NOT expose GPIO4 to electro- static
 
  voltages or voltages exceeding the 0 to 3.3V logic range; connecting an
 
  antenna directly to GPIO4 may damage your RPi due to transient voltages such
 
  as lightning or static buildup as well as RF from other transmitters
 
  operating into nearby antennas. Therefore it is RECOMMENDED to add some form
 
  of isolation, e.g. by using a RF transformer, a simple buffer/driver/PA
 
  stage, two schottky small signal diodes back to back.
 
  
******
+
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.
TX Timing:
 
******
 
  This software is using system time to determine the start of WSPR
 
  transmissions, so keep the system time synchronised within 1sec precision,
 
  i.e. use NTP network time synchronisation or set time manually with date
 
  command. A WSPR broadcast starts on an even minute and takes 2 minutes for
 
  WSPR-2 or starts at :00,:15,:30,:45 and takes 15 minutes for WSPR-15. It
 
  contains a callsign, 4-digit Maidenhead square locator and transmission
 
  power.  Reception reports can be viewed on Weak Signal Propagation Reporter
 
  Network at: http://wsprnet.org/drupal/wsprnet/spots
 
  
******
+
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.
Calibration:
 
******
 
  Frequency calibration is REQUIRED to ensure that the WSPR-2 transmission
 
  occurs within the narrow 200 Hz band. The reference crystal on your RPi might
 
  have an frequency error (which in addition is temp. dependent -1.3Hz/degC
 
  @10MHz). To calibrate, the frequency might be manually corrected on the
 
  command line or a PPM correction could be specified on the command line.
 
  
  NTP calibration:
+
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.
  NTP automatically tracks and calculates a PPM frequency correction. If you
 
  are running NTP on your Pi, you can use the --self-calibration option to
 
  have this program querry NTP for the latest frequency correction before
 
  each WSPR transmission. Some residual frequency error may still be present
 
  due to delays in the NTP measurement loop and this method works best if your
 
  Pi has been on for a long time, the crystal's temperature has stabilized,
 
  and the NTP control loop has converged.
 
  
  AM calibration:
+
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).
  A practical way to calibrate is to tune the transmitter on the same frequency
 
  of a medium wave AM broadcast station; keep tuning until zero beat (the
 
  constant audio tone disappears when the transmitter is exactly on the same
 
  frequency as the broadcast station), and determine the frequency difference
 
  with the broadcast station. This is the frequency error that can be applied
 
  for correction while tuning on a WSPR frequency.
 
  
  Suppose your local AM radio station is at 780kHz. Use the --test-tone option
+
==TX Timing==
  to produce different tones around 780kHz (eg 780100 Hz) until you can
 
  successfully zero beat the AM station. If the zero beat tone specified on the
 
  command line is F, calculate the PPM correction required as:
 
  ppm=(F/780000-1)*1e6 In the future, specify this value as the argument to the
 
  --ppm option on the comman line. You can verify that the ppm value has been
 
  set correction by specifying --test-tone 780000 --ppm <ppm> on the command
 
  line and confirming that the Pi is still zero beating the AM station.
 
  
******
+
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.
PWM Peripheral:
 
******
 
  The code uses the RPi PWM peripheral to time the frequency transitions
 
  of the output clock. This peripheral is also used by the RPi sound system
 
  and hence any sound events that occur during a WSPR transmission will
 
  interfere with WSPR transmissions. Sound can be permanently disabled
 
  by editing /etc/modules and commenting out the snd-bcm2835 device.
 
  
******
+
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
Example usage:
 
******
 
  Brief help screen
 
    ./wspr --help
 
  
  Transmit a constant test tone at 780 kHz.
+
==Kalibrasi==
    sudo ./wspr --test-tone 780e3
 
  
  Using callsign N9NNN, locator EM10, and TX power 33 dBm, transmit a single
+
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.
  WSPR transmission on the 20m band using NTP based frequency offset
 
  calibration.
 
    sudo ./wspr --self-calibration N9NNN EM10 33 20m
 
  
  Transmit a WSPR transmission slightly off-center on 30m every 10 minutes for
+
===Kalibrasi NTP===
  a total of 7 transmissions, and using a fixed PPM correction value.  sudo
 
    sudo ./wspr --repeat --terminate 7 --ppm 43.17 N9NNN EM10 33 10140210 0 0 0 0
 
  
  Transmit repeatedly on 40m, use NTP based frequency offset calibration,
+
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.
  and add a random frequency offset to each transmission to minimize collisions
 
  with other transmissions.
 
    sudo ./wspr --repeat --offset --self-calibration N9NNN EM10 33 40m
 
  
  
 +
===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.
  
Usage:
+
Misalkan station AM lokal anda adalah 780kHz.
  sudo ./wspr <[prefix]/callsign[/suffix]> <locator> <power in dBm> [<frequency in Hz> ...]
+
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.
        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,
+
Jika zero beat tone yang berhasil kita peroleh adalah F, maka perbaikan PPM yang dibutuhkan adalah
        wspr-2 or wspr-15 mode selection based on specified frequency.
+
 
 +
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
  
  WSPR is used on the following frequencies (local restriction may apply):
+
Kita dapat memasukan perintah di atas di /etc/rc.local atau di crontab.
    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
 
  
 +
===Contoh Tampilan Help WSPR===
  
******
 
Reference documentation:
 
******
 
  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
 
  
******
+
sudo ./wspr <[prefix]/callsign[/suffix]> <locator> <power in dBm> [<frequency in Hz> ...]
Credits:
+
        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,
  Credits goes to Oliver Mattos and Oskar Weigl who implemented PiFM [1]
+
        wspr-2 or wspr-15 mode selection based on specified frequency.
  based on the idea of exploiting RPi DPLL as FM transmitter.
 
  
  Dan MD1CLV combined this effort with WSPR encoding algorithm from F8CHK,
+
WSPR menggunakan frekuensi berikut (batasan IARU setempat tetap berlaku):
  resulting in WsprryPi a WSPR beacon for LF and MF bands.
 
  
   Guido PE1NNZ <pe1nnz@amsat.org> extended this effort with DMA based PWM
+
   LF  137400 - 137600
   modulation of fractional divider that was part of PiFM, allowing to operate
+
      137600 - 137625 (WSPR-15)
  the WSPR beacon also on HF and VHF bands. In addition time-synchronisation
+
  MF   475600 - 475800
   and double amount of power output was implemented.
+
      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
  
  James Peroulas <james@peroulas.com> added several command line options, a
+
==Credit==
  makefile, improved frequency generation precision so as to be able to
 
  precisely generate a tone at a fraction of a Hz, and added a self calibration
 
  feature where the code attempts to derrive frequency calibration information
 
  from an installed NTP deamon.  Furthermore, the TX length of the WSPR symbols
 
  is more precise and does not vary based on system load or PWM clock
 
  frequency.
 
  
 +
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==
Line 250: Line 246:
 
* https://github.com/threeme3/WsprryPi
 
* https://github.com/threeme3/WsprryPi
 
* https://github.com/DanAnkers/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

Latest revision as of 06:42, 2 May 2016

Raspberry Pi bareback LF/MF/HF/VHF WSPR transmitter

Rangkaian RaspberryPi untuk WSPR


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.

Hardware

Penampakan hasil solderan :)


Low Pass Filter 21MHz
WSPR RaspberryPi dengan LPF 21MHz
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 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