Indholdsfortegnelse:
- Trin 1: Komponenter og værktøjer påkrævet
- Trin 2: Skematisk
- Trin 3: Modtagermodifikation
- Trin 4: Konstruktion
- Trin 5: Software og konfiguration
- Trin 6: Brug
- Trin 7: Webgrænseflade
Video: RF433Analyser: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Denne instruerbare opretter et måleinstrument til at hjælpe med at analysere RF 433MHz -transmissioner, der almindeligvis bruges til fjernstrømskommunikation med lav effekt i hjemmeautomation og sensorer. Det kan sandsynligvis let ændres til at fungere 315MHz transmissioner, der bruges i nogle lande. Dette ville være ved at bruge 315MHz -versionen af RXB6 i stedet for den nuværende 433MHz.
Formålet med instrumentet er todelt. For det første giver den en signalstyrkmåler (RSSI), som kan bruges til at undersøge dækning omkring en ejendom og finde eventuelle sorte pletter. For det andet kan det fange rene data fra sendere for at muliggøre lettere analyse af data og protokoller, der bruges af forskellige enheder. Dette er nyttigt, hvis du prøver at designe kompatible tilføjelser til eksisterende enheder. Normalt er datafangst kompliceret af baggrundsstøj, der findes i modtagere, der producerer masser af falske overgange og gør det vanskeligere at opdage de sande transmissioner.
Enheden bruger en RXB6 superhet -modtager. Dette bruger Synoxo-SYN500R-modtagerchippen, der har en RSSI-analog udgang. Dette er i virkeligheden en bufret version af AGC -signalet, der bruges til at styre modtagerens forstærkning og giver signalstyrke over et bredt område.
Modtageren overvåges af et ESP8266 (ESP-12F) modul, der konverterer RSSI-signal. Det driver også en lille lokal OLED -skærm (SSD1306). Elektronikken kan også indsamle timinginformation om dataovergange.
Optagelser kan udløses lokalt med en knap på enheden. Indfangede data gemmes i filer til senere analyse.
ESP12 -modulet kører en webserver for at give adgang til filerne, og fangster kan også udløses herfra.
Instrumentet drives af et lille genopladeligt LIPO -batteri. Dette giver en rimelig driftstid, og elektronikken har en lav hvilestrøm, når den ikke er i brug.
Trin 1: Komponenter og værktøjer påkrævet
Vigtig note:
Jeg har fundet, at nogle RXB6 433Mhz -modtagere har et ikke -fungerende RSSI -output, selvom AGC og resten af funktionaliteten er OK. Jeg formoder, at der muligvis bruges nogle klon Syn500R -chips. Jeg har fundet ud af, at modtagere mærket som WL301-341 bruger en Syn5500R-kompatibel chip, og RSSI er funktionel. De har også fordelen ved ikke at bruge en screeningskasse, der gør AGC -kondensatoren lettere at ændre. Jeg vil anbefale at bruge disse enheder.
Følgende komponenter er nødvendige
ESP-12F wifi modul
- 3.3V regulator xc6203
- 220uF 6V kondensator
- 2 schottky -dioder
- 6 mm trykknap
- n kanal MOSFET f.eks. AO3400
- p kanal MOSFET f.eks. AO3401
- modstande 2x4k7, 3 x 100K, 1 x 470K
- lille stykke prototypebord
- RXB6 eller WL301-341 superhet 433MHz modtager
- SSD1306 0,96 OLED -skærm (SPI -version i én farve)
- LIPO batteri 802030 400mAh
- 3 -polet stik til opladning
- Tilslut ledningen
- Selvmalet emaljeret kobbertråd
- Epoxyharpiks
- Dobbeltsidet tape
- 3D -trykt kabinet
Værktøjer nødvendige
- Fint punkt loddejern
- Desolder fletning
- Pincet
- Tang
Trin 2: Skematisk
Kredsløbet er ret ligetil.
En LDO 3.3V-regulator konverterer LIP til 3.3V, som ESP-12F-modulet har brug for.
Der leveres strøm til både displayet og modtageren via to skiftende MOSFETS, så de er slukket, når ESP -modulet sover.
Knappen starter systemet ved at levere 3,3V til EN -indgangen på ESP8266. GPIO5 opretholder dette, mens modulet er aktivt. Knappen overvåges også ved hjælp af GPIO12. Når GPIO5 frigives, fjernes EN, og enheden lukkes.
Datalinjen fra modtageren overvåges af GPIO4. RSSI -signalet overvåges af AGC via en 2: 1 potentialdeler.
SSD1306 -skærmen styres via SPI bestående af 5 GPIO -signaler. Det kan være muligt at bruge en I2C -version, men dette vil kræve ændring af det anvendte bibliotek og omlægning af nogle af GPIO'erne.
Trin 3: Modtagermodifikation
Som leveret gør RXB6 ikke RSSI -signalet tilgængeligt på dets eksterne datapinde.
En enkel ændring gør dette muligt. DER -signalstikket på enheden er faktisk bare en gentagelse af datasignalsignalet. De er koblet sammen gennem 0 Ohm -modstanden mærket R6. Dette skal fjernes ved hjælp af et loddejern. Komponenten mærket R7 skal nu forbindes på tværs. Den øverste ende er faktisk RSSI -signalet, og bunden går til DER -stikket. Man kunne bruge en 0 Ohm modstand, men jeg linkede lige over med en smule ledning. Disse steder er tilgængelige uden for metalafskærmningen, som ikke skal fjernes for denne ændring.
Ændringen kan testes ved at tilslutte et voltmeter på tværs af DER og GND med modtageren tændt. Det viser en spænding mellem ca. 0,4V (ingen modtaget strøm) og ca. 1,8V med en lokal kilde på 433MHz (f.eks. En fjernbetjening).
Den anden ændring er ikke absolut væsentlig, men er ganske ønskelig. Som leveret er modtagerens AGC -responstid sat til at være ret langsom, og det tager flere hundrede millisekunder at reagere på modtaget signal. Dette reducerer tidsopløsningen under RSSI -optagelser og gør det også mindre lydhørt at bruge RSSI som en trigger til datafangst.
Der er en enkelt kondensator, der styrer AGC -responstiderne, men desværre er den placeret under metalskærmbeholderen. Det er faktisk ret let at fjerne afskærmningsdåsen, da den lige holdes af 3 tappe, og den kan værdsættes ved at opvarme hver af disse efter tur og løfte op med en lille skruetrækker. Når den er fjernet, kan man rense hullerne til genmontering ved hjælp af aflodningsfletning eller genboring med ca. en 0,8 mm bit.
Ændringen er at fjerne den eksisterende AGC kondensator C4 og erstatte den med en 0,22uF kondensator. Dette fremskynder AGC -svaret med cirka 10 gange. Det har ingen skadelig effekt på modtagerens ydeevne. På billedet viser jeg et sporskår og et link til dette spor fra AGC -kondensatoren. Dette er ikke nødvendigt, men gør AGC -punktet tilgængeligt på en pude uden for skærmen under krystallen, hvis man ville tilføje ekstra kapacitans igen. Det har jeg ikke haft brug for. Screeningen kan derefter udskiftes.
Hvis du bruger WL301-341 RX-enheden, viser billedet dette med AGC-kondensatoren markeret. RSSI -signalpinnen vises også. Dette er faktisk ikke forbundet med noget. Man kan bare forbinde en fin ledning direkte til tappen. Alternativt er de to centrale jumperstifter forbundet med hinanden og begge bærer dataoutput. Sporet mellem dem kan skæres ned og derefter forbindes RSSI'en til den ekstra for at gøre RSSI -signalet tilgængeligt på en jumperoutput.
Trin 4: Konstruktion
Der er cirka 10 komponenter nødvendige uden for ESP-12-modulet. Disse kan fremstilles og forbindes på et stykke prototypebord. Jeg brugte et ESP -specifikt prototypebord, jeg brugte til at lette montering af regulatoren og andre smd -komponenter. Dette fastgøres direkte oven på ESP-12-modulet.
Boksen jeg brugte er et 3D -printet design med 3 fordybninger i basen til at tage modtageren, displayet og esp -modulet. Den har en udskæring til displayet og huller til ladepunktet og trykknap, som skal indsættes og sikres med en lille mængde poxyharpiks.
Jeg brugte tilslutningstråd til at lave forbindelserne mellem de 3 moduler, ladepunktet og knapperne. og sikrede dem derefter på plads ved hjælp af dobbeltsidebånd til ESP og modtager og små dråber epoxy for at holde skærmens sider på plads. Batteriet er forbundet til opladningspunktet og monteret oven på modtageren ved hjælp af dobbeltsidet tape.
Trin 5: Software og konfiguration
Softwaren er bygget i Arduino -miljøet.
Kildekode til dette er på https://github.com/roberttidey/RF433Analyser Koden kan få nogle konstanter for adgangskoder ændret af sikkerhedsmæssige årsager, før de kompileres og flashes til ES8266 -enheden.
- WM_PASSWORD definerer adgangskoden, der bruges af wifiManager, når enheden konfigureres til et lokalt wifi -netværk
- update_password definerer en adgangskode, der bruges til at tillade firmwareopdateringer.
Ved første brug går enheden ind i wifi -konfigurationstilstand. Brug en telefon eller tablet til at oprette forbindelse til det adgangspunkt, der er konfigureret af enheden, og søg derefter til 192.168.4.1. Herfra kan du vælge det lokale wifi -netværk og indtaste dets adgangskode. Dette behøver kun at blive gjort én gang, eller hvis du skifter wifi -netværk eller adgangskoder.
Når enheden har oprettet forbindelse til sit lokale netværk, lytter den efter kommandoer. Hvis vi antager, at dens IP -adresse er 192.168.0.100, skal du først bruge 192.168.0.100:AP_PORT/upload til at uploade filerne i datamappen. Dette vil derefter give 192.168.0.100/edit mulighed for at se og uploade yderligere filer og også give 192.168.0.100 adgang til brugergrænsefladen.
Punkter at bemærke i softwaren er
- ADC'en i ESP8266 kan kalibreres for at forbedre dens nøjagtighed. En streng i konfigurationsfilen angiver de opnåede råværdier for to indgangsspændinger. Dette er ikke særlig vigtigt, da RSSI er et ret relativt signal afhængigt af antenne osv.
- RSSI -spændingen til db er rimelig lineær, men krummer i yderpunkterne. Softwaren har en kubisk pasform for at forbedre nøjagtigheden.
- Det meste af aritmetikken udføres ved hjælp af skalerede heltal, så RSSI -værdier er faktisk 100 gange de faktiske. Værdier skrevet til filer eller vist konverteres tilbage.
- Softwaren bruger en simpel tilstandsmaskine til at styre optagelse af RSSI og dataovergange.
- Dataovergange overvåges ved hjælp af en afbrydelsesrutine. Den normale Arduino loop -behandling er suspenderet under datafangst, og vagthunden holdes i live lokalt. Dette er for at forsøge at forbedre interrupt latency for at holde timing målinger så trofaste som muligt.
Konfiguration
Dette gemmes i esp433Config.txt.
For RSSI -registrering kan prøveudtagningsintervallet og varigheden konfigureres.
For datafangst kan RSSI -triggerniveau, antal overgange og maksimal varighed opsættes. Et passende triggerniveau er ca. +20dB på baggrunden uden signalniveau. En pulsWidths -streng tillader også enkel kategorisering af pulsbredder for at gøre analysen lettere. Hver logget linje har pulseLevel, bredde i mikrosekunder og koden, som er indekset i pulseWidths -strengen, som er større end den målte bredde.
CalString kan forbedre ADC -nøjagtigheden.
idleTimeout styrer antallet af millisekunder inaktivitet (ingen optagelser), før enheden automatisk slukker. Hvis du sætter den til 0, betyder det, at den ikke vil timeout.
De tre knapindstillinger styrer, hvad der adskiller korte mellemlange og lange knaptryk.
displayUpdate giver det lokale displayopdateringsinterval.
Trin 6: Brug
Enheden tændes ved at trykke på knappen i kort tid.
Displayet viser i første omgang den lokale IP -adresse i et par sekunder, før det begynder at vise RSSI -niveau i realtid.
Et kort tryk på knappen vil starte en RSSI -optagelse til fil. Normalt afsluttes dette, når RSSI -varigheden er afsluttet, men et yderligere kort knap -tryk vil også afslutte optagelsen.
Et mellemlangt tryk på en knap vil starte en dataoverførsel. Skærmen viser ventende på trigger. Når RSSI går over udløserniveauet, begynder det derefter at fange tidsbestemte dataovergange for det angivne antal overgange.
Hvis du holder knappen nede i længere tid end den lange knap, slukker enheden.
Capture -kommandoer kan også startes fra webgrænsefladen.
Trin 7: Webgrænseflade
Adgang til enheden ved hjælp af dens ip -adresse viser en webgrænseflade med 3 faner; Optager, status og konfiguration.
Captures -skærmen viser de aktuelt lagrede filer. Indholdet af en fil vises muligvis ved at klikke på dens navn. Der er også slette- og downloadknapper til hver fil.
Der er også capture RSSI og capture data knapper, som kan bruges til at starte en capture. Hvis der gives et filnavn, vil det blive brugt, ellers genereres et standardnavn.
Fanen config viser den aktuelle konfiguration og tillader svalues at blive ændret og gemt.
Webgrænsefladen understøtter følgende opkald
/rediger - adgang til arkiveringssystem for enhed; kan bruges til at downloade foranstaltninger Filer
- /status - returner en streng, der indeholder statusoplysninger
- /loadconfig -return en streng, der indeholder konfigurationsdetaljer
- /saveconfig - send og gem en streng for at opdatere config
- /loadcapture - returner en streng, der indeholder målinger fra en fil
- /setmeasureindex - ændre indekset, der skal bruges til næste mål
- /getcapturefiles - få en streng med en liste over tilgængelige målefiler
- /capture - trigger capture af RSSI eller data
- /firmware - start opdatering af firmware
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)