====== Digitalizační jednotka SDR-Widget ====== [[https://code.google.com/p/sdr-widget/|SDR-Widget]] je konstrukce, která umožňuje digitalizaci audio signálu z SDR přijímačů a jejich ovládání přes sběrnici [[cs:i2c|I2C]]. Zařízení se může z hlediska 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ý. {{:cs:designs:sdr:sdr-widget.png?600|}} Celé zařízení však lze vyrobit i z modulů stavebnice MLAB. Konkrétně jde o moduly [[cs:at32tq144|AT32TQ14401A]] osazený MCU [[http://www.atmel.com/devices/AT32UC3A3256.aspx|AT32UC3A3256]]. K němu je připojený modul [[cs:adcaudio]], který signál digitalizuje. Ostatní moduly, jako [[cs:lcd2l4p|displej]], tlačítka nebo [[cs:i2c|I²C]] zařízení mohou být připojovány podle potřeby. {{:cs:designs:tools:sdr_widget1.jpg?300|}} {{:cs:designs:tools:sdr_widget2.jpg?300|}} {{:cs:designs:tools:sdr_widget_connection.jpg?300|}} ===== Kompilace firmware ===== ==== AVR32 Toolchain ==== Stáhněte si z [[http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx?tab=overview|webu Atmelu]] balík nástrojů a header soubory např: * Atmel AVR 32-bit Toolchain 3.4.2 - Linux 64-bit * Atmel AVR 8-bit and 32-bit Toolchain (3.4.2) 6.1.3.1475 - Header Files 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 [[http://home.mlab.cz/Downloads/Software/AVR32/|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. ==== SDR-Widget sources ==== git clone https://github.com/borgestrand/sdr-widget cd sdr-widget/ git checkout audio-widget-experimental Následně zkompilujeme zdrojový kód pomocí make sdr-widget Výsledkem kompilace jsou jednak pomocné utility a pak také firmware, který nahrajeme do MCU pocí skriptu [[https://github.com/borgestrand/sdr-widget/blob/master/etc/program-widget|program-widget]] pomocí utility [[https://github.com/alexlee188/dfu-programmer-sdr-widget|dfu-programmer]]. Viz níže. ===== Nahrání firmware ===== 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 [[ https://sdr-widget.googlecode.com/files/sdr-widget-2012-10-22.elf | 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. ===== Zapojení modulů MLAB SDR-Widget ===== Pro základní konstrukci sdr-widget jsou potřeba dva moduly. * [[cs:adcaudio|]] * [[cs:at32tq144|]] Ty navzájem propojíme následujícím způsobem === Napájení 5V === Červená, Modrá ''AT32TQ14401A/POWER +5V → ADCaudio01B/POWER +5V'' === I2S === Žlutá 10cm ''ADCaudio01B/MCLK → AT32TQ14401A/PC04'' ''ADCaudio01B/BCLK → AT32TQ14401A/PX28 → AT32TQ14401A/PX34'' ''ADCaudio01B/DOUT → AT32TQ14401A/PX25'' ''ADCaudio01B/LRCLK → AT32TQ14401A/PX26 → AT32TQ14401A/PX36'' === Sample rate select === ''ADCaudio01B/OSR0(k nápisu) → AT32TQ14401A/PB00'' ''ADCaudio01B/OSR1(k nápisu) → AT32TQ14401A/PB01'' ''jumper na AUDIOF0'' ''AT32TQ14401A/JTAG2 → AT32TQ14401A/PB06'' ==== Případ externího oscilátoru ==== Tato sekce popisuje zapojení při použití modulu [[cs:adcaudio|ADCaudio01A]] taktovaného modulem [[cs:clkgen|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 ultrastabilní vzorkovací kmitočet například pro potřeby HiFi. === Napájení 5V === Červená, Modrá ''CLKGEN01B/Vcore 3,3V → ADCaudio01A/POWER +5V → AT32TQ14401A/POWER +5V'' === Napájení 3,3V === Oranžová, Černá ''CLKGEN01B/POWER → TTLPECL01A/POWER → PIC16F87x/POWER'' === Rozvod hodin === SATA kabel ''CLKGEN01B/CLKOUT → TTLPECL01A/PECL0'' Žlutá ''TTLPECL01A/TTL0 → ADCaudio01A/MCLK → AT32TQ14401A/PC04'' === I2C === Hnědá ''USBI2C01A/SCL → CLKGEN01B/SCL'' Bílá ''USBI2C01A/SDA → CLKGEN01B/SDA'' Modrá ''USBI2C01A/I2C GND → CLKGEN01B/POWER GND'' === I2S === ''ADCaudio01A/BCLK → AT32TQ14401A/PX28 → AT32TQ14401A/PX34'' ''ADCaudio01A/DOUT → AT32TQ14401A/PX25'' ''ADCaudio01A/LRCLK → AT32TQ14401A/PX26 → AT32TQ14401A/PX36'' === Sample rate select === ''ADCaudio01A/OSR0(k nápisu) → AT32TQ14401A/PB00'' ''ADCaudio01A/OSR1(k nápisu) → AT32TQ14401A/PB01'' ''jumper na AUDIOF0'' ''AT32TQ14401A/JTAG2 → AT32TQ14401A/PB06'' ===== Konfigurace SDR-Widget ===== 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 Konfiguraci nastavíme takto: {{:cs:sdr:widgetcontrol.png?800|WidgetControl.py}} Aby se nastavení projevilo, tak je potřeba sdr-widget odpojit a znovu připojit na USB. === Reference === * [[http://devzone.aery32.com/2012/07/06/how-to-install-avr-32-bit-toolchain-on-linux/|How to install AVR 32-bit Toolchain on Linux]] * [[https://github.com/borgestrand/sdr-widget/blob/audio-widget-experimental/AW_readme.txt|Audio Widget README]] ===== Testování ===== 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ů. {{:cs:designs:sdr:sdr-widget_generator.jpg?300|}} {{:cs:designs:sdr:mlab_sdr-widget.jpg?300|}} {{:cs:designs:sdr:sdr-widget_transformer.jpg?300|Konstrukce měřícího transformátoru s feritovým jádrem.}} Software použitý k zobrazení signálu z generátoru může být například [[http://wiki.bolidozor.cz/doku.php?id=cs:pysdr|PySDR]], které spustíme společně s audio systémem jack. Pokročilejší uživatelé mohou využít rovnou [[http://wiki.bolidozor.cz/doku.php?id=cs:ghpsdr3|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ě. {{:cs:designs:sdr:gnuradio_sdr-widget.png?600| Výstup z testování SDR-widget}} ===== Související konstrukce ===== Digitalizační jednotku sdr-widget lze díky svojí univerzálnosti využít v mnoha [[cs:designs:dms|měřících projektech a detekčních sítích]]. * [[http://wiki.bolidozor.cz/doku.php|Bolidozor]] stanice [[cs:rmds|]] * [[cs:lightning|]] ===== TODO ===== * Vyřešit problém s [[http://www.mlab.cz/redmine/issues/300|časovým značkováním vzorků]].