This shows you the differences between two versions of the page.
|
ps:labs:08 [2024/11/20 16:55] marios.choudary |
ps:labs:08 [2025/11/24 07:47] (current) marian_gabriel.dinu Fisierele audio mai usor de reperat |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| [[https://www.rtl-sdr.com/|RTL-SDR]]. | [[https://www.rtl-sdr.com/|RTL-SDR]]. | ||
| - | Găsiți [[https://www.desktopsdr.com/dl/book-pdf/|aici]] o carte informativă despre acest dispozitiv și despre cum funcționează. Pe scurt, acest dispozitiv captează semnale dintr-o gamă mare de frecvențe (25MHz -- 1.75GHz) pe care apoi le poate transforma prin IQ downconversion în semnale cu o frecvență de eșantionare mult mai mică (selectând bineînțeles frecvența de interes pe care o dorim). O schemă din acea carte care arată funcționalitatea este următoarea: | + | Găsiți [[https://www.desktopsdr.com/dl/book-pdf/|aici]] o carte informativă despre acest dispozitiv și despre cum funcționează. Pe scurt, acest dispozitiv captează semnale dintr-o gamă mare de frecvențe (25MHz -- 1.75GHz) pe care apoi le poate transforma prin IQ downconversion în semnale cu o frecvență de eșantionare mult mai mică (selectând bineînțeles frecvența de interes pe care o dorim). Modul de funcționare al acestui dispozitiv poate fi observat în imaginea următoare preluată din cartea menționată: |
| {{:ps:labs:screenshot_2021-12-04_at_23.24.06.png?direct&800|}} | {{:ps:labs:screenshot_2021-12-04_at_23.24.06.png?direct&800|}} | ||
| Line 12: | Line 13: | ||
| {{:ps:labs:fm-spectrum.png?800|}} | {{:ps:labs:fm-spectrum.png?800|}} | ||
| - | Veți putea folosi un dispozitiv RTL-SDR dacă aveți, sau două fișiere pre-generate de noi, pe care le puteți descărca de | + | Veți putea folosi un dispozitiv RTL-SDR dacă aveți/puteți împrumuta de la laborant, sau două fișiere pre-generate de noi, pe care le puteți descărca de |
| - | {{:ps:labs:x1_2.npy.zip|aici}} (câteva secunde de pe Radio Trinitas, bandă centrată pe frecvența bună de 88.5MHz cât și | + | {{:ps:labs:x1_2.npy.zip|aici}} (câteva secunde de pe Radio Trinitas, bandă centrată pe frecvența bună de 88.5MHz, cât și |
| un semnal centrat pe o frecvență alăturată -- trebuie dezarhivat înainte de folosire). | un semnal centrat pe o frecvență alăturată -- trebuie dezarhivat înainte de folosire). | ||
| - | Pentru a urma acest laborator, folosiți scheletul de cod de mai jos, din Python. | + | Pentru a urma acest laborator, folosiți scheletul de cod de mai jos. |
| Acolo veți vedea 7 TODO-uri, fiecare este punctat 2 puncte, deci aveti un total de 14 puncte la acest laborator (4 sunt considerate bonus). | Acolo veți vedea 7 TODO-uri, fiecare este punctat 2 puncte, deci aveti un total de 14 puncte la acest laborator (4 sunt considerate bonus). | ||
| - | Pentru a rula scriptul aveți nevoie de Python 3 și de câteva biblioteci instalate, așa cum este specificat la începutul fișierului. | + | Pentru a rula scriptul aveți nevoie de Python 3 și de câteva biblioteci instalate, așa cum este specificat și la începutul fișierului. |
| + | |||
| + | <note>Pentru acest laborator pot fi folosite (dacă nu folosiți dispozitivul RTL-SDR) și calculatoarele din sală, acestea având deja setup de python instalat (IDE-ul PyCharm).</note> | ||
| + | |||
| + | **Dacă nu utilizați dispozitivul RTL-SDR, puteți sări peste pașii 1, 2, 3, 4 și 6 prezentați mai jos.** | ||
| + | |||
| + | **Pentru a realiza laboratorul local folosind dispozitivul RTL-SDR, urmați acești pași:** | ||
| - | 1. Instalați Python3 și pip pentru Python3 | + | **1. Instalați Python3 și pip pentru Python3** |
| <code> | <code> | ||
| Line 27: | Line 34: | ||
| </code> | </code> | ||
| - | 2. Instalați librtlsdr (pentru a putea folosi dispozitivul RTL-SDR) | + | **2. Instalați librtlsdr (pentru a putea folosi dispozitivul RTL-SDR)** |
| Pe MAC OS: | Pe MAC OS: | ||
| Line 38: | Line 45: | ||
| <code bash> sudo apt-get install librtlsdr-dev </code> | <code bash> sudo apt-get install librtlsdr-dev </code> | ||
| - | 3. Pe linux, instalati si libportaudio2 | + | **3. Pe linux, instalati si libportaudio2** |
| <code> | <code> | ||
| sudo apt-get install libportaudio2 | sudo apt-get install libportaudio2 | ||
| </code> | </code> | ||
| - | 4. Dacă vreți să folosiți un mediu izolat pentru Python3 puteți instala virtualenv: | + | **4. Dacă vreți să folosiți un mediu izolat pentru Python3 puteți instala virtualenv:** |
| <code bash> pip3 install virtualenv </code> | <code bash> pip3 install virtualenv </code> | ||
| Apoi în folderul în care doriți să creați mediul izolat dați comanda: | Apoi în folderul în care doriți să creați mediul izolat dați comanda: | ||
| Line 50: | Line 57: | ||
| <code bash> source bin/activate </code> | <code bash> source bin/activate </code> | ||
| - | 5. Instalați matplotlib, scipy, sounddevice, ipython pentru Python3: | + | **5. Instalați matplotlib, scipy, sounddevice, ipython pentru Python3:** |
| <code bash> | <code bash> | ||
| pip3 install pyrtlsdr matplotlib scipy ipython sounddevice | pip3 install pyrtlsdr matplotlib scipy ipython sounddevice | ||
| </code> | </code> | ||
| - | 6. Tot pentru Linux, posibil sa trebuiasca sa adugati dispozitivul in udev, | + | **6. Tot pentru Linux, posibil sa trebuiasca sa adugati dispozitivul in udev, |
| - | asa cum este descris [[https://www.instructables.com/rtl-sdr-on-Ubuntu/|aici]]. | + | asa cum este descris [[https://www.instructables.com/rtl-sdr-on-Ubuntu/|aici]].** |
| Pe scurt, ca root faceti un fisier in /etc/udev/rules.d/20.rtlsdr.rules care contine urmatoarea linie: | Pe scurt, ca root faceti un fisier in /etc/udev/rules.d/20.rtlsdr.rules care contine urmatoarea linie: | ||
| <code> | <code> | ||
| SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="adm", MODE="0666", SYMLINK+="rtl_sdr" | SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="adm", MODE="0666", SYMLINK+="rtl_sdr" | ||
| </code> | </code> | ||
| - | Apoi scoateti si reinserati dispozitivul RTL in portul USB. | + | Apoi scoateți și reinserați dispozitivul RTL în portul USB. |
| - | Acum laboratorul efectiv... Aici veti esantiona un semnal de pe o anumita banda FM (e.g. Trinitas FM, | + | Pe partea de cod veți esantiona un semnal de pe o anumită bandă FM, de exemplu Trinitas FM, |
| - | dar puteti schimba cu alta daca vreti) si apoi veti folosi diverse tehnici/metode discutate la | + | (puteți schimba cu altă bandă) și apoi veți folosi diverse tehnici/metode discutate la |
| - | cursurile si laboratoarele precedente: decimare, FFT, spectrograma, etc. | + | cursurile și laboratoarele precedente: decimare, FFT, spectrograma, etc. |
| - | Urmariti codul de mai jos cu atentie, pe rand, fara graba. Multe lucruri sunt deja facute pentru voi, | + | Urmăriți codul de mai jos cu atentie. Scheletul cuprinde o mare parte din rezolvare cu scopul de a ajunge mai ușor la rezultate și pentru a le analiza (diagramele, spectrele, semnalele, sunetele etc). Rezolvarea TODO-urilor reprezintă task-ul vostru pentru acest laborator pentru a ajunge la rezultate. |
| - | ca sa puteti mai degraba sa vizualizati/auziti rezultatele. Mai sunt cateva locuri de completat, care | + | |
| - | ar trebui sa fie simple. | + | |
| Dacă folosiți un dispozitiv RTL-SDR, atunci setați use_sdr = 1, altfel puneți use_sdr = 0. | Dacă folosiți un dispozitiv RTL-SDR, atunci setați use_sdr = 1, altfel puneți use_sdr = 0. | ||
| Line 75: | Line 80: | ||
| #from rtlsdr import RtlSdr | #from rtlsdr import RtlSdr | ||
| + | <note>Fișierele audio pe care le vom folosi în cadrul acestui laborator (dacă lucrați fără dispozitiv RTL-SDR) pot fi descărcate de {{:ps:labs:x1_2.npy.zip|aici}} (mai multe detalii despre acestea mai sus).</note> | ||
| <file python lab_rtl_sdr.py> | <file python lab_rtl_sdr.py> | ||
| Line 128: | Line 134: | ||
| else: | else: | ||
| # initializati device-ul RTL-SDR | # initializati device-ul RTL-SDR | ||
| + | # inlocuiti linia cu sdr = 0 in cazul in care nu folositi dispozitivul, iar pachetul rtlsdr nu se instaleaza cum trebuie | ||
| sdr = RtlSdr() | sdr = RtlSdr() | ||
| + | | ||
| # setati parametri device-ului | # setati parametri device-ului | ||
| sdr.sample_rate = Fs | sdr.sample_rate = Fs | ||
| Line 167: | Line 174: | ||
| else: | else: | ||
| # initializati device-ul RTL-SDR | # initializati device-ul RTL-SDR | ||
| + | # inlocuiti linia cu sdr = 0 in cazul in care nu folositi dispozitivul, iar pachetul rtlsdr nu se instaleaza cum trebuie | ||
| sdr = RtlSdr() | sdr = RtlSdr() | ||