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, Novembar
Anonim
Hakirajte vaša garažna vrata
Hakirajte vaša garažna vrata
Hakirajte vaša garažna vrata
Hakirajte vaša garažna vrata
Hakirajte vaša garažna vrata
Hakirajte vaša garažna vrata

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

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

Ova se aplikacija odnosi na bilo koji objekt koji može primati digitalne informacije elektromagnetskim valovima (garažna vrata, automobil, neke kapke …). Cijeli sistem se sastoji 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 i mogu se povezati s njim izvana.

Korak 1: Opremanje

Equipement
Equipement
Equipement
Equipement

Jezici koji se koriste: 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 jeftin modul vrši digitalnu demodulaciju, otuda njegova visoka prenosivost. Ovaj model je kompatibilan sa 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 u velikoj mjeri zamislivo. (4,74 USD)

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

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

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

- Žice, zaglavlja, oprema za zavarivanje, lipo baterija od 3,7 V za autonomiju, moguće osciloskop i/ili logički analizator za otklanjanje greš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 lanac alata: 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 pokrećemo našu aplikaciju na Android i IOS uređajima, s jedinim kodom. U našem slučaju performanse se ne traže. (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 komande daljinskog upravljača proizvode. Da bismo to učinili, koristit ć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 sa "Q" kvadraturnim podacima. Ova metoda olakšava telekomunikacije. Zanimać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" da bismo znali tačno 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 ovim naznakama moći ćemo napisati MATLAB kôd za oporavak podataka. Ova je priložena na fotografiji i komentirana. Rezultat nam omogućuje da pronađemo vrstu modulacije: dohvaćanjem sirovih informacija, prikazom rezultata odmah nakon što se oporavi stvarni dio signala, možemo zaključiti da se radi o ASK / OOK modulacija. Zaista, primjećujemo da je frekvencija invarijantna, međutim, signal ima samo dvije amplitude: nultu i fiksnu. Ostatak koda omogućava nam da povratimo omotač primljenog signala, što ga čini lakšim za čitanje kako bismo znali tram. Kada se prikaže, možemo odrediti modulaciju osnovnog pojasa: ovo je Manchester kodiranje (pogledajte priloženu fotografiju). Također možemo zaključiti brzinu prijenosa (simboli u sekundi). Kad se sve te informacije prikupe, 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, kod se ne pokreće, okvir podataka je uvijek isti.

Korak 3: Pošaljite iste okvire podataka

Šaljite iste okvire podataka
Šaljite iste okvire podataka
Šaljite iste okvire podataka
Šaljite iste okvire podataka
Šaljite iste okvire podataka
Š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. Zaista, vidjet ćete u dokumentaciji, stranica 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) da dozvoljava izvođenje NRZ, Manchester, FSK, ASK/OOK modulacije, kako biste dosegli frekvencije oko 433 MHz ili 868 MHz i mnoge druge stvari. Savetujem vam da pročitate dokumentaciju da biste se upoznali sa 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š kod za naš esp32 pomoću esp-idf lanca alata (pogledajte veze prvog koraka). Datoteke veze možete dodati u poddirektorij komponenti vašeg projekta. Da bismo pravilno konfigurirali naš cc1101, morat ćemo popraviti njegove registre. Texas Instruments nam pruža softver koji nam daje vrijednost registara prema našoj konfiguraciji: SmartRF Studio.

Što se mene tiče, ja ukazujem softveru da želim Manchester kodiranje, da je moja noseća 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 prilagođavanjem 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 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 ćete pronaći 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, fotografije preuzete sa stranice 30 lista sa podacima 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 počinje kada je CS pin nizak.

Ne zaboravite omogućiti u mogućnostima kompajlera izbornika menija konfiguriranje C ++ izuzetaka za kompajliranje.

Korak 4: Povežite se sa sistemom

Povežite se sa sistemom
Povežite se sa sistemom
Povežite se sa sistemom
Povežite se sa sistemom
Povežite se sa sistemom
Povežite se sa sistemom

Ako vaš kôd funkcionira, učinili ste bitno. U ovom dijelu ćemo se fokusirati na to kako stvoriti aplikaciju za telefon povezanu sa sistemom. Najzanimljivije rješenje je povezivanje putem Bluetootha, jer dopušta upotrebu protokola niske potrošnje energije: 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 korak je podijeljen u 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 sjajan posao usklađujući sve ove C ++ funkcije na visokom nivou:

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

Ove datoteke možete staviti u poddirektorij komponenti. U suprotnom će vam trebati više vremena da shvatite kako koristiti BLE s lancem alata 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 pisanja: kada primimo "O" znak, šaljemo naredbu pisanja 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 linku predstavljenom u prvom koraku, a za više detalja o tome kako koristiti BLE s Ionicom:

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 koje možete dodati gumb pomoću metode prikazane na fotografiji: š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 aktivirate bluetooth na početku aplikacije.

Toplo vam preporučujem da istražite Ionic web stranicu 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.

Lanac alata esp-idf omogućuje nam korištenje konfiguracijskog grafičkog sučelja, menuconfig: mnogi parametri mogu smanjiti potrošnju esp32. Prije svega, kako 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 prvom jezgru. 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 stotinu mA na trideset mA. Ovo je ipak previše…

ESP32 može podnijeti duboki san. Uključeno je samo jezgro niske energije i čeka da se probudi.

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) jedino buđenje je dostupno pomoću mjerača vremena i zbog prekida GPIO-a. Srećom, Espressif nam obećava da ćemo se BLE probuditi u sljedećoj verziji (3.1).

Možete i prebaciti CC1101 u stanje mirovanja slanjem odgovarajuće SPI naredbe za isključivanje uređaja putem SPI -a (pogledajte cc1101 tehnički list, naredba 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 sistema 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 sistema, s prikazom generatora ili ampermetra koji je serijski povezan prije vašeg + pola vašeg sistema, možete procijeniti vrijeme trajanja vašeg sistema!

Preporučuje se: