Съдържание:
- Стъпка 1: Оборудване
- Стъпка 2: Шпионирайте дистанционното управление
- Стъпка 3: Изпратете същите рамки за данни
- Стъпка 4: Свържете се към системата
- Стъпка 5: Оптимизирайте консумацията на енергия
Видео: Проникнете в гаражната врата: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Кой никога не е мечтал да се прибере у дома само с приложение за телефон или да може да слуша и прекопира трамваи за данни? Щастлив съм, че мога да споделя с вас това, което осъзнах и как продължих. Започнах този проект, след като за втори път забравих ключовете си …
Разбира се, кодирането, видът на модулация, честотата на оператора, информацията за 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.7V липо батерия за автономност, евентуално осцилоскоп и/или логически анализатор за отстраняване на грешки и между другото смартфон …
Софтуерни изисквания:
- MATLAB/Simulink: за улавяне на данните. Могат да се използват и други безплатни алтернативни програми, като Audacity за визуализация на данни. (Разрешително)
fr.mathworks.com/products.html?s_tid=gn_ps
- esp-idf toolchain: това ще се използва за програмиране на esp32. Arduino ide също може да се използва, но не позволява толкова свобода, колкото това, което ще използваме. (Безплатно)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: това ще ни помогне да конфигурираме регистрите cc1101, според нашите спецификации. (Безплатно)
www.ti.com/tool/SMARTRFTM-STUDIO
- Ionic: за изграждане на приложението. Можете да направите избор за създаване на местни приложения, но Ionic ни позволява да стартираме нашето приложение както на Android, така и на IOS устройства, с единствен код. Представлението не се търси в нашия случай. (Безплатно)
ionicframework.com/
- Любимата ти идея …
Стъпка 2: Шпионирайте дистанционното управление
Ще започнем с наблюдение на данните, които командите на дистанционното управление произвеждат. За да направим това, ще използваме rtl-sdr ключ и антена:
fr.mathworks.com/hardware-support/rtl-sdr….
Следвайки тази връзка, ще намерите пакета MATLAB, както и безплатна книга, обясняваща всички цени с тяхното обяснение. За да обобщим това, което ни вълнува, транзитните данни са под формата на IQ сигнал: фазови данни „I“, комбинирани с квадратурни данни „Q“. Този метод улеснява телекомуникациите. Ще се интересуваме само от получаване на сигнала на фаза. Сега ще събираме физическата и цифровата информация на дистанционното управление. Ако можете да намерите някаква документация за него, ще бъде по -лесно. Не намерих нито един. За да можем да наблюдаваме сигнала във времето, първо трябва да знаем какъв е честотният носител на излъчения сигнал. Ще използваме примера, предоставен с пакетната документация „Спектрален анализ с RTL-SDR радио“, за да знаем точно на коя честота наблюдаваме пикова мощност, когато изпращаме команда. В моя случай е 868.22 MHz. "Стандартните" честоти за този вид приложения са около 868 MHz.
С тези индикации ще можем да напишем MATLAB код за възстановяване на данните. Този е прикачен към снимка и коментиран. Резултатът ни позволява да намерим типа на модулация: чрез извличане на суровата информация, показване на резултата веднага след възстановяване на реалната част от сигнала, можем да заключим, че това е ASK / OOK модулация. Всъщност наблюдаваме, че честотата е инвариантна, но сигналът има само две амплитуди: нулева и фиксирана. Останалата част от кода ни позволява да възстановим обвивката на получения сигнал, улеснена за четене, за да познаем трамеята. След като се покаже, можем да определим модулацията на основната лента: това е кодиране в Манчестър (вижте приложената снимка). Можем също така да изведем скоростта на предаване (символи в секунда). Цялата тази информация, която се събира, можем да знаем рамката от данни. В моя случай намерените байтове са: 249, 39, 75, 178, 45, 200 и се повтарят многократно, за да се гарантира, че командата е добре приета. За щастие кодът не се търкаля, рамката с данни винаги е една и съща.
Стъпка 3: Изпратете същите рамки за данни
Texas Instruments cc1101 е толкова гъвкав, че все пак ще постигнете целта си, дори ако настройките, които сте намерили в предишната стъпка, са напълно различни от моите. Всъщност, ще видите в документацията, страница 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf), че тя позволява да се извърши модулация на NRZ, Манчестър, FSK, ASK/OOK, за да се достигне честотите около 433 MHz или 868 MHz и много други неща. Съветвам ви да прочетете документацията, за да се запознаете с този модул.
На тази връзка ще намерите като пример работата на Loboris относно конструирането на функции, използващи този модул:
github.com/loboris/ESP32_CC1101/tree/maste…
Ще напишем нашия код за нашия esp32 с инструментариума esp-idf (вижте връзките на първата стъпка). Можете да добавите файловете на връзката в поддиректория компоненти на вашия проект. За да конфигурираме правилно нашия cc1101, ще трябва да поправим регистрите му. Texas Instruments ни предоставя софтуер, който ни дава стойността на регистрите според нашата конфигурация: SmartRF Studio.
Що се отнася до мен, аз посочвам на софтуера, че желая кодиране в Манчестър, че моята носеща честота е 868.22 MHz, че моят тип модулация е ASK / OOK … Позволявам ви да въведете вашите параметри. В случай, че вашето кодиране в основната лента не е налично, можете да помислите за NRZ кодиране, като правилно увеличите скоростта на предаване и адаптирате данните.
След като сте дефинирали вашите стойности, имате няколко възможности за избор относно използването на модула: можете да използвате функциите, които съм свързвал с вас, или това, което направих, само да се вдъхновявате от този код, за да конфигурирате всичко в повече брутален начин (вижте приложените снимки) и използвайте само това, от което се нуждаем.
Тъй като чипът cc1101 комуникира чрез SPI, в връзката на примерния код ще намерите заглавния файл "spi_master_lobo.h", съдържащ по -лесни функции за използване на SPI, отколкото ако трябва да го използвате само с веригата с инструменти. Присъединявам се към вас в снимката схемата на комуникацията CC1101 в SPI, снимка, взета от страницата 30 на листа с данни CC1101. Четирите представени проводника са: CS (Chip Select или SS: Slave Select или тук CSn), CLK (или SCLK, часовникът, предоставен от главния), MISO (или SO, Master In Slave Out) и MOSI (или SI, Master Out Slave In). В нашия случай главният е ESP32, а подчиненият е CC1101. Комуникациите започват, когато щифтът на CS е нисък, като цяло.
Не забравяйте да активирате в опциите за компилиране на менюто конфигуриране на C ++ изключенията за компилиране.
Стъпка 4: Свържете се към системата
Ако кодът ви работи, вие сте направили същественото. В тази част ще се съсредоточим върху това как да създадем приложение за телефон, свързано към системата. Най-интересното решение е да се свържете чрез bluetooth, защото позволява използването на протокол с ниска мощност: Bluetooth Low Energy (BLE). Профилът на йерархията е показан на приложения чертеж: ще прочетем и напишем командата в Характеристика на услуга. И разбира се, нашият esp32 и нашият смартфон са оборудвани с bluetooth.
Тази стъпка е разделена на две части: частта esp32 и частта за приложение. Приложената снимка показва и обяснява основните части на кодовете.
Можете да генерирате UUID, като следвате тази връзка:
www.uuidgenerator.net/
Това са идентификаторите, които ще осигурят достъп до услугите и функциите на нашия BLE профил.
Относно esp32 BLE кода, Колбан свърши чудесна работа, като направи всички тези функции на високо ниво C ++ съвместими:
github.com/nkolban/esp32-snippets/tree/mas…
Можете да поставите тези файлове в поддиректория компоненти. В противен случай ще ви трябва повече време, за да разберете как да използвате BLE с веригата инструменти esp-idf.
В обобщение на това, което ще видите в кода, ние създаваме сървър, услуга и характеристика, със свързаните UUID, и добавяме предефиниран клас за обратно повикване, със свързан метод за запис: когато получим "O" характер, изпращаме команда за запис до cc1101.
Разбира се, не забравяйте да активирате Bluetooth в компонентната конфигурация на Menuconfig.
За частта за приложението ще използваме Framework Ionic. Можете да намерите повече информация за това в връзката, представена в първата стъпка, и за повече подробности относно това как да използвате BLE с Ionic:
ionicframework.com/docs/native/ble/
И примери, написани от don:
github.com/don/ionic-ble-examples/tree/mas…
Можете да редактирате например примера „Свързване“. Сканираме устройства на първа страница и достигаме до втора страница, ако изберем нашето устройство. След това имаме достъп до интерфейс, където можете да добавите бутон с метода, представен на снимката: той изпраща нашата команда "O" със съответните UUID. Можете също така да добавите в конструктора на първата страница метода "enable", като поискате да активирате bluetooth в началото на приложението.
Силно ви препоръчвам да разгледате уебсайта на Ionic и да откриете всички компоненти (бутони, сигнали, квадратчета за отметка …), за да подобрите приложението си:
ionicframework.com/docs/components/#overvi…
Стъпка 5: Оптимизирайте консумацията на енергия
Започнахме да работим с ниска консумация, така че нека да работим.
Веригата с инструменти esp-idf ни позволява да използваме конфигурационен графичен интерфейс, menuconfig: много параметри могат да намалят потреблението на esp32. На първо място, тъй като нямаме нужда от Wifi, можем да го деактивираме в конфигурацията на компонента. В същата папка, в FreeRTOS, можете да изберете „Run FreeRTOS only on first core. След това, специфично за ESP, можете да намалите честотата на CPU до 80 MHz. проверете „Активиране на съпроцесор с ултра ниска мощност (ULP). Тази конфигурация прави консумацията на ток от около сто mA до около тридесет mA. Това все още е твърде много…
ESP32 може да се справи с дълбок сън. Само ядрото с ниска енергия е включено и чака събуждане.
Вижте тази връзка по -долу за повече подробности:
esp-idf.readthedocs.io/en/latest/api-refere…
За съжаление в последната налична версия на esp-idf toolchain (3.0) единствените налични събуждания са от таймери и от прекъсвания на GPIO. За щастие, Espressif ни обещава BLE да се събудим в следващата версия (3.1).
Можете също така да поставите CC1101 в режим на заспиване, като изпратите в SPI правилната команда за изключване на устройството (вижте листа с данни cc1101, командата SPWD, страница 51). За да поставите устройството в режим на заспиване или да го събудите, можете да поставите нисък и висок щифт за избор на чип на SPI щифтовете (повече информация в листа с данни).
Тези последни конфигурации трябва да могат да накарат консумацията на системата да премине под милиампера …
И накрая, за да може системата да издържи възможно най-дълго без презареждане или дори да достигне един месец автономност, изберете 3.7V батерия с най-много милиампера на час. Чрез измерване на консумацията на енергия на вашата система, с показване на генератор или амперметър, свързани последователно преди вашия + полюс на вашата система, можете да прецените времето, през което вашата система ще издържи!
Препоръчано:
Безжична версия на Отворена или затворена ли е гаражната ми врата?: 7 стъпки
Безжична версия на … Отворена ли е или затворена моята гаражна врата ?: Искахме проста, евтина и надеждна система за индикация, която да ни показва дали гаражните ни врати са отворени или затворени. Има много въпроси " Отворена ли е гаражната ми врата " проекти. По -голямата част от тези проекти са твърдо свързани. В моя случай работи
Проникнете кубчето за растеж на кухия росомаха за МКС: 5 стъпки
Проникнете в куб от Wolverine Grow Cube на кухината за МКС: Ние сме средно училище West Hollow от Лонг Айлънд, Ню Йорк. Ние сме амбициозни инженери, които се срещат веднъж седмично в клуб, наречен Hack the Hollow, в който проектираме, кодираме и изграждаме редица проекти за създатели. Можете да разгледате всички проекти, по които работим H
Проникнете в CFA735/CFA835: 4 стъпки
Хакнете CFA735/CFA835: Имате ли проект, който се нуждае от дисплей, клавиатура и малко памет, но предварително инсталираният фърмуер на модула Crystalfontz CFA735 или CFA835 не е точно това, което търсите? Имате късмет - можете да хакнете тези модули, за да заредите персонализиран фърмуер
Проникнете в четец на USB карти: 6 стъпки
Проникнете в четец на USB карти: Преди няколко дни намерих у дома някаква забравена SD карта. Стана ми любопитно да прекратя написаното там. Потърсих четец на карти, за да проверя информацията. Единственият наличен у дома беше евтин четец за няколко карти, закупен в Aliexpress или Ebay m
Проникнете рамка за картина с вашия комплект лампи за електрическа боя: 10 стъпки
Хакнете рамка за картина с вашия комплект лампи за електрическа боя: Комплектът електрическа лампа за боя е чудесен начин да започнете и да създавате проекти с Light Up Board и Electric Paint. Но ако искате да проявите творчество с Light Up Board, тогава този урок е чудесно място за начало! В този урок