Indholdsfortegnelse:
- Trin 1: Udstyr
- Trin 2: Spionere fjernbetjeningen
- Trin 3: Send de samme datarammer
- Trin 4: Opret forbindelse til systemet
- Trin 5: Optimer strømforbruget
Video: Hack din garageport: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Hvem har aldrig drømt om at gå hjem bare med en telefon -app eller at kunne lytte til og genoprette datatrammer? Jeg er glad for at kunne dele med dig, hvad jeg indså, og hvordan jeg gik frem. Jeg startede dette projekt efter anden gang jeg glemte mine nøgler …
Kodningen, typen af modulering, transportørens frekvens, bluetooth-forbindelsesoplysningerne og de data, jeg vil vise i eksemplet, er naturligvis ikke originalerne, jeg foretrækker ikke at have besøgende;-).
Denne applikation gælder for ethvert objekt, der er i stand til at modtage digital information ved hjælp af elektromagnetiske bølger (garagedør, bil, nogle skodder …). Hele systemet består af et objekt, der er forbundet med bluetooth til en telefon, og dette objekt kan sende de samme rammer som fjernbetjeningen, der er forbundet med det, vi ønsker at hacke. Jeg placerede dette objekt i min garage, og jeg kan oprette forbindelse til det udefra.
Trin 1: Udstyr
Brugte sprog: C ++, MATLAB, Typeskript, C, html.
Grundlæggende viden inden for digital elektronik og telekommunikation/signalbehandling.
Omkostninger: mindre end $ 35.
Hardware krav:
- NooELEC NESDR: til registrering af data. Dette meget billige modul udfører en digital demodulation, derfor dens høje bærbarhed. Denne model er kompatibel med MATLAB. ($ 18,95)
www.nooelec.com/store/sdr/sdr-receivers/nes…
- Wemos Lolin32 lite: denne esp32 er en billig mikrokontroller udstyret med Wifi og Bluetooth. Vi vil ikke bruge Wifi i denne applikation, men dette er stort set tænkeligt. ($ 4,74)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: denne radiosender giver os en ekstrem fleksibilitet, fra den valgte bærefrekvens til typen af modulering. ($ 2,63)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- Ledninger, headere, svejseudstyr, 3,7V lipo -batteri til autonomi, muligvis oscilloskop og/eller logisk analysator til fejlfinding og i øvrigt en smartphone …
Softwarekrav:
- MATLAB/Simulink: til registrering af data. Andre gratis alternative software kan bruges, som Audacity til datavisualisering. (licens)
fr.mathworks.com/products.html?s_tid=gn_ps
- esp-idf værktøjskæde: dette bruges til programmering af esp32. Arduino -ideen kan også bruges, men den tillader ikke så meget frihed som det, vi vil bruge. (gratis)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: dette hjælper os med at konfigurere cc1101 -registre i henhold til vores specifikationer. (gratis)
www.ti.com/tool/SMARTRFTM-STUDIO
- Ionisk: til opbygning af appen. Du kan vælge mellem at bygge native apps, men Ionic giver os mulighed for at køre vores app på både Android og IOS -enheder med en eneste kode. Ydeevnen søges ikke i vores tilfælde. (gratis)
ionicframework.com/
- Din yndlingsidé …
Trin 2: Spionere fjernbetjeningen
Vi starter med at observere de data, som kommandoerne på fjernbetjeningen producerer. For at gøre dette vil vi bruge en rtl-sdr dongle og antenne:
fr.mathworks.com/hardware-support/rtl-sdr….
Ved at følge dette link finder du MATLAB -pakken samt en gratis bog, der forklarer alle princees med deres forklaring. For at opsummere det, der vedrører os, er transitdataene i form af et IQ-signal: et "I" -fasedata kombineret med en "Q" -kvadraturdata. Denne metode letter telekommunikation. Vi vil kun være interesseret i at modtage signalet i fase. Vi vil nu indsamle de fysiske og digitale oplysninger på fjernbetjeningen. Hvis du kan finde noget dokumentation om det, bliver det lettere. Jeg fandt ingen. For at være i stand til midlertidigt at observere signalet, skal vi først vide, hvad der er frekvensbæreren for det udsendte signal. Vi vil bruge eksemplet, der følger med pakkedokumentationen "Spektralanalyse med RTL-SDR-radio", for at vide præcist med hvilken frekvens vi observerer en spidseffekt, når vi sender en kommando. I mit tilfælde er det 868,22 MHz. "Standard" -frekvenserne for denne slags applikationer er omkring 868 MHz.
Med disse indikationer vil vi være i stand til at skrive en MATLAB -kode for at gendanne dataene. Denne er vedhæftet på foto og kommenteret. Resultatet giver os mulighed for at finde typen af modulering: ved at hente de rå oplysninger, vise resultatet lige efter at have genoprettet den reelle del af signalet, kan vi udlede, at det er en ASK / OOK modulering. Faktisk observerer vi, at frekvensen er uændret, dog har signalet kun to amplituder: en nul og en fast. Resten af koden giver os mulighed for at gendanne konvolutten af det modtagne signal, der er lettere at læse for at kende tram. Når det er vist, kan vi bestemme basebåndsmodulationen: dette er en Manchester -kodning (se vedhæftede foto). Vi kan også udlede baudhastigheden (symboler pr. Sekund). Alle disse oplysninger, der indsamles, kan vi kende datarammen. I mit tilfælde er de fundne bytes: 249, 39, 75, 178, 45, 200 og gentaget flere gange for at sikre, at kommandoen modtages godt. Heldigvis ruller koden ikke, datarammen er altid den samme.
Trin 3: Send de samme datarammer
Texas Instruments cc1101 er så fleksibel, at du stadig vil nå dit mål, selvom de indstillinger, du fandt i det foregående trin, er helt forskellige fra mine. Faktisk vil du se i dokumentationen, side 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf), at det giver mulighed for at udføre NRZ, Manchester, FSK, ASK/OOK -modulering for at nå frekvenserne omkring 433 MHz eller 868 MHz og mange andre ting. Jeg råder dig til at læse dokumentationen for at gøre dig bekendt med dette modul.
På dette link finder du som eksempel Loboris 'arbejde vedrørende konstruktion af funktioner ved hjælp af dette modul:
github.com/loboris/ESP32_CC1101/tree/maste…
Vi skal skrive vores kode til vores esp32 med esp-idf værktøjskæden (se links til det første trin). Du kan tilføje filerne til linket i komponenternes underkatalog til dit projekt. For at konfigurere vores cc1101 korrekt skal vi rette dens registre. Texas Instruments giver os software, der giver os værdien af registre i henhold til vores konfiguration: SmartRF Studio.
For mig angiver jeg for softwaren, at jeg ønsker en Manchester -kodning, at min bærefrekvens er 868,22 MHz, at min type modulering er ASK / OOK … Jeg lader dig indtaste dine parametre. I det tilfælde, hvor din basisbåndskodning ikke er tilgængelig, kan du overveje NRZ -kodning ved korrekt at øge baudhastigheden og tilpasse dataene.
Når du har defineret dine værdier, har du flere valgmuligheder vedrørende brugen af modulet: du kan bruge de funktioner, som jeg har knyttet til dig, eller hvad jeg gjorde, kun hente inspiration fra denne kode for at konfigurere alt på en mere brutal måde (se vedhæftede fotos), og brug kun det, vi har brug for.
Da cc1101 -chippen kommunikerer med SPI, finder du i linket til eksempelkoden headerfilen "spi_master_lobo.h", der indeholder flere lettere funktioner til brug af SPI'en, end hvis du kun skulle bruge den med værktøjskæden. Jeg slutter dig til at fotografere skemaet for CC1101 -kommunikationen i SPI, foto taget fra side 30 i CC1101 -databladet. De fire ledninger, der præsenteres, er: CS (Chip Select eller SS: Slave Select, eller her CSn), CLK (eller SCLK, uret leveret af masteren), MISO (eller SO, Master In Slave Out) og MOSI (eller SI, Master Out Slave In). I vores tilfælde er mesteren ESP32, og slaven er CC1101. Kommunikation starter generelt, når CS -pin er lav.
Glem ikke at aktivere menukonfigurationens kompilatorindstillinger C ++ - undtagelserne for kompilering.
Trin 4: Opret forbindelse til systemet
Hvis din kode virker, har du gjort det væsentlige. I denne del vil vi fokusere på, hvordan du opretter en telefonapp, der er forbundet til systemet. Den mest interessante løsning er at oprette forbindelse via bluetooth, fordi det tillader brug af en lavstrømsprotokol: Bluetooth Low Energy (BLE). Hierarkiprofilen er vist på den vedhæftede tegning: vi vil læse og skrive kommandoen i en karakteristisk for en tjeneste. Og selvfølgelig er vores esp32 og vores smartphone udstyret med bluetooth.
Dette trin er opdelt i to dele: esp32 -delen og app -delen. Billedet vedhæftet viser og forklarer de vigtigste dele af koderne.
Du kan generere dine UUID'er ved at følge dette link:
www.uuidgenerator.net/
Dette er de identifikatorer, der giver adgang til tjenesterne og funktionerne i vores BLE -profil.
Om esp32 BLE -koden gjorde Kolban et godt stykke arbejde, der gjorde alle disse C ++ - funktioner på højt niveau kompatible:
github.com/nkolban/esp32-snippets/tree/mas…
Du kan sætte disse filer i underkataloget komponenter. Ellers får du brug for mere tid til at forstå, hvordan du bruger BLE med esp-idf værktøjskæden.
Sammenfattende hvad du vil se i koden, opretter vi en server, en service og en karakteristik med de tilhørende UUID'er, og vi tilføjer en omdefineret tilbagekaldsklasse med en tilknyttet metode til skrivning: når vi modtager "O" tegn, sender vi en skrivekommando til cc1101.
Glem selvfølgelig ikke at aktivere Bluetooth i komponentkonfigurationen i Menuconfig.
Om app -delen vil vi bruge Framework Ionic. Du kan finde flere oplysninger om det i linket, der blev præsenteret i det første trin, og for flere detaljer om, hvordan du bruger BLE med Ionic:
ionicframework.com/docs/native/ble/
Og eksempler, skrevet af don:
github.com/don/ionic-ble-examples/tree/mas…
Du kan f.eks. Redigere eksemplet "Tilslut". Vi scanner enheder på en første side og når en anden side, hvis vi vælger vores enhed. Vi får derefter adgang til en grænseflade, hvor du kan tilføje en knap med metoden vist på foto: den sender vores kommando "O" med de relevante UUID'er. Du kan også tilføje metoden "aktiver" i konstruktøren på den første side og bede om at aktivere bluetooth i starten af applikationen.
Jeg anbefaler dig stærkt at udforske det ioniske websted og opdage alle komponenterne (knapper, advarsler, afkrydsningsfelter …) for at forbedre din applikation:
ionicframework.com/docs/components/#overvi…
Trin 5: Optimer strømforbruget
Vi begyndte at arbejde med lavt forbrug, så lad os arbejde videre.
Esp-idf værktøjskæden giver os mulighed for at bruge en konfigurations-GUI, menukonfigurationen: mange parametre kan sænke esp32-forbruget. Først og fremmest, da vi ikke har brug for Wifi, kan vi deaktivere det i komponentkonfigurationen. I den samme mappe, i FreeRTOS, kan du vælge "Kør FreeRTOS kun på første kerne. Derefter kan du i ESP-specifikke sænke CPU-frekvensen til 80 MHz. Alle funktionaliteter fungerer stadig ved denne clockhastighed. Endelig kan du afkryds "Aktiver Ultra Low Power (ULP) coprocessor. Denne konfiguration får det aktuelle forbrug til at gå fra omkring hundrede mA til cirka tredive mA. Det er stadig for meget…
ESP32 kan klare dyb søvn. Kun lavenergikernen er tændt og venter på at vågne op.
Se dette link herunder for flere detaljer:
esp-idf.readthedocs.io/en/latest/api-refere…
Desværre i den sidste tilgængelige version af esp-idf værktøjskæden (3.0) er de eneste vågne tilgængelige ved hjælp af timere og af GPIO'er. Heldigvis lover Espressif os, at BLE vågner i den næste version (3.1).
Du kan også sætte CC1101 i dvaletilstand ved at sende den korrekte kommando til at slukke for enheden i SPI (se cc1101 -databladet, SPWD -kommandoen, side 51). For at sætte enheden i dvaletilstand eller for at vække den, kan du sætte Chip Select -stiften på SPI -benene lavt og højt (mere information i databladet).
Disse sidste konfigurationer skulle kunne få forbruget af systemet til at passere under milliampere …
Endelig, for at få systemet til at holde så længe som muligt uden at genoplade eller endda nå en måneds autonomi, skal du vælge det 3,7V batteri med flest milliampere i timen. Ved at måle strømforbruget i dit system, med visning af en generator eller et amperemeter i serie før din + pol på dit system, kan du estimere den tid, dit system vil vare!
Anbefalede:
Alexa kontrolleret garageport med Arduino Esp8266: 6 trin
Alexa kontrolleret garageport med Arduino Esp8266: Ideen til dette projekt kom til mig fra et gammelt projekt, jeg havde arbejdet på for et stykke tid siden. Jeg havde tilsluttet et enkelt trykknapkredsløb, der ville tænde en LED, når der blev trykket på en knap ved garageporten. Denne metode viste sig upålidelig og ikke så nyttig
Usynlig garageport fjernbetjening: 7 trin (med billeder)
Usynlig garageport fjernbetjening: En gang forlod vi vores bil parkeret uden for garagen, og en tyv smadrede et vindue for at komme til garageportens fjernbetjening. Derefter åbnede de garagen og stjal nogle cykler. Så jeg besluttede at skjule fjernbetjeningen ved at bygge den ind i bilens askebæger. Det fungerer ved at
En trådløs version af Er min garageport åben eller lukket ?: 7 trin
En trådløs version af … Er min garageport åben eller lukket ?: Vi ønskede et enkelt, billigt og pålideligt indikationssystem, der viste os, om vores garageporte var åbne eller lukkede. Der er masser af " Er min garageport åben " projekter. Størstedelen af disse projekter er fastnet. I mit tilfælde løber
WIFI garageport fjernbetjening V2: 3 trin
WIFI garageport fjernbetjening V2: Ikke længe efter jeg byggede min WIFI garageport fjernbetjening indså jeg, at den manglede en specifik funktion, der ville være meget nyttig for mig. Jeg ville gerne kunne fortælle, om døren var åben eller lukket fra appen. Dette ville kræve et par sensorer og nogle ch
Stemmestyrede scooterlys og garageport: 6 trin
Stemmestyrede scooterlys og garageport: Hej alle sammen! Jeg har for nylig købt en elektrisk scooter, men den havde ikke baglygte og havde heller ikke en indbygget garageportåbner … SURPRISE !! (ノ ゚ 0 ゚) ノ ~ Så besluttede jeg mig for at lave min egen garageport fjernbetjening og baglygter i stedet for at købe dem. Hvad er