kopia lustrzana https://github.com/robertostling/wspr-tools
Added manual transmission script
rodzic
2ff0ba4437
commit
00cf0af815
13
README.md
13
README.md
|
@ -6,7 +6,18 @@ Code for the WSPR protocol
|
||||||
```python3 encode.py callsign locator power```
|
```python3 encode.py callsign locator power```
|
||||||
|
|
||||||
Currently only simple callsigns and 4-symbol locators are accepted. Power is
|
Currently only simple callsigns and 4-symbol locators are accepted. Power is
|
||||||
in dBm.
|
in dBm. This can be used directly for producing transmission sequences for the
|
||||||
|
Arduino/AD9851 based transmitter below, or as a library to encode the WSPR
|
||||||
|
protocol.
|
||||||
|
|
||||||
|
## manual.py
|
||||||
|
|
||||||
|
```python3 manual.py callsign locator power```
|
||||||
|
|
||||||
|
Used to display the straight-key transmission sequence for a narrow-band
|
||||||
|
frequency shift transmitter. Please refer to
|
||||||
|
<a href="http://robos.org/sections/radio/wspr.html">my web page on
|
||||||
|
non-standard WSPR equipment</a> for more information.
|
||||||
|
|
||||||
## arduino_ad9851.ino
|
## arduino_ad9851.ino
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
"""Display for manual WSPR transmission."""
|
||||||
|
|
||||||
|
from encode import wspr_encode
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
def display(symbols, output=False):
|
||||||
|
assert len(symbols) == 162, len(symbols)
|
||||||
|
baud = 1.4648
|
||||||
|
while True:
|
||||||
|
dt = datetime.datetime.utcnow()
|
||||||
|
# t is the offset from the start of the message
|
||||||
|
t = (dt.minute % 2) * 60 + dt.second + 1e-6*dt.microsecond - 1
|
||||||
|
n = int(t * baud)
|
||||||
|
current = '_' if n < 0 or n >= 162 else symbols[n]
|
||||||
|
bit0 = int(isinstance(current, int) and current % 2 == 1)
|
||||||
|
bit1 = int(isinstance(current, int) and current >= 2)
|
||||||
|
# Display a # if the resistors coming from the VCO voltage should be
|
||||||
|
# grounded. Left = bit0, right = bit1.
|
||||||
|
display = (' ' if bit0 else '#') + ' ' + (' ' if bit1 else '#')
|
||||||
|
print(f"\033[H\033[J{n:3d} {display}", flush=True)
|
||||||
|
delay = (n+1)/baud - t
|
||||||
|
time.sleep(delay)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import sys
|
||||||
|
if len(sys.argv) != 4:
|
||||||
|
print('Usage: %s callsign locator dbm' % sys.argv[0])
|
||||||
|
sys.exit(1)
|
||||||
|
callsign = sys.argv[1]
|
||||||
|
locator = sys.argv[2]
|
||||||
|
dbm = int(sys.argv[3])
|
||||||
|
symbols = wspr_encode(callsign, locator, dbm)
|
||||||
|
display(symbols, output=True)
|
Ładowanie…
Reference in New Issue