Spisu treści:

Zhakuj swoje drzwi garażowe: 5 kroków
Zhakuj swoje drzwi garażowe: 5 kroków

Wideo: Zhakuj swoje drzwi garażowe: 5 kroków

Wideo: Zhakuj swoje drzwi garażowe: 5 kroków
Wideo: Hackuje *GARTEN OF BANBAN 4* i Szukam *SYRINGEON* ( Wszystkie Sekrety ) 2024, Listopad
Anonim
Zhakuj swoje drzwi garażowe
Zhakuj swoje drzwi garażowe
Zhakuj swoje drzwi garażowe
Zhakuj swoje drzwi garażowe
Zhakuj swoje drzwi garażowe
Zhakuj swoje drzwi garażowe

Kto nigdy nie marzył o powrocie do domu tylko z aplikacją na telefon lub możliwości słuchania i kopiowania tramwajów danych? Cieszę się, że mogę podzielić się z Wami tym, co sobie uświadomiłem i jak postępowałem. Zacząłem ten projekt po tym, jak po raz drugi zapomniałem kluczy…

Oczywiście kodowanie, rodzaj modulacji, częstotliwość nośnej, informacje o połączeniu bluetooth i dane, które pokażę w przykładzie nie są oryginałami, wolę nie mieć gości;-).

Ta aplikacja ma zastosowanie do każdego obiektu zdolnego do odbierania informacji cyfrowych za pomocą fal elektromagnetycznych (brama garażowa, samochód, niektóre żaluzje…). Cały system składa się z obiektu połączonego przez bluetooth z telefonem, ten obiekt jest w stanie wysyłać te same ramki co pilot powiązany z tym, co chcemy zhakować. Umieściłem ten obiekt w swoim garażu i mogę się z nim połączyć z zewnątrz.

Krok 1: Sprzęt

Wyposażenie
Wyposażenie
Wyposażenie
Wyposażenie

Używane języki: C++, MATLAB, Typescript, C, html.

Podstawowa wiedza z zakresu elektroniki cyfrowej i telekomunikacji/przetwarzania sygnałów.

Koszt: mniej niż 35 USD.

Wymagania sprzętowe:

- NooELEC NESDR: do przechwytywania danych. Ten bardzo tani moduł wykonuje demodulację cyfrową, stąd jego wysoka przenośność. Ten model jest kompatybilny z MATLAB. (18,95 USD)

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

- Wemos Lolin32 lite: ten esp32 to tani mikrokontroler, wyposażony w Wifi i Bluetooth. Nie będziemy używać Wifi w tej aplikacji, ale jest to w dużej mierze możliwe. (4,74 USD)

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

- CDSENET cc1101: ten nadajnik radiowy daje nam niezwykłą elastyczność, od wybranej częstotliwości nośnej do rodzaju modulacji. (2,63 USD)

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

- Przewody, złącza, sprzęt spawalniczy, bateria lipo 3,7 V zapewniająca autonomię, ewentualnie oscyloskop i/lub analizator logiczny do debugowania, a nawiasem mówiąc, smartfon…

Wymagania Systemowe:

- MATLAB/Simulink: do przechwytywania danych. Można użyć innych bezpłatnych alternatywnych programów, takich jak Audacity do wizualizacji danych. (licencja)

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

- esp-idf toolchain: będzie używany do programowania esp32. Idea Arduino też może być wykorzystana, ale nie daje takiej swobody, jak to, z czego będziemy korzystać. (darmowy)

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

- TI SmartRF Studio: to pomoże nam skonfigurować rejestry cc1101, zgodnie z naszymi specyfikacjami. (darmowy)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: do tworzenia aplikacji. Możesz dokonać wyboru tworzenia natywnych aplikacji, ale Ionic pozwala nam uruchamiać naszą aplikację zarówno na urządzeniach z Androidem, jak i iOS, za pomocą tylko kodu. W naszym przypadku wydajność nie jest pożądana. (darmowy)

ionicframework.com/

- Twój ulubiony pomysł…

Krok 2: Szpiegowanie pilota

Szpiegowanie pilota
Szpiegowanie pilota
Szpiegowanie pilota
Szpiegowanie pilota
Szpiegowanie pilota
Szpiegowanie pilota

Zaczniemy od obserwacji danych generowanych przez polecenia pilota. Aby to zrobić, użyjemy klucza sprzętowego rtl-sdr i anteny:

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

Klikając ten link, znajdziesz pakiet MATLAB, a także bezpłatną książkę wyjaśniającą wszystkie ceny wraz z ich objaśnieniem. Podsumowując to, co nas dotyczy, dane tranzytu mają postać sygnału IQ: danych w fazie „I” w połączeniu z danymi kwadraturowymi „Q”. Ta metoda ułatwia telekomunikację. Interesuje nas tylko odbiór sygnału w fazie. Teraz zbierzemy fizyczne i cyfrowe informacje o pilocie. Jeśli znajdziesz na nim jakąś dokumentację, będzie to łatwiejsze. Nie znalazłem żadnego. Aby móc tymczasowo obserwować sygnał, musimy najpierw wiedzieć, jaka jest nośna częstotliwości emitowanego sygnału. Posłużymy się przykładem dostarczonym z dokumentacją pakietu „Analiza spektralna z radiem RTL-SDR”, aby dokładnie wiedzieć, na jakiej częstotliwości obserwujemy moc szczytową, gdy wysyłamy polecenie. W moim przypadku jest to 868,22 MHz. „Standardowe” częstotliwości dla tego rodzaju zastosowań wynoszą około 868 MHz.

Dzięki tym wskazaniom będziemy mogli napisać kod MATLAB w celu odzyskania danych. Ten jest dołączony na zdjęciu i skomentowany. Wynik pozwala nam znaleźć rodzaj modulacji: pobierając surowe informacje, wyświetlając wynik tuż po odzyskaniu prawdziwej części sygnału, możemy wywnioskować, że jest to ZAPYTAJ / OOK modulacja. Rzeczywiście obserwujemy, że częstotliwość jest niezmienna, jednak sygnał ma tylko dwie amplitudy: zerową i stałą. Reszta kodu pozwala nam odzyskać obwiednię odbieranego sygnału, ułatwiającą odczytanie, aby poznać tramwaj. Po wyświetleniu możemy określić modulację pasma podstawowego: jest to kodowanie Manchester (patrz załączone zdjęcie). Możemy również wywnioskować szybkość transmisji (symbole na sekundę). Wszystkie te informacje są gromadzone, możemy poznać ramkę danych. W moim przypadku znalezione bajty to: 249, 39, 75, 178, 45, 200 i zostały powtórzone wiele razy, aby upewnić się, że polecenie zostanie dobrze odebrane. Na szczęście kod się nie toczy, ramka danych jest zawsze taka sama.

Krok 3: Wyślij te same ramki danych

Wyślij te same ramki danych
Wyślij te same ramki danych
Wyślij te same ramki danych
Wyślij te same ramki danych
Wyślij te same ramki danych
Wyślij te same ramki danych

Texas Instruments cc1101 jest tak elastyczny, że nadal osiągniesz swój cel, nawet jeśli ustawienia, które znalazłeś w poprzednim kroku, są zupełnie inne niż moje. Rzeczywiście, zobaczysz w dokumentacji, strona 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf), że pozwala na wykonanie modulacji NRZ, Manchester, FSK, ASK / OOK, aby dotrzeć częstotliwości około 433 MHz lub 868 MHz i wiele innych rzeczy. Radzę zapoznać się z dokumentacją w celu zapoznania się z tym modułem.

Pod tym linkiem znajdziesz jako przykład pracę Loborisa dotyczącą budowy funkcji za pomocą tego modułu:

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

