Это руководство поможет вам создать систему мониторинга присутствия в реальном времени с помощью датчика миллиметровых волн DFRobot и макетной платы Beetle ESP32 C6.
![Real-Time Presence Monitoring with mmWave and Beetle C6](https://habrastorage.org/getpro/habr/upload_files/bf7/d8c/bcc/bf7d8cbcc671da63af1190fc44421e2a.png)
История
В этом проекте мы создадим систему мониторинга сердцебиения в реальном времени, используя датчик миллиметровых волн DFRobot, макетную плату Beetle ESP32 C6 и Arduino IDE. Система будет отправлять оповещения через Telegram, что делает ее идеальной для мониторинга присутствия человека. Данная разработка будет полезна для непрерывного мониторинга в сфере безопасности.
![https://hackster.imgix.net/uploads/attachments/1745900/image_Eo6ckeW3Pd.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/2ab/e0d/9c7/2abe0d9c751e1e1be7e29147bb650f3f.png)
Необходимые компоненты
датчик миллиметровых волн DFRobot (60 ГГц)
плата Beetle ESP32 C6
соединительные провода
макетная плата
блок питания
аккаунт в Telegram и бот
Шаг 1: Пошаговое руководство
Настройка оборудования
-
Подключите датчик к плате Beetle ESP32 C6:
VCC — 5V
GND к GND
TX к RX
RX - TX
Подключите плату Beetle ESP32 C6 к подходящему источнику питания.
![](https://habrastorage.org/getpro/habr/upload_files/258/aa5/ca9/258aa5ca95cac8692b572a7835c9428e.png)
Шаг 2: Установка программного обеспечения
Перейдите на страницу программного обеспечения Arduino
Скачайте и установите Arduino IDE: выберите версию, совместимую с вашей ОС (Windows, Mac OS X или Linux), и скачайте её.
![https://hackster.imgix.net/uploads/attachments/1745902/image_GyVAwgOSFj.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/397/865/a71/397865a7176c4ae1383af4453ac348ae.png)
Запустите Arduino IDE: откройте Arduino IDE из установленных приложений.
![https://hackster.imgix.net/uploads/attachments/1745903/image_WyIxnbOGWk.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/8bd/290/ad0/8bd290ad009114ccbf90f686011374d8.png)
Откройте настройки: перейдите в File > Preferences (или Arduino > Preferences для Mac).
В поле «Additional Board Manager URLs» («Дополнительные URL-адреса менеджера плат») введите следующий URL-адрес:
![](https://habrastorage.org/getpro/habr/upload_files/077/846/d83/077846d8317bb0e07b1d6e223eb7707d.png)
Если у вас уже есть другие URL-адреса, их можно разделить запятой.
![https://hackster.imgix.net/uploads/attachments/1745904/image_8NBKXAnFj4.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/962/6eb/1b5/9626eb1b5f050418ba375a9d848de145.png)
Откройте Менеджер плат (Boards Manager): перейдите в меню Tools > Board > Boards Manager.
Поиск ESP32: в строке поиска введите «ESP32».
Установите ESP32: найдите запись «ESP32 by Espressif Systems» и нажмите кнопку «Установить».
![https://hackster.imgix.net/uploads/attachments/1745905/image_IoMcy75opN.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/f84/20d/ec3/f8420dec32d8606418c6308abd73b90e.png)
Подключите плату ESP32 к компьютеру с помощью USB-кабеля.
Выберите плату: перейдите в меню Tools > Board и выберите конкретную модель платы ESP32 — Beetle ESP32 C6.
![https://hackster.imgix.net/uploads/attachments/1745906/image_kIimob8lU6.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/a39/157/1e8/a391571e8f6bff013e4f848666dc2632.png)
Выберите порт: перейдите в меню Tools > Port и выберите COM-порт, к которому подключена ваша плата ESP32.
![https://hackster.imgix.net/uploads/attachments/1745907/image_s71279M33g.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/699/3ad/e0b/6993ade0b1b3e55d70959490f010be56.png)
Шаг 3: Добавление необходимых библиотек
Откройте Arduino IDE и перейдите в раздел
Sketch > Include Library > Manage Libraries.
-
Найдите и установите следующие библиотеки:
![https://hackster.imgix.net/uploads/attachments/1745911/image_pdOoVIivq9.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/e0a/868/52f/e0a86852f0dbe6d5234f3ab38a526ca8.png)
Wi-Fi
![https://hackster.imgix.net/uploads/attachments/1745912/image_mwQweqktp0.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/f9b/659/51e/f9b65951ed691152c50a3b4c9779208d.png)
Шаг 4: Программирование Beetle ESP32 C6
Сначала перейдите в раздел скетчей примеров и найдите скетч Human Detection («Обнаружение человека»), а затем используйте базовый скетч.
![https://hackster.imgix.net/uploads/attachments/1745913/image_aZhGJginvX.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/53e/edc/281/53eedc281deeb51f330d2a63d366a1aa.png)
Далее необходимо настроить выводы UART в соответствии с инструкцией Beetle ESP32 C6.
![https://hackster.imgix.net/uploads/attachments/1745915/image_xA2dgQP86y.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/49a/f1e/039/49af1e03920343861a595c6f9981b713.png)
Загрузите код и посмотрите на вывод последовательного порта в терминале.
![https://hackster.imgix.net/uploads/attachments/1745916/image_xwkfWjDFOB.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/3f2/1f4/0bb/3f21f40bbc1dc92c12a03d849546b4fa.png)
Вы можете наблюдать как за движением, так и за показателями дыхания и работы сердце. Для получения данных о работе сердца и дыхании датчик должен располагаться непосредственно на груди человека.
![https://hackster.imgix.net/uploads/attachments/1745919/image_fGjVfOEBPp.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/670/f2b/01f/670f2b01f4dd29cd9fcc651577f90d16.png)
Шаг 5: Настройка Telegram-бота
Создайте Telegram-бота:
Откройте Telegram и найдите BotFather.
![https://hackster.imgix.net/uploads/attachments/1745920/image_GVfHXJI9UV.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/8e6/7ab/817/8e67ab81777dcfd98e3045dd1ea51037.png)
Начните чат с BotFather и используйте команду /newbot, чтобы создать новый бот.
![https://hackster.imgix.net/uploads/attachments/1745921/image_AUnoNfkswi.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/786/dd5/33e/786dd533e3fefc03954cd014539d24a1.png)
Следуйте инструкциям, чтобы получить свой токен бота.
![https://hackster.imgix.net/uploads/attachments/1745922/image_ij0RumFPX1.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/ed4/16a/1fc/ed416a1fc589427b6d6f0ff85d48ee03.png)
Получите свой идентификатор чата: начните общение со своим ботом и отправьте любое сообщение.
![https://hackster.imgix.net/uploads/attachments/1745923/image_fAzz1nsoUM.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/b62/2d9/12f/b622d912ff33a0cd558c1e3a797a4dd3.png)
Найдите объект chat
в ответе, чтобы узнать свой идентификатор чата.
Шаг 6: Интеграция с ботом Telegram.
Это готовый скетч, способный распознавать движения человека и отправлять сообщения в Telegram.
#include "DFRobot_HumanDetection.h"
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_HumanDetection hu(&mySerial);
#else
DFRobot_HumanDetection hu(&Serial1);
#endif
// Replace with your network credentials
const char* ssid = "ELDRADO";
const char* password = "amazon123";
// Use @myidbot to find out the chat ID of an individual or a group
// Also note that you need to click "start" on a bot before it can
#define CHAT_ID "xxxxxxxxxxxxxxxxxxxx"
// Initialize Telegram BOT
#define BOTtoken "xxxxxxxxxxxxxxxxxxxxx" // your Bot Token (Get from Botfather)
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
//Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;
void setup() {
Serial.begin(115200);
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(115200);
#elif defined(ESP32)
Serial1.begin(115200, SERIAL_8N1, /*rx =*/17, /*tx =*/16);
// Serial1.begin(115200, SERIAL_8N1, /*rx =*/20, /*tx =*/21);
#else
Serial1.begin(115200);
#endif
Serial.println("Start initialization");
// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
while (hu.begin() != 0) {
Serial.println("init error!!!");
delay(1000);
}
Serial.println("Initialization successful");
Serial.println("Start switching work mode");
while (hu.configWorkMode(hu.eSleepMode) != 0) {
Serial.println("error!!!");
delay(1000);
}
Serial.println("Work mode switch successful");
Serial.print("Current work mode:");
switch (hu.getWorkMode()) {
case 1:
Serial.println("Fall detection mode");
break;
case 2:
Serial.println("Sleep detection mode");
break;
default:
Serial.println("Read error");
}
hu.configLEDLight(hu.eHPLed, 1); // Set HP LED switch, it will not light up even if the sensor detects a person when set to 0.
hu.sensorRet(); // Module reset, must perform sensorRet after setting data, otherwise the sensor may not be usable Serial.print("HP LED status:");
switch (hu.getLEDLightState(hu.eHPLed)) {
case 0:
Serial.println("Off");
break;
case 1:
Serial.println("On");
break;
default:
Serial.println("Read error");
}
Serial.println();
Serial.println();
String welcome = "Welcome ";
welcome += "Motion Detector Activated.\n\n";
bot.sendMessage(CHAT_ID, welcome, "");
}
void loop() {
Serial.print("Existing information:");
switch (hu.smHumanData(hu.eHumanPresence)) {
case 0:
Serial.println("No one is present");
break;
case 1:
Serial.println("Someone is present");
break;
default:
Serial.println("Read error");
}
Serial.print("Motion information:");
switch (hu.smHumanData(hu.eHumanMovement)) {
case 0:
Serial.println("None");
break;
case 1:
Serial.println("Still");
break;
case 2:
Serial.println("Active");
break;
default:
Serial.println("Read error");
}
Serial.print("Body movement parameters: ");
Serial.println(hu.smHumanData(hu.eHumanMovingRange));
if (hu.smHumanData(hu.eHumanMovingRange) > 2) {
String message = "Motion Detected: Please check the status \n"; bot.sendMessage(CHAT_ID, message, ""); }
Serial.print("Respiration rate: ");
Serial.println(hu.getBreatheValue());
Serial.print("Heart rate: ");
Serial.println(hu.gitHeartRate());
Serial.println("---------------------- -");
delay(200);
}
Примечание: необходимо обновить учётные данные Wi-Fi и Telegram, чтобы они соответствовали вашим собственным.
Как только статус движения станет выше 2, сработает Telegram-бот.
![https://hackster.imgix.net/uploads/attachments/1745925/image_rsYCalGnWY.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/2af/d0e/c70/2afd0ec704fd5fd1eb1a14d36b9ec20f.png)
Шаг 7: Протестируйте установку
Вот и всё! Вы успешно разработали систему обнаружения движения. Теперь давайте проверим работу системы. Вот видео, на котором система работает.
Заключение
![https://hackster.imgix.net/uploads/attachments/1745934/screenshot_2024-08-06_161852_9HAFacwohx.png?auto=compress%2Cformat&w=1280&h=960&fit=max](https://habrastorage.org/getpro/habr/upload_files/6bb/311/59a/6bb31159a49fd98b42041227b2fb88c9.png)
В этом руководстве мы рассмотрели интеграцию датчика миллиметровых волн DFRobot C1001 с платой ESP32 C6 для создания сложной системы обнаружения движения человека. Мы рассмотрели процесс установки оборудования, настройки датчика и написания необходимого кода для обнаружения присутствия и движения человека. Кроме того, мы продемонстрировали, как подключить эту систему к Telegram-боту, что позволяет получать уведомления и оповещения в реальном времени прямо на мобильное устройство.
Этот проект не только демонстрирует возможности датчика миллиметровых волн в точном обнаружении движения, но и подчеркивает удобство и эффективность использования Telegram для удаленного мониторинга и управления. Следуя этому руководству, вы сможете создать надёжную и интерактивную систему обнаружения движения для различных приложений, от систем «умного» дома до систем безопасности.
Комментарии (7)
vagon333
25.12.2024 10:16На видео непонятно, есть ли надежное обнаружение движения и объектов.
Пробовал LD241х.
Не смог добиться надежного определения присутствия и определения дистанции.
Это только у меня такой грустный опыт?Kill_Voice
25.12.2024 10:16У датчиков LD241x, есть настройки чувствительности по зонам с ними нужно экспериментировать, но в любом случае возможны какие-то фантомые обнаружения, особенно в многоквартирных домах, для более лучшей работы можно дополнить сборку IR датчиком движения
sav13
25.12.2024 10:16А кто-то разобрался с Zigbee в этих контроллерах?
У меня поле компиляции примера случается циклические ребут (((
Kill_Voice
Цена датчика конечно мощная, на эти деньги можно купить десяток LD2410 который в целом можно использовать даже без ESP.
AI_MCU_hub Автор
Кажется немного разное назначение и фукнциональность датчиков. В статье самый простой вариант подключения использования, но сам датчик умеет больше - и детекция падений и дыхания.
У DFRobot есть более дешёвые варианты, они больше похожи на LD2410, например https://www.dfrobot.com/product-2793.html. Хотя цена всё равно выше.
kenomimi
Там датчики очень разные, правда, нигде нет вменяемой инструкции, как они работают и как их правильно использовать. Везде или как тут в статье картинки про ардуино с простейшим примером, или нечто на китайском от производителя HiLink (который их и делает, собственно)
Вроде те, что подороже, баксов 30-40, умеют чуть ли не дыхание определять через стену... В статье, похоже, оно самое, только с добавкой в виде esp32.
Kill_Voice
Они все плюс-минус одинаково работают, это микроволновый радар который на выходе выдает цифровой сигнал