INHOUDSOPGAWE:

Hack jou motorhuisdeur: 5 stappe
Hack jou motorhuisdeur: 5 stappe

Video: Hack jou motorhuisdeur: 5 stappe

Video: Hack jou motorhuisdeur: 5 stappe
Video: Гениальные Лайфхаки, Которые Действительно Работают ▶3 2024, November
Anonim
Hack jou motorhuisdeur
Hack jou motorhuisdeur
Hack jou motorhuisdeur
Hack jou motorhuisdeur
Hack jou motorhuisdeur
Hack jou motorhuisdeur

Wie het nog nooit daarvan gedroom om net met 'n telefoonprogram huis toe te gaan of na datatramme te luister en dit te herstel nie? Ek is bly om met u te kon deel wat ek besef het en hoe ek te werk gegaan het. Ek het met hierdie projek begin nadat ek my sleutels vir die tweede keer vergeet het …

Die kodering, die tipe modulasie, die frekwensie van die draer, die inligting oor die Bluetooth-verbinding en die gegewens wat ek in die voorbeeld gaan wys, is natuurlik nie die oorspronklikes nie; ek het verkieslik geen besoekers nie;-).

Hierdie toepassing is van toepassing op enige voorwerp wat digitale inligting deur elektromagnetiese golwe kan ontvang (garagedeur, motor, sommige luike …). Die hele stelsel bestaan uit 'n voorwerp wat via bluetooth aan 'n telefoon gekoppel is, en hierdie voorwerp kan dieselfde rame stuur as die afstandsbediening wat verband hou met wat ons wil kap. Ek het hierdie voorwerp in my motorhuis geplaas, en ek kan dit van buite af aansluit.

Stap 1: toerusting

Uitrusting
Uitrusting
Uitrusting
Uitrusting

Gebruikte tale: C ++, MATLAB, Typescript, C, html.

Basiese kennis in digitale elektronika en telekommunikasie/seinverwerking.

Koste: minder as $ 35.

Hardeware vereistes:

- NooELEC NESDR: vir die vaslegging van die data. Hierdie baie goedkoop module voer 'n digitale demodulasie uit, vandaar die hoë draagbaarheid daarvan. Hierdie model is versoenbaar met MATLAB. ($ 18,95)

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

- Wemos Lolin32 lite: hierdie esp32 is 'n goedkoop mikrobeheerder, toegerus met Wifi en Bluetooth. Ons sal nie Wifi in hierdie toepassing gebruik nie, maar dit is grootliks denkbaar. ($ 4,74)

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

- CDSENET cc1101: hierdie radiosender gee ons uiterste buigsaamheid, van die gekose drafrekwensie tot die tipe modulasie. ($ 2,63)

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

- Drade, kopstukke, sweis toerusting, 3.7V lipo battery vir outonomie, moontlik ossilloskoop, en/of logiese ontleder vir ontfouting, en toevallig 'n slimfoon …

Sagteware vereistes:

- MATLAB/Simulink: vir die vaslegging van die data. Ander gratis alternatiewe sagteware kan gebruik word, soos Audacity vir data -visualisering. (lisensie)

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

- esp-idf toolchain: dit sal gebruik word vir die programmering van die esp32. Die Arduino -idee kan ook gebruik word, maar dit laat nie soveel vryheid toe as wat ons sal gebruik nie. (vry)

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

- TI SmartRF Studio: dit sal ons help om die cc1101 -registers op te stel volgens ons spesifikasies. (vry)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionies: vir die bou van die app. U kan die keuse maak om inheemse programme te bou, maar met Ionic kan ons ons app op beide Android- en IOS -toestelle gebruik, met die enigste kode. Die prestasie word nie in ons geval gesoek nie. (vry)

ionicframework.com/

- Jou gunsteling idee …

Stap 2: Spioeneer die afstandsbediening

Spy die afstandsbediening
Spy die afstandsbediening
Spy die afstandsbediening
Spy die afstandsbediening
Spy die afstandsbediening
Spy die afstandsbediening

Ons begin met die waarneming van die data wat die opdragte van die afstandsbediening lewer. Om dit te doen, gebruik ons 'n rtl-sdr dongle en antenna:

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

Deur hierdie skakel te volg, vind u die MATLAB -pakket, sowel as 'n gratis boek wat al die voorwaardes met hul verduideliking verduidelik. Om op te som wat ons aangaan, is die transito-data in die vorm van 'n IK-sein: 'n "I" in-fase data, gekombineer met 'n "Q" kwadratuur data. Hierdie metode vergemaklik telekommunikasie. Ons sal slegs daarin belangstel om die sein in fase te ontvang. Ons sal nou die fisiese en digitale inligting op die afstandbeheer versamel. As u dokumentasie daaroor kan kry, sal dit makliker wees. Ek het geen gevind nie. Om die sein tydelik te kan waarneem, moet ons eers weet wat die frekwensiedraer van die uitgestuurde sein is. Ons sal die voorbeeld van die pakketdokumentasie "Spektrale analise met RTL-SDR-radio" gebruik om presies te weet op watter frekwensie ons 'n piekvermogen waarneem wanneer ons 'n opdrag stuur. In my geval is dit 868,22 MHz. Die "standaard" frekwensies vir hierdie soort toepassings is ongeveer 868 MHz.

Met hierdie aanduidings kan ons 'n MATLAB -kode skryf om die data te herstel. Hierdie een is aangeheg op die foto en kommentaar gelewer. Met die resultaat kan ons die tipe modulasie vind: deur die rou inligting op te haal, die resultaat te vertoon net nadat ons die werklike deel van die sein herwin het, kan ons aflei dat dit 'n VRAAG / OOK is modulasie. Ons sien inderdaad dat die frekwensie onveranderlik is, maar die sein het slegs twee amplitudes: 'n nul en 'n vaste. Die res van die kode stel ons in staat om die omhulsel van die ontvangde sein te herstel, wat makliker gemaak kan word om die tram te ken. Sodra dit vertoon is, kan ons die basisbandmodulasie bepaal: dit is 'n Manchester -kodering (sien aangehegte foto). Ons kan ook die baud -tempo (simbole per sekonde) aflei. Al hierdie inligting word versamel, en ons kan die datarame ken. In my geval is die grepe wat gevind word: 249, 39, 75, 178, 45, 200 en herhaaldelik herhaal om te verseker dat die opdrag goed ontvang word. Gelukkig rol die kode nie, die data raam is altyd dieselfde.

Stap 3: Stuur dieselfde datarame

Stuur dieselfde datarame
Stuur dieselfde datarame
Stuur dieselfde datarame
Stuur dieselfde datarame
Stuur dieselfde datarame
Stuur dieselfde datarame

Die Texas Instruments cc1101 is so buigsaam dat u steeds u doel sal bereik, selfs al is die instellings wat u in die vorige stap gevind het, heeltemal anders as myne. U sal inderdaad in die dokumentasie, bladsy 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) sien dat dit NRZ, Manchester, FSK, ASK/OOK modulasie kan uitvoer om te bereik die frekwensies rondom 433 MHz of 868 MHz, en vele ander dinge. Ek raai u aan om die dokumentasie te lees om vertroud te raak met hierdie module.

Op hierdie skakel vind u as voorbeeld die werk van Loboris oor die konstruksie van funksies met behulp van hierdie module:

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

Ons gaan ons kode vir ons esp32 skryf met die esp-idf toolchain (sien skakels van die eerste stap). U kan die lêers van die skakel in die onderafdeling van u projek byvoeg. Om ons cc1101 behoorlik op te stel, moet ons die registers daarvan regmaak. Texas Instruments bied sagteware aan wat ons die waarde van die registers volgens ons konfigurasie gee: SmartRF Studio.

Wat my betref, gee ek aan die sagteware aan dat ek 'n Manchester -kodering wil hê, dat my draerfrekwensie 868,22 MHz is, dat my tipe modulasie ASK / OOK is … ek laat u u parameters invoer. In die geval dat u basisbandkodering nie beskikbaar is nie, kan u NRZ -kodering oorweeg deur die baud -tempo behoorlik te verhoog en die data aan te pas.

Nadat u u waardes gedefinieer het, het u verskillende keuses oor die gebruik van die module: u kan die funksies wat ek aan u gekoppel het, of wat ek gedoen het, gebruik, slegs inspirasie uit hierdie kode, om alles in 'n meer op te stel brutale manier (sien aangehegte foto's), en gebruik slegs wat ons nodig het.

Aangesien die cc1101 -skyfie deur SPI kommunikeer, vind u in die skakel van die voorbeeldkode die koplêer "spi_master_lobo.h", wat makliker funksies bevat om die SPI te gebruik as as u dit slegs met die werktuigketting moes gebruik. Ek sluit u aan by die skema van die CC1101 -kommunikasie in SPI, foto geneem vanaf bladsy 30 van die CC1101 -datablad. Die vier drade wat aangebied word, is: CS (Chip Select, of SS: Slave Select, of hier CSn), CLK (of SCLK, die klok, verskaf deur die meester), MISO (of SO, Master In Slave Out) en MOSI (of SI, Master Out Slave In). In ons geval is die meester die ESP32, en die slaaf is die CC1101. Kommunikasie begin gewoonlik as die CS -pen laag is.

Moenie vergeet om in die samestelleropsies van die menuconfig die C ++ - uitsonderings vir die opstel moontlik te maak nie.

Stap 4: Koppel aan die stelsel

Koppel aan die stelsel
Koppel aan die stelsel
Koppel aan die stelsel
Koppel aan die stelsel
Koppel aan die stelsel
Koppel aan die stelsel

As u kode werk, het u die belangrikste gedoen. In hierdie gedeelte fokus ons op hoe u 'n telefoonprogram kan skep wat aan die stelsel gekoppel is. Die interessantste oplossing is om via Bluetooth aan te sluit, omdat dit 'n lae-kragprotokol kan gebruik: Bluetooth Low Energy (BLE). Die hiërargie -profiel word in die aangehegte tekening getoon: ons sal die opdrag lees en skryf in 'n kenmerk van 'n diens. En ons esp32 en ons slimfoon is natuurlik toegerus met bluetooth.

Hierdie stap is in twee dele verdeel: die esp32 -deel en die app -gedeelte. Die aangehegte foto toon en verduidelik die belangrikste dele van die kodes.

U kan u UUID's genereer deur hierdie skakel te volg:

www.uuidgenerator.net/

Dit is die identifiseerders wat toegang bied tot die dienste en funksies van ons BLE -profiel.

Oor die esp32 BLE -kode het Kolban puik werk gelewer en al hierdie hoë vlak C ++ - funksies versoenbaar gemaak:

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

U kan hierdie lêers in die subgids komponente plaas. Andersins het u meer tyd nodig om te verstaan hoe u BLE moet gebruik met die esp-idf-werktuigketting.

Ter opsomming van wat u in die kode sal sien, skep ons 'n bediener, 'n diens en 'n kenmerk met die gepaardgaande UUID's, en voeg ons 'n hergedefinieerde terugbelklas by, met 'n gepaardgaande metode om te skryf: as ons die 'O' ontvang karakter stuur ons 'n skryfopdrag na die cc1101.

Vergeet natuurlik nie om Bluetooth in te skakel in die komponent -konfigurasie van die Menuconfig.

Oor die app -deel gebruik ons die Framework Ionic. U kan meer inligting daaroor vind in die skakel wat in die eerste stap aangebied is, en vir meer besonderhede oor hoe u BLE met Ionic kan gebruik:

ionicframework.com/docs/native/ble/

En voorbeelde, geskryf deur don:

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

U kan byvoorbeeld die voorbeeld "Koppel" wysig. Ons skandeer toestelle op 'n eerste bladsy en bereik 'n tweede bladsy as ons ons toestel kies. Dan kry ons toegang tot 'n koppelvlak waar u 'n knoppie kan byvoeg met die metode op foto: dit stuur ons opdrag "O" met die toepaslike UUID's. U kan ook die metode "aktiveer" in die konstruktor van die eerste bladsy byvoeg en vra om die bluetooth aan die begin van die toepassing te aktiveer.

Ek beveel u sterk aan om die Ionic -webwerf te verken en al die komponente (knoppies, waarskuwings, blokkies …) te ontdek om u toepassing te verbeter:

ionicframework.com/docs/components/#overvi…

Stap 5: Optimaliseer die kragverbruik

Optimaliseer kragverbruik
Optimaliseer kragverbruik
Optimaliseer kragverbruik
Optimaliseer kragverbruik

Ons het begin werk met 'n lae verbruik, so laat ons deurwerk.

Met die esp-idf toolchain kan ons 'n konfigurasie-GUI, die menuconfig, gebruik: baie parameters kan die esp32-verbruik verlaag. Aangesien ons nie Wifi nodig het nie, kan ons dit in die komponent -konfigurasie deaktiveer. In dieselfde gids, in FreeRTOS, kan u "Run FreeRTOS only on first core." Dan kan u in ESP-spesifieke die CPU-frekwensie verlaag tot 80 MHz. Alle funksionaliteite werk steeds teen hierdie kloksnelheid. Uiteindelik kan u merk "Aktiveer ultra -lae krag (ULP) -verwerker. Hierdie konfigurasie laat die huidige verbruik van ongeveer honderd mA na ongeveer dertig mA styg. Dit is nog te veel…

ESP32 kan diep slaap hanteer. Slegs die lae-energie-kern is aan en wag vir 'n wakker word.

Sien hierdie skakel hieronder vir meer besonderhede:

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

Ongelukkig, in die laaste beskikbare weergawe van die esp-idf-werktuigketting (3.0), is die enigste tydsberekening wat beskikbaar is deur tydtellers en deur ontwrigting van GPIO's. Gelukkig belowe Espressif ons BLE word wakker in die volgende weergawe (3.1).

U kan ook die CC1101 in 'n slaapmodus plaas deur die regte opdrag in SPI te stuur om die toestel uit te skakel (sien cc1101 -datablad, die SPWD -opdrag, bladsy 51). Om die toestel in die slaapmodus te plaas of om dit wakker te maak, kan u die Chip Select -pen van die SPI -penne laag sit en dan hoog sit (meer inligting in die datablad).

Hierdie laaste konfigurasies moet die verbruik van die stelsel onder die milli-ampère kan laat slaag …

Ten slotte, om die stelsel so lank as moontlik te hou sonder om te herlaai, of selfs 'n maand se outonomie te bereik, kies die 3,7V-battery met die meeste milliampere per uur. Deur die kragverbruik van u stelsel te meet, met die vertoning van 'n kragopwekker of 'n ammeter wat in serie voor u + paal van u stelsel gekoppel is, kan u die tyd wat u stelsel sal duur, skat!

Aanbeveel: