Cuprins:

Sparg-vă ușa garajului: 5 pași
Sparg-vă ușa garajului: 5 pași

Video: Sparg-vă ușa garajului: 5 pași

Video: Sparg-vă ușa garajului: 5 pași
Video: Carla’s Dreams - Doar Tu | Official Video 2024, Iulie
Anonim
Sparg-vă ușa garajului
Sparg-vă ușa garajului
Sparg-vă ușa garajului
Sparg-vă ușa garajului
Sparg-vă ușa garajului
Sparg-vă ușa garajului

Cine nu a visat niciodată să meargă acasă doar cu o aplicație pentru telefon sau să poată asculta și recopia tramvaie de date? Sunt fericit că pot să vă împărtășesc ceea ce am realizat și cum am procedat. Am început acest proiect după a doua oară când mi-am uitat cheile …

Desigur, codificarea, tipul de modulație, frecvența operatorului de transport, informațiile despre conexiunea bluetooth și datele pe care le voi arăta de exemplu nu sunt originale, prefer să nu am vizitatori;-).

Această aplicație se aplică oricărui obiect capabil să primească informații digitale prin unde electromagnetice (ușa garajului, mașina, unele obloane …). Întregul sistem constă dintr-un obiect conectat prin bluetooth la un telefon, acest obiect putând trimite aceleași cadre ca telecomanda asociată cu ceea ce vrem să spargem. Am plasat acest obiect în garajul meu și mă pot conecta la el din exterior.

Pasul 1: Echipament

Echipament
Echipament
Echipament
Echipament

Limbi folosite: C ++, MATLAB, Typescript, C, html.

Cunoștințe de bază în electronică digitală și telecomunicații / procesare semnal.

Cost: mai puțin de 35 USD.

Cerințe hardware:

- NooELEC NESDR: pentru captarea datelor. Acest modul foarte ieftin efectuează o demodulare digitală, de unde portabilitatea sa ridicată. Acest model este compatibil cu MATLAB. (18,95 dolari)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: acest esp32 este un microcontroler ieftin, echipat cu Wifi și Bluetooth. Nu vom folosi Wifi în această aplicație, dar acest lucru este în mare măsură conceput. (4,74 USD)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: acest emițător radio ne oferă o flexibilitate extremă, de la frecvența purtătoare aleasă până la tipul de modulație. (2,63 dolari)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Sârme, anteturi, echipamente de sudură, baterie lipo de 3,7 V pentru autonomie, eventual osciloscop și / sau analizor logic pentru depanare și, de altfel, un smartphone …

Cerințe software:

- MATLAB / Simulink: pentru captarea datelor. Pot fi utilizate alte software-uri alternative gratuite, cum ar fi Audacity pentru vizualizarea datelor. (licență)

fr.mathworks.com/products.html?s_tid=gn_ps

- lanțul de instrumente esp-idf: acesta va fi utilizat pentru programarea esp32. Poate fi folosit și ideul Arduino, dar nu permite atât de multă libertate cât ceea ce vom folosi. (liber)

esp-idf.readthedocs.io/en/latest/get-starte…

- TI SmartRF Studio: acest lucru ne va ajuta să configurăm registrele cc1101, conform specificațiilor noastre. (liber)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: pentru construirea aplicației. Puteți alege să construiți aplicații native, dar Ionic ne permite să rulăm aplicația noastră atât pe dispozitivele Android, cât și pe dispozitivele IOS, cu un singur cod. Performanța nu este căutată în cazul nostru. (liber)

ionicframework.com/

- Ideea ta preferată …

Pasul 2: Spionarea telecomenzii

Spionarea telecomenzii
Spionarea telecomenzii
Spionarea telecomenzii
Spionarea telecomenzii
Spionarea telecomenzii
Spionarea telecomenzii

Vom începe prin observarea datelor pe care le produc comenzile telecomenzii. Pentru a face acest lucru, vom folosi un dongle rtl-sdr și o antenă:

fr.mathworks.com/hardware-support/rtl-sdr….

Urmând acest link, veți găsi pachetul MATLAB, precum și o carte gratuită care explică toate principiile cu explicația lor. Pentru a rezuma ceea ce ne privește, datele de tranzit sunt sub forma unui semnal IQ: un „I” date în fază, combinate cu un „Q” date în cuadratură. Această metodă facilitează telecomunicațiile. Vom fi interesați doar să primim semnalul în fază. Acum vom colecta informații fizice și digitale pe telecomandă. Dacă puteți găsi o documentație pe ea, va fi mai ușor. Nu am găsit niciunul. Pentru a putea observa temporar semnalul, trebuie mai întâi să știm care este purtătorul de frecvență al semnalului emis. Vom folosi exemplul furnizat împreună cu documentația pachetului „Analiza spectrală cu radio RTL-SDR”, pentru a ști exact la ce frecvență observăm o putere de vârf atunci când trimitem o comandă. În cazul meu este de 868,22 MHz. Frecvențele „standard” pentru acest tip de aplicații sunt în jur de 868 MHz.

Cu aceste indicații, vom putea scrie un cod MATLAB pentru a recupera datele. Acesta este atașat în fotografie și comentat. Rezultatul ne permite să găsim tipul de modulație: prin recuperarea informațiilor brute, afișarea rezultatului imediat după recuperarea părții reale a semnalului, putem deduce că este un ASK / OOK modulare. Într-adevăr, observăm că frecvența este invariantă, cu toate acestea, semnalul are doar două amplitudini: una nulă și una fixă. Restul codului ne permite să recuperăm plicul semnalului primit, ușurând citirea pentru a cunoaște trame-ul. Odată afișat, putem determina modulația bazei de bază: aceasta este o codificare Manchester (a se vedea fotografia atașată). De asemenea, putem deduce rata de transmisie (simboluri pe secundă). Toate aceste informații fiind adunate, putem cunoaște cadrul de date. În cazul meu, octeții găsiți sunt: 249, 39, 75, 178, 45, 200 și repetați de mai multe ori, pentru a vă asigura că comanda este bine primită. Din fericire, codul nu rulează, cadrul de date este întotdeauna același.

Pasul 3: Trimiteți aceleași cadre de date

Trimiteți aceleași cadre de date
Trimiteți aceleași cadre de date
Trimiteți aceleași cadre de date
Trimiteți aceleași cadre de date
Trimiteți aceleași cadre de date
Trimiteți aceleași cadre de date

Texas Instruments cc1101 este atât de flexibil încât îți vei atinge obiectivul, chiar dacă setările pe care le-ai găsit în pasul anterior sunt complet diferite de ale mele. Într-adevăr, veți vedea în documentație, pagina 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) că permite efectuarea modulației NRZ, Manchester, FSK, ASK / OOK, pentru a ajunge frecvențele în jur de 433 MHz sau 868 MHz și multe alte lucruri. Vă sfătuiesc să citiți documentația pentru a vă familiariza cu acest modul.

Pe acest link veți găsi, ca exemplu, lucrările lui Loboris privind construcția de funcții folosind acest modul:

github.com/loboris/ESP32_CC1101/tree/maste…

Vom scrie codul nostru pentru esp32 cu lanțul de instrumente esp-idf (consultați linkurile primului pas). Puteți adăuga fișierele linkului în subdirectorul de componente al proiectului dumneavoastră. Pentru a configura corect cc1101, va trebui să reparăm registrele acestuia. Texas Instruments ne oferă software care ne oferă valoarea registrelor în funcție de configurația noastră: SmartRF Studio.

În ceea ce mă privește, indic software-ului că doresc o codificare Manchester, că frecvența purtătoarei mele este de 868,22 MHz, că tipul meu de modulație este ASK / OOK … Vă las să introduceți parametrii. În cazul în care codificarea în bandă de bază nu este disponibilă, puteți lua în considerare codificarea NRZ, mărind în mod corespunzător rata de transmisie și adaptând datele.

Odată ce v-ați definit valorile, aveți mai multe opțiuni în ceea ce privește utilizarea modulului: puteți utiliza funcțiile pe care vi le-am legat sau ceea ce am făcut, inspirați-vă doar din acest cod, pentru a configura totul într-un mod mai brutal (vezi fotografiile atașate) și folosește doar ceea ce avem nevoie.

Pe măsură ce cipul cc1101 comunică prin SPI, veți găsi în linkul codului de exemplu fișierul antet „spi_master_lobo.h”, care conține mai multe funcții mai ușoare pentru utilizarea SPI decât dacă ar fi trebuit să-l utilizați doar cu lanțul de instrumente. Vă alătur în fotografie schema comunicării CC1101 în SPI, fotografie făcută din pagina 30 a fișei tehnice CC1101. Cele patru fire prezentate sunt: CS (Chip Select sau SS: Slave Select sau CSn), CLK (sau SCLK, Ceasul furnizat de master), MISO (sau SO, Master In Slave Out) și MOSI (sau SI, Master Out Slave In). În cazul nostru, maestrul este ESP32, iar sclavul este CC1101. Comunicațiile încep atunci când pinul CS este scăzut, în general.

Nu uitați să activați în opțiunile de compilare din menuconfig excepțiile C ++ pentru compilare.

Pasul 4: Conectați-vă la sistem

Conectați-vă la sistem
Conectați-vă la sistem
Conectați-vă la sistem
Conectați-vă la sistem
Conectați-vă la sistem
Conectați-vă la sistem

Dacă codul dvs. funcționează, ați făcut esențialul. În această parte, ne vom concentra asupra modului de creare a unei aplicații telefonice conectate la sistem. Cea mai interesantă soluție este conectarea prin Bluetooth, deoarece permite utilizarea unui protocol de consum redus: Bluetooth Low Energy (BLE). Profilul ierarhiei este prezentat în desenul atașat: vom citi și scrie comanda într-o caracteristică a unui serviciu. Și, desigur, sp32 și smartphone-ul nostru sunt echipate cu bluetooth.

Acest pas este împărțit în două părți: partea esp32 și partea aplicației. Fotografia atașată arată și explică principalele părți ale codurilor.

Puteți genera UUID-urile dvs. urmând acest link:

www.uuidgenerator.net/

Acestea sunt identificatorii care vor oferi acces la serviciile și caracteristicile profilului nostru BLE.

Despre codul BLE esp32, Kolban a făcut o treabă excelentă făcând compatibile toate aceste funcții C ++ la nivel înalt:

github.com/nkolban/esp32-snippets/tree/mas…

Puteți introduce aceste fișiere în subdirectorul de componente. În caz contrar, veți avea nevoie de mai mult timp pentru a înțelege cum să utilizați BLE cu lanțul de instrumente esp-idf.

În rezumat cu ceea ce veți vedea în cod, creăm un server, un serviciu și o caracteristică, cu UUID-urile asociate și adăugăm o clasă de apel invers redefinită, cu o metodă asociată la scriere: când primim „O” caracter, trimitem o comandă de scriere către cc1101.

Desigur, nu uitați să activați Bluetooth în configurația Component din Menuconfig.

Despre partea aplicației, vom folosi Framework Ionic. Puteți găsi mai multe informații despre aceasta în linkul prezentat în primul pas și pentru mai multe detalii despre cum să utilizați BLE cu Ionic:

ionicframework.com/docs/native/ble/

Și exemple, scrise de don:

github.com/don/ionic-ble-examples/tree/mas…

Puteți edita de exemplu exemplul „Conectare”. Scanăm dispozitive pe o primă pagină și ajungem la o a doua pagină dacă selectăm dispozitivul nostru. Apoi accesăm o interfață în care puteți adăuga un buton cu metoda prezentată în fotografie: acesta trimite comanda noastră „O” cu UUID-urile corespunzătoare. De asemenea, puteți adăuga în constructorul primei pagini metoda „enable”, cerând să activați bluetooth-ul la începutul aplicației.

Vă recomand cu drag să explorați site-ul web Ionic și să descoperiți toate componentele (butoane, alerte, casete de selectare …) pentru a vă îmbunătăți aplicația:

ionicframework.com/docs/components/#overvi…

Pasul 5: Optimizați consumul de energie

Optimizați consumul de energie
Optimizați consumul de energie
Optimizați consumul de energie
Optimizați consumul de energie

Am început să lucrăm la un consum redus, așa că hai să lucrăm mai departe.

Lanțul de instrumente esp-idf ne permite să folosim o GUI de configurare, menuconfig: mulți parametri pot reduce consumul de esp32. În primul rând, deoarece nu avem nevoie de Wifi, îl putem dezactiva în configurația Component. În același folder, în FreeRTOS, puteți selecta „Rulați FreeRTOS numai pe primul nucleu. Apoi, în ESP-specific, puteți reduce frecvența CPU la 80 MHz. Toate funcționalitățile funcționează în continuare la această viteză de ceas. În cele din urmă, puteți bifați „Enable Coprocessor Ultra Low Power (ULP). Această configurație face ca consumul curent să treacă de la aproximativ o sută de mA la aproximativ treizeci de mA. Este încă prea mult …

ESP32 poate face față somnului profund. Doar nucleul cu energie scăzută este pornit și așteaptă o trezire.

Vedeți acest link mai jos pentru mai multe detalii:

esp-idf.readthedocs.io/en/latest/api-refere…

Din păcate, în ultima versiune disponibilă a lanțului de instrumente esp-idf (3.0), singurele treziri disponibile sunt prin cronometre și prin întreruperi GPIO. Din fericire, Espressif ne promite că BLE ne vom trezi în următoarea versiune (3.1).

De asemenea, puteți pune CC1101 într-un mod de repaus, trimițând în SPI comanda corectă pentru a opri dispozitivul (consultați foaia de date cc1101, comanda SPWD, pagina 51). Pentru a pune dispozitivul în modul de repaus sau pentru a-l trezi, puteți pune mai mic decât mai mare pinul Chip Select al pinilor SPI (mai multe informații în foaia tehnică).

Aceste ultime configurații ar trebui să poată face consumul sistemului să treacă sub mili-ampere …

În cele din urmă, pentru ca sistemul să reziste cât mai mult posibil fără reîncărcare sau chiar să atingă o lună de autonomie, alegeți bateria de 3,7 V cu cele mai multe miliamperi pe oră. Măsurând consumul de energie al sistemului dvs., cu afișarea unui generator sau a unui ampermetru conectat în serie înainte de + polul sistemului dvs., puteți estima timpul pe care va dura sistemul dvs.!

Recomandat: