Sadržaj:
- Korak 1: Opremanje
- Korak 2: Špijuniranje daljinskog upravljača
- Korak 3: Pošaljite iste okvire podataka
- Korak 4: Povežite se sa sustavom
- Korak 5: Optimizirajte potrošnju energije
Video: Hakirajte vaša garažna vrata: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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
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
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
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
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
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:
Alexa garažna vrata s Arduino Esp8266: 6 koraka
Alexa garažna vrata s Arduinom Esp8266: Ideja za ovaj projekt došla mi je iz starog projekta na kojem sam radio prije nekog vremena. Ožičio sam jednostavan krug s gumbom koji bi palio LED lampicu kada bi gumb pritisnuo garažna vrata. Ova se metoda pokazala nepouzdanom i nije toliko korisna
Nadzor dva garažna vrata: 4 koraka
Nadzor dva garažna vrata: 2016. preselili smo se u novu kuću, gdje su garažna vrata smještena na način da ih ne vidite s glavnog ulaza u kuću. Stoga ne možete biti sigurni jesu li vrata zatvorena ili otvorena. Samo za nadzor, bivši vlasnici instalirali su prekidač za tisak
Nevidljivi daljinski upravljač za garažna vrata: 7 koraka (sa slikama)
Nevidljivi daljinski upravljač za garažna vrata: Jednom smo auto ostavili parkiran ispred garaže, a lopov je razbio prozor kako bi došao do daljinskog upravljača garažnih vrata. Zatim su otvorili garažu i ukrali neke bicikle. Stoga sam odlučio sakriti daljinski upravljač ugradivši ga u pepeljaru automobila. Djeluje do
Bežična verzija Jesu li moja garažna vrata otvorena ili zatvorena?: 7 koraka
Bežična verzija … Jesu li moja garažna vrata otvorena ili zatvorena?: Željeli smo jednostavan, jeftin i pouzdan sustav pokazivanja koji nam je pokazao jesu li naša garažna vrata otvorena ili zatvorena. Postoji mnogo pitanja " Jesu li mi otvorena garažna vrata " projekti. Najveći dio ovih projekata je ožičen. U mom slučaju pokrenut
WIFI Daljinski upravljač za garažna vrata V2: 3 koraka
WIFI daljinski upravljač za garažna vrata V2: Nedugo nakon što sam izgradio daljinski upravljač za garažna vrata WIFI, shvatio sam da mu nedostaje određena značajka koja bi mi bila jako korisna. Htio sam iz aplikacije znati jesu li vrata otvorena ili zatvorena. Za to bi bilo potrebno nekoliko senzora i malo ch