ADS-B Receiver
Receives 1090 MHz ADS-B from an RTL-SDR and decodes the aircraft around you.
- Author Marc
- Category gr-adsb
- Blocks 14
- Connections 9
- File
gr-adsb/adsb_receiver.grc
Blocks used
| Block | Module | Used |
|---|---|---|
| QT GUI Range | GNU Radio | 2 |
| ADS-B Decoder | gr-adsb | 1 |
| ADS-B Demod | gr-adsb | 1 |
| ADS-B Framer | gr-adsb | 1 |
| ADS-B Map | GNU Radio | 1 |
| Complex to Mag^2 | GNU Radio | 1 |
| Constant Source | GNU Radio | 1 |
| GUI Layout | GNU Radio | 1 |
| Message Debug | GNU Radio | 1 |
| QT GUI Time Sink | GNU Radio | 1 |
| QT GUI Waterfall Sink | GNU Radio | 1 |
| RTL-SDR Source | GNU Radio | 1 |
| Variable | GNU Radio | 1 |
Flowgraph source
gr-adsb/adsb_receiver.grc
options:
parameters:
author: Marc
comment: ''
copyright: ''
description: Receives 1090 MHz ADS-B from an RTL-SDR and decodes the aircraft around you.
generate_options: qt_gui
id: ADS_B_Receiver
title: ADS-B Receiver
states:
coordinate: [10, 10]
rotation: 0
state: enabled
blocks:
- name: gain
id: variable_qtgui_range
parameters:
comment: ''
label: RF Gain
min_len: '200'
orient: QtCore.Qt.Horizontal
rangeType: float
start: '0'
step: '1'
stop: '49'
value: '40'
widget: counter_slider
states:
coordinate: [10, 360]
rotation: 0
state: enabled
- name: samp_rate
id: variable
parameters:
comment: "ADS-B is 1 Msym/s PPM,\nso the rate must be a\nmultiple of 1 Msps"
value: '2000000'
states:
coordinate: [600, 10]
rotation: 0
state: enabled
- name: threshold
id: variable_qtgui_range
parameters:
comment: Raise it until only real bursts trigger
label: Detection Threshold
min_len: '200'
orient: QtCore.Qt.Horizontal
rangeType: float
start: '0.001'
step: '0.001'
stop: '0.2'
value: '0.01'
widget: counter_slider
states:
coordinate: [820, 510]
rotation: 0
state: enabled
- name: aircraft_map
id: wasm_adsb_map_sink
parameters:
affinity: ''
alias: ''
basemap: light
comment: Live aircraft state from the decoder; select a row or marker for details
expire_seconds: '60'
name: '"Aircraft near the recording site"'
receiver_latitude: '0'
receiver_longitude: '0'
show_labels: 'True'
show_receiver: 'False'
stale_seconds: '15'
trail_seconds: '300'
units: aviation
update_time: '0.25'
states:
coordinate: [1720, 400]
rotation: 0
state: enabled
- name: bursts
id: qtgui_time_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1'
alpha10: '1'
alpha2: '1'
alpha3: '1'
alpha4: '1'
alpha5: '1'
alpha6: '1'
alpha7: '1'
alpha8: '1'
alpha9: '1'
autoscale: 'False'
axislabels: 'True'
color1: blue
color10: dark blue
color2: red
color3: green
color4: black
color5: cyan
color6: magenta
color7: yellow
color8: dark red
color9: dark green
comment: ''
ctrlpanel: 'False'
entags: 'True'
grid: 'True'
label1: Burst power
label10: Signal 10
label2: Threshold
label3: Signal 3
label4: Signal 4
label5: Signal 5
label6: Signal 6
label7: Signal 7
label8: Signal 8
label9: Signal 9
legend: 'True'
marker1: '-1'
marker10: '-1'
marker2: '-1'
marker3: '-1'
marker4: '-1'
marker5: '-1'
marker6: '-1'
marker7: '-1'
marker8: '-1'
marker9: '-1'
name: ADS-B bursts
nconnections: '2'
size: '1024'
srate: samp_rate
stemplot: 'False'
style1: '1'
style10: '1'
style2: '1'
style3: '1'
style4: '1'
style5: '1'
style6: '1'
style7: '1'
style8: '1'
style9: '1'
tr_chan: '0'
tr_delay: '0'
tr_level: '0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: ''
type: float
update_time: '0.1'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
ylabel: Power
ymax: '0.5'
ymin: '0'
yunit: ''
states:
coordinate: [1270, 360]
rotation: 0
state: enabled
- name: decoded_planes
id: blocks_message_debug
parameters:
affinity: ''
alias: ''
comment: ''
en_uvec: 'False'
log_level: info
states:
coordinate: [1760, 20]
rotation: 0
state: enabled
- name: decoder
id: adsb_decoder
parameters:
affinity: ''
alias: ''
comment: ''
error_corr: '"Conservative"'
maxoutbuf: '0'
minoutbuf: '0'
msg_filter: '"Extended Squitter Only"'
print_level: '"Brief"'
states:
coordinate: [1470, 220]
rotation: 0
state: enabled
- name: demod
id: adsb_demod
parameters:
affinity: ''
alias: ''
comment: ''
fs: samp_rate
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [1050, 230]
rotation: 0
state: enabled
- name: framer
id: adsb_framer
parameters:
affinity: ''
alias: ''
comment: ''
fs: samp_rate
maxoutbuf: '0'
minoutbuf: '0'
threshold: threshold
states:
coordinate: [690, 240]
rotation: 0
state: enabled
- name: mag_squared
id: blocks_complex_to_mag_squared
parameters:
affinity: ''
alias: ''
comment: The framer works on power, not complex samples
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
coordinate: [370, 250]
rotation: 0
state: enabled
- name: qtgui_waterfall_sink_x_0
id: qtgui_waterfall_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1'
alpha10: '1'
alpha2: '1'
alpha3: '1'
alpha4: '1'
alpha5: '1'
alpha6: '1'
alpha7: '1'
alpha8: '1'
alpha9: '1'
average: '1.0'
axislabels: 'True'
bw: samp_rate
color1: '0'
color10: '0'
color2: '0'
color3: '0'
color4: '0'
color5: '0'
color6: '0'
color7: '0'
color8: '0'
color9: '0'
comment: ''
fc: '0'
fftsize: '1024'
freqhalf: 'True'
grid: 'False'
int_max: '10'
int_min: '-140'
label1: ''
label10: ''
label2: ''
label3: ''
label4: ''
label5: ''
label6: ''
label7: ''
label8: ''
label9: ''
legend: 'True'
maxoutbuf: '0'
minoutbuf: '0'
name: Waterfall
nconnections: '1'
type: complex
update_time: '0.1'
wintype: window.WIN_RECTANGULAR
states:
coordinate: [400, 440]
rotation: 0
state: enabled
- name: rtlsdr
id: wasm_rtlsdr_source
parameters:
affinity: ''
alias: ''
bias_tee: 'False'
bufflen: '262144'
center_freq: '1090000000'
comment: ''
device: ''
direct_samp: '0'
freq_correction: '0'
gain: gain
gain_mode: 'False'
maxoutbuf: '0'
minoutbuf: '0'
samp_rate: samp_rate
type: complex
states:
coordinate: [10, 230]
rotation: 0
state: enabled
- name: threshold_trace
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: Plots the threshold beside the bursts
const: threshold
maxoutbuf: '0'
minoutbuf: '0'
type: float
states:
coordinate: [840, 400]
rotation: 0
state: enabled
- name: wasm_gui_layout_0
id: wasm_gui_layout
parameters:
affinity: ''
alias: ''
columns: '12'
comment: ''
layout: '{"aircraft_map":[0,1,7,7],"bursts":[7,1,5,3],"gain":[0,0,6,1],"qtgui_waterfall_sink_x_0":[7,4,5,4],"threshold":[6,0,6,1]}'
row_height: '60'
states:
coordinate: [310, 10]
rotation: 0
state: enabled
connections:
- src_blk_id: decoder
src_port_id: decoded
snk_blk_id: aircraft_map
snk_port_id: decoded
- src_blk_id: decoder
src_port_id: decoded
snk_blk_id: decoded_planes
snk_port_id: print
- [demod, '0', bursts, '0']
- src_blk_id: demod
src_port_id: demodulated
snk_blk_id: decoder
snk_port_id: demodulated
- [framer, '0', demod, '0']
- [mag_squared, '0', framer, '0']
- [rtlsdr, '0', mag_squared, '0']
- [rtlsdr, '0', qtgui_waterfall_sink_x_0, '0']
- [threshold_trace, '0', bursts, '1']
metadata:
file_format: 2
grc_version: 3.11.0.0