Оглавление:
- Шаг 1: оборудование
- Шаг 2: слежка за пультом дистанционного управления
- Шаг 3. Отправьте одинаковые фреймы данных
- Шаг 4: подключитесь к системе
- Шаг 5: Оптимизация энергопотребления
Видео: Взломайте дверь гаража: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Кто никогда не мечтал вернуться домой с приложением для телефона или иметь возможность слушать и копировать данные трамвая? Я счастлив, что могу поделиться с вами тем, что я понял и как я поступил. Я начал этот проект после того, как второй раз забыл свои ключи …
Конечно, кодировка, тип модуляции, частота несущей, информация о подключении 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 - дешевый микроконтроллер, оснащенный Wi-Fi и Bluetooth. Мы не будем использовать Wi-Fi в этом приложении, но это во многом возможно. (4,74 доллара США)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: этот радиопередатчик дает нам исключительную гибкость, от выбранной несущей частоты до типа модуляции. (2,63 доллара США)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- Провода, разъемы, сварочное оборудование, липо-аккумулятор на 3,7 В для автономной работы, возможно, осциллограф и / или логический анализатор для отладки, и, кстати, смартфон…
Программные требования:
- MATLAB / Simulink: для сбора данных. Можно использовать другие бесплатные альтернативные программы, например Audacity для визуализации данных. (лицензия)
fr.mathworks.com/products.html?s_tid=gn_ps
- Набор инструментов esp-idf: он будет использоваться для программирования esp32. Можно также использовать Arduino ide, но он не дает такой свободы, как то, что мы будем использовать. (бесплатно)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: это поможет нам настроить регистры cc1101 в соответствии с нашими спецификациями. (бесплатно)
www.ti.com/tool/SMARTRFTM-STUDIO
- Ионный: для создания приложения. Вы можете сделать выбор в пользу создания собственных приложений, но Ionic позволяет нам запускать наше приложение как на устройствах Android, так и на iOS, используя только код. В нашем случае производительность не востребована. (бесплатно)
ionicframework.com/
- Ваш любимый язь…
Шаг 2: слежка за пультом дистанционного управления
Мы начнем с наблюдения за данными, которые производят команды пульта дистанционного управления. Для этого воспользуемся ключом rtl-sdr и антенной:
fr.mathworks.com/hardware-support/rtl-sdr….
Перейдя по этой ссылке, вы найдете пакет MATLAB, а также бесплатную книгу, объясняющую все принципы с их объяснением. Подводя итог тому, что нас беспокоит, транзитные данные представлены в форме IQ-сигнала: синфазные данные «I» в сочетании с квадратурными данными «Q». Этот метод облегчает телекоммуникации. Нас будет интересовать только получение сигнала по фазе. Теперь мы соберем физическую и цифровую информацию о пульте дистанционного управления. Если вы найдете документацию по нему, это будет проще. Я не нашел. Чтобы иметь возможность временно наблюдать сигнал, мы должны сначала знать, какова несущая частота излучаемого сигнала. Мы будем использовать пример из документации пакета «Спектральный анализ с радио RTL-SDR», чтобы точно знать, на какой частоте мы наблюдаем пиковую мощность при отправке команды. В моем случае это 868,22 МГц. «Стандартные» частоты для такого рода приложений составляют около 868 МГц.
С этими указаниями мы сможем написать код MATLAB для восстановления данных. Он прикреплен к фотографии и прокомментирован. Результат позволяет нам определить тип модуляции: извлекая необработанную информацию, отображая результат сразу после восстановления реальной части сигнала, мы можем сделать вывод, что это ASK / OOK модуляция. Действительно, мы наблюдаем, что частота неизменна, однако сигнал имеет только две амплитуды: нулевую и фиксированную. Остальная часть кода позволяет нам восстановить огибающую принятого сигнала, что упрощает чтение для определения траектории. После отображения мы можем определить модуляцию основной полосы частот: это манчестерское кодирование (см. Прилагаемое фото). Мы также можем вычислить скорость передачи (символов в секунду). Собрав всю эту информацию, мы можем узнать фрейм данных. В моем случае найдены байты: 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, фото взято со страницы 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.
Не забудьте включить в параметрах компилятора menuconfig исключения 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/
И примеры, написанные Доном:
github.com/don/ionic-ble-examples/tree/mas…
Вы можете отредактировать, например, пример «Подключиться». Мы сканируем устройства на первой странице и переходим на вторую страницу, если выбираем наше устройство. Затем мы получаем доступ к интерфейсу, где вы можете добавить кнопку с методом, представленным на фотографии: он отправляет нашу команду «O» с соответствующими UUID. Также можно добавить в конструктор первой страницы метод «enable», запрашивающий активировать блютуз при старте приложения.
Я настоятельно рекомендую вам изучить веб-сайт Ionic и найти все компоненты (кнопки, предупреждения, флажки …) для улучшения вашего приложения:
ionicframework.com/docs/components/#overvi…
Шаг 5: Оптимизация энергопотребления
Мы начали работать над низким потреблением, так что давайте поработаем.
Набор инструментов esp-idf позволяет нам использовать графический интерфейс настройки menuconfig: многие параметры могут снизить потребление esp32. Прежде всего, поскольку нам не нужен Wi-Fi, мы можем отключить его в конфигурации компонента. В той же папке, в FreeRTOS, вы можете выбрать «Запускать FreeRTOS только на первом ядре. Затем, в зависимости от ESP, вы можете снизить частоту процессора до 80 МГц. Все функции по-прежнему работают с этой тактовой частотой. Наконец, вы можете установите флажок «Включить сопроцессор со сверхнизким энергопотреблением (ULP)». Эта конфигурация позволяет потреблять ток от примерно ста мА до примерно тридцати мА. Это все еще слишком …
ESP32 может справиться с глубоким сном. Включено только низкоэнергетическое ядро и ждет пробуждения.
См. Ссылку ниже для получения более подробной информации:
esp-idf.readthedocs.io/en/latest/api-refere…
К сожалению, в последней доступной версии инструментальной цепочки esp-idf (3.0) пробуждение доступно только по таймерам и сбоям GPIO. К счастью, Espressif обещает нам пробуждение BLE в следующей версии (3.1).
Вы также можете перевести CC1101 в спящий режим, отправив в SPI соответствующую команду для выключения устройства (см. Техническое описание cc1101, команда SPWD, стр. 51). Для перевода устройства в спящий режим или для его пробуждения вы можете установить низкий, а затем высокий контакт Chip Select на контактах SPI (более подробная информация в таблице данных).
Эти последние конфигурации должны быть в состоянии сделать потребление системы ниже миллиампер …
Наконец, чтобы система проработала как можно дольше без подзарядки или даже до месяца автономной работы, выберите батарею 3,7 В с максимальным количеством миллиампер в час. Измеряя энергопотребление вашей системы с помощью дисплея генератора или амперметра, подключенного последовательно перед положительным полюсом вашей системы, вы можете оценить время, в течение которого ваша система прослужит!
Рекомендуемые:
Замена аккумулятора на открыватель гаража: 5 шагов
Замена батареи в открывателе гаража: в этом руководстве я покажу вам, как заменить батарею в пульте дистанционного управления гаражными воротами. Это своего рода универсальный пульт с 4 каналами, который довольно часто используется и с другими приборами. Используемый в нем тип батареи - 27А
Беспроводная версия Моя дверь гаража открыта или закрыта?: 7 шагов
Беспроводная версия … Моя гаражная дверь открыта или закрыта ?: Нам нужна была простая, дешевая и надежная система индикации, которая показывала бы, открыты или закрыты наши гаражные ворота. Есть много вопросов "Открыта ли дверь моего гаража" проекты. Подавляющее большинство этих проектов жестко зашиты. В моем случае runn
Оборудование для открывания двери гаража Raspberry Pi Zero: 10 шагов
Оборудование для открывания гаражных дверей Raspberry Pi Zero: одним из источников вдохновения для этого проекта была прекрасная инструкция по открыванию гаражных дверей Raspberry Pi 3, а также несколько других, найденных в Интернете. Не будучи опытным электронщиком, я провел множество дополнительных исследований о том, как я
Устройство открывания двери гаража Raspberry Pi: 5 шагов
Устройство открывания гаражных ворот на Raspberry Pi: наша клавиатура пятнадцатилетней давности, которая позволяет нам открывать гаражные ворота, медленно умирает, с несколькими кнопками, которые почти не регистрируются, что затрудняет доступ наших подростков (или собак) в дом, когда они забывают свои ключ. Вместо ответа
Освещение скутера и дверь гаража с голосовым управлением: 6 шагов
Голосовое управление освещением скутера и гаражной дверью: Всем привет! Недавно я купил электросамокат, но у него не было ни заднего фонаря, ни встроенного устройства открывания двери гаража … СЮРПРИЗ !! (ノ ゚ 0 ゚) ノ ~ Итак, я решил сделать свой собственный пульт от ворот гаража и задние фонари вместо того, чтобы покупать их. Что за