Cuprins:

RF433Analyser: 7 pași
RF433Analyser: 7 pași

Video: RF433Analyser: 7 pași

Video: RF433Analyser: 7 pași
Video: Arduino Powerwall BMS Part3 2024, Iulie
Anonim
RF433Analyser
RF433Analyser
RF433Analyser
RF433Analyser

Acest instructabil creează un instrument de măsurare pentru a ajuta la analiza transmisiilor RF 433MHz care sunt utilizate în mod obișnuit pentru comunicațiile de la distanță de mică putere în automatizarea casei și senzori. Poate fi modificat cu ușurință pentru a funcționa transmisii de 315 MHz utilizate în unele țări. Acest lucru ar fi prin utilizarea versiunii 315MHz a RXB6 în locul celei actuale de 433MHz.

Scopul instrumentului este de două ori. În primul rând, oferă un contor de putere a semnalului (RSSI) care poate fi utilizat pentru a examina acoperirea în jurul unei proprietăți și pentru a găsi orice puncte negre. În al doilea rând, poate captura date curate de la transmițătoare pentru a permite o analiză mai ușoară a datelor și a protocoalelor utilizate de diferite dispozitive. Acest lucru este util dacă încercați să proiectați programe de completare compatibile pentru unitățile existente. În mod normal, captarea de date este complicată de zgomotul de fond prezent la receptoare care produce o mulțime de tranziții false și face mai dificilă descoperirea transmisiilor adevărate.

Unitatea folosește un receptor superhet RXB6. Acesta folosește cipul receptor Synoxo-SYN500R care are o ieșire analogică RSSI. Aceasta este efectiv o versiune tamponată a semnalului AGC utilizat pentru a controla câștigul receptorului și oferă puterea semnalului pe o gamă largă.

Receptorul este monitorizat de un modul ESP8266 (ESP-12F) care convertește semnalul RSSI. De asemenea, conduce un mic afișaj OLED local (SSD1306). Electronica poate capta, de asemenea, informații de sincronizare cu privire la tranzițiile de date.

Capturile pot fi declanșate local de un buton de pe unitate. Datele capturate sunt salvate în fișiere pentru o analiză ulterioară.

Modulul ESP12 rulează un server web pentru a oferi acces la fișiere, iar capturile pot fi declanșate și de aici.

Instrumentul este alimentat de o mică baterie reîncărcabilă LIPO. Acest lucru oferă un timp de funcționare rezonabil și electronica are un curent de repaus scăzut atunci când nu este utilizat.

Pasul 1: Componente și instrumente necesare

Notă importantă:

Am găsit că unele receptoare RXB6 433Mhz au o ieșire RSSI care nu funcționează, chiar dacă AGC și restul funcționalității sunt OK. Bănuiesc că ar putea fi folosite unele clone Syn500R chips-uri. Am constatat că receptoarele etichetate ca WL301-341 folosesc un cip compatibil Syn5500R și RSSI este funcțional. De asemenea, au avantajul de a nu utiliza o cutie de screening, ceea ce face ca condensatorul AGC să fie mai ușor de modificat. Aș recomanda utilizarea acestor unități.

Sunt necesare următoarele componente

Modul wifi ESP-12F

  • Regulator de 3.3V xc6203
  • Condensator 220uF 6V
  • 2 diode schottky
  • Buton de 6 mm
  • n canal MOSFET de ex. AO3400
  • canal MOSFET de ex. AO3401
  • rezistențe 2x4k7, 3 x 100K, 1 x 470K
  • bucată mică de placă de prototipare
  • Receptor RXB6 sau WL301-341 superhet de 433 MHz
  • Afișaj OLED SSD1306 0,96 (versiune SPI cu o singură culoare)
  • Baterie LIPO 802030 400mAh
  • Conector cu 3 pini pentru încărcare
  • Conectați sârmă
  • Sârmă de cupru emailată autofluent
  • Rășină epoxidică
  • Bandă cu două fețe
  • Carcasă imprimată 3D

Instrumente necesare

  • Fier de lipit cu punct fin
  • Panglica desolder
  • Pensetă
  • Cleşte

Pasul 2: Schematic

Schematic
Schematic

Circuitul este destul de simplu.

Un regulator LDO 3,3V convertește LIP în 3,3V necesar modulului ESP-12F.

Alimentarea este furnizată atât afișajului, cât și receptorului prin intermediul a două MOSFET-uri de comutare, astfel încât acestea să fie oprite când modulul ESP este în repaus.

Butonul pornește sistemul alimentând 3.3V la intrarea EN a ESP8266. GPIO5 apoi susține acest lucru în timp ce modulul este activ. Butonul este, de asemenea, monitorizat utilizând GPIO12. Când GPIO5 este eliberat, EN este eliminat și unitatea se oprește.

Linia de date de la receptor este monitorizată de GPIO4. Semnalul RSSI este monitorizat de AGC printr-un divizor de potențial 2: 1.

Afișajul SSD1306 este controlat prin SPI format din 5 semnale GPIO. Poate fi posibilă utilizarea unei versiuni I2C, dar aceasta va necesita schimbarea bibliotecii utilizate și remaparea unora dintre GPIO.

Pasul 3: Modificarea receptorului

Modificarea receptorului
Modificarea receptorului
Modificarea receptorului
Modificarea receptorului
Modificarea receptorului
Modificarea receptorului

După cum este furnizat, RXB6 nu face semnalul RSSI disponibil pe pinii de date externi.

O simplă modificare face posibil acest lucru. Conectorul de semnal DER de pe unitate este de fapt doar o repetare a semnalului de semnal de date. Acestea sunt conectate prin intermediul rezistorului 0 Ohm etichetat R6. Acest lucru trebuie îndepărtat folosind un fier de lipit. Componenta etichetată R7 trebuie acum să fie conectată. Capătul superior este de fapt semnalul RSSI, iar partea de jos merge la conectorul DER. S-ar putea folosi un rezistor de 0 Ohm, dar tocmai m-am conectat cu un fir. Aceste locații sunt accesibile în afara cutiei metalice de screening, care nu trebuie eliminată pentru această modificare.

Modificarea poate fi testată prin atașarea unui voltmetru pe DER și GND cu receptorul pornit. Va arăta o tensiune între aproximativ 0,4 V (fără putere recepționată) și aproximativ 1,8 V cu o sursă locală de 433 MHz (de exemplu, o telecomandă).

A doua modificare nu este absolut esențială, dar este destul de dorită. După cum este furnizat, timpul de răspuns AGC al receptorului este setat să fie destul de lent, luând câteva sute de milisecunde pentru a răspunde la semnalul primit. Acest lucru reduce rezoluția timpului în timpul capturilor RSSI și, de asemenea, face mai puțin receptivă utilizarea RSSI ca declanșator pentru captarea datelor.

Există un singur condensator care controlează timpii de răspuns AGC, dar, din păcate, este situat sub cutia de ecranare a metalului. De fapt, este destul de ușor să scoateți capacul de ecranare, deoarece este ținut doar de 3 urechi și poate fi apreciat prin încălzirea fiecăruia dintre ele și prin manevrarea cu o șurubelniță mică. După îndepărtare, se pot curăța orificiile pentru re-asamblare utilizând panglica de sudare sau re-găurirea cu un bit de aproximativ 0,8 mm.

Modificarea este de a elimina condensatorul AGC C4 existent și de a-l înlocui cu un condensator de 0,22 uF. Acest lucru accelerează răspunsul AGC de aproximativ 10 ori. Nu are niciun efect negativ asupra performanței receptorului. În imagine vă prezint o tăiere a pistei și o legătură către această pistă de la condensatorul AGC. Acest lucru nu este necesar, dar face ca punctul AGC să fie disponibil pe un pad în afara ecranului, sub cristal, în cazul în care s-ar dori să adăugați capacitate suplimentară. Nu am fost nevoie să fac asta. Proiectarea poate fi apoi înlocuită.

Dacă utilizați unitatea WL301-341 RX, atunci fotografia arată acest lucru cu condensatorul AGC evidențiat. Pinul de semnal RSSI este, de asemenea, afișat. Acest lucru nu este de fapt legat de nimic. Se poate conecta un fir fin direct la pin. Alternativ, cei doi pini de jumper central sunt conectați împreună și ambii transportă ieșirea datelor. Urmele dintre ele pot fi tăiate și apoi RSSI-ul poate fi conectat la cel de rezervă pentru a face semnalul RSSI disponibil pe o ieșire jumper.

Pasul 4: Construcție

Constructie
Constructie
Constructie
Constructie
Constructie
Constructie
Constructie
Constructie

Există aproximativ 10 componente necesare în afara modulului ESP-12. Acestea pot fi alcătuite și conectate pe o bucată de placă de prototipare. Am folosit o placă de prototip specific ESP pe care am folosit-o pentru a facilita montarea regulatorului și a altor componente smd. Aceasta se atașează direct deasupra modulului ESP-12.

Cutia pe care am folosit-o este un design tipărit 3D cu 3 indentări în bază pentru a lua receptorul, afișajul și modulul esp. Are un decupaj pentru afișaj și găuri pentru punctul de încărcare și buton care trebuie introduse și fixate cu o cantitate mică de rășină poxi.

Am folosit sârmă conectată pentru a face conexiunile între cele 3 module, punctul de încărcare și butoane. și apoi fixați-le pe loc folosind bandă dublă laterală pentru ESP și receptor și mici picături de epoxidice pentru a menține laturile afișajului în poziție. Bateria este conectată la punctul de încărcare și montată în partea de sus a receptorului utilizând bandă dublă.

Pasul 5: Software și configurare

Software-ul este construit în mediul Arduino.

Codul sursă pentru acest lucru este la https://github.com/roberttidey/RF433Analyser Codul poate avea câteva constante pentru parole modificate din motive de securitate înainte de a fi compilate și trimise pe dispozitivul ES8266.

  • WM_PASSWORD definește parola utilizată de wifiManager la configurarea dispozitivului pe rețeaua wifi locală
  • update_password definește o parolă utilizată pentru a permite actualizări de firmware.

La prima utilizare, dispozitivul intră în modul de configurare wifi. Utilizați un telefon sau o tabletă pentru a vă conecta la punctul de acces configurat de dispozitiv, apoi navigați la 192.168.4.1. De aici puteți selecta rețeaua WiFi locală și introduceți parola acesteia. Acest lucru trebuie făcut numai o dată sau dacă schimbați rețelele wifi sau parolele.

Odată ce dispozitivul s-a conectat la rețeaua sa locală, acesta va asculta comenzile. Presupunând că adresa IP este 192.168.0.100, apoi folosiți mai întâi 192.168.0.100:AP_PORT/upload pentru a încărca fișierele în folderul de date. Acest lucru va permite apoi 192.168.0.100/edit să vizualizeze și să încarce alte fișiere și, de asemenea, să permită 192.168.0.100 să acceseze interfața cu utilizatorul.

Punctele de remarcat în software sunt

  • ADC-ul din ESP8266 poate fi calibrat pentru a-i îmbunătăți precizia. Un șir din fișierul de configurare stabilește valorile brute realizate pentru două tensiuni de intrare. Acest lucru nu este deosebit de important deoarece RSSI este un semnal relativ relativ în funcție de antenă etc.
  • Tensiunea RSSI la db este destul de liniară, dar se curbează la extreme. Software-ul are o potrivire cubică pentru a îmbunătăți precizia.
  • Cea mai mare parte a aritmeticii se face folosind numere întregi scalate, astfel încât valorile RSSI sunt de fapt de 100 de ori reale. Valorile scrise în fișiere sau afișate sunt convertite înapoi.
  • Software-ul folosește o mașină de stare simplă pentru a controla captarea RSSI și a tranzițiilor de date.
  • Tranzițiile de date sunt monitorizate folosind o rutină de servicii de întrerupere. Procesarea normală a buclei Arduino este suspendată în timpul captării datelor și câinele de supraveghere este păstrat în viață local. Aceasta este pentru a încerca să îmbunătățească latența de întrerupere pentru a menține măsurătorile de sincronizare cât mai fidele posibil.

Configurare

Aceasta este păstrată în esp433Config.txt.

Pentru captarea RSSI se poate seta intervalul și durata de eșantionare.

Pentru captarea datelor se poate configura nivelul declanșatorului RSSI, numărul de tranziții și durata maximă. Un nivel de declanșare adecvat este de aproximativ + 20 dB pe fundal fără nivel de semnal. Un șir pulseWidths permite, de asemenea, clasificarea simplă a lățimilor impulsurilor pentru a face analiza mai ușoară. Fiecare linie înregistrată are pulseLevel, lățimea în micorsecunde și codul care este indexul în șirul pulseWidths care este mai mare decât lățimea măsurată.

CalString poate îmbunătăți precizia ADC.

idleTimeout controlează numărul de milisecunde de inactivitate (fără capturi) înainte ca dispozitivul să se oprească automat. Setarea la 0 înseamnă că nu va expira.

Cele trei setări ale butoanelor controlează ceea ce distinge apăsarea scurtă a butonului mediu și lung.

displayUpdate oferă intervalul de reîmprospătare a afișajului local.

Pasul 6: utilizare

Unitatea este pornită apăsând butonul pentru o perioadă scurtă de timp.

Afișajul va afișa inițial adresa IP locală pentru câteva secunde înainte de a începe să afișeze nivelul RSSI în timp real.

O apăsare scurtă a butonului va iniția o captură RSSI în fișier. În mod normal, acest lucru se va încheia când durata RSSI s-a încheiat, dar o altă apăsare scurtă a butonului va termina și captura.

O apăsare de buton mediu va iniția o captură de tranziție de date. Ecranul va afișa așteptarea declanșatorului. Când RSSI depășește nivelul de declanșare, va începe apoi să capteze tranziții de date temporizate pentru numărul de tranziții specificat.

Ținând apăsat butonul mai mult decât durata lungă a butonului, veți opri unitatea.

Comenzile de captare pot fi, de asemenea, inițiate din interfața web.

Pasul 7: Interfață web

Interfață web
Interfață web
Interfață web
Interfață web

Accesarea dispozitivului prin adresa IP arată o interfață web cu 3 file; Capturi, stare și configurare.

Ecranul capturi arată fișierele capturate în prezent. Conținutul unui fișier poate fi afișat făcând clic pe numele acestuia. Există, de asemenea, butoane de ștergere și descărcare pentru fiecare fișier.

Există, de asemenea, butoane de captare RSSI și date de capturare care pot fi utilizate pentru a iniția o captură. Dacă este dat un nume de fișier, acesta va fi utilizat în caz contrar, va fi generat un nume implicit.

Fila de configurare arată configurația curentă și permite modificarea și salvarea valorilor.

Interfața web acceptă următoarele apeluri

/ edit - accesează sistemul de înregistrare al dispozitivului; poate fi folosit pentru descărcarea fișierelor de măsuri

  • / status - returnează un șir care conține detalii de stare
  • / loadconfig -return un șir care conține detalii de configurare
  • / saveconfig - trimiteți și salvați un șir pentru a actualiza config
  • / loadcapture - returnează un șir care conține măsuri dintr-un fișier
  • / setmeasureindex - modificați indexul care va fi utilizat pentru următoarea măsură
  • / getcapturefiles - obțineți un șir cu lista fișierelor de măsură disponibile
  • / capture - declanșează captarea RSSI sau a datelor
  • / firmware - inițiază actualizarea firmware-ului

Recomandat: