Inhoudsopgave:

RF433Analyser: 7 stappen
RF433Analyser: 7 stappen

Video: RF433Analyser: 7 stappen

Video: RF433Analyser: 7 stappen
Video: MTool - 433MHz code analyzer, cloner, jammer + Wifi captive portal. 2024, Juli-
Anonim
RF433Analyse
RF433Analyse
RF433Analyse
RF433Analyse

Deze instructable creëert een meetinstrument om RF 433MHz-transmissies te analyseren die vaak worden gebruikt voor communicatie op afstand met laag vermogen in domotica en sensoren. Het kan waarschijnlijk gemakkelijk worden aangepast om 315MHz-transmissies te gebruiken die in sommige landen worden gebruikt. Dit zou zijn door de 315MHz-versie van de RXB6 te gebruiken in plaats van de huidige 433MHz-versie.

Het doel van het instrument is tweeledig. Ten eerste biedt het een signaalsterktemeter (RSSI) die kan worden gebruikt om de dekking rond een woning te onderzoeken en eventuele zwarte vlekken te vinden. Ten tweede kan het schone gegevens van zenders vastleggen om een eenvoudigere analyse van de gegevens en protocollen die door verschillende apparaten worden gebruikt, mogelijk te maken. Dit is handig als u compatibele add-ons voor bestaande eenheden probeert te ontwerpen. Normaal gesproken wordt het vastleggen van gegevens bemoeilijkt door de achtergrondruis die aanwezig is in ontvangers die veel onechte overgangen produceren en het moeilijker maken om de echte transmissies te ontdekken.

Het toestel maakt gebruik van een RXB6 superhet ontvanger. Deze maakt gebruik van de Synoxo-SYN500R-ontvangerchip die een analoge RSSI-uitgang heeft. Dit is in feite een gebufferde versie van het AGC-signaal dat wordt gebruikt om de versterking van de ontvanger te regelen en geeft signaalsterkte over een breed bereik.

De ontvanger wordt bewaakt door een ESP8266 (ESP-12F) module die het RSSI-signaal omzet. Het stuurt ook een klein lokaal OLED-scherm aan (SSD1306). De elektronica kan ook timinginformatie over gegevensovergangen vastleggen.

Opnames kunnen lokaal worden geactiveerd door een knop op het apparaat. Vastgelegde gegevens worden opgeslagen in bestanden voor latere analyse.

De ESP12-module voert een webserver uit om toegang te geven tot de bestanden en opnames kunnen ook vanaf hier worden geactiveerd.

Het instrument wordt gevoed door een kleine oplaadbare LIPO-batterij. Dit geeft een redelijke looptijd en de elektronica heeft een lage ruststroom wanneer deze niet in gebruik is.

Stap 1: Benodigde componenten en gereedschappen

Belangrijke notitie:

Ik heb ontdekt dat sommige RXB6 433Mhz-ontvangers een niet-functionerende RSSI-uitgang hebben, hoewel de AGC en de rest van de functionaliteit in orde zijn. Ik vermoed dat er misschien wat kloon Syn500R-chips worden gebruikt. Ik heb ontdekt dat ontvangers met het label WL301-341 een Syn5500R-compatibele chip gebruiken en dat de RSSI functioneel is. Ze hebben ook het voordeel dat er geen afscherming kan worden gebruikt, waardoor de AGC-condensator gemakkelijker te wijzigen is. Ik zou aanraden om deze eenheden te gebruiken.

De volgende componenten zijn nodig:

ESP-12F wifi-module

  • 3.3V-regelaar xc6203
  • 220uF 6V condensator
  • 2 schottky-diodes
  • 6 mm drukknop
  • n kanaal MOSFET b.v. AO3400
  • p kanaal MOSFET b.v. AO3401
  • weerstanden 2x4k7, 3 x 100K, 1 x 470K
  • klein stukje prototypebord
  • RXB6 of WL301-341 superhet 433MHz ontvanger
  • SSD1306 0,96 OLED-display (SPI-versie met één kleur)
  • LIPO-batterij 802030 400mAh
  • 3-pins connector voor opladen
  • Draad aansluiten
  • Geëmailleerd koperdraad zelfvloeiend
  • Epoxyhars
  • Dubbelzijdige tape
  • 3D-geprinte behuizing

Gereedschap nodig

  • Fijne punt soldeerbout
  • Desoldeer vlecht
  • Pincet
  • Tang

Stap 2: Schema

Schematisch
Schematisch

De schakeling is redelijk eenvoudig.

Een LDO 3,3V-regelaar zet de LIP om naar 3,3V die nodig is voor de ESP-12F-module.

Stroom wordt geleverd aan zowel het display als de ontvanger via twee schakelende MOSFETS, zodat ze uit zijn wanneer de ESP-module slaapt.

De knop start het systeem door 3.3V te leveren aan de EN-ingang van de ESP8266. De GPIO5 houdt dit vervolgens vol terwijl de module actief is. De knop wordt ook bewaakt met GPIO12. Wanneer GPIO5 wordt vrijgegeven, wordt de EN verwijderd en wordt het apparaat uitgeschakeld.

De datalijn van de ontvanger wordt bewaakt door GPIO4. Het RSSI-signaal wordt gecontroleerd door de AGC via een 2:1 potentiaaldeler.

Het SSD1306-display wordt bestuurd via SPI bestaande uit 5 GPIO-signalen. Het is misschien mogelijk om een I2C-versie te gebruiken, maar hiervoor moet de gebruikte bibliotheek worden gewijzigd en een deel van de GPIO opnieuw worden toegewezen.

Stap 3: Wijziging ontvanger

Ontvanger Modificatie
Ontvanger Modificatie
Ontvanger Modificatie
Ontvanger Modificatie
Ontvanger Modificatie
Ontvanger Modificatie

Zoals geleverd maakt de RXB6 het RSSI-signaal niet beschikbaar op zijn externe datapinnen.

Een eenvoudige wijziging maakt dit mogelijk. De DER-signaalconnector op het apparaat is eigenlijk slechts een herhaling van het datasignaalsignaal. Ze zijn met elkaar verbonden via de weerstand van 0 Ohm met het label R6. Dit moet met een soldeerbout worden verwijderd. De component met het label R7 moet nu overdwars worden doorgelinkt. De bovenkant is eigenlijk het RSSI-signaal en de onderkant gaat naar de DER-connector. Je zou een weerstand van 0 Ohm kunnen gebruiken, maar ik heb zojuist een verbinding gemaakt met een stukje draad. Deze locaties zijn toegankelijk buiten de metalen afscherming die voor deze aanpassing niet hoeft te worden verwijderd.

De wijziging kan worden getest door een voltmeter over DER en GND te bevestigen terwijl de ontvanger is ingeschakeld. Het toont een spanning tussen ongeveer 0,4 V (geen ontvangen stroom) en ongeveer 1,8 V met een lokale bron van 433 MHz (bijvoorbeeld een afstandsbediening).

De tweede wijziging is niet absoluut noodzakelijk, maar wel wenselijk. Zoals geleverd is de AGC-responstijd van de ontvanger vrij traag, het duurt enkele honderden milliseconden om op het ontvangen signaal te reageren. Dit vermindert de tijdsresolutie tijdens RSSI-opnames en maakt het ook minder responsief om RSSI te gebruiken als een trigger voor het vastleggen van gegevens.

Er is een enkele condensator die de responstijden van de AGC regelt, maar deze bevindt zich helaas onder de metalen afscherming. Het is eigenlijk vrij eenvoudig om de zeefbus te verwijderen, omdat deze slechts door 3 nokken wordt vastgehouden en kan worden opgetild door ze elk om de beurt te verwarmen en op te tillen met een kleine schroevendraaier. Eenmaal verwijderd, kan men de gaten schoonmaken voor hermontage door gebruik te maken van een desoldeervlechtwerk of opnieuw te boren met een bit van ongeveer 0,8 mm.

De wijziging is om de bestaande AGC-condensator C4 te verwijderen en te vervangen door een 0.22uF-condensator. Dit versnelt de AGC-respons met ongeveer 10 keer. Het heeft geen nadelig effect op de prestaties van de ontvanger. In de afbeelding laat ik een spooruitsnijding zien en een doorverbinding naar dit spoor van de AGC-condensator. Dit is niet nodig, maar maakt het AGC-punt beschikbaar op een pad buiten het afschermingsblik onder het kristal voor het geval men weer extra capaciteit zou willen toevoegen. Dat heb ik niet nodig gehad. De afscherming kan dan worden vervangen.

Als u de WL301-341 RX-eenheid gebruikt, toont de foto dit met de AGC-condensator gemarkeerd. De RSSI-signaalpin wordt ook weergegeven. Dit is eigenlijk nergens mee verbonden. Men kan gewoon een fijne draad rechtstreeks op de pin aansluiten. Als alternatief zijn daar de twee centrale jumperpinnen met elkaar verbonden en dragen beide de data-uitgang. Het spoor ertussen kan worden doorgesneden en vervolgens kan de RSSI worden doorverbonden met de reserve om het RSSI-signaal beschikbaar te maken op een jumperuitgang.

Stap 4: constructie

Bouw
Bouw
Bouw
Bouw
Bouw
Bouw
Bouw
Bouw

Er zijn ongeveer 10 componenten nodig buiten de ESP-12-module. Deze kunnen worden opgemaakt en verbonden op een stuk prototypebord. Ik gebruikte een ESP-specifiek prototyping-bord dat ik gebruikte om de montage van de regelaar en andere smd-componenten te vergemakkelijken. Deze wordt direct bovenop de ESP-12-module bevestigd.

De doos die ik gebruikte is een 3D-geprint ontwerp met 3 inkepingen in de basis om de ontvanger, het display en de esp-module te nemen. Het heeft een uitsparing voor het display en gaten voor het oplaadpunt en de drukknop die moeten worden geplaatst en vastgezet met een kleine hoeveelheid poxyhars.

Ik heb aansluitdraad gebruikt om de verbindingen te maken tussen de 3 modules, het oplaadpunt en de knoppen. en bevestig ze vervolgens op hun plaats met dubbelzijdig plakband voor de ESP en ontvanger en kleine druppels epoxy om de zijkanten van het scherm op hun plaats te houden. De batterij is aangesloten op het oplaadpunt en bovenop de ontvanger gemonteerd met dubbelzijdig plakband.

Stap 5: Software en configuratie

De software is gebouwd in de Arduino-omgeving.

De broncode hiervoor is op https://github.com/roberttidey/RF433Analyser. De code kan om veiligheidsredenen een aantal constanten voor wachtwoorden wijzigen voordat ze worden gecompileerd en naar het ES8266-apparaat worden geflitst.

  • WM_PASSWORD definieert het wachtwoord dat door wifiManager wordt gebruikt bij het configureren van het apparaat op een lokaal wifi-netwerk
  • update_password definieert een wachtwoord dat wordt gebruikt om firmware-updates toe te staan.

Wanneer het apparaat voor het eerst wordt gebruikt, gaat het naar de wifi-configuratiemodus. Gebruik een telefoon of tablet om verbinding te maken met het toegangspunt dat door het apparaat is ingesteld en blader vervolgens naar 192.168.4.1. Vanaf hier kunt u het lokale wifi-netwerk selecteren en het wachtwoord invoeren. Dit hoeft slechts één keer te worden gedaan of bij het wijzigen van wifi-netwerken of wachtwoorden.

Zodra het apparaat verbinding heeft gemaakt met zijn lokale netwerk, luistert het naar opdrachten. Ervan uitgaande dat het IP-adres 192.168.0.100 is, gebruik dan eerst 192.168.0.100:AP_PORT/upload om de bestanden in de gegevensmap te uploaden. Hierdoor kan 192.168.0.100/edit meer bestanden bekijken en uploaden en heeft 192.168.0.100 ook toegang tot de gebruikersinterface.

Aandachtspunten in de software zijn:

  • De ADC in de ESP8266 kan worden gekalibreerd om de nauwkeurigheid te verbeteren. Een string in het configuratiebestand stelt de bereikte ruwe waarden in voor twee ingangsspanningen. Dit is niet bijzonder belangrijk omdat RSSI een redelijk relatief signaal is, afhankelijk van de antenne enz.
  • De RSSI-spanning naar db is redelijk lineair, maar vertoont extreme curven. De software heeft een cubic fit om de nauwkeurigheid te verbeteren.
  • Het meeste rekenwerk wordt gedaan met behulp van geschaalde gehele getallen, dus RSSI-waarden zijn eigenlijk 100 keer de werkelijke. Waarden die naar bestanden zijn geschreven of worden weergegeven, worden terug geconverteerd.
  • De software gebruikt een eenvoudige toestandsmachine om het vastleggen van RSSI en gegevensovergangen te regelen.
  • Gegevensovergangen worden bewaakt met behulp van een interruptserviceroutine. De normale Arduino-lusverwerking wordt onderbroken tijdens het vastleggen van gegevens en de waakhond wordt lokaal in leven gehouden. Dit is om te proberen de onderbrekingslatentie te verbeteren om de timingmetingen zo getrouw mogelijk te houden.

Configuratie

Dit wordt bewaard in de esp433Config.txt.

Voor RSSI-opname kunnen het bemonsteringsinterval en de duur worden ingesteld.

Voor het vastleggen van gegevens kunnen het RSSI-triggerniveau, het aantal overgangen en de maximale duur worden ingesteld. Een geschikt triggerniveau is ongeveer +20dB op de achtergrond geen signaalniveau. Een pulseWidths-reeks maakt het ook mogelijk om de pulsbreedtes eenvoudig te categoriseren om de analyse te vergemakkelijken. Elke gelogde regel heeft pulseLevel, breedte in microseconden en de code die de index is in de pulseWidths-reeks die groter is dan de gemeten breedte.

CalString kan de ADC-nauwkeurigheid verbeteren.

idleTimeout regelt het aantal milliseconden inactiviteit (geen opnamen) voordat het apparaat automatisch wordt uitgeschakeld. Als u het op 0 zet, betekent dit dat er geen time-out optreedt.

De drie knopinstellingen bepalen wat het onderscheid maakt tussen korte, middellange en lange knopdrukken.

displayUpdate geeft het lokale schermverversingsinterval.

Stap 6: Gebruik

Het apparaat wordt ingeschakeld door kort op de knop te drukken.

Het display zal in eerste instantie het lokale IP-adres een paar seconden weergeven voordat het RSSI-niveau in realtime begint weer te geven.

Een korte druk op de knop start een RSSI-opname naar een bestand. Normaal gesproken wordt dit beëindigd wanneer de RSSI-duur is afgelopen, maar nogmaals kort op de knop drukken beëindigt ook de opname.

Een gemiddelde druk op de knop start het vastleggen van een gegevensovergang. Het scherm toont wachten op trigger. Wanneer de RSSI boven het triggerniveau komt, begint het met het vastleggen van getimede gegevensovergangen voor het aantal gespecificeerde overgangen.

Als u de knop langer ingedrukt houdt dan de knop lang ingedrukt houdt, wordt het apparaat uitgeschakeld.

Capture-opdrachten kunnen ook worden gestart vanuit de webinterface.

Stap 7: webinterface

Webinterface
Webinterface
Webinterface
Webinterface

Toegang tot het apparaat via het ip-adres toont een webinterface met 3 tabbladen; Opnames, status en configuratie.

Het opnamescherm toont de momenteel vastgelegde bestanden. De inhoud van een bestand kan worden getoond door op de naam ervan te klikken. Er zijn ook verwijder- en downloadknoppen voor elk bestand.

Er zijn ook knoppen voor het vastleggen van RSSI en het vastleggen van gegevens die kunnen worden gebruikt om een vastlegging te starten. Als een bestandsnaam is opgegeven, wordt deze gebruikt, anders wordt een standaardnaam gegenereerd.

Het config-tabblad toont de huidige configuratie en maakt het mogelijk swaarden te wijzigen en op te slaan.

De webinterface ondersteunt de volgende oproepen:

/edit - toegang tot het archiveringssysteem van het apparaat; kan worden gebruikt om maatregelenbestanden te downloaden

  • /status - retourneer een tekenreeks met statusdetails
  • /loadconfig -retourneer een string met configuratiedetails
  • /saveconfig - stuur en bewaar een string om de configuratie bij te werken
  • /loadcapture - retourneer een tekenreeks met maten uit een bestand
  • /setmeasureindex - wijzig de index die moet worden gebruikt voor de volgende maat
  • /getcapturefiles - haal een string op met een lijst met beschikbare meetbestanden
  • /capture - trigger vastleggen van RSSI of gegevens
  • /firmware - update van firmware starten

Aanbevolen: