Sommario:

Analizzatore RF433: 7 passaggi
Analizzatore RF433: 7 passaggi

Video: Analizzatore RF433: 7 passaggi

Video: Analizzatore RF433: 7 passaggi
Video: Nuovi Smart Switch WiFi e RF 433 MHz by eMylo 2024, Dicembre
Anonim
Analizzatore RF433
Analizzatore RF433
Analizzatore RF433
Analizzatore RF433

Questo istruibile crea uno strumento di misurazione per aiutare ad analizzare le trasmissioni RF 433MHz che sono comunemente usate per comunicazioni remote a bassa potenza nell'automazione domestica e nei sensori. Probabilmente potrebbe essere facilmente modificato per funzionare con le trasmissioni a 315 MHz utilizzate in alcuni paesi. Ciò avverrebbe utilizzando la versione a 315 MHz dell'RXB6 invece dell'attuale a 433 MHz.

Lo scopo dello strumento è duplice. Innanzitutto, fornisce un misuratore di potenza del segnale (RSSI) che può essere utilizzato per esaminare la copertura intorno a una proprietà e trovare eventuali punti neri. In secondo luogo può acquisire dati puliti dai trasmettitori per consentire un'analisi più semplice dei dati e dei protocolli utilizzati dai diversi dispositivi. Questo è utile se si cerca di progettare componenti aggiuntivi compatibili per unità esistenti. Normalmente l'acquisizione dei dati è complicata dal rumore di fondo presente nei ricevitori che produce molte transizioni spurie e rende più difficile scoprire le vere trasmissioni.

L'unità utilizza un ricevitore superhet RXB6. Questo utilizza il chip ricevitore Synoxo-SYN500R che ha un'uscita analogica RSSI. Questa è effettivamente una versione bufferizzata del segnale AGC utilizzata per controllare il guadagno del ricevitore e fornisce la potenza del segnale su un'ampia gamma.

Il ricevitore è monitorato da un modulo ESP8266 (ESP-12F) che converte il segnale RSSI. Pilota anche un piccolo display OLED locale (SSD1306). L'elettronica può anche acquisire informazioni di temporizzazione sulle transizioni dei dati.

Le acquisizioni possono essere attivate localmente da un pulsante sull'unità. I dati acquisiti vengono salvati su file per un'analisi successiva.

Il modulo ESP12 esegue un server Web per consentire l'accesso ai file e le acquisizioni possono essere attivate anche da qui.

Lo strumento è alimentato da una piccola batteria ricaricabile LIPO. Ciò fornisce un tempo di esecuzione ragionevole e l'elettronica ha una bassa corrente di riposo quando non è in uso.

Passaggio 1: componenti e strumenti necessari

Nota importante:

Ho scoperto che alcuni ricevitori RXB6 433 Mhz hanno un'uscita RSSI non funzionante anche se l'AGC e il resto della funzionalità sono OK. Sospetto che potrebbero essere utilizzati alcuni chip clone Syn500R. Ho scoperto che i ricevitori etichettati come WL301-341 utilizzano un chip compatibile Syn5500R e l'RSSI è funzionante. Hanno anche il vantaggio di non utilizzare una schermatura che rende il condensatore AGC più facile da modificare. Consiglierei di usare queste unità.

Sono necessari i seguenti componenti

Modulo wifi ESP-12F

  • Regolatore 3.3V xc6203
  • Condensatore 220uF 6V
  • 2 diodi Schottky
  • Pulsante da 6 mm
  • MOSFET a n canale ad es. AO3400
  • MOSFET a canale p es. AO3401
  • resistori 2x4k7, 3 x 100K, 1 x 470K
  • piccolo pezzo di scheda di prototipazione
  • Ricevitore RXB6 o WL301-341 superhet 433MHz
  • SSD1306 Display OLED 0,96 (versione SPI monocolore)
  • Batteria LIPO 802030 400mAh
  • Connettore a 3 pin per la ricarica
  • Collegare il cavo
  • Filo di rame smaltato autofondente
  • Resina epossidica
  • Nastro biadesivo
  • Custodia stampata in 3D

Strumenti necessari

  • Saldatore a punta fine
  • Treccia dissaldante
  • pinzette
  • Pinze

Passaggio 2: schematico

Schema
Schema

Il circuito è abbastanza semplice.

Un regolatore LDO da 3,3 V converte il LIP in 3,3 V necessari al modulo ESP-12F.

L'alimentazione viene fornita sia al display che al ricevitore tramite due MOSFET di commutazione in modo che siano spenti quando il modulo ESP è inattivo.

Il pulsante avvia il sistema fornendo 3,3 V all'ingresso EN dell'ESP8266. Il GPIO5 quindi lo sostiene mentre il modulo è attivo. Il pulsante può essere monitorato anche tramite GPIO12. Quando GPIO5 viene rilasciato, l'EN viene rimosso e l'unità si spegne.

La linea dati dal ricevitore è monitorata da GPIO4. Il segnale RSSI è monitorato dall'AGC tramite un divisore di potenziale 2:1.

Il display SSD1306 è controllato tramite SPI composto da 5 segnali GPIO. Potrebbe essere possibile utilizzare una versione I2C ma ciò richiederà la modifica della libreria utilizzata e la rimappatura di alcuni GPIO.

Passaggio 3: modifica del ricevitore

Modifica del ricevitore
Modifica del ricevitore
Modifica del ricevitore
Modifica del ricevitore
Modifica del ricevitore
Modifica del ricevitore

Così come fornito, l'RXB6 non rende disponibile il segnale RSSI sui suoi pin dati esterni.

Una semplice modifica lo rende possibile. Il connettore del segnale DER sull'unità è in realtà solo una ripetizione del segnale del segnale dati. Sono collegati insieme attraverso il resistore da 0 Ohm etichettato R6. Questo deve essere rimosso utilizzando un saldatore. Il componente etichettato R7 deve ora essere collegato. L'estremità superiore è in realtà il segnale RSSI e la parte inferiore va al connettore DER. Si potrebbe usare un resistore da 0 Ohm, ma l'ho appena collegato con un po' di filo. Queste posizioni sono accessibili al di fuori della schermatura metallica che non deve essere rimossa per questa modifica.

La modifica può essere testata collegando un voltmetro tra DER e GND con il ricevitore acceso. Mostrerà una tensione tra circa 0,4 V (nessuna potenza ricevuta) e circa 1,8 V con una sorgente locale di 433 MHz (ad esempio un telecomando).

La seconda modifica non è assolutamente essenziale ma è del tutto auspicabile. Come fornito, il tempo di risposta AGC del ricevitore è impostato per essere piuttosto lento impiegando diverse centinaia di millisecondi per rispondere al segnale ricevuto. Ciò riduce la risoluzione temporale durante le acquisizioni RSSI e rende anche meno reattivo l'uso di RSSI come trigger per l'acquisizione dei dati.

C'è un singolo condensatore che controlla i tempi di risposta dell'AGC ma, sfortunatamente, si trova sotto la lattina di schermatura metallica. In realtà è abbastanza facile rimuovere il barattolo di schermatura poiché è trattenuto solo da 3 alette e può essere valorizzato riscaldando ciascuno di questi a turno e facendo leva con un piccolo cacciavite. Una volta rimosso, è possibile pulire i fori per il rimontaggio utilizzando una treccia dissaldante o riforando con una punta di circa 0,8 mm.

La modifica consiste nel rimuovere il condensatore AGC esistente C4 e sostituirlo con un condensatore da 0.22uF. Ciò accelera la risposta dell'AGC di circa 10 volte. Non ha alcun effetto negativo sulle prestazioni del ricevitore. Nell'immagine mostro una traccia tagliata e un collegamento a questa traccia dal condensatore AGC. Questo non è necessario, ma rende il punto AGC disponibile su un pad all'esterno della lattina di schermatura sotto il cristallo nel caso in cui si volesse aggiungere capacità extra. Non ho avuto bisogno di farlo. La schermatura può quindi essere sostituita.

Se si utilizza l'unità WL301-341 RX, la foto mostra questo con il condensatore AGC evidenziato. Viene mostrato anche il pin del segnale RSSI. Questo in realtà non è collegato a nulla. Si può semplicemente collegare un filo sottile direttamente al pin. In alternativa, i due pin del ponticello centrale sono collegati insieme ed entrambi trasportano l'uscita dei dati. La traccia tra di loro può essere tagliata e quindi l'RSSI collegato a quello di riserva per rendere disponibile il segnale RSSI su un'uscita jumper.

Fase 4: Costruzione

Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione
Costruzione

Ci sono circa 10 componenti necessari al di fuori del modulo ESP-12. Questi possono essere realizzati e collegati su un pezzo di scheda di prototipazione. Ho utilizzato una scheda di prototipazione specifica ESP che ho utilizzato per facilitare il montaggio del regolatore e di altri componenti smd. Questo si collega direttamente sopra il modulo ESP-12.

La scatola che ho usato è un design stampato in 3D con 3 rientranze nella base per prendere il ricevitore, il display e il modulo esp. Ha un ritaglio per il display e fori per il punto di ricarica e il pulsante che devono essere inseriti e fissati con una piccola quantità di resina epossidica.

Ho utilizzato il cavo di collegamento per effettuare i collegamenti tra i 3 moduli, il punto di ricarica e i pulsanti. e poi fissarli in posizione utilizzando nastro biadesivo per ESP e ricevitore e piccole gocce di resina epossidica per tenere in posizione i lati del display. La batteria è collegata al punto di ricarica e montata sulla parte superiore del ricevitore utilizzando nastro biadesivo.

Passaggio 5: software e configurazione

Il software è costruito in ambiente Arduino.

Il codice sorgente per questo è su https://github.com/roberttidey/RF433Analyser Il codice può avere alcune costanti per le password modificate per motivi di sicurezza prima di essere compilato e flashato sul dispositivo ES8266.

  • WM_PASSWORD definisce la password utilizzata da wifiManager durante la configurazione del dispositivo sulla rete wifi locale
  • update_password definisce una password utilizzata per consentire gli aggiornamenti del firmware.

Al primo utilizzo il dispositivo entra in modalità di configurazione wifi. Utilizzare un telefono o un tablet per connettersi al punto di accesso impostato dal dispositivo, quindi accedere a 192.168.4.1. Da qui puoi selezionare la rete wifi locale e inserire la sua password. Questo deve essere fatto solo una volta o se si cambiano le reti wifi o le password.

Una volta che il dispositivo si è connesso alla sua rete locale, ascolterà i comandi. Supponendo che l'indirizzo IP sia 192.168.0.100, utilizzare prima 192.168.0.100:AP_PORT/upload per caricare i file nella cartella dei dati. Ciò consentirà quindi a 192.168.0.100/edit di visualizzare e caricare ulteriori file e consentirà anche a 192.168.0.100 di accedere all'interfaccia utente.

I punti da notare nel software sono

  • L'ADC nell'ESP8266 può essere calibrato per migliorarne la precisione. Una stringa nel file di configurazione imposta i valori grezzi ottenuti per due tensioni di ingresso. Questo non è particolarmente importante in quanto RSSI è un segnale abbastanza relativo a seconda dell'antenna, ecc.
  • La tensione RSSI in db è ragionevolmente lineare ma curva agli estremi. Il software ha un adattamento cubico per migliorare la precisione.
  • La maggior parte dell'aritmetica viene eseguita utilizzando numeri interi scalati, quindi i valori RSSI sono in realtà 100 volte quelli effettivi. I valori scritti nei file o visualizzati vengono riconvertiti.
  • Il software utilizza una semplice macchina a stati per controllare l'acquisizione di RSSI e le transizioni dei dati.
  • Le transizioni dei dati vengono monitorate utilizzando una routine di servizio di interrupt. La normale elaborazione del ciclo Arduino viene sospesa durante l'acquisizione dei dati e il watchdog viene mantenuto attivo localmente. Questo per cercare di migliorare la latenza degli interrupt per mantenere le misurazioni di temporizzazione il più fedeli possibile.

Configurazione

Questo è conservato nel file esp433Config.txt.

Per la cattura RSSI è possibile impostare l'intervallo di campionamento e la durata.

Per l'acquisizione dei dati è possibile impostare il livello di trigger RSSI, il numero di transizioni e la durata massima. Un livello di trigger adatto è di circa +20dB sullo sfondo senza livello di segnale. Una stringa pulseWidths consente inoltre una semplice categorizzazione delle larghezze di impulso per facilitare l'analisi. Ogni riga registrata ha pulseLevel, larghezza in microsecondi e il codice che è l'indice nella stringa pulseWidths che è maggiore della larghezza misurata.

CalString può migliorare la precisione dell'ADC.

idleTimeout controlla il numero di millisecondi di inattività (nessuna acquisizione) prima che il dispositivo si spenga automaticamente. Impostarlo su 0 significa che non scadrà.

Le impostazioni dei tre pulsanti controllano ciò che distingue le pressioni dei pulsanti brevi, medie e lunghe.

displayUpdate fornisce l'intervallo di aggiornamento della visualizzazione locale.

Passaggio 6: utilizzo

L'unità si accende premendo brevemente il pulsante.

Il display visualizzerà inizialmente l'indirizzo IP locale per alcuni secondi prima di iniziare a visualizzare il livello RSSI in tempo reale.

Una breve pressione del pulsante avvierà un'acquisizione RSSI su file. Normalmente questo terminerà al termine della durata dell'RSSI, ma anche un'ulteriore breve pressione del pulsante interromperà l'acquisizione.

Una pressione media del pulsante avvierà l'acquisizione della transizione dei dati. Lo schermo mostrerà in attesa di trigger. Quando l'RSSI supera il livello di trigger, inizierà a catturare le transizioni di dati temporizzate per il numero di transizioni specificato.

Tenendo premuto il pulsante più a lungo della durata del pulsante, l'unità si spegnerà.

I comandi di acquisizione possono essere avviati anche dall'interfaccia web.

Passaggio 7: interfaccia web

Interfaccia web
Interfaccia web
Interfaccia web
Interfaccia web

L'accesso al dispositivo tramite il suo indirizzo IP mostra un'interfaccia web con 3 schede; Acquisizioni, stato e configurazione.

La schermata delle acquisizioni mostra i file attualmente acquisiti. Il contenuto di un file può essere mostrato cliccando sul suo nome. Ci sono anche pulsanti di eliminazione e download per ogni file.

Ci sono anche i pulsanti Capture RSSI e Capture Data che possono essere utilizzati per avviare un'acquisizione. Se viene fornito un nome file, verrà utilizzato altrimenti verrà generato un nome predefinito.

La scheda config mostra la configurazione corrente e consente di modificare e salvare i valori s.

L'interfaccia web supporta le seguenti chiamate

/edit - accesso al sistema di archiviazione del dispositivo; può essere utilizzato per scaricare i file delle misure

  • /status - restituisce una stringa contenente i dettagli dello stato
  • /loadconfig -restituisce una stringa contenente i dettagli di configurazione
  • /saveconfig - invia e salva una stringa per aggiornare la configurazione
  • /loadcapture - restituisce una stringa contenente misure da un file
  • /setmeasureindex - cambia l'indice da usare per la prossima misura
  • /getcapturefiles - ottiene una stringa con l'elenco dei file di misura disponibili
  • /capture - attiva la cattura di RSSI o dati
  • /firmware - avvia l'aggiornamento del firmware

Consigliato: