1. Introductie¶

1.1. Doel en doelgroep¶

Als eerste een paar belangrijke termen:

Software-Defined Radio (SDR):

Als concept verwijst het naar het gebruik van software om signaalbewerkingen voor radio/RF toepassingen uit te voeren die normaal in hardware worden gedaan. Deze software kan worden uitgevoerd op een algemene computer (CPU), FPGA of zelfs een GPU, en kan worden gebruikt voor real-time toepassingen of offline bewerking van opgenomen signalen. Alternatieve termen zijn “software radio” en “digitale radiosignaalbewerking”.

Als ding (bijv. “een SDR”) verwijst het meestal naar een apparaat waar je een antenne op aan kunt sluiten en RF-signalen mee kunt ontvangen waarbij de gedigitaliseerde RF-samples naar een computer worden gestuurd voor bewerking of opname (bijv. via USB, Ethernet, PCI). Veel SDR’s hebben ook zendmogelijkheden, waardoor de computer samples naar de SDR kan sturen die vervolgens het signaal op een gespecificeerde radiofrequentie uitzendt. Sommige SDR’s bevatten een ingebouwde computer.

Digital signal Processing (DSP):
Op een digitale manier signalen bewerken, in ons geval RF-signalen.

Dit boek dient als een praktische introductie op de gebieden van DSP, SDR en draadloze communicatie. Het is ontworpen voor iemand die:

  1. Coole dingen met SDR’s wil doen
  2. Goed met Python kan omgaan
  3. Relatief onbekend is met digitale signaalbewerking, draadloze communicatie en SDR
  4. Liever (visueel) leert door animaties dan door vergelijkingen
  5. Vergelijkingen beter begrijpt na het leren van de concepten
  6. Op zoek is naar een korte uitleg en niet een boek van 1000 pagina’s.

Als voorbeeld een student die interesse heeft in banen die te maken hebben met draadloze communicatie, of iedereen met een beetje programmeerervaring die graag over SDR’s wil leren. Om deze reden bevat dit boek de benodigde theorie om DSP-technieken te begrijpen, zonder de intense wiskunde dat normaal in DSP-cursussen wordt gebruikt. In plaats van onszelf in te graven met vergelijkingen, wordt een overvloed aan figuren en animaties gebruikt om de concepten over te brengen, zoals de Fourierreeks animatie hieronder. Ik geloof dat vergelijkingen het beste worden begrepen na de concepten te hebben geleerd door middel van visuele en praktische oefeningen. Door het zware gebruik van animaties zal PySDR ook nooit als fysiek boek verschijnen op Amazon.

The PySDR logo created using a Fourier transform

Dit boek heeft als doel concepten snel en vloeiend te introduceren waardoor de lezer in staat is om DSP toe te passen en SDR’s intelligent te gebruiken. Het is niet bedoelt als verwijzing naar alle DSP/SDR onderwerpen; er zijn al veel geweldige boeken zoals Analog Device’s SDR boek en dspguide.com. Je kunt altijd Google gebruiken om goniometrische identiteiten of de limiet van Shannon op te zoeken. Zie dit boek als een poort tot de wereld van DSP en SDR: het is makkelijker en minder tijd- en geldconsumerend alternatief vergeleken met traditionele cursussen en boeken.

Om de basis DSP-theorie te behandelen, is een heel semester aan “Signalen en Systemen”, een typische cursus bij elektrotechniek, samengevoegd tot een paar hoofdstukken. Wanneer de basis is behandeld, springen we naar SDR’s, hoewel door het boek heen DSP- en draadloze-communicatie-concepten voorbij blijven komen.

De programmavoorbeelden worden gegeven in Python. Ze maken gebruik van NumPy, dit is de standaard bibliotheek van Python voor het gebruik van arrays en abstracte wiskunde. De voorbeelden leunen ook op Matplotlib, een Python bibliotheek waarmee op een gemakkelijke manier signalen, arrays en complexe getallen gevisualiseerd kunnen worden. Terwijl Python “langzamer” is dan C/C++, worden bijna alle functies in Python/NumPy geïmplementeerd in C/C++ en hevig geoptimaliseerd. Op dezelfde manier bestaat de Python API dat we gebruiken uit aanroepen naar C/C++ functies/klassen. Diegenen die een stevigere fundatie hebben met Matlab, Ruby of Perl dan met Python, zullen waarschijnlijk geen problemen ondervinden na het bekijken van de Python syntax.

1.2. Meehelpen¶

Als je ook maar iets van dit boek hebt gelezen en je stuurt me een email (pysdr@vt.edu) met vragen/opmerkingen/suggesties dan, gefeliciteerd. Je hebt bijgedragen aan dit boek!

Op een grotere manier kun je aan dit boek meehelpen door Git. Dit boek mag wel de vorm hebben van een website. Maar het bronmateriaal wordt gegenereerd op basis van de GitHub pagina van dit boek. Voel je vrij om een issue of zelfs een Pull Request (PR) met verbeteringen of opmerkingen aan te maken. Zij die waardevolle terugkoppeling bieden, zullen permanent aan de bedragenlijst hieronder worden toegevoegd. Ben je niet zo bekwaam met Git, maar heb je wel opmerkingen? Voel je vrij mij te e-mailen op pysdr@vt.edu.

De website en dit boek worden zonder reclame aangeboden omdat we reclame haten. Ik accepteer ook geen donaties op PayPal of Bitcoin. Er is letterlijk geen manier voor mij om betaald te worden voor dit boek. In plaats hiervan raad ik aan dit boek te delen met collega’s, studenten en andere levenslange studenten die geïnteresseerd zijn in dit onderwerp.

1.3. Erkenning¶

Bedankt aan iedereen die dit boek heeft gelezen en van feedback heeft voorzien, en met name aan:

1.4. Nederlandse vertaling¶

Bij het vertalen van dit boek heb ik de bewuste keuze gemaakt om een aantal termen in Engelse vorm te gebruiken. De belangrijkste hiervan is “sample”. Een “sample” nemen heet in het Nederlands een “monster” nemen. Wanneer we het echter gaan hebben over dingen als bemonsteringsfrequentie dan wordt het in mijn mening minder duidelijk. Samplefrequentie is leesbaarder en herkenbaar uit vele online bronnen. Om deze reden heb ik “sample” i.p.v. “monster” aangehouden.

Ook hou ik de standaard afkortingen aan zoals SDR, DSP, FIR, IIR, LPF etc. Ik geef de Nederlandse vertaling van de termen waarna ik vervolgens de Engelse afkortingen gebruik.