Zamierzamy napisać nasz kod dla naszego esp32 za pomocą toolchaina esp-idf (patrz linki w pierwszym kroku). Możesz dodać pliki łącza w podkatalogu komponentów twojego projektu. Aby poprawnie skonfigurować nasz cc1101, będziemy musieli naprawić jego rejestry. Texas Instruments dostarcza nam oprogramowanie, które podaje nam wartość rejestrów zgodnie z naszą konfiguracją: SmartRF Studio.

Co do mnie, zaznaczam programowi, że życzę sobie kodowania Manchester, że moja częstotliwość nośna to 868,22 MHz, że mój typ modulacji to ZAPYTAJ/OOK… pozwolę ci wprowadzić parametry. W przypadku, gdy twoje kodowanie pasma podstawowego nie jest dostępne, możesz rozważyć kodowanie NRZ, odpowiednio zwiększając szybkość transmisji i dostosowując dane.

Po zdefiniowaniu wartości masz kilka możliwości wykorzystania modułu: możesz skorzystać z funkcji, które z tobą połączyłem, lub z tego, co zrobiłem, czerpiąc inspirację tylko z tego kodu, aby skonfigurować wszystko w bardziej brutalny sposób (patrz załączone zdjęcia) i używaj tylko tego, czego potrzebujemy.

Ponieważ układ cc1101 komunikuje się przez SPI, w linku do przykładowego kodu znajdziesz plik nagłówkowy "spi_master_lobo.h", zawierający więcej łatwiejszych funkcji do korzystania z SPI, niż gdybyś miał go używać tylko z łańcuchem narzędzi. Dołączam się do zdjęcia schematu komunikacji CC1101 w SPI, zdjęcie zaczerpnięte ze strony 30 karty katalogowej CC1101. Przedstawione cztery przewody to: CS (Chip Select lub SS: Slave Select lub tutaj CSn), CLK (lub SCLK, zegar, dostarczony przez mastera), MISO (lub SO, Master In Slave Out) i MOSI (lub SI, Master Out Slave In). W naszym przypadku master to ESP32, a slave to CC1101. Ogólnie komunikacja rozpoczyna się, gdy pin CS jest niski.

Nie zapomnij włączyć w opcjach kompilatora menuconfig wyjątków C++ do kompilacji.

Krok 4: Połącz się z systemem

Połącz się z systemem
Połącz się z systemem
Połącz się z systemem
Połącz się z systemem
Połącz się z systemem
Połącz się z systemem

Jeśli twój kod działa, zrobiłeś to, co najważniejsze. W tej części skupimy się na tym, jak stworzyć aplikację na telefon podłączoną do systemu. Najciekawszym rozwiązaniem jest połączenie przez bluetooth, ponieważ pozwala na zastosowanie protokołu o niskim poborze mocy: Bluetooth Low Energy (BLE). Profil hierarchii pokazano na załączonym rysunku: odczytamy i zapiszemy polecenie w Charakterystyce Usługi. I oczywiście nasz esp32 i nasz smartfon są wyposażone w bluetooth.

Ten krok jest podzielony na dwie części: część esp32 i część aplikacji. Załączone zdjęcie pokazuje i wyjaśnia główne części kodów.

Możesz wygenerować swoje UUID, klikając ten link:

www.uuidgenerator.net/

Są to identyfikatory, które zapewnią dostęp do usług i funkcji naszego profilu BLE.

Jeśli chodzi o kod esp32 BLE, Kolban wykonał świetną robotę, czyniąc wszystkie te wysokopoziomowe funkcje C++ kompatybilnymi:

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

Możesz umieścić te pliki w podkatalogu components. W przeciwnym razie będziesz potrzebował więcej czasu, aby zrozumieć, jak używać BLE z łańcuchem narzędzi esp-idf.

Podsumowując to, co zobaczysz w kodzie, tworzymy Serwer, Usługę i Cechę, z powiązanymi UUIDami i dodajemy przedefiniowaną klasę wywołania zwrotnego, z powiązaną metodą na write: gdy otrzymamy "O" znak, wysyłamy polecenie zapisu do cc1101.

Oczywiście nie zapomnij włączyć Bluetooth w konfiguracji Component w Menuconfig.

Jeśli chodzi o część aplikacji, użyjemy Framework Ionic. Więcej informacji na ten temat znajdziesz w linku przedstawionym w pierwszym kroku, a więcej informacji o tym, jak używać BLE z Ionic:

ionicframework.com/docs/native/ble/

Oraz przykłady napisane przez dona:

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

Możesz edytować na przykład "Połącz". Skanujemy urządzenia na pierwszej stronie i docieramy do drugiej strony, jeśli wybierzemy nasze urządzenie. Następnie uzyskujemy dostęp do interfejsu, w którym można dodać przycisk za pomocą metody przedstawionej na zdjęciu: wysyła on nasze polecenie „O” z odpowiednimi UUID. Możesz również dodać w konstruktorze pierwszej strony metodę "enable", prosząc o aktywację bluetooth na początku aplikacji.

Gorąco polecam zapoznanie się ze stroną internetową Ionic i odkrycie wszystkich komponentów (przycisków, alertów, pól wyboru…), które ulepszą twoją aplikację:

ionicframework.com/docs/components/#overvi…

Krok 5: Optymalizacja zużycia energii

Optymalizacja zużycia energii
Optymalizacja zużycia energii
Optymalizacja zużycia energii
Optymalizacja zużycia energii

Zaczęliśmy pracować nad niskim zużyciem, więc przejdźmy dalej.

Łańcuch narzędzi esp-idf pozwala nam na użycie konfiguracyjnego interfejsu GUI, menuconfig: wiele parametrów może obniżyć zużycie esp32. Po pierwsze, ponieważ nie potrzebujemy Wifi, możemy je wyłączyć w konfiguracji Component. W tym samym folderze, we FreeRTOS, możesz wybrać „Uruchom FreeRTOS tylko na pierwszym rdzeniu. Następnie, w specyficznym dla ESP, możesz obniżyć częstotliwość procesora do 80 MHz. Wszystkie funkcje nadal działają z tą częstotliwością zegara. Na koniec możesz zaznacz „Włącz koprocesor o bardzo niskim poborze mocy (ULP). Taka konfiguracja sprawia, że pobór prądu wynosi od około stu mA do około trzydziestu mA. To wciąż za dużo…

ESP32 może obsłużyć głęboki sen. Tylko rdzeń niskoenergetyczny jest włączony i czeka na przebudzenie.

Zobacz poniższy link, aby uzyskać więcej informacji:

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

Niestety, w ostatniej dostępnej wersji toolchaina esp-idf (3.0), jedynymi dostępnymi wybudzeniami są zegary i zakłócenia GPIO. Na szczęście Espressif obiecuje nam obudzić BLE w kolejnej wersji (3.1).

Możesz również wprowadzić CC1101 w tryb uśpienia, wysyłając w SPI odpowiednie polecenie wyłączenia urządzenia (patrz arkusz danych cc1101, polecenie SPWD, strona 51). Aby wprowadzić urządzenie w tryb uśpienia lub je wybudzić, możesz ustawić niski, a następnie wysoki pin Chip Select na pinach SPI (więcej informacji w arkuszu danych).

Te ostatnie konfiguracje powinny być w stanie sprawić, że zużycie systemu spadnie poniżej miliampera…

Wreszcie, aby system działał jak najdłużej bez ładowania, a nawet osiągnął miesiąc autonomii, wybierz akumulator 3,7 V o największej liczbie miliamperów na godzinę. Mierząc pobór mocy w swoim systemie, z wyświetlaczem generatora lub amperomierza połączonego szeregowo przed biegunem + systemu, możesz oszacować czas, jaki będzie działał Twój system!

Zalecana: