SDR-Widget je zařízení, které umožňuje digitalizaci nízkofrekvenčního signálu z SDR přijímačů a ovládání jejich komponent (lokální oscilátor, filtrová banka, anténní přepínače) přes sběrnici I2C. Zařízení se může z hlediska operačního systému chovat buď jako klasická audio karta, nebo posílat data přes SDR specifický protokol GHPSDR. Jde o opensource projekt jehož hardware je i přes jeho velkou užitečnost nyní těžko dostupný.
Celé zařízení však lze vyrobit i z modulů stavebnice MLAB. Konkrétně jde o moduly AT32TQ14401A osazený MCU AT32UC3A3256. K němu je připojený modul adcaudio, který signál digitalizuje. Ostatní moduly, jako displej, tlačítka nebo I²C zařízení mohou být připojovány podle potřeby.
Stáhněte si z webu Atmelu balík nástrojů a header soubory např:
Rozbalte toolchain do adresáře ~/avr32-tools. A potom do tohoto adresáře na místo $HOME/avr32-tools/avr32/include vložte avr32 header soubory z druhého balíku.
Případně můžete tento krok vynechat a stáhnout si zakonzervovanou verzi AVR32 toolchain z MLAB Downloads.
wget http://home.mlab.cz/Downloads/Software/AVR32/avr32-tools_3.4.2.tar.bz2 ~/Download/
Potom pokračujeme následujícím postupem:
cd ~/Download tar -xvzf avr32-tools_3.4.2.tar.bz2 mv avr32-tools_3.4.2 $HOME/avr32-tools export PATH=$PATH:$HOME/avr32-tools/bin
Ještě otestujeme funkčnost a verzi toolchain pomocí:
kaklik@popelnice:~/programy/sdr-widget$ avr32-gcc --version avr32-gcc (AVR_32_bit_GNU_Toolchain_3.4.2_435) 4.4.7 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Pokud výpis je podobný tomuto, tak můžeme pokračovat kompilací SDR-Widget.
git clone https://github.com/borgestrand/sdr-widget cd sdr-widget/ git checkout audio-widget-experimental
Následně zkompilujeme zdrojový kód následujícím příkazem
make sdr-widget
Výsledkem kompilace jsou jednak pomocné utility a pak také firmware, který nahrajeme do MCU pocí skriptu program-widget pomocí utility dfu-programmer. Viz níže.
Pro nahrání firmware potřebujeme upravený dfu-programmer, který stáhneme následujícím postupem:
sudo apt-get install autotools-dev aclocal git clone https://github.com/MLAB-project/dfu-programmer-sdr-widget.git cd dfu-programmer-sdr-widget/ ./bootstrap.sh ./configure make sudo make install
Zkompilovanou starší verzi firmware lze stáhnout z webu googlecode. Pro MLAB aplikace se ale využívá aktualizovaná s opravenými některými chybami:
wget https://github.com/MLAB-project/sdr-widget/releases/download/bolidozor-v01/widget.elf
Před spuštěním nahrávacího sktiptu stiskneme na desce AVR32TQ tlačítka BOOT (nepopsané tlačítko, držíme do stisku a uvolnění tlačítka RESET) a RESET.
sudo ./program-widget widget.elf
Při jakýchkoli úpravách je nejdříve potřeba spustit:
make clean
Následně je možné kompilaci spustit znovu.
Pro základní konstrukci sdr-widget jsou potřeba dva moduly.
Ty navzájem propojíme následujícím způsobem
Červená, Modrá
AT32TQ14401A/POWER +5V → ADCaudio01B/POWER +5V
Žlutá 10cm
ADCaudio01B/MCLK → AT32TQ14401A/PC04
ADCaudio01B/BCLK → AT32TQ14401A/PX28 → AT32TQ14401A/PX34
ADCaudio01B/DOUT → AT32TQ14401A/PX25
ADCaudio01B/LRCLK → AT32TQ14401A/PX26 → AT32TQ14401A/PX36
ADCaudio01B/OSR0(k nápisu) → AT32TQ14401A/PB00
ADCaudio01B/OSR1(k nápisu) → AT32TQ14401A/PB01
jumper na AUDIOF0
AT32TQ14401A/JTAG2 → AT32TQ14401A/PB06
Tato sekce popisuje zapojení při použití modulu ADCaudio01A taktovaného modulem CLKGEN01B. Při použití novějšího modulu ADCaudio01B, který má integrovaný oscilátor se zapojení pro většinu aplikací zjednodušuje. Připojovat externí oscilátor má smysl v případě, že potřebujete velmi stabilní vzorkovací kmitočet například pro nějaké vědecké experimenty.
Červená, Modrá
CLKGEN01B/Vcore 3,3V → ADCaudio01A/POWER +5V → AT32TQ14401A/POWER +5V
Oranžová, Černá
CLKGEN01B/POWER → TTLPECL01A/POWER → PIC16F87x/POWER
SATA kabel
CLKGEN01B/CLKOUT → TTLPECL01A/PECL0
Žlutá
TTLPECL01A/TTL0 → ADCaudio01A/MCLK → AT32TQ14401A/PC04
Hnědá
USBI2C01A/SCL → CLKGEN01B/SCL
Bílá
USBI2C01A/SDA → CLKGEN01B/SDA
Modrá
USBI2C01A/I2C GND → CLKGEN01B/POWER GND
ADCaudio01A/BCLK → AT32TQ14401A/PX28 → AT32TQ14401A/PX34
ADCaudio01A/DOUT → AT32TQ14401A/PX25
ADCaudio01A/LRCLK → AT32TQ14401A/PX26 → AT32TQ14401A/PX36
ADCaudio01A/OSR0(k nápisu) → AT32TQ14401A/PB00
ADCaudio01A/OSR1(k nápisu) → AT32TQ14401A/PB01
jumper na AUDIOF0
AT32TQ14401A/JTAG2 → AT32TQ14401A/PB06
SDR-widget může být nakonfigurován do několika provozních režimů. Změna konfigurace se provádí konfigurační utilitou WidgetControl.py. Před jejím spuštěním nainstalujeme potřebné závislosti.
sudo apt-get install python-pythoncard python-usb
Spustíme konfigurační utilitu.
~/git/sdr-widget$ sudo ./WidgetControl.py
Pro běžné použití například uvnitř stanice Bolidozoru konfiguraci nastavíme takto:
Aby se nastavení projevilo, tak je potřeba sdr-widget odpojit a znovu připojit na USB.
Zařízení je nejsnazší otestovat v režimu standardní zvukovky, kdy na vstup připojíme signálový generátor. Výstup generátoru je vhodné na symetrický vstup ADC připojovat přes trasformátor. Ten však pro tyto účely můžeme vytvořit jednoduše z feritového jádra vyndaného například ze spínaného PC zdroje. Amplituda signálu na výstupu generátoru stačí i v případě transformátoru 1:1 v řádu jednotek milivoltů.
Software použitý k zobrazení signálu z generátoru může být například PySDR, nebo je možné využít rovnou ghpsdr3.
Test lze provést i bez připojeného generátoru pomocí šumu, který je porozovatelný na stupu ADC. Asi nejjednodušší zobrazení je při použití gnuradia. Které nainstalujeme takto:
sudo apt install gnuradio
Následně stáhneme testovací skript.
svn co svn://svn.mlab.cz/MLAB/Modules/Audio/ADCaudio01B/SW/sdr-widget_test.grc
A otevřeme testovací skript v gnuradiu:
gnuradio-companion sdr-widget_test.grc
Po spuštění skriptu tlačítem „Play“ by vykreslené spektrum mělo vypadat přibližně následovně.
Digitalizační jednotku sdr-widget lze díky svojí univerzálnosti využít v mnoha měřících projektech a detekčních sítích.