Sadržaj:

Hakirajte vaša garažna vrata: 5 koraka
Hakirajte vaša garažna vrata: 5 koraka

Video: Hakirajte vaša garažna vrata: 5 koraka

Video: Hakirajte vaša garažna vrata: 5 koraka
Video: ВЛАД А4 и ДИРЕКТОР ЮТУБА против СИРЕНОГОЛОВЫЙ 2024, Srpanj
Anonim
Hakirajte svoja garažna vrata
Hakirajte svoja garažna vrata
Hakirajte svoja garažna vrata
Hakirajte svoja garažna vrata
Hakirajte svoja garažna vrata
Hakirajte svoja garažna vrata

Tko nije ni sanjao o odlasku kući samo s aplikacijom za telefon ili slušanju i ponovnom kopiranju podatkovnih tramvaja? Sretna sam što mogu s vama podijeliti ono što sam shvatila i kako sam nastavila. Započeo sam ovaj projekt nakon što sam drugi put zaboravio ključeve …

Naravno, kodiranje, vrsta modulacije, učestalost prijenosa, informacije o bluetooth povezivanju i podaci koje ću prikazati u primjeru nisu originali, radije nemam posjetitelje;-).

Ova se aplikacija odnosi na sve objekte koji mogu primati digitalne informacije elektromagnetskim valovima (garažna vrata, automobil, neke kapke …). Cijeli sustav sastoji se od objekta povezanog bluetoothom s telefonom, koji može slati iste okvire kao i daljinski upravljač povezan s onim što želimo hakirati. Ovaj sam objekt smjestio u svoju garažu, a na njega se mogu spojiti izvana.

Korak 1: Opremanje

Oprema
Oprema
Oprema
Oprema

Korišteni jezici: C ++, MATLAB, Typescript, C, html.

Osnovno znanje iz digitalne elektronike i telekomunikacija/obrade signala.

Cijena: manje od 35 USD.

Hardverski zahtjevi:

- NooELEC NESDR: za snimanje podataka. Ovaj vrlo jeftini modul izvodi digitalnu demodulaciju, otuda njegova visoka prenosivost. Ovaj model je kompatibilan s MATLAB -om. (18,95 USD)

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

- Wemos Lolin32 lite: ovaj esp32 je jeftin mikrokontroler, opremljen Wi -Fi -jem i Bluetooth -om. U ovoj aplikaciji nećemo koristiti Wifi, ali to je uglavnom zamislivo. (4,74 USD)

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

- CDSENET cc1101: ovaj radijski odašiljač daje nam iznimnu fleksibilnost, od odabrane frekvencije nositelja do vrste modulacije. (2,63 USD)

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

- Žice, zaglavlja, oprema za zavarivanje, 3,7 V lipo baterija za autonomiju, moguće osciloskop i/ili logički analizator za otklanjanje pogrešaka, a usput i pametni telefon …

Softverski zahtjevi:

- MATLAB/Simulink: za snimanje podataka. Mogu se koristiti i drugi besplatni alternativni programi, poput Audacityja za vizualizaciju podataka. (licenca)

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

- esp-idf toolchain: ovo će se koristiti za programiranje esp32. Arduino ide se također može koristiti, ali ne dopušta toliko slobode koliko ono što ćemo koristiti. (besplatno)

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

- TI SmartRF Studio: ovo će nam pomoći u konfiguriranju registara cc1101, prema našim specifikacijama. (besplatno)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: za izradu aplikacije. Vi možete napraviti izbor izgradnje izvornih aplikacija, ali Ionic nam dopušta da pokrenemo našu aplikaciju na Android i IOS uređajima, s jedinim kodom. Performans se u našem slučaju ne traži. (besplatno)

ionicframework.com/

- Vaša omiljena ideja…

Korak 2: Špijuniranje daljinskog upravljača

Špijuniranje daljinskog upravljača
Špijuniranje daljinskog upravljača
Špijuniranje daljinskog upravljača
Špijuniranje daljinskog upravljača
Špijuniranje daljinskog upravljača
Špijuniranje daljinskog upravljača

Započet ćemo promatranjem podataka koje proizvode naredbe daljinskog upravljača. Da bismo to učinili, upotrijebit ćemo rtl-sdr ključ i antenu:

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

Slijedeći ovu vezu, pronaći ćete MATLAB paket, kao i besplatnu knjigu koja objašnjava sve cijene s njihovim objašnjenjem. Da rezimiramo ono što nas zabrinjava, tranzitni podaci su u obliku IQ signala: "I" fazni podatak, u kombinaciji s "Q" kvadraturnim podacima. Ova metoda olakšava telekomunikacije. Zanimati će nas samo fazni prijem signala. Sada ćemo prikupljati fizičke i digitalne podatke na daljinskom upravljaču. Ako o tome pronađete dokumentaciju, bit će lakše. Nisam našao nijedan. Da bismo mogli privremeno promatrati signal, prvo moramo znati koji je nosilac frekvencije emitiranog signala. Koristit ćemo primjer koji se nalazi u dokumentaciji paketa "Spektralna analiza s RTL-SDR radiom" kako bismo točno znali na kojoj frekvenciji opažamo vršnu snagu kada šaljemo naredbu. U mom slučaju to je 868,22 MHz. "Standardne" frekvencije za ovu vrstu aplikacija su oko 868 MHz.

S tim naznakama moći ćemo napisati MATLAB kôd za oporavak podataka. Ovaj je priložen na fotografiji i komentiran. Rezultat nam omogućuje da otkrijemo vrstu modulacije: dohvaćanjem sirovih informacija, prikazom rezultata odmah nakon što je prikupljen stvarni dio signala, možemo zaključiti da se radi o ASK / OOK modulacija. Doista, primjećujemo da je frekvencija invarijantna, međutim, signal ima samo dvije amplitude: nultu i fiksnu. Ostatak koda omogućuje nam da povratimo omotnicu primljenog signala, što ga čini lakšim za čitanje kako bismo poznavali trame. Nakon prikaza, možemo odrediti modulaciju osnovnog pojasa: ovo je Manchester kodiranje (vidi priloženu fotografiju). Također možemo zaključiti brzinu prijenosa (simboli u sekundi). Svi ti podaci koji se prikupljaju, možemo znati okvir podataka. U mom slučaju, pronađeni bajtovi su: 249, 39, 75, 178, 45, 200 i ponavljaju se više puta, kako bi se osiguralo da je naredba dobro primljena. Srećom, kôd se ne pokreće, okvir podataka je uvijek isti.

Korak 3: Pošaljite iste okvire podataka

Pošaljite iste okvire podataka
Pošaljite iste okvire podataka
Pošaljite iste okvire podataka
Pošaljite iste okvire podataka
Pošaljite iste okvire podataka
Pošaljite iste okvire podataka

Texas Instruments cc1101 je toliko fleksibilan da ćete i dalje postići svoj cilj, čak i ako su postavke koje ste pronašli u prethodnom koraku potpuno različite od mojih. Doista, vidjet ćete u dokumentaciji, stranica 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) da omogućuje izvođenje NRZ, Manchester, FSK, ASK/OOK modulacije, kako bi se doseglo frekvencije oko 433 MHz ili 868 MHz i mnoge druge stvari. Savjetujem vam da pročitate dokumentaciju kako biste se upoznali s ovim modulom.

Na ovoj poveznici naći ćete kao primjer Loborisov rad na izgradnji funkcija pomoću ovog modula:

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

Napisat ćemo naš kôd za naš esp32 s alatom alata esp-idf (pogledajte veze prvog koraka). Datoteke veze možete dodati u poddirektorij komponenti vašeg projekta. Da bismo ispravno konfigurirali naš cc1101, morat ćemo popraviti njegove registre. Texas Instruments pruža nam softver koji nam daje vrijednost registra prema našoj konfiguraciji: SmartRF Studio.

Što se mene tiče, ja ukazujem softveru da želim Manchester kodiranje, da je moja nosiva frekvencija 868,22 MHz, da je moj tip modulacije ASK / OOK … Dopuštam vam da unesete svoje parametre. U slučaju da vaše kodiranje osnovnog pojasa nije dostupno, možete razmotriti NRZ kodiranje pravilnim povećanjem brzine prijenosa i prilagodbom podataka.

Nakon što definirate svoje vrijednosti, imate nekoliko izbora u vezi s korištenjem modula: možete koristiti funkcije koje sam povezao s vama ili ono što sam učinio, samo se nadahnite iz ovog koda kako biste sve konfigurirali u više na brutalan način (pogledajte priložene fotografije) i koristite samo ono što nam je potrebno.

Kako čip cc1101 komunicira putem SPI -a, na linku primjera koda pronaći ćete datoteku zaglavlja "spi_master_lobo.h", koja sadrži lakše funkcije za korištenje SPI -a nego da ga morate koristiti samo s lancem alata. Pridružujem vam se na fotografiji sheme komunikacije CC1101 u SPI -u, fotografije preuzete sa stranice 30 podatkovne tablice CC1101. Četiri predstavljene žice su: CS (Chip Select, ili SS: Slave Select, ili ovdje CSn), CLK (ili SCLK, Sat, koji osigurava master), MISO (ili SO, Master In Slave Out) i MOSI (ili SI, Master Out Slave In). U našem slučaju, master je ESP32, a slave CC1101. Općenito, komunikacija započinje kada je CS pin nizak.

Ne zaboravite omogućiti u mogućnostima prevoditelja u izborniku izbornika konfiguriranje iznimki C ++ za sastavljanje.

Korak 4: Povežite se sa sustavom

Spojite se na sustav
Spojite se na sustav
Spojite se na sustav
Spojite se na sustav
Spojite se na sustav
Spojite se na sustav

Ako vaš kôd radi, učinili ste bitno. U ovom ćemo se dijelu usredotočiti na to kako stvoriti aplikaciju za telefon povezanu sa sustavom. Najzanimljivije rješenje je povezivanje putem Bluetootha, jer omogućuje korištenje protokola male snage: Bluetooth Low Energy (BLE). Hijerarhijski profil prikazan je na crtežu u prilogu: naredbu ćemo čitati i pisati u Characteristic of a Service. I naravno, naš esp32 i naš pametni telefon opremljeni su bluetoothom.

Ovaj je korak podijeljen na dva dijela: dio esp32 i dio aplikacije. Fotografija u prilogu prikazuje i objašnjava glavne dijelove kodova.

Svoje UUID -ove možete generirati slijedeći ovu vezu:

www.uuidgenerator.net/

Ovo su identifikatori koji će omogućiti pristup uslugama i značajkama našeg BLE profila.

Što se tiče esp32 BLE koda, Kolban je napravio veliki posao učinivši sve ove funkcije visoke razine C ++ kompatibilne:

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

Ove datoteke možete staviti u poddirektorij komponenti. Inače će vam trebati više vremena da shvatite kako koristiti BLE s alatom esp-idf.

Ukratko, ono što ćete vidjeti u kodu, stvaramo Poslužitelj, Uslugu i Karakteristiku, s pridruženim UUID -ovima, i dodajemo redefiniranu klasu povratnog poziva, s pridruženom metodom pri pisanju: kada primimo "O" znak, šaljemo naredbu za pisanje na cc1101.

Naravno, ne zaboravite omogućiti Bluetooth u konfiguraciji komponente Menuconfig.

Što se tiče dijela aplikacije, koristit ćemo Framework Ionic. Više informacija o tome možete pronaći na poveznici predstavljenoj u prvom koraku, a za više detalja o tome kako koristiti BLE s Ionic -om:

ionicframework.com/docs/native/ble/

I primjeri, koje je napisao don:

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

Na primjer, možete urediti primjer "Poveži se". Skeniramo uređaje na prvoj stranici, a do druge stranice dolazimo ako odaberemo svoj uređaj. Zatim pristupamo sučelju na kojemu možete dodati gumb metodom prikazanom na fotografiji: on šalje našu naredbu "O" s odgovarajućim UUID -ovima. Također možete dodati u konstruktor prve stranice metodu "enable", tražeći da se aktivira bluetooth na početku aplikacije.

Toplo vam preporučujem da istražite web stranicu Ionic i otkrijete sve komponente (gumbe, upozorenja, potvrdne okvire …) kako biste poboljšali svoju aplikaciju:

ionicframework.com/docs/components/#overvi…

Korak 5: Optimizirajte potrošnju energije

Optimizirajte potrošnju energije
Optimizirajte potrošnju energije
Optimizirajte potrošnju energije
Optimizirajte potrošnju energije

Počeli smo raditi na niskoj potrošnji, pa idemo dalje.

Alatni lanac esp-idf omogućuje nam korištenje grafičkog sučelja za konfiguraciju, menuconfig: mnogi parametri mogu smanjiti potrošnju esp32. Prije svega, budući da nam ne treba Wifi, možemo ga onemogućiti u konfiguraciji komponente. U istoj mapi, u FreeRTOS-u, možete odabrati "Pokreni FreeRTOS samo na prvoj jezgri. Zatim, specifično za ESP, možete smanjiti frekvenciju procesora na 80 MHz. Sve funkcije i dalje rade pri ovoj brzini takta. Konačno, možete označite "Omogući koprocesor ultra niske snage (ULP). Ova konfiguracija čini da trenutna potrošnja ide sa stotinjak mA na tridesetak mA. Ovo je ipak previše…

ESP32 može podnijeti duboki san. Uključena je samo niskoenergetska jezgra i čeka buđenje.

Za više detalja pogledajte ovaj link ispod:

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

Nažalost, u posljednjoj dostupnoj verziji esp-idf toolchain-a (3.0) jedina dostupna buđenja su mjerači vremena i prekidi GPIO-a. Srećom, Espressif nam obećava da ćemo se BLE probuditi u sljedećoj verziji (3.1).

CC1101 također možete staviti u stanje mirovanja, slanjem odgovarajuće SPI naredbe za isključivanje uređaja putem SPI -a (pogledajte podatkovnu tablicu cc1101, naredbu SPWD, stranica 51). Za stavljanje uređaja u stanje mirovanja ili buđenje možete postaviti nisku, a zatim visoku pin za odabir čipa SPI pinova (više informacija u podatkovnoj tablici).

Ove posljednje konfiguracije trebale bi omogućiti da potrošnja sustava padne ispod miliampera…

Konačno, kako bi sustav trajao što dulje bez punjenja ili čak postigao mjesec dana autonomije, odaberite bateriju od 3,7 V s najviše miliampera po satu. Mjerenjem potrošnje energije vašeg sustava, s prikazom generatora ili ampermetra spojenim serijski prije vašeg + pola vašeg sustava, možete procijeniti vrijeme trajanja vašeg sustava!

Preporučeni: