[FUSEX] Spino Reception en 2FSK

Règles du forum
Cette section est dédié a vos projets, descriptions et demandes d'aide.
Merci de limiter le nombre de sujet par projets.
Lorsqu'un sujet deviens long vous pouvez éditer le premier message pour maintenir à jour le descriptif et garder en lisibilité
zskdan
Electrolab::Membre
Messages : 13
Enregistré le : 02 août 2017, 16:56

[FUSEX] Spino Reception en 2FSK

Messagepar zskdan » 24 janv. 2019, 16:06

Pendant les vacances de fetes de fin d'annee, j'ai bosse sur un decodeur en SDR des trames envoyes par la carte spino (faite l'annee derniere par Yannick et Mehdi) dont j'ai completement reecris le firmware.
La carte envoie bien les trames en 2FSK sur la frequence 433.96Mhz.

J'ai utilise dans premier temps la rtl-sdr sur gnuradio avec un sampling de 3.2M.
Mon schema block du demodulateur est en pieces-jointes
2018-12-28-212403_1427x1268_scrot(1).png
2018-12-28-212403_1427x1268_scrot(1).png (80.26 Kio) Vu 4761 fois


La spino envoie de facon periodique 3 packets (un par seconde) et apres elle s'endort pour 10 secondes. ==> cycle de 13 secondes

La capture des 3 packets recus par ma rtl-sdr peut etre retrouve sur mon google drive ici https://drive.google.com/file/d/1B4QbeKTCaxPoL7JMY4DnbgOvch9ND8oZ/

Le packet se compose comme suit:
8bytes de preambule: 10101010...
2bytes de syncword: 2d d4
7bytes de data, la je me content d'envoyer qu'une chaine de caracteres fixe: "ZakHell" :diable:

Apres la demodulation avec gnuradio, a l'aide d'un script en ruby (pourquoi pas :p) j'essais de chercher les patterns des preambule/syncword et data.

Alors mon probleme est que j'arrive a retrouver que 1 seul packet parmis les 3 dans mon enregistrement. Les 2 autres packets sont trouves que partiellement. voici les logs de mon script sont en piece jointe
script.log
(2.33 Kio) Téléchargé 182 fois

d'ou vous pouvez voir que le packet retrouve est :
preambule 26433
syncword 26497 (preambule+(8*8))
data 26513 (syncword+(8*2))
===> correspond parfaitement a mon packet

Les autres packets qui sont retrouve que partiellement sont au alentour de 6407 et 16457 bits.

Est que vous pensez que j'ai loupe un etage dans la demod gnuradio?

Apres discussion avec Marc Olanie, j'ai reduit le sampling rate de 3.2M a 1.2M. par contre a l'encontre de sa proposition quand j'enleve la decimation je recois tout mes packets (j'ai tout de meme quelques erreurs de temps en temps).
J'ai remarque aussi que avec la HackRF les choses s'ameliore un peu sans atteindre un status parfait (0% de packets loss)

Qu'est que vous pensez de tout ca ? sachez que je suis debutant en RADIO, alors il va falloir de simplifier/vulgariser un peu les concepts moi ! je serai tres tres reconnaissant ;-)
Modifié en dernier par zskdan le 25 janv. 2019, 10:42, modifié 1 fois.
Avatar de l’utilisateur
f4grx
Messages : 881
Enregistré le : 26 sept. 2016, 13:58

Re: [FUSEX] Spino Reception en 2FSK

Messagepar f4grx » 25 janv. 2019, 09:33

Hello, je débarque, vous avez des licences amateurs pour utiliser autre chose que 433.920 MHz? quels callsigns?
zskdan
Electrolab::Membre
Messages : 13
Enregistré le : 02 août 2017, 16:56

Re: [FUSEX] Spino Reception en 2FSK

Messagepar zskdan » 25 janv. 2019, 10:42

Aaah, je m'excuse c'est juste une erreur.
on utilise effectivement la frequence de 433.920Mhz. je corrige sur mon poste.
Merci
Avatar de l’utilisateur
yannick
Electrolab::Référent
Messages : 492
Enregistré le : 26 sept. 2016, 11:28

Re: [FUSEX] Spino Reception en 2FSK

Messagepar yannick » 25 janv. 2019, 15:52

Hello Zak,

Bon, à part la remarque (pertinente) de GRX concernant la fréquence, quelques autres sujets à creuser :

=> tu as configuré le si4460 pour émettre de la 2FSK... Ok... Mais quel genre ?
Les paramètres utiles à connaître sont :
- filtrage (est-ce de la gfsk ?)
- débit ?
- déviation (ou indice de modulation) ?

L'air de rien, sans ces paramètres, je ne sais pas trop comment il serait possible de se prononcer... :)

=> quel est le SNR du signal reçu ?

Un démodulateur asynchrone comme celui-ci devrait avoir un Eb/No de l'ordre de 13dB pour un BER de 1% (si la bande passante du FIR est correctement maîtrisées et qu'il n'y a pas de gros gag.

Ce chiffre est pour "1bit/s". Pour convertir en marge de SNR qu'il te faut, il faut ajouter 10*log10(débit).

A 1200 bits par seconde, par exemple, il te faut 43dB de marge de SNR (bruit intégré dans une bande de 1Hz) pour pouvoir obtenir des paquets raisonnablement justes...

Cela dit... Attention : le taux d'erreur ne sera jamais nul (même avec beaucoup de marge de SNR). Il te faut donc mettre en place des moyens pour évaluer la pertinence des datas (CRC etc etc).

=> ton démodulateur n'est pas verrouillé sur le signal. Si la fréquence du signal reçu dérive (et ceci peut être un effet causé par un tas de choses... Défauts intrinsèques de l'électronique de l'émetteur et du récepteur, effet Doppler...), ton démodulateur en quadrature va faire triste mine.

D'où vient ce "center frequency : 2k" ? ça pue le "magic number", non ? :)

Je suppose que c'est la fréquence centrale du canal que tu veux écouter, et que tu l'as probablement trouvé en regardant le spectre, non ?
Admettons que oui (et pourquoi pas ! :p)... Et si demain, tu veux recevoir un autre émetteur qui n'est pas pile à la même fréquence ? Et si demain, il fait froid, que les oscillateur dérivent, et que soit l'émetteur, soit le récepteur (soit les deux) dérivent ?

La salubrité publique voudrait que :
1 - tu aies un filtre analogique de sélection de bande
2 - le HACKRF est fait pour travailler pleins ballons... Les filtres analogiques à l'intérieur sont taillés pour ça
3 - après avoir fait l'acquisition plein ballons, un premier filtre translateur/décimateur un peu plus serré autour de ce qui t'intéresse
4 - utiliser une boucle d'asservissement (Costas loop par exemple)

Ce serait possible d'avoir les fichiers pour regarder d'un peu plus près ?
Avatar de l’utilisateur
nats
Electrolab::Membre
Messages : 207
Enregistré le : 25 févr. 2018, 10:13

Re: [FUSEX] Spino Reception en 2FSK

Messagepar nats » 25 janv. 2019, 18:31

Idée lancée au hasard:
En plus de toutes les remarques de Yannick un truc qui me vient à l'esprit en voyant ton schéma c'est que suivant ce qu'est le clock recovery dans ce cas il se peut qu'il ne soit pas aligné avec les paquets suivants.
En effet je ne pense pas que le début des autres paquets soit sur le front montant de la première horloge.

Juste une petite idée sans fondement.
Avatar de l’utilisateur
yannick
Electrolab::Référent
Messages : 492
Enregistré le : 26 sept. 2016, 11:28

Re: [FUSEX] Spino Reception en 2FSK

Messagepar yannick » 25 janv. 2019, 18:49

La remarque a du sens, même si je pense que, entre deux trames, vu la durée de 1s entre trames, la boucle qu'il y a dedans devrait être revenue à un état médian... Mais tu as raison... Gnuradio a parfois des raisons que la raison ignore ! :p

Autre truc : là, je vois que ce fameux bloc de clock recovery a un omega de 32 (soit 32 sample par bit). Je pense qu'il serait plus raisonnable de se limiter à moins de 8... Décimer d'un facteur 4 de plus AVANT de faire la clock recovery...

Potentiellement un endroit où placer une boucle d'asserv en fréquence pour ne pas tout casser...
zskdan
Electrolab::Membre
Messages : 13
Enregistré le : 02 août 2017, 16:56

Re: [FUSEX] Spino Reception en 2FSK

Messagepar zskdan » 28 janv. 2019, 17:24

Merci Yannick pour ta longue reponse ! et merci Mehdi pour ta remarque pertinente. j'avoue que je ne comprends pas tout mais je vais essayer quand meme de repondre,

1. Concernant les parametres de l'emetteur:
>> Modulation: 2FSK et non 2GFSK (sans filtre gaussien)
>> Deviation : 10Khz
>> Data Rate: 5Kbps

2. Quel est le SNR du signal reçu ?
>> aucune idee. je vais essayer de relever ca lors de ma prochaine experimentation.

3. ton démodulateur n'est pas verrouillé sur le signal.
>> Comment puisse je le verrouillé ? y'a t'il un block GnuRadio qui permet de le faire facilement ?

4. D'où vient ce "center frequency : 2k" ? ça pue le "magic number", non ? :)
>> Non, en faite le 2k permet de recentrer la frequence, pour eviter le phenomene "DC-SPIKE" qui touche les RTL-SDR et les HackSpark. pour info: https://github.com/mossmann/hackrf/wiki ... d-spectrum

5. 1- tu aies un filtre analogique de sélection de bande
>> Oui, Marc m'a conseille d'utiliser ce filter
image002.jpg
image002.jpg (32.94 Kio) Vu 4681 fois
si t'en a en rabbe je suis preneur :amen:

6. 3 - après avoir fait l'acquisition plein ballons, un premier filtre translateur/décimateur un peu plus serré autour de ce qui t'intéresse
>> la valeurs de mon FIR filter est
>> firdes.low_pass(1,samp_rate,bandwidth,bandwidth/4)
>> est que tu penses que c'est large ?

7 - utiliser une boucle d'asservissement (Costas loop par exemple)
>> Je vais essayer, mais la doc du block costas loop sur gnuradio parle que de psk ? c'est normal ?
>> ref: https://www.gnuradio.org/doc/doxygen/cl ... ml#details

8. Ce serait possible d'avoir les fichiers pour regarder d'un peu plus près ?
>> pour l'instant j'ai mis que mes fichiers de reception (gnuradio et les scripts) sur le github fusex https://github.com/fusex/2fsk-sdr-decod ... r/receiver

9. Autre truc : là, je vois que ce fameux bloc de clock recovery a un omega de 32 (soit 32 sample par bit). Je pense qu'il serait plus raisonnable de se limiter à moins de 8... Décimer d'un facteur 4 de plus AVANT de faire la clock recovery...
>> Je vais faire un essais dans le semaine avec un facteur de 4. je vous tiens au courant ! Mais j'avoue que pour moi ce truc de clock recovery est une blackbox, si vous avez une explication/reference/article liens je suis preneur.

Merci encore Mehdi et Yannick.
Fichiers joints
Capture d’écran (2).png
Capture d’écran (2).png (118.5 Kio) Vu 4681 fois
Avatar de l’utilisateur
yannick
Electrolab::Référent
Messages : 492
Enregistré le : 26 sept. 2016, 11:28

Re: [FUSEX] Spino Reception en 2FSK

Messagepar yannick » 29 janv. 2019, 19:24

Hello Zak,

zskdan a écrit :j'avoue que je ne comprends pas tout mais je vais essayer quand meme de repondre


C'est ça d'apprendre des trucs nouveaux ! C'est normal ! ;)

zskdan a écrit :1. Concernant les parametres de l'emetteur:
>> Modulation: 2FSK et non 2GFSK (sans filtre gaussien)
>> Deviation : 10Khz
>> Data Rate: 5Kbps


Je suppose que "deviation", c'est ce que t'a donné EZRadio ? Donc, c'est +/- 10kHz ? J'ai bon ? (y'a toujours une ambiguïté entre déviation, excursion, toussa...).
On aurait donc un indice de modulation de 4 ?

Ce n'est pas très optimal car la bande occupée par le signal (surtout que tu est FSK, et pas GFSK) est beauuuuucoup plus grande que nécessaire.
Il faut donc avec une largeur de bande pour le récepteur elle-même beaucoup plus grande que nécessaire, et donc rentrer une bande de bruit elle-même beaucoup plus grande que nécessaire...

ça pouvait avoir du sens dans les temps anciens où on recevait la FSK avec deux filtres accordés sur chacune des deux fréquences... Mais avec les moyens dont on dispose présentement, euh... bah c'est pas le chemin que je conseille, quoi ! :)

Surtout si on cherche à ne pas être trop sous-optimal côté sensibilité ! :p

zskdan a écrit :3. ton démodulateur n'est pas verrouillé sur le signal.
>> Comment puisse je le verrouillé ? y'a t'il un block GnuRadio qui permet de le faire facilement ?

Je pense que le plus adapté pour ton besoin est de regarder du côté de la boucle de Costas...

zskdan a écrit :4. D'où vient ce "center frequency : 2k" ? ça pue le "magic number", non ? :)
>> Non, en faite le 2k permet de recentrer la frequence, pour eviter le phenomene "DC-SPIKE" qui touche les RTL-SDR et les HackSpark. pour info: https://github.com/mossmann/hackrf/wiki ... d-spectrum


Yes, nan mais... Je sais bien ce que tu cherches (fort justement) à éviter, mais ce qui m'intéresse, c'est : comment as-tu obtenu le chiffre "2k" ! :)

Au passage... Si j'en crois la doc de bloc l'opération de rotation de fréquence se fait avant la décimation (et c'est...plutôt logique ! :p).

Donc... "2k", ça veut dire "2kHz" à la fréquence avant décimation, ça veut dire que tu n'es pas assez décalé par rapport à la fréquence "0".

Ta déviation étant de 10kHz, le signal modulé est à cheval sur le zero... Mon conseil est de décaler un peu plus la fréquence centrale du récepteur manière à ce que tout le signal passe d'un des côtés du "0".

zskdan a écrit :6. 3 - après avoir fait l'acquisition plein ballons, un premier filtre translateur/décimateur un peu plus serré autour de ce qui t'intéresse
>> la valeurs de mon FIR filter est
>> firdes.low_pass(1,samp_rate,bandwidth,bandwidth/4)
>> est que tu penses que c'est large ?

Non, ce n'est pas large... C'est même étroit compte-tenu des autres choix (déviation, FSK standard, toussa). Tu n'as aucune tolérance au moindre défaut de fréquence centrale, et c'est plutôt un trou dans la raquette pour plus tard ! :)
Mais je regarde de plus près avec le script ce que ça donne...

A mon avis, pour des raisons pédagogiques à ce stade, ça ne sert à rien d'utiliser des blocs optimisés comme "frequency xlating FIR filter"... Trop de boîtes noires ! Fais-le en blocs séparés, et observe ce qui se passe à la sortie de chacun des blocs.

zskdan a écrit :7 - utiliser une boucle d'asservissement (Costas loop par exemple)
>> Je vais essayer, mais la doc du block costas loop sur gnuradio parle que de psk ? c'est normal ?
>> ref: https://www.gnuradio.org/doc/doxygen/cl ... ml#details

De la FSK faite avec un émetteur synchrone n'est que de la PSK qui s'ignore ! :)
C'est juste qu'avec un indice de 4, on fait pleins de tours du diagramme IQ pour chaque symbole, mais ça devrait tout à fait fonctionner quand même...

zskdan a écrit :8. Ce serait possible d'avoir les fichiers pour regarder d'un peu plus près ?
>> pour l'instant j'ai mis que mes fichiers de reception (gnuradio et les scripts) sur le github fusex https://github.com/fusex/2fsk-sdr-decod ... r/receiver

Je regarde ça...
Avatar de l’utilisateur
yannick
Electrolab::Référent
Messages : 492
Enregistré le : 26 sept. 2016, 11:28

Re: [FUSEX] Spino Reception en 2FSK

Messagepar yannick » 29 janv. 2019, 19:29

Ah... Je ne vois pas les enregistrements dans le dépôt...
C'est la pièce principale qu'il me manque, là ! :)

Edit : je t'ai fait une demande il y a plusieurs jours pour l'accès aux fichiers sur ton gdrive, et pas de news... Tu veux que je recommence ?
Avatar de l’utilisateur
f4grx
Messages : 881
Enregistré le : 26 sept. 2016, 13:58

Re: [FUSEX] Spino Reception en 2FSK

Messagepar f4grx » 29 janv. 2019, 20:47

Yannick: si t'as une définition précise pour ces histoires de déviation/excursion/etc. ca m'intéresse franchement beaucoup car je suis bien conscient de cette ambiguité. Qu'est ce qui est usuel, quel mot a le plus de sens a utiliser, etc.

Retourner vers « Les Projets »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité