İçindekiler:

Garaj Kapınızı Hackleyin: 5 Adım
Garaj Kapınızı Hackleyin: 5 Adım

Video: Garaj Kapınızı Hackleyin: 5 Adım

Video: Garaj Kapınızı Hackleyin: 5 Adım
Video: KAYIP ARAÇLARI BULDUK!! | EKİPLE FORZA HORIZON 5 | Barış Can 2024, Kasım
Anonim
Garaj Kapınızı Hackleyin
Garaj Kapınızı Hackleyin
Garaj Kapınızı Hackleyin
Garaj Kapınızı Hackleyin
Garaj Kapınızı Hackleyin
Garaj Kapınızı Hackleyin

Kim sadece bir telefon uygulamasıyla eve gitmeyi ya da veri tramvaylarını dinleyip yeniden kopyalamayı asla hayal etmemiştir? Ne fark ettiğimi ve nasıl ilerlediğimi sizinle paylaşabildiğim için mutluyum. Anahtarlarımı ikinci kez unuttuğumda bu projeye başladım…

Tabii ki kodlama, modülasyon türü, taşıyıcının frekansı, bluetooth bağlantı bilgileri ve örnekte göstereceğim veriler orijinal değil, ziyaretçi almamayı tercih ediyorum;-).

Bu uygulama, elektromanyetik dalgalarla (garaj kapısı, araba, bazı panjurlar…) dijital bilgi alabilen herhangi bir nesne için geçerlidir. Tüm sistem, bluetooth ile bir telefona bağlı bir nesneden oluşur, bu nesne, kesmek istediğimiz şeyle ilişkili uzaktan kumanda ile aynı kareleri gönderebilmektedir. Bu nesneyi garajıma yerleştirdim ve ona dışarıdan bağlanabiliyorum.

Adım 1: Ekipman

ekipman
ekipman
ekipman
ekipman

Kullanılan diller: C++, MATLAB, TypeScript, C, html.

Dijital elektronik ve telekomünikasyon/sinyal işleme konularında temel bilgiler.

Maliyet: 35 dolardan az.

Donanım Gereksinimleri:

- NooELEC NESDR: verileri yakalamak için. Bu çok ucuz modül, dijital bir demodülasyon gerçekleştirir, dolayısıyla taşınabilirliği yüksektir. Bu model MATLAB ile uyumludur. (18,95 dolar)

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

- Wemos Lolin32 lite: Bu esp32, Wifi ve Bluetooth ile donatılmış ucuz bir mikro denetleyicidir. Bu uygulamada Wifi kullanmayacağız, ancak bu büyük ölçüde düşünülebilir. (4,74 dolar)

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

- CDSENET cc1101: bu radyo vericisi, seçilen taşıyıcı frekansından modülasyon tipine kadar bize aşırı bir esneklik sağlar. (2.63$)

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

- Teller, başlıklar, kaynak ekipmanı, özerklik için 3.7V lipo pil, muhtemelen osiloskop ve/veya hata ayıklama için mantık analizörü ve tesadüfen bir akıllı telefon…

Yazılım gereksinimleri:

- MATLAB/Simulink: verileri yakalamak için. Veri görselleştirme için Audacity gibi diğer ücretsiz alternatif yazılımlar kullanılabilir. (lisans)

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

- esp-idf araç zinciri: bu, esp32'yi programlamak için kullanılacaktır. Arduino ide de kullanılabilir ancak kullanacağımız kadar özgürlüğe izin vermez. (Bedava)

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

- TI SmartRF Studio: bu, cc1101 kayıtlarını spesifikasyonlarımıza göre yapılandırmamıza yardımcı olacaktır. (Bedava)

www.ti.com/tool/SMARTRFTM-STUDIO

- İyonik: uygulamayı oluşturmak için. Yerel uygulamalar oluşturma seçimini yapabilirsiniz, ancak Ionic, uygulamamızı yalnızca bir kodla hem Android hem de IOS cihazlarda çalıştırmamıza izin verir. Bizim durumumuzda performans aranmaz. (Bedava)

ionicframework.com/

- Favori fikriniz…

2. Adım: Uzaktan Kumandayı Casusluk

Uzaktan Kumandayı Casusluk
Uzaktan Kumandayı Casusluk
Uzaktan Kumandayı Casusluk
Uzaktan Kumandayı Casusluk
Uzaktan Kumandayı Casusluk
Uzaktan Kumandayı Casusluk

Uzaktan kumanda komutlarının ürettiği verileri gözlemleyerek başlayacağız. Bunu yapmak için bir rtl-sdr dongle ve anten kullanacağız:

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

Bu bağlantıyı takip ederek MATLAB paketinin yanı sıra tüm fiyatları açıklamalarıyla birlikte açıklayan ücretsiz bir kitap bulacaksınız. Bizi ilgilendiren şeyleri özetlemek gerekirse, geçiş verileri bir IQ sinyali biçimindedir: "Q" kareleme verileriyle birleştirilmiş "I" faz içi verileri. Bu yöntem telekomünikasyonu kolaylaştırır. Biz sadece sinyali fazda almakla ilgileneceğiz. Şimdi uzaktan kumanda üzerindeki fiziksel ve dijital bilgileri bir araya getireceğiz. Üzerinde bazı belgeler bulabilirseniz daha kolay olacaktır. hiç bulamadım. Sinyali geçici olarak gözlemleyebilmek için öncelikle yayılan sinyalin frekans taşıyıcısının ne olduğunu bilmeliyiz. Bir komut gönderdiğimizde hangi frekansta bir tepe gücü gözlemlediğimizi tam olarak bilmek için "RTL-SDR Radyo ile Spektral Analiz" paket dokümantasyonu ile sağlanan örneği kullanacağız. Benim durumumda 868.22 MHz. Bu tür uygulamalar için "standart" frekanslar 868 MHz civarındadır.

Bu göstergeler ile verileri kurtarmak için bir MATLAB kodu yazabileceğiz. Bu, fotoğrafa eklenmiştir ve yorumlanmıştır. Sonuç, modülasyon türünü bulmamızı sağlar: ham bilgiyi alarak, sonucu sinyalin gerçek kısmını kurtardıktan hemen sonra görüntüleyerek, bunun bir ASK / OOK olduğunu çıkarabiliriz. modülasyon. Aslında, frekansın değişmez olduğunu gözlemliyoruz, ancak sinyalin sadece iki genliği var: bir sıfır ve bir sabit. Kodun geri kalanı, alınan sinyalin zarfını kurtarmamıza izin verir, bu da tramvayı tanımak için okunmasını kolaylaştırır. Bir kez görüntülendiğinde, temel bant modülasyonunu belirleyebiliriz: bu bir Manchester kodlamasıdır (ekli fotoğrafa bakın). Ayrıca baud hızını da (saniyedeki semboller) çıkarabiliriz. Tüm bu bilgiler toplandığında, veri çerçevesini bilebiliriz. Benim durumumda bulunan baytlar: 249, 39, 75, 178, 45, 200 ve komutun iyi karşılandığından emin olmak için birden çok kez tekrarlandı. Neyse ki kod yuvarlanmıyor, veri çerçevesi her zaman aynı.

Adım 3: Aynı Veri Çerçevelerini Gönderin

Aynı Veri Çerçevelerini Gönder
Aynı Veri Çerçevelerini Gönder
Aynı Veri Çerçevelerini Gönder
Aynı Veri Çerçevelerini Gönder
Aynı Veri Çerçevelerini Gönder
Aynı Veri Çerçevelerini Gönder

Texas Instruments cc1101 o kadar esnektir ki, önceki adımda bulduğunuz ayarlar benimkinden tamamen farklı olsa bile yine de hedefinize ulaşacaksınız. Nitekim, belgelerde, sayfa 2'de (https://www.ti.com/lit/ds/symlink/cc1101.pdf) NRZ, Manchester, FSK, ASK / OOK modülasyonu gerçekleştirmeye izin verdiğini göreceksiniz. 433 MHz veya 868 MHz civarındaki frekanslar ve diğer birçok şey. Bu modülü tanımak için belgeleri okumanızı tavsiye ederim.

Bu bağlantıda bir örnek olarak Loboris'in bu modülü kullanarak fonksiyonların oluşturulmasıyla ilgili çalışmasını bulacaksınız:

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

esp32 için kodumuzu esp-idf toolchain ile yazacağız (ilk adımın linklerine bakınız). Bağlantının dosyalarını projenizin bileşenler alt dizinine ekleyebilirsiniz. cc1101'imizi düzgün bir şekilde yapılandırmak için kayıtlarını düzeltmemiz gerekecek. Texas Instruments bize, konfigürasyonumuza göre kayıtların değerini veren bir yazılım sağlar: SmartRF Studio.

Benimle ilgili olarak yazılıma Manchester kodlaması istediğimi, taşıyıcı frekansımın 868.22 MHz olduğunu, modülasyon tipimin ASK / OOK olduğunu belirtiyorum… Parametrelerinizi girmenize izin veriyorum. Temel bant kodlamanızın mevcut olmadığı durumda, baud hızını uygun şekilde artırarak ve verileri uyarlayarak NRZ kodlamasını düşünebilirsiniz.

Değerlerinizi tanımladıktan sonra, modülün kullanımıyla ilgili birkaç seçeneğiniz var: her şeyi daha iyi bir şekilde yapılandırmak için size bağladığım işlevleri veya yaptığım şeyleri kullanabilirsiniz, sadece bu koddan ilham alabilirsiniz. acımasız bir şekilde (ekli fotoğraflara bakın) ve sadece ihtiyacımız olanı kullanın.

cc1101 çipi SPI ile iletişim kurduğundan, örnek kodun bağlantısında, SPI'yi kullanmak için sadece alet zinciri ile kullanmak zorunda olduğunuzdan daha kolay fonksiyonlar içeren "spi_master_lobo.h" başlık dosyasını bulacaksınız. CC1101 veri sayfasının 30. sayfasından alınan SPI'deki CC1101 iletişim şemasının fotoğrafında size katılıyorum. Sunulan dört kablo şunlardır: CS (Chip Select veya SS: Slave Select veya burada CSn), CLK (veya SCLK, Master tarafından sağlanan Clock), MISO (veya SO, Master In Slave Out) ve MOSI (veya SI, Master Out Slave In). Bizim durumumuzda, master ESP32 ve slave CC1101'dir. Genel olarak, CS pini düşük olduğunda iletişim başlar.

Menuconfig'in derleyici seçeneklerinde derleme için C++ istisnalarını etkinleştirmeyi unutmayın.

Adım 4: Sisteme Bağlanın

Sisteme Bağlan
Sisteme Bağlan
Sisteme Bağlan
Sisteme Bağlan
Sisteme Bağlan
Sisteme Bağlan

Kodunuz çalışıyorsa, gerekli olanı yaptınız. Bu bölümde sisteme bağlı bir telefon uygulamasının nasıl oluşturulacağına odaklanacağız. En ilginç çözüm bluetooth ile bağlanmaktır, çünkü düşük güç protokolünün kullanımına izin verir: Bluetooth Düşük Enerji (BLE). Hiyerarşi profili ekli çizimde gösterilmektedir: komutu bir Hizmetin Karakteristik'inde okuyup yazacağız. Ve elbette, esp32 ve akıllı telefonumuz bluetooth ile donatılmıştır.

Bu adım iki bölüme ayrılmıştır: esp32 bölümü ve uygulama bölümü. Ekli fotoğraf, kodların ana kısımlarını gösterir ve açıklar.

Bu bağlantıyı izleyerek UUID'lerinizi oluşturabilirsiniz:

www.uuidgenerator.net/

Bunlar, BLE profilimizin hizmetlerine ve özelliklerine erişim sağlayacak tanımlayıcılardır.

esp32 BLE kodu hakkında Kolban, tüm bu üst düzey C++ işlevlerini uyumlu hale getirmek için harika bir iş çıkardı:

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

Bu dosyaları bileşenler alt dizinine koyabilirsiniz. Aksi takdirde, esp-idf araç zinciri ile BLE'yi nasıl kullanacağınızı anlamak için daha fazla zamana ihtiyacınız olacaktır.

Kodda göreceğiniz şeyin özeti olarak, ilişkili UUID'lerle bir Sunucu, Hizmet ve Karakteristik oluşturuyoruz ve yazma üzerine ilişkili bir yöntemle yeniden tanımlanmış bir geri arama sınıfı ekliyoruz: "O" aldığımızda karakter, cc1101'e bir yazma komutu gönderiyoruz.

Tabii ki Menuconfig'in Component konfigürasyonunda Bluetooth'u etkinleştirmeyi unutmayın.

Uygulama kısmı hakkında, Framework Ionic'i kullanacağız. Bununla ilgili daha fazla bilgiyi ilk adımda sunulan bağlantıda ve BLE'yi Ionic ile nasıl kullanacağınız hakkında daha fazla ayrıntı için bulabilirsiniz:

ionicframework.com/docs/native/ble/

Ve don tarafından yazılan örnekler:

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

Örneğin "Bağlan" örneğini düzenleyebilirsiniz. İlk sayfada cihazları tararız, cihazımızı seçersek ikinci sayfaya ulaşırız. Ardından, fotoğrafta sunulan yöntemle bir düğme ekleyebileceğiniz bir arayüze erişiyoruz: "O" komutumuzu uygun UUID'lerle gönderiyor. Ayrıca, uygulamanın başlangıcında bluetooth'u etkinleştirmek için ilk sayfanın yapıcısına "etkinleştir" yöntemini ekleyebilirsiniz.

Ionic web sitesini keşfetmenizi ve uygulamanızı geliştirmek için tüm Bileşenleri (düğmeler, uyarılar, onay kutuları…) keşfetmenizi şiddetle tavsiye ederim:

ionicframework.com/docs/components/#overvi…

Adım 5: Güç Tüketimini Optimize Edin

Güç Tüketimini Optimize Edin
Güç Tüketimini Optimize Edin
Güç Tüketimini Optimize Edin
Güç Tüketimini Optimize Edin

Düşük tüketim üzerinde çalışmaya başladık, o yüzden çalışalım.

esp-idf araç zinciri bir konfigürasyon GUI'si, menuconfig kullanmamıza izin verir: birçok parametre esp32 tüketimini azaltabilir. Öncelikle Wifi'ye ihtiyacımız olmadığı için Component konfigürasyonunda devre dışı bırakabiliriz. Aynı klasörde, FreeRTOS'ta "FreeRTOS'u yalnızca ilk çekirdekte çalıştır" seçeneğini seçebilirsiniz. Ardından, ESP'ye özgü olarak, CPU frekansını 80 MHz'e düşürebilirsiniz. Tüm işlevler hala bu saat hızında çalışır. Son olarak, "Ultra Düşük Güç (ULP) Yardımcı İşlemcisini Etkinleştir'i işaretleyin. Bu konfigürasyon, akım tüketimini yaklaşık yüz mA'dan yaklaşık otuz mA'ya çıkarır. Bu hala çok fazla…

ESP32 derin uykuyu kaldırabilir. Yalnızca düşük enerjili çekirdek açıktır ve bir uyanmayı bekler.

Daha fazla ayrıntı için aşağıdaki bağlantıya bakın:

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

Ne yazık ki, esp-idf araç zincirinin (3.0) mevcut son sürümünde, yalnızca zamanlayıcılar ve GPIO'ların kesintileri nedeniyle uyanmalar mevcuttur. Neyse ki, Espressif bize bir sonraki sürümde (3.1) BLE uyandırma sözü veriyor.

SPI'ye aygıtı kapatmak için uygun komutu göndererek CC1101'i uyku moduna da geçirebilirsiniz (bkz. cc1101 veri sayfası, SPWD komutu, sayfa 51). Cihazı uyku moduna almak veya uyandırmak için SPI pinlerinin Chip Select pinini önce aşağıya sonra yukarıya koyabilirsiniz (daha fazla bilgi veri sayfasında).

Bu son konfigürasyonlar, sistemin tüketimini mili-amperin altına geçirebilmelidir…

Son olarak, sistemi yeniden şarj etmeden mümkün olduğu kadar uzun süre dayanması ve hatta bir aylık özerkliğe ulaşması için, saatte en fazla mili amper değerine sahip 3.7V pili seçin. Sisteminizin güç tüketimini, sisteminizin + kutbundan önce seri bağlı bir jeneratör veya ampermetre göstergesi ile ölçerek, sisteminizin ne kadar dayanacağını tahmin edebilirsiniz!

Önerilen: