Che tipo di modulazione è questa?


8

Sto cercando di scoprire quale tipo di modulazione e codifica viene utilizzata dal mio telecomando per la copertura della finestra, con l'obiettivo di implementare lo stesso su un Raspberry Pi per aggiungere un po 'di automazione domestica.

Un collega mi ha aiutato a campionare il segnale con un USRP e mi ha dato i file di dati. Li ho esaminati con Inspectrum .

Temo che i campioni siano stati registrati centrati molto vicino alla frequenza del segnale. Ho letto in seguito che questa potrebbe non essere una buona idea, e penso che questo sia ciò che causa il rumore permanente che puoi vedere nelle immagini. Dovrei centrare il campionamento di qualche kHz in basso in futuro?

Pressione singola del segnale "finestra aperta"

Panoramica del segnale

La percentuale di simboli, o piuttosto quella che immaginavo fosse la frequenza dei simboli, sembra coerente a questo livello (circa 42 baud).

Questo mostra energia in frequenza. L'asse X è il tempo, l'asse Y è la frequenza (banda base). I colori sono stati sintonizzati per mostrare solo il potere interessante.

Dettaglio di uno dei "blocchi"

Dettagli del segnale Dettagli del segnale (Freq, Phase, IQ)

Qui, l'ultima immagine mostra, passa in fondo: frequenza, IQ (rosso / blu) e fase. Non so bene cosa rappresenti il ​​grafico delle frequenze qui.

Zoom sulla transizione tra rado a denso

Il "symbol rate" non sembra costante qui.

Dettagli sulla transizione Dettagli di transizione (Freq, Phase, IQ)

Non ho idea del tipo di modulazione, codifica, bit rate o protocollo utilizzato da questo telecomando, e in questo momento la mia unica opzione sarebbe quella di provare ciecamente tutti i blocchi demod in gnuradio.

Sarebbe molto utile se la risposta potesse includere alcune indicazioni su come demodulare questo segnale in gnuradio per ottenere bit fuori. Penso di poterlo prendere da lì.

Il controller è per una finestra di Velux, ma non ho trovato alcuna informazione sul web. Alla fine ho bisogno di scoprire quale chip acquistare per Arduino / rPi.

inserisci qui la descrizione dell'immagine

Posso dire che il chip ha del testo scritto, ma non riesco a leggerlo, sembra che sia logoro, ma non ho una lente d'ingrandimento ...: /

Dati grezzi caricati su: https://www.dropbox.com/s/rh2k7ho68dvoxhd/data_mando3.dat?dl=0 . La frequenza di campionamento è di 3 MHz. Il formato dei dati è il default di GNU Radio Companion , che è IQ, ogni componente espresso come float a 32 bit.

Aggiornare

Dopo qualche altra indagine, questo sembra essere il protocollo io-homecontrol . Sembra che non sia stato progettato al contrario, è cifrato e non sono disponibili informazioni. È un protocollo a due vie, quindi dovrò prendere campioni da conversazioni complete (i campioni attuali sono presi solo con il telecomando disponibile).

Questo chip in teoria è in grado di funzionare con questo protocollo: http://www.analog.com/media/en/technical-documentation/data-sheets/ADF7022_2page.pdf

Il consorzio non fornirà le specifiche. Sono ancora interessato a annusare alcune conversazioni con GNURadio e vedere se riesco a lavorare da loro. Detto questo, posso solo raccomandare contro i prodotti io-homecontrol e Velux.

Grazie!


1
Puoi descriverne di più, cosa mostra ogni curva? La prima figura sembra STFT. Quali sono le curve verdi, blu e rosse nell'ultima figura?
Maximilian Matthé,

2
Sì, sarebbe utile se si potesse ricampionare, in modo che un multiplo intero della frequenza di campionamento non atterri in prossimità del segnale. Inoltre, se si esegue un campionamento reale, si desidera che il segnale digitale arrivi a una frequenza digitale IF. Una scelta ideale è avere il tuo spettro campionato afs/4, quindi utilizzare la relazione Nfsfc=fs/4 e Nfsfc>2fb dove fc è la frequenza del tuo operatore e fbè la larghezza di banda del segnale. Consiglio di andare con un risultato tale che f_c >> 2 * f_b $. Una volta fatto, puoi rimuovere digitalmente il corriere osservando la rotazione.
Dan Boschen,

1
Hai aperto il telecomando? Molte di queste aziende useranno il silicio commerciale e sul chip ci sarà un codice, che spesso può facilmente portare a una scheda tecnica.
Stephen Rauch,

@ MaximilianMatthé Ho aggiornato la domanda, grazie!
jjmontes,

1
@jjmontes Voglio essere sicuro che hai visto il link che ho aggiunto all'inizio della mia risposta nella sezione "aggiornamento", ripetuto qui: cansecwest.com/slides/2015/… . Il presentatore mostra passo dopo passo come demodulare il segnale io-homecontrol.
Dan Boschen

Risposte:


5

Ok, ho fatto un po 'di analisi forense sull'acquisizione dei dati e credo che la modulazione sia una forma di FSK.

La modulazione FSK era di +/- 20 KHz con una velocità dati di 38 KHz.


AGGIORNAMENTO: L'OP ha scoperto che si tratta di "io-homecontrol" e il foglio dati di ADI che ha trovato ha confermato che si tratta effettivamente di FSK con una deviazione di 20 KHz e 38,4 Kbps di velocità. Inoltre questo link fornisce maggiori dettagli sul formato di modulazione:

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

Sembra che in realtà potrebbe essere Gaussian-FSK, con segnalazione di risposta completa (BT = 1), il che significa che la risposta per ciascun bit è completata prima dell'inizio del bit successivo. Questo può essere facilmente implementato con un filtro gaussiano (vedi filtro FIR gaussiano senza moltiplicatori?) seguito da un sottufficiale. In questo caso ogni bit di dati è rappresentato come impulsi seguiti da zeri per l'intera lunghezza del filtro e l'uscita del filtro guida la parola di controllo della frequenza nell'NCO (un VCO digitale). (Per la segnalazione a risposta parziale che richiede un ricevitore più complicato e non quello che stanno facendo qui, gli zeri sono più brevi della lunghezza del filtro, ma funzionerebbe anche). La deviazione di frequenza può essere impostata con una costante di guadagno del moltiplicatore tra l'uscita del filtro e l'ingresso NCO. La scelta di scegliere l'FSK gaussiano rispetto all'FSK semplice è per un migliore contenimento spettrale nella forma d'onda trasmessa (ed è la ragione delle transizioni arrotondate che vediamo).


Includerò le trame nel caso in cui qualcuno abbia ulteriori approfondimenti:

Innanzitutto una vista macro in prossimità del primo scoppio, che si verifica per circa 0,93 secondi. Per ottenere questo diagramma, avevo rimosso un offset di frequenza corrispondente a 0,2688 radianti / campione dopo aver decimato di 10 campioni, supponendo che la frequenza di campionamento originale fosse di 3 MHz, che corrisponde a un offset di 12,834 KHz.

Questo diagramma mostra la fase da scartare rispetto al tempo (l'asse verticale è radianti) e la magnitudine corrispondente rispetto al tempo. Suppongo che quando l'ampiezza è bassa stiamo osservando il rumore e il segnale di interesse si verifica solo quando l'entità è maggiore.

inserisci qui la descrizione dell'immagine

Aumentando lo zoom sulla prima parte dell'esplosione, l'impulso inizia a circa 0,9265 secondi e all'inizio dell'esplosione la fase è "piatta" per circa 3 ms. Corrispondendo a un vettore non modulato, credo, dal confronto con i dettagli che vedremo più avanti.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Dopo i 3 ms della parte "fase piatta", esiste un modello molto lungo di quello che sembra essere 1 0 1 0 1 0 con una velocità di trasmissione dati di 37,5 KS / s. La modulazione sta andando tra 0 e 180 gradi, ma più avanti vedremo chiare rampe di fase che mi fanno sospettare FSK invece di BPSK. (Se fosse MSK mi sarei aspettato di vedere prove di rotazioni di 90 gradi, ma la rotazione minima che ho trovato era di 180 gradi). Nota all'inizio del pattern (assumendo +180 = 1 e -180 = 0), vediamo 1 1 0 1 0 1 0 1 ... che poi dura con il pattern 1 0 1 0 per circa 90 ms prima inserendo un "1 1" vicino al segno di 1,02 secondi, e quindi continuando di nuovo come 0 1 0 1 0 1 ... fino al segno di 1,414 secondi. (durata circa 0,4 secondi con un motivo 1 0 1 0). Nota la "gobba" nella traiettoria generale;

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

A 1,414 secondi iniziano i dati reali. (Il primo era probabilmente un modello di sincronizzazione / acquisizione). Guardando prima una vista a macroistruzione vediamo un modello che a questa vista sembra ripetersi 3 volte prima che lo scoppio finisca.

inserisci qui la descrizione dell'immagine

Aumentando lo zoom sulla prima regione, vediamo una costante inclinazione positiva e negativa indicativa di FSK. Alla fine dell'esplosione dei dati c'è una lunga durata di 1 per 4 ms seguita di nuovo dal modello 101010 per circa 14 ms.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Il successivo scoppio a partire da circa 1,51 secondi, poco dopo il primo ha di nuovo lo stesso schema di partenza di un vettore non modulato seguito dal modello di modulazione lunga 101010. (Anche se leggermente diverso in quanto l'inizio era 1 1 1 1 0 1 0 1 0 1 0 1 ma la durata del modello 1010 prima che la modulazione dei dati fosse di nuovo 14 ms)

inserisci qui la descrizione dell'immagine


Domanda laterale Noob: durante la sincronizzazione, ci sono 5 ~ 7 bande di frequenza prominenti nel grafico a cascata. Devo comunque centrare il mio filtro (passa basso) in quello centrale (20kHz), giusto? Sono sorpreso perché questo lascia parte dello spettro (che si espande da ~ + -35kHz) fuori dal filtro, ma sembra funzionare comunque:?
jjmontes,

Centrati a 12,834 KHz offset per demodulare, e quindi la frequenza di quel segnale saranno i tuoi dati. Un ritardo e moltiplicarsi con se stesso possono rendere un semplice discriminatore di frequenza.
Dan Boschen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.