De quel type de modulation s'agit-il?


8

J'essaie de savoir quel type de modulation et d'encodage est utilisé par ma télécommande de couverture de fenêtre, dans le but de l'implémenter sur un Raspberry Pi pour ajouter un peu de domotique.

Un collègue m'a aidé à échantillonner le signal avec un USRP et m'a donné les fichiers de données. Je les ai examinés avec Inspectrum .

J'ai bien peur que les échantillons aient été enregistrés centrés très près de la fréquence du signal. J'ai lu plus tard que ce n'était peut-être pas une bonne idée, et je pense que c'est ce qui cause le bruit permanent que vous pouvez voir sur les photos. Dois-je centrer l'échantillonnage quelques kHz en dessous à l'avenir?

Une seule pression sur le signal "fenêtre ouverte"

Présentation du signal

Le taux de symboles, ou plutôt ce que j'ai supposé être le taux de symboles, semble cohérent à ce niveau (environ 42 bauds).

Cela montre l'énergie de fréquence. L'axe X est le temps, l'axe Y est la fréquence (bande de base). Les couleurs ont été ajustées pour ne montrer que la puissance intéressante.

Détail d'un des "blocs"

Détail du signal Détails du signal (Freq, Phase, IQ)

Ici, la dernière image montre, frop to bottom: fréquence, QI (rouge / bleu) et phase. Je ne sais pas très bien ce que représente le graphique des fréquences ici.

Zoom sur la transition entre clairsemé et dense

Le "taux de symboles" ne semble pas constant ici.

Détail de transition Détails de transition (Freq, Phase, IQ)

Je n'ai aucune idée du type de modulation, d'encodage, de débit binaire ou de protocole utilisé par cette télécommande, et pour l'instant ma seule option serait d'essayer aveuglément tous les blocs démod dans gnuradio.

Il serait très utile que la réponse comprenne des indications sur la façon de démoduler ce signal dans gnuradio afin de sortir les bits. Je pense que je peux le prendre à partir de là.

Le contrôleur est destiné à une fenêtre Velux, mais je n'ai trouvé aucune information sur le Web. J'ai finalement besoin de savoir quelle puce acheter pour l'Arduino / rPi.

entrez la description de l'image ici

Je peux dire que la puce a du texte inscrit, mais je ne peux pas le lire, semble-t-il usé, mais je n'ai pas de loupe ...: /

Données brutes téléchargées sur: https://www.dropbox.com/s/rh2k7ho68dvoxhd/data_mando3.dat?dl=0 . Le taux d'échantillonnage est de 3MHz. Le format de données est par défaut GNU Radio Companion , qui est IQ, chaque composant étant exprimé en flottant 32 bits.

Mise à jour

Après quelques recherches supplémentaires, cela semble être le protocole io-homecontrol . Il semble qu'il n'ait pas été rétroconçu, qu'il soit chiffré et qu'aucune information ne soit disponible. Il s'agit d'un protocole bidirectionnel, donc je devrai récupérer des échantillons de conversations complètes (les échantillons actuels sont pris avec uniquement la télécommande disponible).

Cette puce en théorie est capable de fonctionner avec ce protocole: http://www.analog.com/media/en/technical-documentation/data-sheets/ADF7022_2page.pdf

Le consortium ne fournira pas de spécifications. Je suis toujours intéressé à renifler quelques conversations avec GNURadio et voir si je peux travailler avec eux. Compte tenu de cela, je ne peux que recommander contre les produits io-homecontrol et Velux.

Je vous remercie!


1
Pouvez-vous décrire davantage ce que montre chaque courbe? Le premier chiffre ressemble à STFT. Quelles sont les courbes vertes, bleues et rouges dans la dernière figure?
Maximilian Matthé

2
Oui, ce serait bien si vous pouviez rééchantillonner, afin qu'un multiple entier de la fréquence d'échantillonnage n'atterrisse pas à proximité de votre signal. De plus, si vous effectuez un échantillonnage réel, vous souhaitez que le signal numérique atterrisse à une fréquence IF numérique. Un choix idéal est d'avoir votre spectre échantillonné àFs/4, utilisez donc la relation NFs-Fc=Fs/4 et NFs-Fc>2FbFc est votre fréquence porteuse et Fbest la largeur de bande du signal. Je recommande d'aller avec un résultat tel que f_c >> 2 * f_b $. Une fois que vous avez fait cela, vous pouvez retirer numériquement le support en observant la rotation.
Dan Boschen

1
Avez-vous ouvert la télécommande? Beaucoup de ces sociétés utiliseront du silicium commercial, et il y aura un numéro de pièce sur la puce, qui peut souvent facilement conduire à une fiche technique.
Stephen Rauch

@ MaximilianMatthé J'ai mis à jour la question, merci!
jjmontes

1
@jjmontes Je veux être sûr que vous avez vu le lien que j'ai ajouté en haut de ma réponse dans la section "mise à jour", répétée ici: cansecwest.com/slides/2015/… . Le présentateur vous montre étape par étape comment démoduler le signal io-homecontrol.
Dan Boschen

Réponses:


5

Ok, j'ai fait quelques analyses de signal sur la capture de données et je crois que la modulation est une forme de FSK.

La modulation FSK était de +/- 20 KHz avec un débit de données de 38 KHz.


MISE À JOUR: La découverte OP qu'il s'agit de "io-homecontrol" et la fiche technique d'ADI qu'il a trouvée ont confirmé qu'il s'agit bien de FSK avec un écart de 20 KHz et un débit de 38,4 Kbps. De plus, ce lien donne plus de détails sur le format de modulation:

https://cansecwest.com/slides/2015/From_Baseband_to_bitstream_Andy_Davis.pdf

Il semble qu'il s'agisse en fait de la Gaussian-FSK, avec une signalisation à réponse complète (BT = 1), ce qui signifie que la réponse pour chaque bit est terminée avant le début du bit suivant. Cela peut être facilement mis en œuvre avec un filtre gaussien (voir Filtre FIR gaussien sans multiplicateurs?) suivi d'un sous-officier. Dans ce cas, chaque bit de données est représenté par des impulsions suivies de zéros pour toute la longueur du filtre et la sortie du filtre entraîne le mot de contrôle de fréquence dans le NCO (un VCO numérique). (Pour la signalisation à réponse partielle qui nécessite un récepteur plus compliqué et non ce qu'ils font ici, les zéros sont plus courts que la longueur du filtre, mais cela fonctionnerait également). L'écart de fréquence peut être réglé avec une constante de gain multiplicateur entre la sortie du filtre et l'entrée NCO. Le choix d'aller avec la FSK gaussienne vs la FSK simple est pour un meilleur confinement spectral dans la forme d'onde transmise (et est la raison des transitions arrondies que nous voyons).


J'inclurai les parcelles au cas où quelqu'un aurait plus d'informations:

D'abord une vue macro au voisinage de la première rafale, se produisant autour de 0,93 seconde. Pour obtenir ce tracé, j'avais supprimé un décalage de fréquence correspondant à 0,2668 radians / échantillon après décimation de 10 échantillons, en supposant que le taux d'échantillonnage d'origine était de 3 MHz, cela correspond à un décalage de 12,834 KHz.

Ce graphique montre la phase non enveloppée en fonction du temps (l'axe vertical est le radian) et la magnitude correspondante en fonction du temps. Je suppose que lorsque l'amplitude est faible, nous observons le bruit et que le signal d'intérêt se produit uniquement lorsque l'amplitude est plus élevée.

entrez la description de l'image ici

En zoomant sur la première partie de la rafale, l'impulsion démarre à environ 0,9265 seconde, et au début de la rafale, la phase est "plate" pendant environ 3 ms. Correspondant à un transporteur non modulé, je crois, par rapport aux détails que nous verrons plus tard.

entrez la description de l'image ici

entrez la description de l'image ici

Après les 3 ms de la partie "phase plate", il y a une très longue configuration de ce qui semble être 1 0 1 0 1 0 avec un débit de données de 37,5 KS / s. La modulation va entre 0 et 180 degrés, mais plus tard, nous verrons des rampes de phase claires me faisant suspecter FSK au lieu de BPSK. (Si c'était MSK, je m'attendais à voir des preuves de rotations à 90 degrés, mais la rotation minimale que j'ai trouvée était de 180 degrés). Remarque au tout début du modèle (en supposant +180 = 1 et -180 = 0), nous voyons 1 1 0 1 0 1 0 1 ... qui dure ensuite avec le modèle 1 0 1 0 pendant environ 90 ms avant à nouveau insérer un "1 1" près de la marque de 1,02 seconde, puis continuer à nouveau en tant que 0 1 0 1 0 1 ... jusqu'à la marque de 1,414 seconde. (durée d'environ 0,4 seconde avec un motif 1 0 1 0). Notez la "bosse" dans la trajectoire globale;

entrez la description de l'image ici

entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

À 1,414 seconde, les données réelles commencent. (Le premier était probablement un modèle de synchronisation / acquisition). En regardant d'abord une vue macro, nous voyons un motif qui, dans cette vue, semble se répéter 3 fois avant la fin de la rafale.

entrez la description de l'image ici

En zoomant sur la première région, nous voyons une phase cohérente positive et négative inclinée indiquant FSK. À la fin de la rafale de données, il y a une longue durée de 1 pendant 4 ms suivie par le motif 101010 à nouveau pendant environ 14 ms.

entrez la description de l'image ici

entrez la description de l'image ici

La prochaine rafale commençant à environ 1,51 seconde, peu de temps après la première, présente à nouveau le même schéma de démarrage d'une porteuse non modulée, suivi du schéma de modulation long 101010. (Bien que légèrement différent en ce que le début était 1 1 1 1 0 1 0 1 0 1 0 1 mais la durée du motif 1010 avant la modulation des données était à nouveau de 14 ms)

entrez la description de l'image ici


Question latérale Noob: pendant la synchronisation, il y a environ 5 à 7 bandes de fréquences importantes dans le graphique en cascade. Je dois cependant toujours centrer mon filtre (passe-bas) dans le filtre central (20 kHz), n'est-ce pas? Je suis surpris car cela laisse une partie du spectre (qui s'étend de ~ + -35 kHz) hors du filtre, mais semble néanmoins fonctionner:?
jjmontes

Vous centrez à 12,834 KHz pour démoduler, puis la fréquence de ce signal sera vos données. Un retard et une multiplication avec lui-même peuvent faire un simple discriminateur de fréquence.
Dan Boschen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.