I’ve had a little luck transmitting to a satellite. I’m using packet as I can use the 2m Cebik Moxon aerial for both transmit and receive. To see if the ISS should be able to hear my signals I wrote a link budget program in Racket. There’s a few assumptions in it but it seems to confirm the ISS should have no problem hearing me on 2m. The program shows:
Transmit power (W)? 5 Frequency (MHz)? 145.825 Elevation (°)? 40 Transmit power: 5 W (36.99 dBm) Frequency: 145.825 MHz Satellite height: 403 km Elevation angle: 40° Satellite is 5396 km away Signal at satellite is 9 dB above noise
This seems borne out as I do receive what seem to be digipeated packets just after I transmit them. But I can’t confirm on the ISS site that they are real and not just an echo from somewhere.
70cms doesn’t look as good:
Transmit power (W)? 5 Frequency (MHz)? 435.255 Elevation (°)? 40 Transmit power: 5 W (36.99 dBm) Frequency: 435.255 MHz Satellite height: 403 km Elevation angle: 40° Satellite is 5396 km away Signal at satellite is -0 dB above noise
Increasing the power to 25W might work:
Transmit power (W)? 25 Frequency (MHz)? 435.255 Elevation (°)? 40 Transmit power: 25 W (43.98 dBm) Frequency: 435.255 MHz Satellite height: 403 km Elevation angle: 40° Satellite is 5396 km away Signal at satellite is 7 dB above noise
I’m currently building the 70cms version and will try some FM voice contacts.
Here’s the link budget program:
#lang racket ; link budget for Cebik Moxon in attic ; Andy Fletcher Jan 9, 2019 ; ; definitions ; (define (get_user_input prompt) (begin (displayln prompt) (string->number (read-line)))) (define (log10 n) (/ (log n) (log 10))) (define (watts2dbm w) (* 10 (log10 (* w 1000)))) (define (degrees2radians d) (* (/ pi 180) d)) (define (square x) (* x x)) ; distance to satellite in km (define (satellite_distance e_degrees height) (let* ([e (degrees2radians e_degrees)] [earth_radius 6371] ; kms [r (+ height earth_radius)] ; distance between geocentre and satellite ) (sqrt (+ (square (* earth_radius (cos e))) (square r) (- (square earth_radius)) (- (* earth_radius (cos e))))))) ; free space path loss (define (fspl f d) (- (+ (* 20 (log10 f)) (* 20 (log10 d)) 32.45))) ; ; execute ; (let* ( [ptx_watts (get_user_input "Transmit power (W)?")] [f (get_user_input "Frequency (MHz)?")] [e_degrees (get_user_input "Elevation (°)?")] [h 403] ; satellite height in kms [cable_loss -3.55] ; measured dB [tx_gain 6.0] ; Cebik Moxon modelled gain in dB [roof_loss -6.0] ; assumed loss of signal going through the roof in dB [rx_gain 2.0] ; assumed receive gain at satellite in dB [sat_max_sens 124.0] ; assumed satellite maximum sensitivity in dBm [distance_to_satellite (satellite_distance e_degrees h)] [ptx (watts2dbm ptx_watts)] ) (begin (printf "Transmit power: ~a W (~a dBm)\n" ptx_watts (~r ptx #:min-width 1 #:precision 2)) (printf "Frequency: ~a MHz\n" f) (printf "Satellite height: ~a km\n" (~r h #:min-width 1 #:precision 0)) (printf "Elevation angle: ~a°\n" e_degrees) (printf "\nSatellite is ~a km away\n" (~r distance_to_satellite #:min-width 1 #:precision 0)) (printf "Signal at satellite is ~a dB above noise\n" (~r (+ ptx cable_loss tx_gain roof_loss (fspl f distance_to_satellite) rx_gain sat_max_sens) #:min-width 1 #:precision 0))))