Skip to content

Commit

Permalink
updated url to new repo
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc Lichtman committed Jan 9, 2024
1 parent 5f6a37c commit ff52475
Show file tree
Hide file tree
Showing 23 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# PySDR Textbook
<p align="center">
<img src="https://raw.githubusercontent.com/777arc/textbook/master/_images/fft_logo_wide.gif" width="350"/>
<img src="https://raw.githubusercontent.com/777arc/PySDR/master/_images/fft_logo_wide.gif" width="350"/>
</p>
This repo contains the source content used to generate the textbook, __PySDR: A Guide to SDR and DSP using Python__ , hosted at www.pysdr.org.

Expand Down
2 changes: 1 addition & 1 deletion _templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

<div style="float: right; padding-bottom: 0;">
<!-- GitHub Logo //-->
<a href="https://github.com/777arc/textbook" target="_blank" style="text-decoration:none;">
<a href="https://github.com/777arc/PySDR" target="_blank" style="text-decoration:none;">
<svg height="18px" width="18px">
<path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path>
</svg>
Expand Down
2 changes: 1 addition & 1 deletion conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@
'page_width': 'auto', # makes body width fill the window nicely, but for some reason there's a max around 1000px
'sidebar_width': '290px', # width of sidebar
'show_powered_by': False,
'extra_nav_links':{'GitHub Link':'https://github.com/777arc/textbook', 'Online Python Console':'https://trinket.io/embed/python3'},
'extra_nav_links':{'GitHub Link':'https://github.com/777arc/PySDR', 'Online Python Console':'https://trinket.io/embed/python3'},
'show_relbars': True} # previous and next links at top and bottom (can also use show_relbar_bottom)


Expand Down
2 changes: 1 addition & 1 deletion content-fr/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Contribution

Si vous parvenez à lire une partie de ce manuel et que vous m'envoyez un courriel à l'adresse [email protected] avec des questions/commentaires/suggestions, alors félicitations, vous aurez contribué à ce manuel!

Mais à une plus grande échelle, vous pouvez contribuer à ce manuel de la même manière que n'importe quel projet de logiciel open source - à travers Git. Ce manuel prend la forme d'un site Web, mais le matériel source à partir duquel il est généré vit sur la page GitHub du manuel `<https://github.com/777arc/textbook>`_. N'hésitez pas à soumettre un problème ou même une demande de transfert (Pull Request, PR) avec des corrections ou des améliorations. Ceux qui soumettent des commentaires/réparations de valeur seront ajoutés de façon permanente à la section des remerciements ci-dessous. Vous n'êtes pas doué pour Git mais vous avez des changements à suggérer? N'hésitez pas à m'envoyer un courriel à [email protected].
Mais à une plus grande échelle, vous pouvez contribuer à ce manuel de la même manière que n'importe quel projet de logiciel open source - à travers Git. Ce manuel prend la forme d'un site Web, mais le matériel source à partir duquel il est généré vit sur la page GitHub du manuel `<https://github.com/777arc/PySDR>`_. N'hésitez pas à soumettre un problème ou même une demande de transfert (Pull Request, PR) avec des corrections ou des améliorations. Ceux qui soumettent des commentaires/réparations de valeur seront ajoutés de façon permanente à la section des remerciements ci-dessous. Vous n'êtes pas doué pour Git mais vous avez des changements à suggérer? N'hésitez pas à m'envoyer un courriel à [email protected].

Le site Web sur lequel ce manuel est hébergé est exempt de publicité, car nous détestons tous les publicités. Je ne fournis pas non plus d'adresse PayPal ou Bitcoin où j'accepte les dons. Il n'y a littéralement aucun moyen pour moi d'être payé pour ce manuel. Au lieu de cela, je suggère simplement de partager ce manuel avec des collègues, des étudiants et d'autres apprenants tout au long de la vie qui pourraient être intéressés par ce matériel.

Expand Down
2 changes: 1 addition & 1 deletion content-fr/rds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ L'exemple ci-dessous montre la sortie de l'étape d'analyse syntaxique pour une
Récapitulation et code final
********************************

Vous l'avez fait! Ci-dessous se trouve tout le code ci-dessus, concaténé, il devrait fonctionner avec `l'enregistrement radio FM test que vous pouvez trouver ici <https://github.com/777arc/498x/blob/master/fm_rds_250k_1Msamples.iq?raw=true>`_, bien que vous devriez être en mesure d'alimenter votre propre signal tant que son SNR reçu est assez élevé, il suffit de régler la fréquence centrale de la station et d'échantillonner à un taux de 250 kHz. Si vous trouvez que vous avez dû faire des ajustements pour le faire fonctionner avec votre propre enregistrement ou SDR en direct, faites-moi savoir ce que vous avez dû faire, vous pouvez le soumettre comme un PR GitHub à `la page GitHub du manuel <https://github.com/777arc/textbook>`_. Vous pouvez également trouver une version de ce code avec des dizaines de tracés/graphes de débogage inclus, que j'ai utilisé à l'origine pour faire ce chapitre, `ici <https://github.com/777arc/textbook/blob/master/figure-generating-scripts/rds_demo.py>`_.
Vous l'avez fait! Ci-dessous se trouve tout le code ci-dessus, concaténé, il devrait fonctionner avec `l'enregistrement radio FM test que vous pouvez trouver ici <https://github.com/777arc/498x/blob/master/fm_rds_250k_1Msamples.iq?raw=true>`_, bien que vous devriez être en mesure d'alimenter votre propre signal tant que son SNR reçu est assez élevé, il suffit de régler la fréquence centrale de la station et d'échantillonner à un taux de 250 kHz. Si vous trouvez que vous avez dû faire des ajustements pour le faire fonctionner avec votre propre enregistrement ou SDR en direct, faites-moi savoir ce que vous avez dû faire, vous pouvez le soumettre comme un PR GitHub à `la page GitHub du manuel <https://github.com/777arc/PySDR>`_. Vous pouvez également trouver une version de ce code avec des dizaines de tracés/graphes de débogage inclus, que j'ai utilisé à l'origine pour faire ce chapitre, `ici <https://github.com/777arc/PySDR/blob/master/figure-generating-scripts/rds_demo.py>`_.

.. raw:: html

Expand Down
2 changes: 1 addition & 1 deletion content-fr/sampling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Que se passe-t-il lorsque l'on additionne un sinus et un cosinus? Ou plutôt, qu
:scale: 100%
:align: center

(Le code utilisé pour cette application Python pyqtgraph se trouve à l'adresse suivante `ici <https://raw.githubusercontent.com/777arc/textbook/master/figure-generating-scripts/sin_plus_cos.py>`_)
(Le code utilisé pour cette application Python pyqtgraph se trouve à l'adresse suivante `ici <https://raw.githubusercontent.com/777arc/PySDR/master/figure-generating-scripts/sin_plus_cos.py>`_)

Ce qu'il faut retenir, c'est que lorsque nous additionnons le cos() et le sin(), nous obtenons une autre onde sinusoïdale pure avec une phase et une amplitude différentes. De plus, la phase se décale lorsque nous retirons ou ajoutons lentement l'une des deux parties. L'amplitude change également. Tout ceci est le résultat de l'identité trigonométrique : :math:`a \cos(x) + b \sin(x) = A \cos(x-\phi)`, sur laquelle nous reviendrons plus tard. "L'utilité" de ce résultat est que nous pouvons contrôler la phase et l'amplitude d'une onde sinusoïdale résultante en ajustant les amplitudes I et Q (nous n'avons pas besoin d'ajuster la phase du cosinus ou du sinus). Par exemple, nous pouvons ajuster I et Q de manière à ce que l'amplitude reste constante et que la phase soit celle que nous voulons. En tant qu'émetteur, cette approche est extrêmement utile car nous savons que nous devons transmettre un signal sinusoïdal pour qu'il se propage dans l'air comme une onde électromagnétique. Et il est beaucoup plus facile de régler deux amplitudes et d'effectuer une opération d'addition que de régler une amplitude et une phase. Le résultat est que notre émetteur ressemblera à quelque chose comme ceci:

Expand Down
2 changes: 1 addition & 1 deletion content-fr/sync.rst
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ Il faut près de 70 échantillons pour que l'algorithme se verrouille complètem

La boucle de Costas, en plus de supprimer le décalage de fréquence, a aligné notre signal BPSK pour qu'il soit sur la partie I, ce qui rend Q à nouveau nul. Il s'agit d'un effet secondaire pratique de la boucle de Costas, et il permet à la boucle de Costas d'agir essentiellement comme notre démodulateur. Maintenant, tout ce que nous avons à faire est de prendre I et de voir s'il est supérieur ou inférieur à zéro. Nous ne saurons pas vraiment comment transformer un négatif et un positif en 0 et 1 parce qu'il peut y avoir ou non une inversion; il n'y a aucun moyen pour la boucle de Costas (ou notre synchronisation temporelle) de le savoir. C'est là que le codage différentiel entre en jeu. Il lève l'ambiguïté car les 1 et les 0 sont basés sur le fait que le symbole a changé ou non, et non sur le fait qu'il était +1 ou -1. Si on ajoute le codage différentiel, on utilise toujours la BPSK. Nous ajouterions un bloc de codage différentiel juste avant la modulation du côté Tx et juste après la démodulation du côté Rx.

Vous trouverez ci-dessous une animation de la synchronisation temporelle et de la synchronisation de fréquence. La synchronisation temporelle se produit presque immédiatement, mais la synchronisation de fréquence prend presque toute l'animation pour s'installer complètement, et ce parce que :code:`alpha` et :code:`beta` ont été réglés trop bas, à 0.005 et 0.001 respectivement. Le code utilisé pour générer cette animation peut être trouvé `ici <https://github.com/777arc/textbook/blob/master/figure-generating-scripts/costas_loop_animation.py>`_.
Vous trouverez ci-dessous une animation de la synchronisation temporelle et de la synchronisation de fréquence. La synchronisation temporelle se produit presque immédiatement, mais la synchronisation de fréquence prend presque toute l'animation pour s'installer complètement, et ce parce que :code:`alpha` et :code:`beta` ont été réglés trop bas, à 0.005 et 0.001 respectivement. Le code utilisé pour générer cette animation peut être trouvé `ici <https://github.com/777arc/PySDR/blob/master/figure-generating-scripts/costas_loop_animation.py>`_.

.. image:: ../_images/costas_animation.gif
:align: center
Expand Down
2 changes: 1 addition & 1 deletion content-nl/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Meehelpen

Als je ook maar iets van dit boek hebt gelezen en je stuurt me een email ([email protected]) 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 <https://github.com/777arc/textbook>`_ 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 [email protected].
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 <https://github.com/777arc/PySDR>`_ 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 [email protected].

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.

Expand Down
2 changes: 1 addition & 1 deletion content-nl/rds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -718,7 +718,7 @@ Laatste code
********************************

Het is af! Alle bovenstaande code is samengevoegd tot de code hieronder. Het zou moeten werken met de `FM opname die je hier kunt vinden <https://github.com/versd/pysdr/blob/dutch/fm_1027mhz_250ksps?raw=true>`_ . Je zou ook je eigen signaal moeten kunnen gebruiken zolang de SNR hoog genoeg is, de middenfrequentie goed is afgesteld en je een samplefrequentie van 250 kHz hebt gebruikt.
Mocht je de code moeten tweaken om het werkend te krijgen met jouw opname of SDR, laat me dan weten wat je moest doen en je kunt het insturen als een pull-request op de `GitHub pagina <https://github.com/777arc/textbook>`_. Ook is `hier <https://github.com/777arc/textbook/blob/master/figure-generating-scripts/rds_demo.py>`_ een versie te vinden met een hoop code om de figuren uit dit hoofdstuk te genereren.
Mocht je de code moeten tweaken om het werkend te krijgen met jouw opname of SDR, laat me dan weten wat je moest doen en je kunt het insturen als een pull-request op de `GitHub pagina <https://github.com/777arc/PySDR>`_. Ook is `hier <https://github.com/777arc/PySDR/blob/master/figure-generating-scripts/rds_demo.py>`_ een versie te vinden met een hoop code om de figuren uit dit hoofdstuk te genereren.

.. raw:: html

Expand Down
2 changes: 1 addition & 1 deletion content-nl/sampling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Wat zou er gebeuren wanneer we een sinus en cosinus optellen? Of eigenlijk, wat
:scale: 100%
:align: center

(De code voor deze Python-app kun je hier vinden: `link <https://raw.githubusercontent.com/777arc/textbook/master/figure-generating-scripts/sin_plus_cos.py>`_)
(De code voor deze Python-app kun je hier vinden: `link <https://raw.githubusercontent.com/777arc/PySDR/master/figure-generating-scripts/sin_plus_cos.py>`_)

Wat je hier uit moet onthouden is dat wanneer de cos() en sin() worden opgeteld, we een andere zuivere sinusoïde krijgen met een andere fase en amplitude. Daarnaast verschuift de fase wanneer we langzaam een van de twee delen groter of kleiner maken. De amplitude verandert ook mee. Dit is allemaal het gevolg van de goniometrische identiteit: :math:`a \cos(x) + b \sin(x) = A \cos(x-\phi)`, waar we dadelijk op terug komen. Het "nut" van dit gedrag is dat we de fase en amplitude van de resulterende sinusoïde kunnen controleren door I en Q aan te passen (we hoeven niets de doen met de fase van cosinus of sinus). We kunnen bijvoorbeeld I en Q op zo'n manier aanpassen dat de amplitude constant blijft en de fase naar wens wordt ingesteld. Omdat we weten dat we een sinusoïde signaal moeten versturen om het door de lucht te laten vliegen als een elektromagnetische golf, is deze mogelijkheid voor een zender extreem handig. Het is daarnaast veel makkelijker om twee amplitudes aan te passen en een optelling uit te voeren, dan amplitude en fase moeten aanpassen. Het resultaat is dat onze zender er ongeveer zo uit zal zien:

Expand Down
2 changes: 1 addition & 1 deletion content-nl/sync.rst
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ Je kunt zien dat de grove frequentiesynchronisatie nog steeds 300 Hz ernaast zat

De Costas-loop heeft niet alleen de frequentieafwijking gecorrigeerd, maar ook ons BPSK-signaal uitgelijnd met het I deel waardoor Q weer nul is geworden. Dit is een bijkomend voordeel van de Costas-loop, en maakt het in essentie ook onze demodulator. We hoeven alleen nog maar te kijken of het reële I-deel boven of onder de 0 is. Helaas weten we nog niet of de negatieve of positieve waarde correspondeert met 0 of 1 want er kan een inversie plaats hebben gevonden; de Costas-loop kan dat in geen mogelijkheid weten. Hier komt differentiële codering om de hoek kijken. Dit verwijdert de twijfel omdat 1'en en 0'en nu worden gebaseerd op het feit dat er een verandering heeft plaatsgevonden, niet of het een -1 of +1 was. Wanneer de differentiële codering toepassen dan gebruiken we nog steeds BPSK. We zouden dit coderingsblok net voor de modulatie op de tx kant, en net na demodulatie op de rx kant, stoppen.

Hieronder zie je een animatie van de tijdsynchronisatie en frequentiecorrectie algoritmen, de tijdsynchronisatie gebeurt bijna meteen, maar de frequentiecorrectie heeft bijna de hele animatie nodig om de juist instelling te vinden. Dit komt omdat we een te lage waarde hadden gekozen voor :code:`alpha` en :code:`beta` (0.005 en 0.001). De code van deze animatie is hier te `vinden <https://github.com/777arc/textbook/blob/master/figure-generating-scripts/costas_loop_animation.py>`_.
Hieronder zie je een animatie van de tijdsynchronisatie en frequentiecorrectie algoritmen, de tijdsynchronisatie gebeurt bijna meteen, maar de frequentiecorrectie heeft bijna de hele animatie nodig om de juist instelling te vinden. Dit komt omdat we een te lage waarde hadden gekozen voor :code:`alpha` en :code:`beta` (0.005 en 0.001). De code van deze animatie is hier te `vinden <https://github.com/777arc/PySDR/blob/master/figure-generating-scripts/costas_loop_animation.py>`_.

.. image:: images/costas.gif
:align: center
Expand Down
2 changes: 1 addition & 1 deletion content-ukraine/doa.rst
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ Steering Nulls
Висновки та список використаної літератури
******************************************
Весь код на Python, включаючи код, що використовується для генерації малюнків/анімацій, можна знайти `на сторінці підручника на GitHub <https://github.com/777arc/textbook/blob/master/figure-generating-scripts/doa.py>`_.
Весь код на Python, включаючи код, що використовується для генерації малюнків/анімацій, можна знайти `на сторінці підручника на GitHub <https://github.com/777arc/PySDR/blob/master/figure-generating-scripts/doa.py>`_.
* Реалізація DOA на GNU Radio - https://github.com/EttusResearch/gr-doa
* Реалізація DOA у KrakenSDR - https://github.com/krakenrf/krakensdr_doa/blob/main/_signal_processing/krakenSDR_signal_processor.py
Loading

0 comments on commit ff52475

Please sign in to comment.