
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



Дорогие друзья, добро пожаловать на очередной Инструктаж! Сегодня мы узнаем, как получить данные, которые передает этот монитор температуры и влажности 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



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



Дисплей большой, имеет разрешение 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? Что вы собираетесь построить с помощью этой функции? Я хотел бы прочитать ваши идеи, поэтому, пожалуйста, разместите их в разделе комментариев ниже. Спасибо!
Рекомендуемые:
Электропитание вне сети: 5 шагов (с изображениями)

Автономный источник питания: этот проект представляет собой тихую, удобную для использования внутри помещений альтернативу газогенератору. Если вы заряжаете устройства, используете лампы или даже запускаете электродвигатель в течение ограниченного времени, этот автономный источник питания станет отличным компаньоном для кемпинга или аварийных ситуаций
Взломайте мышь с помощью Arduino. 2500 футов беспроводной сети. PS / 2: 5 шагов

Взломайте мышь с помощью Arduino. 2500 футов беспроводной сети. PS / 2: В этом руководстве я покажу вам, как взломать мышь, чтобы вы могли использовать ее в качестве контроллера для светодиодов, двигателей, беспроводных приложений и т. Д. В этом уроке будут рассмотрены мыши с проволокой. Большинство этих мышей используют протокол PS / 2. Настройка
Защищенный от атмосферных воздействий адаптер беспроводной сети с использованием бутылки с водой: 4 шага (с изображениями)

Утилизированный адаптер беспроводной сети с использованием бутылки с водой: Находясь в Ираке, я использовал бутылку с водой для утепления своего адаптера беспроводной сети. Это простая процедура, но очень эффективная. Очевидно, что это руководство будет наиболее полезно для обслуживания мужчин и женщин на Ближнем Востоке, но также может быть полезно
Как охладить маршрутизатор беспроводной сети и предотвратить его замедление: 3 шага

Как охладить маршрутизатор беспроводной сети и предотвратить его замедление: это руководство, показывающее, как охладить маршрутизатор беспроводной сети и избежать его замедления. Я использовал вентилятор компьютера для охлаждения беспроводной сети, подключил вентилятор к беспроводной сети и буду использовать тот же источник питания беспроводной сети (беспроводной вентилятор НЕ ВКЛЮЧЕН, Wi
Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: 4 шага

Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: недавно я построил систему сигнализации и установил ее в своем доме. Я включил магнитные выключатели на дверях и подключил их через чердак. Окна - это совсем другое дело, и жесткая проводка их не подходила. Мне нужно было беспроводное решение, а это