Inhaltsverzeichnis:
- Schritt 1: Erforderliche Komponenten und Werkzeuge
- Schritt 2: Schema
- Schritt 3: Empfängermodifikation
- Schritt 4: Konstruktion
- Schritt 5: Software und Konfiguration
- Schritt 6: Verwendung
- Schritt 7: Webinterface
Video: RF433Analyser - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Dieses anweisbare erstellt ein Messgerät zur Analyse von HF-433-MHz-Übertragungen, die häufig für die Fernkommunikation mit geringem Stromverbrauch in der Heimautomatisierung und in Sensoren verwendet werden. Es könnte wahrscheinlich leicht modifiziert werden, um 315-MHz-Übertragungen zu funktionieren, die in einigen Ländern verwendet werden. Dies wäre durch die Verwendung der 315-MHz-Version des RXB6 anstelle der aktuellen 433-MHz-Version.
Der Zweck des Instruments ist zweifach. Erstens bietet es einen Signalstärkemesser (RSSI), mit dem die Abdeckung um ein Grundstück herum untersucht und schwarze Flecken gefunden werden können. Zweitens kann es saubere Daten von Sendern erfassen, um eine einfachere Analyse der Daten und Protokolle zu ermöglichen, die von verschiedenen Geräten verwendet werden. Dies ist nützlich, wenn Sie versuchen, kompatible Add-Ons für vorhandene Einheiten zu entwickeln. Normalerweise wird die Datenerfassung durch das in den Empfängern vorhandene Hintergrundrauschen kompliziert, das viele falsche Übergänge erzeugt und es schwieriger macht, die wahren Übertragungen zu entdecken.
Das Gerät verwendet einen RXB6 Superhet-Empfänger. Dies verwendet den Synoxo-SYN500R-Empfängerchip, der über einen RSSI-Analogausgang verfügt. Dies ist effektiv eine gepufferte Version des AGC-Signals, das verwendet wird, um die Verstärkung des Empfängers zu steuern und die Signalstärke über einen weiten Bereich liefert.
Der Empfänger wird von einem ESP8266 (ESP-12F)-Modul überwacht, das das RSSI-Signal umwandelt. Es treibt auch ein kleines lokales OLED-Display (SSD1306) an. Die Elektronik kann auch Timing-Informationen zu Datenübergängen erfassen.
Aufnahmen können lokal durch eine Taste am Gerät ausgelöst werden. Die erfassten Daten werden zur späteren Analyse in Dateien gespeichert.
Das ESP12-Modul führt einen Webserver aus, um Zugriff auf die Dateien zu gewähren, und Captures können auch von hier aus ausgelöst werden.
Das Gerät wird von einem kleinen LIPO-Akku mit Strom versorgt. Dies sorgt für eine angemessene Laufzeit und die Elektronik hat einen geringen Ruhestrom, wenn sie nicht verwendet wird.
Schritt 1: Erforderliche Komponenten und Werkzeuge
Wichtiger Hinweis:
Ich habe festgestellt, dass einige RXB6 433Mhz-Empfänger einen nicht funktionierenden RSSI-Ausgang haben, obwohl die AGC und der Rest der Funktionalität in Ordnung sind. Ich vermute, dass einige Klon-Syn500R-Chips verwendet werden. Ich habe festgestellt, dass Empfänger, die als WL301-341 gekennzeichnet sind, einen Syn5500R-kompatiblen Chip verwenden und der RSSI funktioniert. Sie haben auch den Vorteil, dass keine Abschirmdose verwendet wird, wodurch der AGC-Kondensator leichter modifiziert werden kann. Ich würde empfehlen, diese Einheiten zu verwenden.
Folgende Komponenten werden benötigt
ESP-12F WLAN-Modul
- 3.3V-Regler xc6203
- 220uF 6V Kondensator
- 2 Schottky-Dioden
- 6mm Druckknopf
- n-Kanal-MOSFET z. B. AO3400
- p-Kanal-MOSFET z. B. AO3401
- Widerstände 2x4k7, 3 x 100K, 1 x 470K
- kleines Stück Prototyping-Board
- RXB6 oder WL301-341 Superhet 433MHz Empfänger
- SSD1306 0,96 OLED-Display (einfarbige SPI-Version)
- LIPO-Akku 802030 400mAh
- 3-poliger Anschluss zum Aufladen
- Draht anschließen
- Kupferlackdraht selbstfließend
- Epoxidharz
- Doppelseitiges Klebeband
- 3D gedrucktes Gehäuse
Werkzeuge benötigt
- Lötkolben mit feiner Spitze
- Entlötgeflecht
- Pinzette
- Zange
Schritt 2: Schema
Die Schaltung ist ziemlich einfach.
Ein LDO 3.3V-Regler wandelt den LIP in 3.3V um, die vom ESP-12F-Modul benötigt werden.
Sowohl das Display als auch der Empfänger werden über zwei schaltende MOSFETS mit Strom versorgt, sodass sie ausgeschaltet sind, wenn das ESP-Modul im Ruhezustand ist.
Der Taster startet das System durch Anlegen von 3,3 V an den EN-Eingang des ESP8266. Der GPIO5 hält dies dann aufrecht, während das Modul aktiv ist. Die Taste wird auch über GPIO12 überwacht. Wenn GPIO5 freigegeben wird, wird EN entfernt und das Gerät schaltet ab.
Die Datenleitung vom Empfänger wird von GPIO4 überwacht. Das RSSI-Signal wird von der AGC über einen 2:1-Potentialteiler überwacht.
Die SSD1306-Anzeige wird über SPI gesteuert, das aus 5 GPIO-Signalen besteht. Es kann möglich sein, eine I2C-Version zu verwenden, aber dies erfordert einen Wechsel der verwendeten Bibliothek und eine Neuzuordnung eines Teils der GPIO.
Schritt 3: Empfängermodifikation
Im Auslieferungszustand stellt der RXB6 das RSSI-Signal nicht an seinen externen Datenpins zur Verfügung.
Eine einfache Modifikation macht dies möglich. Der DER-Signalanschluss am Gerät ist eigentlich nur eine Wiederholung des Datensignalsignals. Sie sind über den 0 Ohm Widerstand mit der Bezeichnung R6 miteinander verdrahtet. Diese muss mit einem Lötkolben entfernt werden. Die Komponente mit der Bezeichnung R7 muss nun überverknüpft werden. Das obere Ende ist eigentlich das RSSI-Signal und das untere geht zum DER-Anschluss. Man könnte einen 0-Ohm-Widerstand verwenden, aber ich habe nur mit ein bisschen Draht verbunden. Diese Stellen sind außerhalb der Metallsiebdose zugänglich, die für diese Modifikation nicht entfernt werden muss.
Die Modifikation kann getestet werden, indem bei eingeschaltetem Empfänger ein Voltmeter über DER und GND angeschlossen wird. Es zeigt eine Spannung zwischen etwa 0,4 V (keine empfangene Leistung) und etwa 1,8 V bei einer lokalen Quelle von 433 MHz (z. B. einer Fernbedienung) an.
Die zweite Modifikation ist nicht unbedingt erforderlich, aber durchaus wünschenswert. Im Auslieferungszustand ist die AGC-Antwortzeit des Empfängers ziemlich langsam, wobei mehrere hundert Millisekunden benötigt werden, um auf das empfangene Signal zu reagieren. Dies verringert die Zeitauflösung während RSSI-Erfassungen und macht es auch weniger reaktionsschnell, RSSI als Auslöser für die Datenerfassung zu verwenden.
Es gibt einen einzigen Kondensator, der die AGC-Ansprechzeiten steuert, aber leider befindet er sich unter der Metallabschirmdose. Eigentlich lässt sich die Siebdose relativ einfach abnehmen, da sie nur von 3 Laschen gehalten wird und durch Erhitzen jeder dieser Ösen und Aufhebeln mit einem kleinen Schraubendreher hochgezogen werden kann. Nach dem Entfernen können Sie die Löcher für den Wiederzusammenbau reinigen, indem Sie ein Entlötgeflecht verwenden oder mit einem 0,8-mm-Bohrer nachbohren.
Die Modifikation besteht darin, den vorhandenen AGC-Kondensator C4 zu entfernen und durch einen 0,22uF-Kondensator zu ersetzen. Dies beschleunigt die AGC-Antwort um etwa das Zehnfache. Die Leistung des Empfängers wird dadurch nicht beeinträchtigt. Im Bild zeige ich einen Spurschnitt und eine Verbindung zu dieser Spur vom AGC-Kondensator. Dies ist nicht notwendig, macht aber den AGC-Punkt auf einem Pad außerhalb der Abschirmdose unter dem Kristall verfügbar, falls man wieder zusätzliche Kapazität hinzufügen wollte. Ich habe das nicht nötig. Die Abschirmung kann dann ersetzt werden.
Bei Verwendung der WL301-341 RX-Einheit zeigt das Foto dies mit hervorgehobenem AGC-Kondensator. Der RSSI-Signal-Pin wird ebenfalls angezeigt. Das hängt eigentlich mit nichts zusammen. Man kann einfach einen feinen Draht direkt an den Pin anschließen. Alternativ werden dort die beiden mittleren Jumperpins miteinander verbunden und beide führen den Datenausgang. Die Leiterbahn zwischen ihnen kann abgeschnitten und dann die RSSI mit der Ersatzleitung verbunden werden, um das RSSI-Signal an einem Jumper-Ausgang verfügbar zu machen.
Schritt 4: Konstruktion
Außerhalb des ESP-12-Moduls werden etwa 10 Komponenten benötigt. Diese können auf einem Stück Prototyping-Platine hergestellt und verbunden werden. Ich habe eine ESP-spezifische Prototyping-Platine verwendet, um die Montage des Reglers und anderer SMD-Komponenten zu erleichtern. Dieser wird direkt auf dem ESP-12-Modul befestigt.
Die Box, die ich verwendet habe, ist ein 3D-gedrucktes Design mit 3 Vertiefungen in der Basis, um den Empfänger, das Display und das ESP-Modul aufzunehmen. Es hat eine Aussparung für das Display und Löcher für den Ladepunkt und den Druckknopf, die eingesteckt und mit etwas Poxy-Harz befestigt werden sollten.
Ich habe Anschlusskabel verwendet, um die Verbindungen zwischen den 3 Modulen, dem Ladepunkt und den Tasten herzustellen. und befestigte sie dann mit doppelseitigem Klebeband für ESP und Empfänger und kleinen Tropfen Epoxid, um die Seiten des Displays an Ort und Stelle zu halten. Der Akku wird mit dem Ladepunkt verkabelt und mit doppelseitigem Klebeband auf dem Empfänger befestigt.
Schritt 5: Software und Konfiguration
Die Software ist in der Arduino-Umgebung gebaut.
Der Quellcode dafür ist unter https://github.com/roberttidey/RF433Analyser Der Code kann einige Konstanten für Passwörter aus Sicherheitsgründen ändern, bevor er kompiliert und auf das ES8266-Gerät geflasht wird.
- WM_PASSWORD definiert das Passwort, das von wifiManager verwendet wird, wenn das Gerät im lokalen WLAN-Netzwerk konfiguriert wird
- update_password definiert ein Passwort, das verwendet wird, um Firmware-Updates zuzulassen.
Bei der ersten Verwendung wechselt das Gerät in den WLAN-Konfigurationsmodus. Verwenden Sie ein Telefon oder Tablet, um eine Verbindung mit dem vom Gerät eingerichteten Zugangspunkt herzustellen, und navigieren Sie dann zu 192.168.4.1. Von hier aus können Sie das lokale WLAN-Netzwerk auswählen und sein Passwort eingeben. Dies muss nur einmal oder beim Ändern von WLAN-Netzwerken oder Passwörtern durchgeführt werden.
Sobald sich das Gerät mit seinem lokalen Netzwerk verbunden hat, hört es auf Befehle. Angenommen, seine IP-Adresse lautet 192.168.0.100, dann verwenden Sie zuerst 192.168.0.100:AP_PORT/upload, um die Dateien in den Datenordner hochzuladen. Dadurch kann 192.168.0.100/edit weitere Dateien anzeigen und hochladen und 192.168.0.100 auch auf die Benutzeroberfläche zugreifen.
Zu beachtende Punkte in der Software sind
- Der ADC im ESP8266 kann kalibriert werden, um seine Genauigkeit zu verbessern. Ein String in der Konfigurationsdatei setzt die erreichten Rohwerte für zwei Eingangsspannungen. Dies ist nicht besonders wichtig, da RSSI ein ziemlich relatives Signal ist, abhängig von der Antenne usw.
- Die RSSI-Spannung zu db ist einigermaßen linear, aber an den Extremen krümmt sie sich. Die Software hat eine kubische Anpassung, um die Genauigkeit zu verbessern.
- Der größte Teil der Arithmetik wird mit skalierten Ganzzahlen durchgeführt, sodass die RSSI-Werte tatsächlich das 100-fache der tatsächlichen Werte sind. In Dateien geschriebene oder angezeigte Werte werden zurückkonvertiert.
- Die Software verwendet eine einfache Zustandsmaschine, um die Erfassung von RSSI und Datenübergängen zu steuern.
- Datenübergänge werden unter Verwendung einer Interrupt-Service-Routine überwacht. Die normale Arduino-Schleifenverarbeitung wird während der Datenerfassung ausgesetzt und der Watchdog lokal am Leben gehalten. Damit soll versucht werden, die Interrupt-Latenz zu verbessern, um die Timing-Messungen so genau wie möglich zu halten.
Aufbau
Dies wird in der esp433Config.txt gespeichert.
Für die RSSI-Erfassung können das Abtastintervall und die Dauer eingestellt werden.
Für die Datenerfassung können der RSSI-Triggerpegel, die Anzahl der Übergänge und die maximale Dauer eingestellt werden. Ein geeigneter Triggerpegel liegt bei etwa +20dB auf dem Hintergrundsignalpegel. Ein pulseWidths-String ermöglicht auch eine einfache Kategorisierung von Pulsbreiten, um die Analyse zu erleichtern. Jede protokollierte Zeile hat pulseLevel, Breite in Mikrosekunden und den Code, der den Index im pulseWidths-String darstellt, der größer als die gemessene Breite ist.
CalString kann die ADC-Genauigkeit verbessern.
LeerlaufTimeout steuert die Anzahl der Millisekunden der Inaktivität (keine Aufzeichnungen), bevor das Gerät automatisch heruntergefahren wird. Auf 0 zu setzen bedeutet, dass kein Timeout auftritt.
Die drei Tasteneinstellungen steuern, was kurze mittlere und lange Tastendrücke unterscheidet.
displayUpdate gibt das lokale Anzeigeaktualisierungsintervall an.
Schritt 6: Verwendung
Das Gerät wird durch kurzes Drücken der Taste eingeschaltet.
Das Display zeigt zunächst einige Sekunden lang die lokale IP-Adresse an, bevor die RSSI-Ebene in Echtzeit angezeigt wird.
Ein kurzer Tastendruck startet eine RSSI-Erfassung in eine Datei. Normalerweise wird dies beendet, wenn die RSSI-Dauer beendet ist, aber ein weiterer kurzer Tastendruck beendet auch die Aufnahme.
Ein mittlerer Tastendruck leitet eine Datenübergangserfassung ein. Der Bildschirm zeigt Warten auf Trigger. Wenn der RSSI den Triggerpegel überschreitet, beginnt er mit der Erfassung zeitgesteuerter Datenübergänge für die angegebene Anzahl von Übergängen.
Wenn Sie die Taste länger als die lange Dauer der Taste gedrückt halten, wird das Gerät ausgeschaltet.
Capture-Befehle können auch über das Webinterface initiiert werden.
Schritt 7: Webinterface
Der Zugriff auf das Gerät über seine IP-Adresse zeigt eine Weboberfläche mit 3 Registerkarten; Erfasst, Status und Konfig.
Der Aufnahmebildschirm zeigt die aktuell aufgenommenen Dateien an. Der Inhalt einer Datei kann durch Klicken auf ihren Namen angezeigt werden. Es gibt auch Schaltflächen zum Löschen und Herunterladen für jede Datei.
Es gibt auch Capture-RSSI- und Capture-Daten-Schaltflächen, die verwendet werden können, um eine Aufnahme zu initiieren. Wenn ein Dateiname angegeben wird, wird dieser verwendet, andernfalls wird ein Standardname generiert.
Die Registerkarte config zeigt die aktuelle Konfiguration und ermöglicht das Ändern und Speichern von svalues.
Das Webinterface unterstützt die folgenden Aufrufe
/edit - Zugriff auf das Dateisystem des Geräts; kann verwendet werden, um Maßnahmendateien herunterzuladen
- /status - gibt einen String zurück, der Statusdetails enthält
- /loadconfig - gibt einen String zurück, der Konfigurationsdetails enthält
- /saveconfig - Senden und speichern Sie eine Zeichenfolge, um die Konfiguration zu aktualisieren
- /loadcapture - gibt einen String zurück, der Maße aus einer Datei enthält
- /setmeasureindex - Ändern Sie den Index, der für den nächsten Takt verwendet werden soll
- /getcapturefiles - Ruft einen String mit einer Liste der verfügbaren Messdateien ab
- /capture - löst die Erfassung von RSSI oder Daten aus
- /firmware - Update der Firmware einleiten