Բովանդակություն:

Կոտրեք ձեր ավտոտնակի դուռը ՝ 5 քայլ
Կոտրեք ձեր ավտոտնակի դուռը ՝ 5 քայլ

Video: Կոտրեք ձեր ավտոտնակի դուռը ՝ 5 քայլ

Video: Կոտրեք ձեր ավտոտնակի դուռը ՝ 5 քայլ
Video: 5 բան, որ պետք է չանել քնելուց առաջ 2024, Հուլիսի
Anonim
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door
Hack Your Garage Door

Ո՞վ երբեք չի երազել միայն հեռախոսի հավելվածով տուն գնալ, կամ կարողանալ լսել և վերարտադրել տվյալների տրամվայները: Ուրախ եմ, որ կարող եմ ձեզ հետ կիսվել այն, ինչ հասկացա և ինչպես վարվեցի: Ես սկսեցի այս նախագիծը երկրորդ անգամ մոռանալով բանալիներս…

Իհարկե, կոդավորումը, մոդուլյացիայի տեսակը, կրիչի հաճախականությունը, bluetooth միացման տեղեկատվությունը և տվյալները, որոնք ես պատրաստվում եմ ցույց տալ օրինակ, բնօրինակ չեն, նախընտրում եմ այցելուներ չունենալ;-):

Այս ծրագիրը կիրառվում է ցանկացած օբյեկտի վրա, որն ընդունակ է թվային տեղեկատվություն ստանալ էլեկտրամագնիսական ալիքների միջոցով (ավտոտնակի դուռ, մեքենա, որոշ փեղկեր…): Ամբողջ համակարգը բաղկացած է մի օբյեկտից, որը միացված է bluetooth- ով հեռախոսին: Այս օբյեկտը կարող է ուղարկել նույն շրջանակները, ինչ հեռակառավարիչը `կապված այն բանի հետ, ինչ մենք ցանկանում ենք կոտրել: Այս օբյեկտը տեղադրեցի իմ ավտոտնակում, և ես կարող եմ դրան միանալ դրսից:

Քայլ 1: Սարքավորում

Սարքավորում
Սարքավորում
Սարքավորում
Սարքավորում

Օգտագործված լեզուներ ՝ C ++, MATLAB, Typescript, C, html:

Թվային էլեկտրոնիկայի և հեռահաղորդակցության/ազդանշանների մշակման հիմնական գիտելիքներ:

Արժեքը `35 դոլարից պակաս:

Սարքավորման պահանջներ

- NooELEC NESDR. Տվյալները գրավելու համար: Այս շատ էժան մոդուլը կատարում է թվային ապամոդուլյացիա, հետևաբար դրա բարձր դյուրատարությունը: Այս մոդելը համատեղելի է MATLAB- ի հետ: ($ 18,95)

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

- Wemos Lolin32 lite. Այս esp32- ը էժան միկրոկոնտրոլեր է ՝ հագեցած Wifi և Bluetooth համակարգերով: Այս ծրագրում մենք չենք օգտագործի Wifi, բայց դա մեծ մասամբ կարելի է պատկերացնել: (4,74 դոլար)

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

- CDSENET cc1101. Այս ռադիոհաղորդիչը մեզ տալիս է ծայրահեղ ճկունություն ՝ ընտրված կրիչի հաճախականությունից մինչև մոդուլյացիայի տեսակը: ($ 2.63)

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

- Հաղորդալարեր, վերնագրեր, եռակցման սարքավորում, 3.7 Վ լիպո մարտկոց ինքնավարության համար, հնարավոր է ՝ տատանումների համար և/կամ տրամաբանական անալիզատոր ՝ վրիպազերծման համար, և, ի դեպ, սմարթֆոն…

Softwareրագրային ապահովման պահանջներ

- MATLAB/Simulink. Տվյալները գրավելու համար: Կարող են օգտագործվել այլ անվճար այլընտրանքային ծրագրեր, ինչպիսիք են Audacity- ը տվյալների արտացոլման համար: (լիցենզիա)

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

- esp-idf գործիքաշղթա. այն կօգտագործվի esp32- ի ծրագրավորման համար: Արդուինոյի գաղափարն էլ կարող է օգտագործվել, բայց դա թույլ չի տալիս այնքան ազատություն, որքան այն, ինչ մենք կօգտագործենք: (անվճար)

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

- TI SmartRF Studio. Սա կօգնի մեզ կարգավորել cc1101 գրանցամատյանները ՝ ըստ մեր բնութագրերի: (անվճար)

www.ti.com/tool/SMARTRFTM-STUDIO

- Իոնիկ `ծրագիրը կառուցելու համար: Դուք կարող եք ընտրել մայրենի ծրագրերի ստեղծման ընտրությունը, սակայն Ionic- ը թույլ է տալիս մեր ծրագիրը գործարկել ինչպես Android, այնպես էլ IOS սարքերի վրա ՝ միայն կոդով: Մեր դեպքում ներկայացումը չի փնտրվում: (անվճար)

ionicframework.com/

- Ձեր նախընտրած գաղափարը…

Քայլ 2: Հեռակառավարման վահանակի լրտեսում

Հեռակառավարման վահանակի լրտեսում
Հեռակառավարման վահանակի լրտեսում
Հեռակառավարման վահանակի լրտեսում
Հեռակառավարման վահանակի լրտեսում
Հեռակառավարման վահանակի լրտեսում
Հեռակառավարման վահանակի լրտեսում

Մենք կսկսենք դիտարկելով այն տվյալները, որոնք արտադրում են հեռակառավարման վահանակի հրամանները: Դա անելու համար մենք կօգտագործենք rtl-sdr dongle և ալեհավաք:

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

Հետևելով այս հղմանը ՝ դուք կգտնեք MATLAB փաթեթը, ինչպես նաև անվճար գիրք, որը կբացատրի բոլոր գները դրանց բացատրությամբ: Մեզ հուզողն ամփոփելու համար տարանցման տվյալները IQ ազդանշանի տեսքով են ՝ «I» փուլային տվյալներ ՝ զուգորդված «Q» քառակուսային տվյալների հետ: Այս մեթոդը հեշտացնում է հեռահաղորդակցությունը: Մեզ միայն կհետաքրքրի ազդանշանի փուլային ընդունումը: Այժմ մենք կհավաքենք ֆիզիկական և թվային տեղեկությունները հեռակառավարման վահանակի վրա: Եթե դրա վրա կարող եք գտնել որոշ փաստաթղթեր, ապա դա ավելի հեշտ կլինի: Ես ոչ մեկը չգտա: Որպեսզի կարողանանք ժամանակավորապես դիտարկել ազդանշանը, մենք նախ պետք է իմանանք, թե որն է արտանետվող ազդանշանի հաճախականությունների կրողը: Մենք կօգտագործենք «Սպեկտրալ վերլուծություն RTL-SDR ռադիոյով» փաթեթային փաստաթղթերով տրամադրված օրինակը ՝ ճշգրիտ իմանալու համար, թե որ հաճախականությամբ ենք մենք դիտում գագաթնակետային հզորություն, երբ հրաման ենք ուղարկում: Իմ դեպքում դա 868.22 ՄՀց է: Այս տեսակի ծրագրերի «ստանդարտ» հաճախականությունները մոտ 868 ՄՀց են:

Այս ցուցումներով մենք կկարողանանք գրել MATLAB կոդ ՝ տվյալները վերականգնելու համար: Այս մեկը կցված է լուսանկարում և մեկնաբանված: Արդյունքը թույլ է տալիս գտնել մոդուլյացիայի տեսակը. Հում տեղեկատվությունը վերցնելով, արդյունքը ցուցադրելով ազդանշանի իրական մասը վերականգնելուց հետո, կարող ենք եզրակացնել, որ դա ASK / OOK է մոդուլյացիա Իրոք, մենք նկատում ենք, որ հաճախականությունը անփոփոխ է, այնուամենայնիվ, ազդանշանն ունի ընդամենը երկու ամպլիտուդ ՝ զրո և ֆիքսված: Մնացած ծածկագիրը թույլ է տալիս վերականգնել ստացված ազդանշանի ծրարը, որն ավելի դյուրընթեռնելի է դարձել տրամվայի իմացության համար: Displayedուցադրվելուց հետո մենք կարող ենք որոշել հիմնական կապի մոդուլյացիան. Սա Մանչեսթերի կոդավորումն է (տես կցված լուսանկարը): Մենք կարող ենք նաև եզրակացնել բաուդ արագությունը (նշաններ մեկ վայրկյանում): Այս ամբողջ տեղեկատվությունը հավաքվում է, մենք կարող ենք իմանալ տվյալների շրջանակը: Իմ դեպքում, հայտնաբերված բայթերն են ՝ 249, 39, 75, 178, 45, 200 և բազմիցս կրկնվել, որպեսզի ապահովվի, որ հրամանը լավ ընդունվի: Բարեբախտաբար, կոդը չի գլորվում, տվյալների շրջանակը միշտ նույնն է:

Քայլ 3: Ուղարկեք նույն տվյալների շրջանակները

Ուղարկեք նույն տվյալների շրջանակները
Ուղարկեք նույն տվյալների շրջանակները
Ուղարկեք նույն տվյալների շրջանակները
Ուղարկեք նույն տվյալների շրջանակները
Ուղարկեք նույն տվյալների շրջանակները
Ուղարկեք նույն տվյալների շրջանակները

Texas Instruments cc1101- ն այնքան ճկուն է, որ դուք դեռ կհասնեք ձեր նպատակին, նույնիսկ եթե նախորդ քայլում գտած պարամետրերը լիովին տարբերվում են իմից: Իրոք, փաստաթղթերում, էջ 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf), կտեսնեք, որ այն թույլ է տալիս կատարել NRZ, Manchester, FSK, ASK/OOK մոդուլյացիա, հասնել 433 ՄՀց կամ 868 ՄՀց հաճախականություններ և շատ այլ բաներ: Խորհուրդ եմ տալիս կարդալ փաստաթղթերը `այս մոդուլին ծանոթանալու համար:

Այս հղման վրա դուք կարող եք որպես օրինակ գտնել Լոբորիսի աշխատանքը ՝ կապված այս մոդուլով գործառույթների կառուցման հետ.

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

Մենք պատրաստվում ենք գրել մեր esp32- ի ծածկագիրը esp-idf գործիքաշղթայով (տես առաջին քայլի հղումները): Դուք կարող եք ավելացնել հղման ֆայլերը ձեր նախագծի բաղադրիչների ենթա դիրեկտորիայում: Մեր cc1101- ը ճիշտ կազմաձևելու համար մենք պետք է ամրագրենք դրա գրանցամատյանները: Texas Instruments- ը մեզ տրամադրում է ծրագրակազմ, որը մեզ տալիս է գրանցամատյանների արժեքը ՝ ըստ մեր կազմաձևի ՝ SmartRF Studio:

Ինչ վերաբերում է ինձ, ես ծրագրակազմին նշում եմ, որ ցանկանում եմ Մանչեստրի կոդավորում, որ իմ կրիչի հաճախականությունը 868.22 ՄՀց է, որ իմ մոդուլյացիայի տեսակը ASK / OOK է … Ես թույլ եմ տալիս մուտքագրել ձեր պարամետրերը: Այն դեպքում, երբ ձեր բազային կապի կոդավորումը հասանելի չէ, կարող եք հաշվի առնել NRZ կոդավորումը `ճիշտ բարձրացնելով բաուդ արագությունը և հարմարեցնելով տվյալները:

Ձեր արժեքները սահմանելուց հետո դուք ունեք մի քանի ընտրություն `կապված մոդուլի օգտագործման հետ. Կարող եք օգտագործել այն գործառույթները, որոնք ես ձեզ կապել եմ, կամ այն, ինչ ես արել եմ, միայն ոգեշնչվել այս կոդից` ամեն ինչ ավելի ճշգրիտ կազմաձևելու համար: դաժան ճանապարհ (տես կից լուսանկարները) և օգտագործեք միայն այն, ինչ մեզ անհրաժեշտ է:

Քանի որ cc1101 չիպը հաղորդակցվում է SPI- ի միջոցով, դուք կգտնեք օրինակելի ծածկագրի «spi_master_lobo.h» վերնագրի ֆայլը, որը պարունակում է SPI- ի օգտագործման ավելի հեշտ գործառույթներ, քան եթե այն ստիպված լինեիք օգտագործել միայն գործիքների շղթայով: Ես ձեզ միանում եմ CC1101 հաղորդակցության սխեմայով SPI- ում, լուսանկարը վերցված է CC1101 տվյալների թերթի 30 -րդ էջից: Ներկայացված չորս լարերն են ՝ CS (Chip Select, կամ SS: Slave Select, կամ այստեղ CSn), CLK (կամ SCLK, Clock, տրամադրված վարպետի կողմից), MISO (կամ SO, Master In Slave Out) և MOSI (կամ SI, Master Out Slave In): Մեր դեպքում վարպետը ESP32- ն է, իսկ ստրուկը `CC1101- ը: Հաղորդակցությունները սկսվում են, երբ CS քորոցն ընդհանրապես ցածր է:

Մի մոռացեք, որ menuconfig- ի կազմողի ընտրանքներում միացրեք C ++ բացառությունները կազմելու համար:

Քայլ 4: Միացեք համակարգին

Միացեք համակարգին
Միացեք համակարգին
Միացեք համակարգին
Միացեք համակարգին
Միացեք համակարգին
Միացեք համակարգին

Եթե ձեր կոդը աշխատում է, դուք կատարել եք էականը: Այս մասում մենք կկենտրոնանանք այն մասին, թե ինչպես ստեղծել համակարգին միացված հեռախոսի ծրագիր: Ամենահետաքրքիր լուծումը bluetooth- ով միացումն է, քանի որ այն թույլ է տալիս օգտագործել ցածր էներգիայի արձանագրություն ՝ Bluetooth Low Energy (BLE): Հիերարխիայի բնութագիրը ցուցադրվում է կցված գծապատկերում. Մենք կկարդանք և կգրենք հրամանը Chaառայության բնութագրիչով: Եվ, իհարկե, մեր esp32- ը և մեր սմարթֆոնը հագեցած են bluetooth- ով:

Այս քայլը բաժանված է երկու մասի ՝ esp32 մասի և հավելվածի: Կցված լուսանկարը ցույց է տալիս և բացատրում ծածկագրերի հիմնական մասերը:

Դուք կարող եք ստեղծել ձեր UUID- ները ՝ հետևելով այս հղմանը.

www.uuidgenerator.net/

Սրանք նույնացուցիչներն են, որոնք կապահովեն մեր BLE պրոֆիլի ծառայությունների և գործառույթների հասանելիությունը:

Esp32 BLE կոդի մասին, Kolban- ը հիանալի աշխատանք կատարեց ՝ այս բոլոր բարձր մակարդակի C ++ գործառույթները համատեղելի դարձնելով.

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

Դուք կարող եք այս ֆայլերը տեղադրել բաղադրիչների ենթաօրենսդրական գրացուցակում: Հակառակ դեպքում, ձեզ ավելի շատ ժամանակ կպահանջվի հասկանալու համար, թե ինչպես օգտագործել BLE- ն esp-idf գործիքաշղթայի հետ:

Ամփոփելով այն, ինչ դուք կտեսնեք ծածկագրում, մենք ստեղծում ենք սերվեր, ծառայություն և բնութագիր ՝ կապված UUID- ների հետ, և ավելացնում ենք հետախուզման հետադարձ դաս, որը կապված է գրելու եղանակի հետ. Երբ մենք ստանում ենք «O» նիշ, մենք գրելու հրաման ենք ուղարկում cc1101- ին:

Իհարկե, մի մոռացեք միացնել Bluetooth- ը Menuconfig- ի բաղադրիչի կազմաձևում:

Appրագրի մասի մասին մենք կօգտագործենք Framework Ionic- ը: Դրա մասին ավելի շատ տեղեկատվություն կարող եք գտնել առաջին քայլին ներկայացված հղումում, և ավելի մանրամասն ՝ ինչպես օգտագործել BLE- ը Ionic- ի հետ.

ionicframework.com/docs/native/ble/

Եվ օրինակներ ՝ գրված դոնի կողմից.

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

Դուք կարող եք խմբագրել, օրինակ, «Միացում» օրինակը: Մենք սարքերը սկանավորում ենք առաջին էջում, և հասնում երկրորդ էջի, եթե ընտրենք մեր սարքը: Այնուհետև մենք մուտք ենք գործում դեպի միջերես, որտեղ կարող եք ավելացնել կոճակ լուսանկարում ներկայացված մեթոդով. Այն ուղարկում է մեր «O» հրամանը համապատասխան UUID- ներով: Կարող եք նաև առաջին էջի կոնստրուկտորում ավելացնել «միացնել» մեթոդը ՝ խնդրելով ակտիվացնել bluetooth- ը ծրագրի սկզբում:

Խստորեն խորհուրդ եմ տալիս ուսումնասիրել Ionic կայքը և հայտնաբերել բոլոր բաղադրիչները (կոճակներ, ազդանշաններ, վանդակներ …) `ձեր դիմումը բարելավելու համար.

ionicframework.com/docs/components/#overvi…

Քայլ 5: Օպտիմիզացրեք էներգիայի սպառումը

Օպտիմալացնել էներգիայի սպառումը
Օպտիմալացնել էներգիայի սպառումը
Օպտիմալացնել էներգիայի սպառումը
Օպտիմալացնել էներգիայի սպառումը

Մենք սկսեցինք աշխատել ցածր սպառման վրա, ուստի եկեք աշխատենք:

Esp-idf գործիքակազմը թույլ է տալիս օգտագործել կոնֆիգուրացիայի GUI ՝ menuconfig. Շատ պարամետրեր կարող են նվազեցնել esp32- ի սպառումը: Նախ, քանի որ մեզ Wifi պետք չէ, մենք կարող ենք այն անջատել Component կոնֆիգուրացիայում: Նույն թղթապանակում ՝ FreeRTOS- ում, կարող եք ընտրել «Գործարկել FreeRTOS- ը միայն առաջին միջուկում: Այնուհետև, ESP- ի դեպքում, կարող եք պրոցեսորի հաճախականությունը իջեցնել մինչև 80 ՄՀց: Բոլոր գործառույթները դեռ աշխատում են այս ժամացույցի արագությամբ: Վերջապես, կարող եք ստուգեք «Միացնել ծայրահեղ ցածր էներգիայի (ULP) համամշակողը: Այս կոնֆիգուրացիան ստիպում է ընթացիկ սպառումը մոտ հարյուր մԱ -ից հասցնել մոտ երեսուն մԱ: Սա դեռ շատ է…

ESP32- ը կարող է կարգավորել խորը քուն: Միայն ցածր էներգիայի միջուկն է միացված և սպասում է արթնանալուն:

Լրացուցիչ մանրամասների համար տե՛ս ստորև բերված հղումը.

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

Fortավոք, esp-idf գործիքային շղթայի վերջին հասանելի տարբերակում (3.0) միակ արթնանալը հասանելի է ժամաչափերի և GPIO- ների խափանումների միջոցով: Բարեբախտաբար, Espressif- ը մեզ խոստանում է BLE արթնանալ հաջորդ տարբերակում (3.1):

Կարող եք նաև CC1101- ը տեղադրել քնած ռեժիմում ՝ SPI- ին ուղարկելով սարքը անջատելու համապատասխան հրաման (տես cc1101 տվյալների թերթ, SPWD հրաման, էջ 51): Սարքը քնելու ռեժիմի մեջ դնելու կամ այն արթնացնելու համար կարող եք ցածր, ապա բարձր տեղադրել SPI կապում Chip Select քորոցը (լրացուցիչ տեղեկություններ տվյալների թերթիկում):

Այս վերջին կազմաձևերը պետք է կարողանան ստիպել համակարգի սպառումը անցնել միլիարդ ամպերից ցածր…

Ի վերջո, որպեսզի համակարգը հնարավորինս երկար տևի առանց լիցքավորման, կամ նույնիսկ հասնի ինքնավարության մեկ ամսվա, ընտրեք 3.7 Վ մարտկոցը ՝ ժամում առավելագույն միլիո ամպեր: Չափելով ձեր համակարգի էներգիայի սպառումը, գեներատորի կամ սլաքի ցուցիչով, որը միացված է ձեր համակարգի + բևեռից առաջ, կարող եք գնահատել ձեր համակարգի գոյատևման ժամանակը:

Խորհուրդ ենք տալիս: