Build your own SDR. By Julie VK3FOWL and Joe VK3YSP

Similar documents
EECS 307: Lab Handout 2 (FALL 2012)

Ascent Ground and Satellite Demonstration

OHI/O Makeathon Spring 2016

Using GNU Radio for Analog Communications. Hackspace Brussels - January 31, 2019

EITN90 Radar and Remote Sensing Lab 2

Outline. What is GNU Radio? Basic Concepts Developing Applications

SDR Demonstra2on. Overview

Outernet L-band on Rasbian Documentation

CIS 632 / EEC 687 Mobile Computing

Lab 3: Introduction to Software Defined Radio and GNU Radio

Wireless Transmission Detection and Monitoring System using GNU Radio and Multiple RTL SDR Receivers

Design Analysis of Analog Data Reception Using GNU Radio Companion (GRC)

and RTL-SDR Wireless Systems

Software radio. Software program. What is software? 09/05/15 Slide 2

SIMPLE Raspberry Pi VHF TRANSCEIVER & TNC

About the HDSDR software operations for the IC-R8600

SDR 4++ Dual Diversity SDR Receiver. Operating Guide. version 1.0

Experimental study on Wide Band FM Receiver using GNURadio and RTL-SDR

Laboratorium 1. Introduction to GnuRadio environment. I. Introduction

Software Defined Radio! Primer + Project! Gordie Neff, N9FF! Columbia Amateur Radio Club! March 2016!

3 USRP2 Hardware Implementation

SkyPI. Order SkyPi at

What is a Communications System?

Mobile Computing GNU Radio Laboratory1: Basic test

Design and Development of an ECM Module Using Open Source Hardware and Software

Signal Safari. Welcome! Curious about RF? Looking for awesome new projects? Seeking adventure?

Practical tricks and tips

Software Defined Radio in Ham Radio Dennis Silage K3DS TS EPA Section ARRL

Software Defined Radiofrequency signal processing (SDR) GNURadio

Lab 4: Measuring Received Signal Power EE 361 Signal Propagation Spring 2017

Transceiver. Quick Start Guide. What is in the box What does it do How to build a setup Verification of the setup...

Tutorial 3: Entering the World of GNU Software Radio

Final Project Report Modulate of Internet Radio Into FM Using GNU Radio

LnR Precision, Inc. 107 East Central Avenue, Asheboro, NC

Lab 1: Analog Modulations

User Guide for the WyJen 0.5PPM P/N WRX000-5V-WIQU05C- SDR-C RTL2832U/R820T SDR USB W/ Aluminum Housing

ANALOG COMMUNICATION

WAVEFORM DEVELOPMENT USING REDHAWK

How to Fill a Terabyte Disk: The HamSci Solar Eclipse 2017 Wideband RF Project

DEVELOPMENT OF SOFTWARE RADIO PROTOTYPE

NASHUA AREA RADIO CLUB TECH NIGHT SOFTWARE DEFINED RADIOS MARCH 8 TH, 2016

Amplitude Modulation, II

@ The ULTIMATE Manual

Lab 1: Analog Modulations

200GTL ALIGNMENT REVISION: 1.0 BURKE MODEL: 200GTL REVISION: 1.2 DATE: 02/14/06. Total Pages: 6 pages. Page:1 print date: 9/23/09

Signal Hound USB-SA44B 4.4 GHz Spectrum Analyzer and USB-TG44A Tracking Generator

GNU Radio An introduction

Single Conversion LF Upconverter Andy Talbot G4JNT Jan 2009

An Introduction to Software Defined Radio. What is it? Why do I want one? How do I choose one?

SoDiRa Software-Radio Specification

TSKS01 Digital Communication

by Cliff Pulis, KE0CP SDR Presentation - Cliff Pulis, KE0CP 1

Ultra Wide-band Coverage SDR Receiver MK4

RF Tuning Range. Intermediate Frequencies. The RF tuning range of the SDRplay module is detailed below.

Outline. Communications Engineering 1

Project in Wireless Communication Lecture 7: Software Defined Radio

RELAY G10S PILOT S GUIDE B Yamaha Guitar Group, Inc. All rights reserved.

Software and Software- Defined Radio

Copyright X1DA

SPECS FEATURES SUPPLIED ACCESSORIES. HF All Band Transceiver

OBJECTIVES EQUIPMENT LIST

STEP BY STEP GUIDE (RASPBERRY PI)

Open Source Software Defined Radio Platform for GNSS Recording, Simulation and Tracking

Designing the Fox-1E PSK Modulator and FoxTelem demodulator

Digital Guitar Effects Box

sodirasdr Software-Radio Specification

EE470 Electronic Communication Theory Exam II

Agilent N7509A Waveform Generation Toolbox Application Program

TS9050/60. microgen. electronics TM FM Modulation and Spectrum Analyser

Amplitude Modulated Systems

ADI 2006 RF Seminar. Chapter II RF/IF Components and Specifications for Receivers

CS434/534: Topics in Networked (Networking) Systems

WORLD BAND RADIO. AM/FM/SW/L W/AIR Band /SSB radio with LCD backlight OWNER S MANUAL

WSPR. Raspberry Pi. and the. Scotty Cowling, WA2DFI TAPR/ARRL Digital Communications Conference September 2016, St Petersburg, FL

Code No: R Set No. 1

IQ+ XT. 144Mhz SDR-RF Exciter (preliminar v0.1)

Frequency Shift Keying Scheme to Implement SDR using Hackrf one

CLOUDSDR RFSPACE #CONNECTED SOFTWARE DEFINED RADIO. final design might vary without notice

The amazing evolution of the 706 series

SDR_Ursinho Design, Simulation and Assembly of a Direct Conversion High Frequency SDR Software Defined Receiver. Jeremy Clark VE3PKC

Modulation and Coding labolatory. Digital Modulation. Amplitude Shift Keying (ASK)

TS9080. microgen. electronics TM. FM Modulation and AF Spectrum Analyser Technical specification Issue 1.3.

Does The Radio Even Matter? - Transceiver Characterization Testing Framework

Third-Method Narrowband Direct Upconverter for the LF / MF Bands

NI USRP Lab: DQPSK Transceiver Design

Matlab exercises 2015 ELEC-E5410 Signal processing for communications

I/Q OUTPUT REFERENCE GUIDE. COMMUNICATIONS RECEIVER ir8600

Testing Motorola P25 Conventional Radios Using the R8000 Communications System Analyzer

PC Tune PC Tune Test Procedures for 5100 Series Portable Radios

Basic Transceiver tests with the 8800S

Easy SDR Experimentation with GNU Radio

Using a Software Defined Radio As a Panadapter

II. LAB. * Open the LabVIEW program (Start > All Programs > National Instruments > LabVIEW 2012 > LabVIEW 2012)

Frequency Coverage MHz RF Power Output 30W SSB / 9W AM/ 30W FM Dual Finals on Heat Sink Modes AM, FM, USB, LSB Microprocessor

Mastr III P25 Base Station Transmitter Tune-up Procedure

Triarchy VSG6G1C USB Vector RF Signal Generator Operating Manual

HF Receivers, Part 2

SCA COMPATIBLE SOFTWARE DEFINED WIDEBAND RECEIVER FOR REAL TIME ENERGY DETECTION AND MODULATION RECOGNITION

USB Vector Spectrum Analyzer Operating Manual

Software Radio Network Testbed

Transcription:

2018 Build your own SDR By Julie VK3FOWL and Joe VK3YSP

Introduction Why build your own Software Defined Radio? Learn about Digital Signal Processing, GNU Radio Flow Graphs, IQ, Linux and Python Create your own embedded radio projects and test instruments Use those old, forgotten, SDR Dongles in your junk box Explore ALL Modes: AM,FM,SSB,PSK,AIS,ADS-B,DRM,TETRA,DMR,NXDN,D-STAR Why buy a $25 RTL-SDR USB DVB-TV Dongle? Frequency: 24MHz-1.766GHz with 1ppm TO Bandwidth: 2.4MHz Max Also runs on Windows with free SDR#, HDSDR, PowerSDR & more Why buy a $65 Raspberry Pi 3? 1.2GHz, 64bit, Quad-Core, 5V, credit card size computer with WiFi, HDMI & Linux. Also runs: WSJT-X, DIGI, HAMLIB, GPREDICT & more

Hardware Required

Hardware Required Computer/Laptop with fast Internet access, USB &/or Micro SDHC Card adapter. HDMI monitor (TV)/HDMI cable/usb Keyboard/USB Mouse/PC Speakers. Raspberry Pi 3 $ 65.15 Pi Australia inc P&P Micro USB Power Supply 5V, >= 2A $ 18.45 ebay (AU Stock) Micro SDHC card (>=8GB) + adapter $ 11.00 Officeworks (16GB) USB Extension Cables (x2) $ 1.14 - ebay RTL-SDR Dongle (US$19.95) $ 25.20 - https://www.rtl-sdr.com Total Cost (Approx) $122.08

Buying a Raspberry Pi 3

Buying a RTL-SDR Dongle

Downloading Raspberry Pi Software Requires a PC with a fast Internet connection. This will take 2-3 hours. Download Raspbian Jessie (the latest Stretch version will not work): https://downloads.raspberrypi.org/raspbian/images/raspbian-2017-07-05/2017-07-05-raspbian-jessie.zip Unzip 2017-07-05-raspbian-jessie.img to the desktop Download and Install Etcher for your PC from https://etcher.io/

Creating a Micro SDHC Boot Disk 1. Insert Micro SDHC card into adapter and adapter into computer. 2. Run Etcher. Select the.img file above. Select your Micro SDHC card. 3. Press Flash! Etcher will create a boot disk. Warning: All Data Erased! 4. Important: Ignore Format Disk if Windows asks! 5. Remove the Micro SDHC card from the computer.

Starting up the Raspberry Pi 3 1. Insert Micro SDHC card into Raspberry Pi 3. 2. Connect an HDMI Monitor and turn it on 3. Connect amplified PC speakers and turn them on 4. Connect a USB RTL-SDR DVB-TV Dongle 5. Connect a USB Keyboard 6. Connect a USB Mouse 7. Connect a 5V Micro USB power supply and turn it on 8. The Raspberry Pi 3 should boot up to the desktop

Setting up the Raspberry Pi 3 Click Preferences Raspberry Pi Configuration Set Password Default is raspberry Set Locale, Time Zone, WiFi Country Select Wired/Wireless Network icon Connect to your WiFi router Check clock is updated automatically

Install Applications on the Raspberry Pi 3 Open a Terminal window. Type the commands in blue. sudo apt-get update sudo apt-get y upgrade sudo apt-get y install rtl-sdr gr-osmosdr amixer set PCM 100% Shutdown and cycle power to reset RTL-SDR Dongle. Start GNU Radio Companion: Click Programming GRC

Create a GNU Radio Companion flow graph Drag a Signal Source and an Audio Sink to the flow graph. Connect the two blocks. Select the samp_rate variable and change it to 48000. Change the Signal Source Output type from Complex to Float. Change the Audio Sink Device Name to hw:0,1 Press F6 and listen to the 1kHz tone on the speaker.

Create a GNU Radio Companion flow graph Drag an RTL-SDR Source to the flow graph Drag a QT GUI Frequency Sink to the flow graph Connect the two blocks Select the samp_rate Variable and change it to 240000 Select the Options and change to QT GUI Press F6 to run

Changing flow block properties

Hints and Tips Create a GNUradio Projects folder in the Documents folder Use either QT or WX GUI widgets and select the same in Options Connected blocks must have compatible input/output types Use to cycle between flow block input/output types Use and to rotate flow blocks RTL2832 sample rates: 240,288,300,960,1200,1440,1600,1800,1920,2400kHz Audio Sink sample rates: 16, 24, 32, 48kHz. Audio Device Names are: hw:0,1 (Internal RPi BCM2835 Sound Device) hw:1,0 (External USB Sound Dongle) To calibrate SDR: Type rtl_test p and use the cumulative ppm Select View Find Blocks Press F5 to generate an executable Python 2 script

Project #1: Receiver Frequency Range: 24MHz 1.766GHz. Mode Selection: AM, FM, LSB, USB. Bandwidth Selection: 600, 2400, 2800, 3200, 6400Hz. Squelch Control. Automatic Gain Control. Clarifier Control. Waterfall Display.

RTL-SDR DONGLE RASPBERRY PI + GNURADIO RF IF BB AM DEMODULATOR RMS THRESHOLD (SQUELCH) 434.6MHz RF AMP 24MHz-1.766GHz IF AMP 10kHz LOW PASS FILTER 0.6 6.4kHz NBFM DEMODULATOR AGC GATE VOLUME AF AMP 1 ST LO f t = 434.590MHz 2 ND LO f o = 10kHz SSB DEMODULATOR DECISION: f o WILL BE JUST OUTSIDE OF THE AUDIO BANDPASS, SAY 10kHz DECISION: f s WILL BE THE MINIMUM SDR SAMPLE FREQUENCY f s = 240kHz DECISION: f s WILL BE 5 TIMES f a FOR EASY DOWNSAMPLING f a = 48kHz DECISION: f a WILL BE THE MAXIMUM AUDIO SAMPLE FREQUENCY OF THE SOUND DEVICE

The RTL-SDR dongle provides a Complex (IQ) Signal It has two components: Real (In-Phase) and Imaginary (Quadrature-Phase) RF RE IM L U RF RTL-SDR SOURCE IF 240kHz (0 ) (0 ) L U (+90 ) L + U = Complex RE = Real IM = Imaginary RF OSC f t ADC 90 OSC f s Down Converter/Sampler/Quadrature Demodulator RE (I) IM (Q) Complex (IQ) Signal (-90 )

RF 0 // X X X f t L f c U X X f c = Carrier frequency f t = SDR tuner frequency f s = SDR sample frequency = 434.600MHz = 434.590MHz = 240kHz DC SPIKE (OUCH!) U = Upper Sideband L = Lower Sideband X = Unwanted Signals IF -f s /2 X X X L U X X 0 f c - f t +f s /2 RF IF Negative Frequency? RTL-SDR SOURCE 240kHz Complex Output?

DC SPIKE (OUCH!) IF -f s /2 X X X L U X X 0 f o = f c - f t +f s /2 f s = SDR sample frequency = 240kHz f o = Intermediate Frequency = 10kHz TRANSLATE BY -f o LOW PASS FILTER DECIMATE BY 5 BB f a = Audio sample frequency f b = Filter bandwidth RTL-SDR SOURCE 240kHz // -f b L 0 = 48kHz = 3kHz U +f b +f a =+f s /10 Rule: Multiplying real frequencies in the time domain = Adding and subtracting frequencies in the frequency domain. But: Multiplying complex frequencies in the time domain = Adding frequencies in the frequency domain No ambiguity. RF IF BB SIGNAL SOURCE -f o -f a =-f s /10 240kHz MULTIPLY // 240kHz LOW PASS FILTER DECIMATE = 5 48kHz

BB -24kHz // -3kHz L 0 U +3kHz // = Complex = Floating Point COMPLEX TO MAG AM RMS THRESHOLD (SQUELCH) 48kHz NBFM RECEIVE FM SELECTOR (AM/FM/LSB/USB) DC BLOCKER AGC SSB DEMODULATOR LSB USB AUDIO SINK MULTIPLY CONSTANT (VOLUME) MULTIPLY

RE 1 2 3 (0 ) (0 ) (0 ) (0 ) (0 ) (0 ) L U L U + L U = L (180 ) BB 48kHz COMPLEX TO OAT RE IM HILBERT COMPLEX TO OAT RE IM 1 2 ADD 3 LSB 48kHz = Complex = Floating Point RE = Real IM = Imaginary (+90 ) L IM U HILBERT COMPLEX RE 4 ADD 6 TO OAT IM 5 USB 4 (+90 ) L U + = L 5 6 U 48kHz U (-90 ) (-90 ) (-90 ) (-90 ) (-90 )

QT GUI ENTRY (FREQ) QT GUI CHOOSER (BANDWIDTH) QT GUI CHOOSER (MODE) QT GUI RANGE (SQUELCH) QT GUI RANGE (VOLUME) QT GUI RANGE (CLARIFIER) RTL-SDR SOURCE SIGNAL SOURCE -f o MULTIPLY QT GUI WATERFALL SINK LOW PASS FILTER COMPLEX TO MAG NBFM RECEIVE AM FM COMPLEX TO OAT RE IM HILBERT COMPLEX TO OAT RE IM 1 2 ADD 3 LSB HILBERT COMPLEX RE 4 ADD 6 TO OAT IM 5 USB AUDIO SINK MULTIPLY CONSTANT (VOLUME) MULTIPLY AGC DC BLOCKER SELECTOR (AM/FM/LSB/USB) THRESHOLD (SQUELCH) RMS

Create An Executable Press F5 to generate an executable Python 2 script Note: GNUradio applications do not currently execute under Python 3 Can include GNUradio applications in other Python scripts Can run a GNUradio Class as a thread Can control GNUradio threads in real-time using Class methods like: set_freq(434.6) #!/usr/bin/env python ################################################## # Gnuradio Python Flow Graph # Title: RTL-SDR AM FM SSB Receiver # Author: Julie VK3FOWL and Joe VK3YSP # Description: www.sarcnet.org # Generated: Wed Jan 31 22:10:15 2018 ################################################## from PyQt4 import Qt from PyQt4.QtCore import QObject, pyqtslot from gnuradio import analog from gnuradio import audio from gnuradio import blocks from gnuradio import eng_notation from gnuradio import filter from gnuradio import gr from gnuradio import qtgui from gnuradio.eng_option import eng_option from gnuradio.filter import firdes from grc_gnuradio import blks2 as grc_blks2 from optparse import OptionParser import PyQt4.Qwt5 as Qwt import osmosdr import sip import sys from distutils.version import StrictVersion class rtl_sdr(gr.top_block, Qt.QWidget): def init (self): gr.top_block. init (self, "RTL-SDR AM FM SSB Receiver") Qt.QWidget. init (self) self.setwindowtitle("rtl-sdr AM FM SSB Receiver") try: self.setwindowicon(qt.qicon.fromtheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setlayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setframestyle(qt.qframe.noframe) self.top_scroll_layout.addwidget(self.top_scroll) self.top_scroll.setwidgetresizable(true) self.top_widget = Qt.QWidget() self.top_scroll.setwidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addlayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "rtl_sdr") self.restoregeometry(self.settings.value("geometry").tobytearray())

Project #2: Transmitter Modulation Monitor

References IQ Principles http://whiteboard.ping.se/sdr/iq https://www.dsprelated.com/showarticle/192.php SSB Receivers https://www.dsprelated.com/showarticle/176.php GNU Radio https://wiki.gnuradio.org/index.php/main_page GRC Source Files http://www.sarcnet.org/projects.html

The End Thank You