Оглавление:

Взлом ESP32 Xiaomi - Получите данные по беспроводной сети: 6 шагов (с изображениями)
Взлом ESP32 Xiaomi - Получите данные по беспроводной сети: 6 шагов (с изображениями)

Видео: Взлом ESP32 Xiaomi - Получите данные по беспроводной сети: 6 шагов (с изображениями)

Видео: Взлом ESP32 Xiaomi - Получите данные по беспроводной сети: 6 шагов (с изображениями)
Видео: Проверка китайца на безопасность #blondinkadrive 2024, Ноябрь
Anonim
Image
Image
ESP32 Xiaomi Hack - Получите данные по беспроводной сети
ESP32 Xiaomi Hack - Получите данные по беспроводной сети

Дорогие друзья, добро пожаловать на очередной Инструктаж! Сегодня мы узнаем, как получить данные, которые передает этот монитор температуры и влажности Xiaomi, с помощью функции Bluetooth платы ESP32.

Как видите, я использую плату ESP32 и цветной TFT-дисплей 2,8 дюйма. На дисплее мы отображаем температуру и влажность. Замечательно то, что я не подключал никаких датчиков к плате ESP32. Я получаю температуру и влажность по беспроводной сети с этого коммерческого монитора температуры и влажности Xiaomi. Как это круто! Дисплей на устройстве Xiaomi обновляется каждую секунду, но я обновляю дисплей, подключенный к плате ESP32, каждые 10 секунд для экономии энергии на устройстве Xiaomi.

Этот крутой датчик температуры и влажности Xiaomi отображает температуру и влажность на ЖК-дисплее, а также может передавать данные на другие устройства Xiaomi или приложения с помощью протокола Bluetooth. В устройствах используется одна батарея AAA, и, поскольку это коммерческий продукт, срок службы батареи устройства отличный. Он может работать от одной батареи AAA в течение нескольких месяцев, чего мы не можем достичь в наших проектах DIY. Несколько недель назад я обнаружил, что некоторым умным ребятам удалось перепроектировать протокол, который Xiaomi использует для передачи данных с датчика, и получить эти данные с помощью платы ESP32. Я попробовал, и, как видите, он работает!

Шаг 1. Получите все детали

Получить все детали
Получить все детали

Давайте теперь посмотрим, как построить этот проект. Нам понадобится плата ESP32, 2,8-дюймовый дисплей ILI9341, датчик температуры и влажности Xiaomi, макетная плата и несколько проводов.

Вот несколько ссылок на части, которые я собираюсь использовать в этом руководстве.

  • ESP32 ▶
  • Дисплей 2,8 дюйма ▶
  • Датчик Xiaomi ▶
  • Макетная плата ▶
  • Провода ▶
  • USB-метр ▶
  • Powerbank ▶

Шаг 2: Плата ESP32

Image
Image
Плата ESP32
Плата ESP32

Если вы не знакомы с ним, чип ESP32 является преемником популярного чипа ESP8266, который мы использовали много раз в прошлом. ESP32 - это зверь! Он предлагает два 32 процессорных ядра, которые работают на частоте 160 МГц, огромный объем памяти, Wi-Fi, Bluetooth и многие другие функции по цене около 7 долларов! Потрясающие вещи!

Пожалуйста, посмотрите подробный обзор, который я подготовил для этой платы. Я приложил видео к этой инструкции. Это поможет понять, почему этот чип навсегда изменит то, как мы делаем вещи! Одна из самых интересных особенностей ESP32 заключается в том, что, несмотря на то, что он настолько мощный, он предлагает режим глубокого сна, для которого требуется всего 10 мксек. Это делает ESP32 идеальным чипом для приложений с низким энергопотреблением.

Шаг 3. 2,8-дюймовый TFT-дисплей для Arduino и ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Дисплей большой, имеет разрешение 320x240 точек. По сравнению с одним из моих любимых дисплеев, 1,8-дюймовым цветным TFT-дисплеем, он намного больше. Экран также предлагает сенсорную функцию, которая является дополнительным бонусом, и слот для SD-карты на задней панели. Он использует интерфейс SPI, поэтому подключение к плате Arduino или ESP32 очень простое. Стоимость дисплея относительно невысока; он стоит около 11 долларов, что, на мой взгляд, является справедливой ценой за то, что предлагает этот дисплей.

Еще одна особенность этого дисплея заключается в том, что он не является защитным экраном, как сенсорный дисплей, который мы использовали до сих пор. Таким образом, мы можем подключить дисплей к любой плате, Arduino Pro mini, STM32, ESP8266 и ESP32. Это очень важно, потому что теперь у нас есть недорогой дисплей, который можно использовать с любой доской. До сих пор единственным сенсорным дисплеем, который мы могли использовать с этими платами, были дисплеи Nextion, которые были более дорогими, и, честно говоря, хотя я и использую их время от времени, они мне не очень нравятся.

Шаг 4: Подключение дисплея

Подключение дисплея
Подключение дисплея
Подключение дисплея
Подключение дисплея
Подключение дисплея
Подключение дисплея
Подключение дисплея
Подключение дисплея

Во-первых, мы должны подключить плату ESP32 к 2,8-дюймовому дисплею. Вы можете найти схему, прикрепленную к Instructable. Я использую плату DOIT ESP32, выпущенную около двух лет назад. Эта версия платы больше не доступна, так как теперь доступна более новая версия, которая предлагает больше контактов, а именно эту. Единственная причина, по которой я использую старую версию платы, заключается в том, что вывод GND платы размещен рядом с выводами SPI на той же стороне платы, что делает ее удобной для макетной платы.

После подключения дисплея к плате мы можем включить проект. Через несколько секунд мы получаем данные в реальном времени с ближайшего устройства Xiaomi. Поскольку устройство использует Bluetooth 4, дальность его действия довольно хорошая. Мы можем легко получить данные, которые это устройство передает с расстояния до 10 метров и более! Мы также можем получить уровень заряда батареи устройства Xiaomi, но я не отображаю это значение на экране.

Если мы воспользуемся этим USB-измерителем, то увидим, что ток, потребляемый в этом проекте, составляет около 120-150 мА при использовании этого большого дисплея. Если мы воспользуемся дисплеем из электронной бумаги, переведем плату ESP32 в режим глубокого сна и будем получать данные с датчика каждые несколько минут, мы сможем сделать этот проект более экономичным. Я попробую это сделать в следующем видео. Этот проект - просто демонстрация того, что мы можем получать данные с этого устройства по беспроводной сети.

Шаг 5: Код проекта

Код проекта
Код проекта

Давайте теперь посмотрим на программную сторону проекта.

Код проекта основан на этом проекте:

Я использовал код, который получает эти данные с устройства Xiaomi, и создал с ним автономный проект.

В этой переменной мы заявляем, что нам нужно получать свежие данные каждые 10 секунд.

#define SCAN_TIME 10 // секунд

Здесь мы заявляем, что хотим отображать температуру в градусах Цельсия. Если вы хотите использовать имперскую систему, просто установите для этой переменной значение false.

логическое значение METRIC = true; // Устанавливаем истину для метрической системы; ложь для имперского

В функции настройки мы инициализируем дисплей и модуль Bluetooth платы ESP32, а затем рисуем пользовательский интерфейс на экране.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // отключаем детектор отключения электроэнергии

tft.begin ();

Serial.begin (115200);

Serial.println («ДИСПЛЕЙ XIAOMI ESP32»); initBluetooth ();

drawUI ();

}

Далее каждые 10 секунд мы ищем устройства Bluetooth поблизости. Мы не подключаемся к Устройству Xiaomi, поскольку оно не требуется. Мы только сканируем близлежащие периферийные устройства Bluetooth с низким энергопотреблением и проверяем пакеты широковещательной рекламы.

недействительный цикл () {char printLog [256]; Serial.printf ("Запустить сканирование BLE в течение% d секунд… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Количество найденных устройств:% d / n", count);

задержка (100);

}

В этих пакетах хранятся значения влажности и температуры, поэтому нам нужно только их прочитать. После прочтения значений мы отображаем их на экране. Как всегда, вы можете найти ссылку на код этого проекта в описании, прилагаемом к данному Руководству.

Шаг 6: Заключительные мысли и улучшения

Заключительные мысли и улучшения
Заключительные мысли и улучшения
Заключительные мысли и улучшения
Заключительные мысли и улучшения

Теперь, когда мы знаем, как получать данные с этого датчика по беспроводной сети, мы можем построить полноценную метеостанцию с батарейным питанием. Поскольку это устройство Xiaomi является коммерческим продуктом, оно обеспечивает отличное время автономной работы. К сожалению, в наших проектах мы пока не можем добиться аналогичного расхода заряда батареи. Итак, я планирую использовать этот датчик в качестве датчика на открытом воздухе для проекта метеостанции, в котором будет использоваться большой дисплей на электронной бумаге. Будет круто. Кроме того, я собираюсь поискать другие устройства Xiaomi с поддержкой Bluetooth, которые мы можем взломать аналогичным образом. Будьте на связи.

Хотелось бы узнать ваше мнение об этом проекте. Считаете ли вы полезным, что мы можем получать данные с некоторых коммерческих устройств Bluetooth? Что вы собираетесь построить с помощью этой функции? Я хотел бы прочитать ваши идеи, поэтому, пожалуйста, разместите их в разделе комментариев ниже. Спасибо!

Рекомендуемые: